1 19 package org.lucane.applications.whiteboard.gui; 20 21 import java.awt.event.ActionEvent ; 22 import java.util.ArrayList ; 23 import java.util.Iterator ; 24 25 import javax.swing.AbstractAction ; 26 import javax.swing.Action ; 27 import javax.swing.JToggleButton ; 28 import javax.swing.JToolBar ; 29 30 import org.lucane.applications.whiteboard.WhiteBoard; 31 import org.lucane.applications.whiteboard.graph.shapes.ShapeManager; 32 33 public class ShapeToolBar extends JToolBar 34 { 35 private WhiteBoard plugin; 36 private ShapeManager shapes; 37 38 private JToggleButton btnSelect; 39 private ArrayList buttons; 40 41 public ShapeToolBar(WhiteBoard plugin, ShapeManager shapes) 42 { 43 this.plugin = plugin; 44 this.shapes = shapes; 45 this.buttons = new ArrayList (); 46 this.setFloatable(false); 47 48 btnSelect = new JToggleButton ( 49 new ShapeAction(null, "stock_draw-selection.png")); 50 btnSelect.setSelected(true); 51 addButton(btnSelect); 52 53 addSeparator(); 54 55 JToggleButton btn; 56 57 btn = new JToggleButton ( 58 new ShapeAction("rectangle", "stock_draw-rectangle-unfilled.png")); 59 addButton(btn); 60 61 btn = new JToggleButton ( 62 new ShapeAction("roundRectangle", "stock_draw-rounded-rectangle-unfilled.png")); 63 addButton(btn); 64 65 btn = new JToggleButton ( 66 new ShapeAction("diamond", "stock_draw-diamond-unfilled.png")); 67 addButton(btn); 68 69 70 btn = new JToggleButton ( 71 new ShapeAction("ellipse", "stock_draw-ellipse-unfilled.png")); 72 addButton(btn); 73 74 addSeparator(); 75 76 btn = new JToggleButton ( 77 new ShapeAction("line", "stock_draw-line.png")); 78 addButton(btn); 79 80 btn = new JToggleButton ( 81 new ShapeAction("simpleArrow", "stock_draw-line-ends-with-arrow.png")); 82 addButton(btn); 83 84 btn = new JToggleButton ( 85 new ShapeAction("doubleArrow", "stock_draw-line-with-arrows.png")); 86 addButton(btn); 87 88 addSeparator(); 89 90 btn = new JToggleButton ( 91 new ShapeAction("text", "stock_draw-text.png")); 92 addButton(btn); 93 94 btn = new JToggleButton ( 95 new ShapeAction("image", "stock_insert_image.png")); 96 addButton(btn); 97 } 98 99 private void addButton(JToggleButton 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 i = buttons.iterator(); 111 while(i.hasNext()) 112 ((JToggleButton )i.next()).setEnabled(enabled); 113 114 if(enabled) 115 resetToSelection(); 116 else 117 unToggle(); 118 119 } 120 121 private void unToggle() 122 { 123 Iterator i = buttons.iterator(); 124 while(i.hasNext()) 125 ((JToggleButton )i.next()).setSelected(false); 126 } 127 128 public void resetToSelection() 129 { 130 unToggle(); 131 btnSelect.doClick(); 132 } 133 134 class ShapeAction extends AbstractAction 135 { 136 private String shapeName; 137 138 public ShapeAction(String shapeName, String 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 ae) { 150 JToggleButton btn = (JToggleButton )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 |