Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

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 }