1
4 import org.aswing.AbstractButton;
5 import org.aswing.border.Border;
6 import org.aswing.Component;
7 import org.aswing.Container;
8 import org.aswing.Event;
9 import org.aswing.JCheckBox;
10 import org.aswing.JRadioButton;
11 import org.aswing.JToolBar;
12 import org.aswing.LookAndFeel;
13 import org.aswing.plaf.ToolBarUI;
14 import org.aswing.UIManager;
15 import org.aswing.utils.Delegate;
16 import org.aswing.utils.HashMap;
17
18
26 class org.aswing.plaf.basic.BasicToolBarUI extends ToolBarUI {
27
28 private var toolBar:JToolBar;
29 private var toolBarButtonBorder:Border;
30 private var buttonBordersBak:HashMap;
31 private var opaqueBak:HashMap;
32
33 private var buttonAddRemoveListener:Object;
34
35 public function BasicToolBarUI() {
36 super();
37 toolBarButtonBorder = UIManager.getBorder("ToolBar.buttonBorder");
38 buttonBordersBak = new HashMap();
39 opaqueBak = new HashMap();
40 }
41
42
43 public function installUI(c:Component):Void{
44 var b:JToolBar = JToolBar(c);
45 toolBar = b;
46 installDefaults(b);
47 initallComponents(b);
48 installListeners(b);
49 }
50
51 private function installDefaults(b:JToolBar):Void{
52
53 var pp:String = "ToolBar.";
54 LookAndFeel.installColorsAndFont(b, pp + "background", pp + "foreground", pp + "font");
55 LookAndFeel.installBorder(b, pp + "border");
56 LookAndFeel.installBasicProperties(b, pp);
57 }
58
59 private function initallComponents(b:JToolBar):Void{
60 }
61
62 private function installListeners(b:JToolBar):Void{
63 buttonAddRemoveListener = new Object();
64 buttonAddRemoveListener[Container.ON_COM_ADDED] = Delegate.create(this, __childAdded);
65 buttonAddRemoveListener[Container.ON_COM_REMOVED] = Delegate.create(this, __childRemoved);
66 b.addEventListener(buttonAddRemoveListener);
67 }
68
69
70 public function uninstallUI(c:Component):Void{
71 var b:JToolBar = JToolBar(c);
72 uninstallDefaults(b);
73 uninstallListeners(b);
74 uninstallComponents(b);
75 }
76
77 private function uninstallDefaults(b:JToolBar):Void{
78 LookAndFeel.uninstallBorder(b);
79 }
80
81 private function uninstallComponents(b:JToolBar):Void{
82 }
83
84 private function uninstallListeners(b:JToolBar):Void{
85 b.removeEventListener(buttonAddRemoveListener);
86 }
87
88
89
90 private function __childAdded(event:Event):Void{
91 var button:AbstractButton = AbstractButton(event.com);
92 if(button != null && !(button instanceof JCheckBox || button instanceof JRadioButton)){
93 var border:Border = button.getBorder();
94 if(border == null){
95 buttonBordersBak.put(button.getID(), border);
96 }
97 button.setBorder(toolBarButtonBorder);
98 opaqueBak.put(button.getID(), button.isOpaque);
99 button.isOpaque = Delegate.create(this, ____judgeBackgroundPainting, button);
100 }
101 }
102
103 private function ____judgeBackgroundPainting(button:AbstractButton):Boolean{
104 var obj:Object = button;
105 return obj.opaque && (button.getModel().isRollOver() || button.getModel().isSelected());
106 }
107
108
109 private function __childRemoved(event:Event):Void{
110 var button:AbstractButton = AbstractButton(event.com);
111 if(button != null && !(button instanceof JCheckBox || button instanceof JRadioButton)){
112 button.setBorder(Border(buttonBordersBak.remove(button.getID())));
113 button.isOpaque = opaqueBak.remove(button.getID());
114 }
115 }
116 }
117