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

Quick Search    Search Deep

Source code: com/memoire/dja/DjaPaletteBracket.java


1   /**
2    * @modification $Date: 2001/12/03 16:28:08 $
3    * @statut       unstable
4    * @file         DjaPaletteBracket.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.dja;
13  
14  import com.memoire.fu.*;
15  import com.memoire.dnd.*;
16  import com.memoire.bu.*;
17  import com.memoire.dja.*;
18  import com.memoire.mst.*;
19  
20  
21  import java.awt.*;
22  import java.awt.event.*;
23  import java.util.*;
24  import javax.swing.*;
25  import javax.swing.event.*;
26  import javax.swing.border.*;
27  
28  public class DjaPaletteBracket
29         extends BuPanel
30         implements DjaOptions, ListSelectionListener, ActionListener
31  {
32    JComboBox cbt,cet;
33    JList     lbt,let;
34    ActionListener al_;
35  
36    class XCR
37          implements ListCellRenderer
38    {
39      ListCellRenderer r_;
40      int              o_;
41  
42      public XCR(ListCellRenderer _r, int _o)
43      {
44        r_=_r;
45        o_=_o;
46      }
47  
48      public Component getListCellRendererComponent(
49           JList list,
50           Object value,
51           int index,
52           boolean isSelected,
53           boolean cellHasFocus)
54      {
55        Component r=r_.getListCellRendererComponent
56    (list,value,index,isSelected,cellHasFocus);
57  
58        if(value instanceof Integer)
59        {
60    int i=((Integer)value).intValue();
61    ((JLabel)r).setIcon(new BracketIcon(i,o_,null));
62    ((JLabel)r).setText(null); // ""+i);
63        }
64  
65        return r;
66      }
67    }
68  
69    class XLM implements ListModel
70    {
71      DjaVector l=new DjaVector(2);
72      public void addListDataListener(ListDataListener _l) { l.addElement(_l); }
73      public void removeListDataListener(ListDataListener _l) { l.removeElement(_l); }
74      public Object getElementAt(int index) { return new Integer(index); }
75      public int    getSize() { return DjaLink.NB_TYPE; }
76    }
77  
78    public DjaPaletteBracket(ActionListener _al)
79    {
80      super();
81  
82      al_=_al;
83  
84      BuGridLayout layout_=new BuGridLayout(2,2,2);
85      layout_.setCfilled(false);
86      setLayout(layout_);
87      // setLayout(new BuHorizontalLayout(2,false,true));
88      setBorder(new EmptyBorder(2,2,2,2));
89  
90      ListModel mt=new XLM();
91  
92      lbt=new JList();
93      lbt.setModel(mt);
94      lbt.setCellRenderer(new XCR(lbt.getCellRenderer(),EAST));
95      lbt.setRequestFocusEnabled(false);
96      lbt.setSelectedIndex(0);
97      lbt.addListSelectionListener(this);
98      
99      JScrollPane sbt=new JScrollPane(lbt);
100     sbt.setPreferredSize(new Dimension(0,150));
101 
102     let=new JList();
103     let.setModel(mt);
104     let.setCellRenderer(new XCR(let.getCellRenderer(),WEST));
105     let.setRequestFocusEnabled(false);
106     let.setSelectedIndex(5);
107     let.addListSelectionListener(this);
108 
109     JScrollPane set=new JScrollPane(let);
110     set.setPreferredSize(new Dimension(0,150));
111 
112     cbt=new JComboBox();
113     for(int i=0; i<DjaLink.NB_TYPE; i++)
114       cbt.addItem(new Integer(i));
115     cbt.setRenderer(new XCR(cbt.getRenderer(),EAST));
116     cbt.setRequestFocusEnabled(false);
117     cbt.setMaximumRowCount(5);
118     cbt.addActionListener(this);
119 
120     cet=new JComboBox();
121     for(int i=0; i<DjaLink.NB_TYPE; i++)
122       cet.addItem(new Integer(i));
123     cet.setRenderer(new XCR(cet.getRenderer(),WEST));
124     cet.setRequestFocusEnabled(false);
125     cet.setMaximumRowCount(5);
126     cet.addActionListener(this);
127 
128     BuPanel begint=new BuPanel();
129     begint.setLayout(new BuVerticalLayout(2,true,false));
130 
131     for(int i=0; i<DjaLink.NB_TYPE; i++)
132     {
133       Icon     icon  =new BracketIcon(i,EAST,lbt);
134       BuButton button=new BuButton();
135 
136       button.setIcon(icon);
137       button.setRolloverIcon(icon);
138       button.setMargin(new Insets(1,1,1,1));
139       button.setRequestFocusEnabled(false);
140       button.setToolTipText(""+i);
141       button.setActionCommand("DJA_BEGIN_TYPE("+i+")");
142 
143       begint.add(button);
144       button.addActionListener(_al);
145     }
146 
147     BuPanel endt=new BuPanel();
148     endt.setLayout(new BuVerticalLayout(2,true,false));
149 
150     for(int i=0; i<DjaLink.NB_TYPE; i++)
151     {
152       Icon     icon  =new BracketIcon(i,WEST,let);
153       BuButton button=new BuButton();
154 
155       button.setIcon(icon);
156       button.setRolloverIcon(icon);
157       button.setMargin(new Insets(1,1,1,1));
158       button.setRequestFocusEnabled(false);
159       button.setToolTipText(""+i);
160       button.setActionCommand("DJA_END_TYPE("+i+")");
161 
162       endt.add(button);
163       button.addActionListener(_al);
164     }
165 
166     BuPanel begino=new BuPanel();
167     begino.setLayout(new BuGridLayout(2,2,2));
168 
169     for(int i=0; i<4; i++)
170     {
171       Icon     icon  =new BracketIcon(6,i,lbt);
172       BuButton button=new BuButton();
173 
174       button.setIcon(icon);
175       button.setRolloverIcon(icon);
176       button.setMargin(new Insets(1,1,1,1));
177       button.setRequestFocusEnabled(false);
178       button.setToolTipText(""+i);
179       button.setActionCommand("DJA_BEGIN_ORIENTATION("+i+")");
180 
181       begino.add(button);
182       button.addActionListener(_al);
183     }
184 
185     BuPanel endo=new BuPanel();
186     endo.setLayout(new BuGridLayout(2,2,2));
187 
188     for(int i=0; i<4; i++)
189     {
190       Icon     icon  =new BracketIcon(6,i,let);
191       BuButton button=new BuButton();
192 
193       button.setIcon(icon);
194       button.setRolloverIcon(icon);
195       button.setMargin(new Insets(1,1,1,1));
196       button.setRequestFocusEnabled(false);
197       button.setToolTipText(""+i);
198       button.setActionCommand("DJA_END_ORIENTATION("+i+")");
199 
200       endo.add(button);
201       button.addActionListener(_al);
202     }
203 
204     add(sbt);
205     add(set);
206     // add(cbt);
207     // add(cet);
208     // add(begint);
209     // add(endt);
210     add(begino);
211     add(endo);
212   }
213 
214   public void valueChanged(ListSelectionEvent _evt)
215   {
216     if(_evt.getValueIsAdjusting()) return;
217 
218     Object source=_evt.getSource();
219 
220     if(source==lbt)
221       al_.actionPerformed(new ActionEvent
222         (this,ActionEvent.ACTION_PERFORMED,
223          "DJA_BEGIN_TYPE("+lbt.getSelectedIndex()+")"));
224     if(source==let)
225       al_.actionPerformed(new ActionEvent
226         (this,ActionEvent.ACTION_PERFORMED,
227          "DJA_END_TYPE("+let.getSelectedIndex()+")"));
228 
229     repaint();
230   }
231 
232   public void actionPerformed(ActionEvent _evt)
233   {
234     Object source=_evt.getSource();
235     System.out.println("PALBRK:"+_evt);
236 
237     if(source==cbt)
238       al_.actionPerformed(new ActionEvent
239         (this,ActionEvent.ACTION_PERFORMED,
240          "DJA_BEGIN_TYPE("+cbt.getSelectedIndex()+")"));
241     if(source==cet)
242       al_.actionPerformed(new ActionEvent
243         (this,ActionEvent.ACTION_PERFORMED,
244          "DJA_END_TYPE("+cet.getSelectedIndex()+")"));
245   }
246 
247   private class BracketIcon implements Icon
248   {
249     private int   t_;
250     private int   o_;
251     private JList l_;
252 
253     public BracketIcon(int _t, int _o, JList _l)
254     {
255       t_=_t;
256       o_=_o;
257       l_=_l;
258     }
259 
260     public int getIconWidth () { return 16; }
261     public int getIconHeight() { return 16; }
262 
263     public void paintIcon(Component _c, Graphics _g, int x, int y)
264     {
265       x+=2;
266       y+=2;
267 
268       int t=t_;
269 
270       if(l_!=null)
271   t=l_.getSelectedIndex();
272 
273       Color fg=Color.black;
274       Color bg=new Color(224,224,255);
275 
276       switch(o_)
277       {
278       case EAST:
279   DjaLink.drawBracket(_g,t,o_,x,y,x+10,y+10,
280           fg,bg,1);
281   break;
282       case WEST:
283   DjaLink.drawBracket(_g,t,o_,x+10,y,x,y+10,
284           fg,bg,1);
285   break;
286       case NORTH:
287   DjaLink.drawBracket(_g,t,o_,x,y+10,x+10,y,
288           fg,bg,1);
289   break;
290       case SOUTH:
291   DjaLink.drawBracket(_g,t,o_,x,y,x+10,y+10,
292           fg,bg,1);
293   break;
294       }
295 
296       if(l_!=null)
297       {
298   _g.setColor(Color.red);
299   switch(o_)
300   {
301   case EAST : _g.fillRect(x-1   ,y-1+5 ,3,3); break;
302   case WEST : _g.fillRect(x-1+10,y-1+5 ,3,3); break;
303   case NORTH: _g.fillRect(x-1+5 ,y-1+10,3,3); break;
304   case SOUTH: _g.fillRect(x-1+5 ,y-1   ,3,3); break;
305   }
306       }
307     }
308   }
309 }