1
4 import org.aswing.BorderLayout;
5 import org.aswing.Component;
6 import org.aswing.Event;
7 import org.aswing.JLabel;
8 import org.aswing.JToolTip;
9 import org.aswing.LookAndFeel;
10 import org.aswing.plaf.ComponentUI;
11 import org.aswing.plaf.ToolTipUI;
12 import org.aswing.utils.HashMap;
13
14
18 class org.aswing.plaf.basic.BasicToolTipUI extends ToolTipUI {
19
20
21 private static var toolTipUI:ToolTipUI;
22 public static function createInstance(c:Component):ComponentUI {
23 if(toolTipUI == null){
24 toolTipUI = new BasicToolTipUI();
25 }
26 return toolTipUI;
27 }
28
29 private var labels:HashMap;
30 private var tipListeners:HashMap;
31
32 public function BasicToolTipUI() {
33 super();
34 labels = new HashMap();
35 tipListeners = new HashMap();
36 }
37
38 public function installUI(c:Component):Void{
39 var b:JToolTip = JToolTip(c);
40 installDefaults(b);
41 initallComponents(b);
42 installListeners(b);
43 }
44
45 private function installDefaults(b:JToolTip):Void{
46
47 var pp:String = "ToolTip.";
48 LookAndFeel.installColorsAndFont(b, pp + "background", pp + "foreground", pp + "font");
49 LookAndFeel.installBorder(b, pp + "border");
50 LookAndFeel.installBasicProperties(b, pp);
51 }
52
53 private function getLabel(c:Component):JLabel{
54 return JLabel(labels.get(c.getID()));
55 }
56
57 private function initallComponents(b:JToolTip):Void{
58 b.setLayout(new BorderLayout());
59 var label:JLabel = new JLabel(b.getTipText());
60 b.append(label, BorderLayout.CENTER);
61 labels.put(b.getID(), label);
62 }
63
64 private function installListeners(b:JToolTip):Void{
65 var lis:Object = b.addEventListener(JToolTip.ON_TIP_TEXT_CHANGED, __tipTextChanged, this);
66 tipListeners.put(b.getID(), lis);
67 }
68
69 private function __tipTextChanged(e:Event):Void{
70 var toolTip:JToolTip = JToolTip(e.getSource());
71 getLabel(toolTip).setText(toolTip.getTipText());
72 }
73
74 public function uninstallUI(c:Component):Void{
75 var b:JToolTip = JToolTip(c);
76 uninstallDefaults(b);
77 uninstallListeners(b);
78 uninstallComponents(b);
79 }
80
81 private function uninstallDefaults(b:JToolTip):Void{
82 LookAndFeel.uninstallBorder(b);
83 }
84
85 private function uninstallComponents(b:JToolTip):Void{
86 var label:JLabel = JLabel(labels.remove(b.getID()));
87 b.remove(label);
88 }
89
90 private function uninstallListeners(b:JToolTip):Void{
91 b.removeEventListener(tipListeners.remove(b.getID()));
92 }
93
94 }
95