Source code: com/memoire/dnd/DndIcons.java
1 /**
2 * @modification $Date: 2002/12/16 18:56:25 $
3 * @statut unstable
4 * @file DndIcons.java
5 * @version 0.36
6 * @author Guillaume Desnoix
7 * @email guillaume@desnoix.com
8 * @license GNU General Public License 2 (GPL2)
9 * @copyright 1998-2001 Guillaume Desnoix
10 */
11
12 package com.memoire.dnd;
13 import com.memoire.dnd.*;
14
15
16 import java.awt.*;
17 import java.awt.event.*;
18 import java.lang.reflect.*;
19 import java.util.*;
20
21 import javax.swing.*;
22
23 public class DndIcons
24 {
25 private static final Hashtable icons_=new Hashtable(11);
26
27 public static final void put(Class _class, Icon _icon)
28 {
29 /*
30 Object v=icons_.get(_class);
31 if((v!=null)&&(v!=_icon))
32 System.err.println(_class.getName()+" already has an icon");
33 */
34
35 icons_.put(_class,_icon);
36 }
37
38 public static final Icon get(Class _class)
39 {
40 return (Icon)icons_.get(_class);
41 }
42
43 public static final Icon getIcon(Object[] _data)
44 {
45 Icon r=null;
46 boolean multi=false;
47 boolean array=false;
48
49 for(int i=0;i<_data.length;i++)
50 {
51 if(_data[i]==null) continue;
52 Class c=_data[i].getClass();
53 array=c.isArray();
54 if(array)
55 {
56 c=DndTarget.getCommonClass(_data[i]);
57 multi|=(Array.getLength(_data[i])>1);
58 }
59 //System.err.println("CLASS1="+c);
60 r=get(c);
61 if(r!=null) break;
62 }
63
64 if(r==null)
65 {
66 for(int i=0;i<_data.length;i++)
67 {
68 if(_data[i]==null) continue;
69 Class c=_data[i].getClass();
70 if(array)
71 //c=c.getComponentType();
72 c=DndTarget.getCommonClass(_data[i]);
73 /*
74 for(Enumeration e=icons_.keys(); e.hasMoreElements(); )
75 {
76 Class d=(Class)e.nextElement();
77 if(d.isAssignableFrom(c))
78 { r=get(d); break; }
79 }
80 */
81 while(c!=null)
82 {
83 //System.err.println("CLASS2="+c);
84 r=get(c);
85 if(r!=null) break;
86 c=c.getSuperclass();
87 }
88 }
89 }
90
91 if(r==null) r=getDefaultIcon();
92
93 return (multi ? new DndMultiIcon(r) : r);
94 }
95
96 private static boolean iconDisplayed_ =true;
97 public static final boolean isIconDisplayed()
98 { return iconDisplayed_; }
99 public static final void setIconDisplayed(boolean _b)
100 { iconDisplayed_=_b; }
101
102 private static Icon defaultIcon_ =null;
103 public static final Icon getDefaultIcon()
104 { return defaultIcon_; }
105 public static final void setDefaultIcon(Icon _icon)
106 { defaultIcon_=_icon; }
107
108 private static Icon noDropIcon_ =null;
109 public static final Icon getNoDropIcon()
110 { return noDropIcon_; }
111 public static final void setNoDropIcon(Icon _icon)
112 { noDropIcon_=_icon; }
113
114 private static Icon canDropIcon_=null;
115 public static final Icon getCanDropIcon()
116 { return canDropIcon_; }
117 public static final void setCanDropIcon(Icon _icon)
118 { canDropIcon_=_icon; }
119 }