KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > lucane > applications > whiteboard > gui > ShapeToolBar


1 /*
2  * Lucane - a collaborative platform
3  * Copyright (C) 2004 Vincent Fiack <vfiack@mail15.com>
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18  */

19 package org.lucane.applications.whiteboard.gui;
20
21 import java.awt.event.ActionEvent JavaDoc;
22 import java.util.ArrayList JavaDoc;
23 import java.util.Iterator JavaDoc;
24
25 import javax.swing.AbstractAction JavaDoc;
26 import javax.swing.Action JavaDoc;
27 import javax.swing.JToggleButton JavaDoc;
28 import javax.swing.JToolBar JavaDoc;
29
30 import org.lucane.applications.whiteboard.WhiteBoard;
31 import org.lucane.applications.whiteboard.graph.shapes.ShapeManager;
32
33 public class ShapeToolBar extends JToolBar JavaDoc
34 {
35     private WhiteBoard plugin;
36     private ShapeManager shapes;
37     
38     private JToggleButton JavaDoc btnSelect;
39     private ArrayList JavaDoc buttons;
40     
41     public ShapeToolBar(WhiteBoard plugin, ShapeManager shapes)
42     {
43         this.plugin = plugin;
44         this.shapes = shapes;
45         this.buttons = new ArrayList JavaDoc();
46         this.setFloatable(false);
47                 
48         btnSelect = new JToggleButton JavaDoc(
49                 new ShapeAction(null, "stock_draw-selection.png"));
50         btnSelect.setSelected(true);
51         addButton(btnSelect);
52         
53         addSeparator();
54         
55         JToggleButton JavaDoc btn;
56         
57         btn = new JToggleButton JavaDoc(
58                 new ShapeAction("rectangle", "stock_draw-rectangle-unfilled.png"));
59         addButton(btn);
60
61         btn = new JToggleButton JavaDoc(
62                 new ShapeAction("roundRectangle", "stock_draw-rounded-rectangle-unfilled.png"));
63         addButton(btn);
64
65         btn = new JToggleButton JavaDoc(
66                 new ShapeAction("diamond", "stock_draw-diamond-unfilled.png"));
67         addButton(btn);
68
69         
70         btn = new JToggleButton JavaDoc(
71                 new ShapeAction("ellipse", "stock_draw-ellipse-unfilled.png"));
72         addButton(btn);
73         
74         addSeparator();
75
76         btn = new JToggleButton JavaDoc(
77                 new ShapeAction("line", "stock_draw-line.png"));
78         addButton(btn);
79         
80         btn = new JToggleButton JavaDoc(
81                 new ShapeAction("simpleArrow", "stock_draw-line-ends-with-arrow.png"));
82         addButton(btn);
83         
84         btn = new JToggleButton JavaDoc(
85                 new ShapeAction("doubleArrow", "stock_draw-line-with-arrows.png"));
86         addButton(btn);
87         
88         addSeparator();
89         
90         btn = new JToggleButton JavaDoc(
91                 new ShapeAction("text", "stock_draw-text.png"));
92         addButton(btn);
93         
94         btn = new JToggleButton JavaDoc(
95                 new ShapeAction("image", "stock_insert_image.png"));
96         addButton(btn);
97     }
98     
99     private void addButton(JToggleButton JavaDoc button)
100     {
101         this.buttons.add(button);
102         button.setFocusable(false);
103         add(button);
104     }
105     
106     public void setEnabled(boolean enabled)
107     {
108         super.setEnabled(enabled);
109         
110         Iterator JavaDoc i = buttons.iterator();
111         while(i.hasNext())
112             ((JToggleButton JavaDoc)i.next()).setEnabled(enabled);
113                 
114         if(enabled)
115             resetToSelection();
116         else
117             unToggle();
118             
119     }
120     
121     private void unToggle()
122     {
123         Iterator JavaDoc i = buttons.iterator();
124         while(i.hasNext())
125             ((JToggleButton JavaDoc)i.next()).setSelected(false);
126     }
127     
128     public void resetToSelection()
129     {
130         unToggle();
131         btnSelect.doClick();
132     }
133
134     class ShapeAction extends AbstractAction JavaDoc
135     {
136         private String JavaDoc shapeName;
137         
138         public ShapeAction(String JavaDoc shapeName, String JavaDoc icon)
139         {
140             this.shapeName = shapeName;
141             
142             putValue(Action.SMALL_ICON, plugin.getImageIcon(icon));
143             if(shapeName != null)
144                 putValue(Action.SHORT_DESCRIPTION, plugin.tr("tip." + shapeName));
145             else
146                 putValue(Action.SHORT_DESCRIPTION, plugin.tr("tip.select"));
147         }
148         
149         public void actionPerformed(ActionEvent JavaDoc ae) {
150             JToggleButton JavaDoc btn = (JToggleButton JavaDoc)ae.getSource();
151             if(btn.isSelected())
152             {
153                 unToggle();
154                 btn.setSelected(true);
155                 shapes.setSelectedShape(shapeName);
156             }
157             else
158                 btnSelect.doClick();
159         }
160     }
161 }
162
163
Popular Tags