JAL-1807 Bob's JalviewJS prototype first commit
[jalviewjs.git] / bin / jalview / appletgui / EmbmenuFrame.js
1 Clazz.declarePackage ("jalview.appletgui");\r
2 Clazz.load (["awt2swing.Frame", "java.awt.event.MouseListener", "java.awt.Font", "java.util.HashMap"], "jalview.appletgui.EmbmenuFrame", ["awt2swing.Label", "$.Panel", "$.PopupMenu", "jalview.util.Platform", "java.awt.Color", "$.FlowLayout"], function () {\r
3 c$ = Clazz.decorateAsClass (function () {\r
4 this.embeddedPopup = null;\r
5 this.embeddedMenu = null;\r
6 Clazz.instantialize (this, arguments);\r
7 }, jalview.appletgui, "EmbmenuFrame", awt2swing.Frame, java.awt.event.MouseListener);\r
8 Clazz.prepareFields (c$, function () {\r
9 this.embeddedPopup =  new java.util.HashMap ();\r
10 });\r
11 Clazz.defineMethod (c$, "embedMenuIfNeeded", \r
12 function (tobeAdjusted) {\r
13 var topMenuBar = this.getJMenuBar ();\r
14 if (topMenuBar == null) {\r
15 return false;\r
16 }if (jalview.util.Platform.isAMac ()) {\r
17 this.embeddedMenu = this.makeEmbeddedPopupMenu (topMenuBar, true, false);\r
18 this.unsetMenuBar ();\r
19 this.add (this.embeddedMenu, "North");\r
20 tobeAdjusted.setSize (this.getSize ().width, this.getSize ().height - this.embeddedMenu.getHeight ());\r
21 return true;\r
22 }return false;\r
23 }, "awt2swing.Panel");\r
24 Clazz.defineMethod (c$, "makeEmbeddedPopupMenu", \r
25 function (menuBar, overrideFonts, append) {\r
26 if (!append) {\r
27 this.embeddedPopup.clear ();\r
28 if (this.embeddedMenu != null) {\r
29 this.embeddedMenu.removeAll ();\r
30 }}this.embeddedMenu = this.makeEmbeddedPopupMenu (menuBar, jalview.appletgui.EmbmenuFrame.DEFAULT_MENU_FONT, overrideFonts,  new awt2swing.Panel (), this);\r
31 return this.embeddedMenu;\r
32 }, "awt2swing.MenuBar,~B,~B");\r
33 Clazz.defineMethod (c$, "makeEmbeddedPopupMenu", \r
34 function (menuBar, font, overrideFonts, embeddedMenu, clickHandler) {\r
35 if (overrideFonts) {\r
36 var mbf = menuBar.getFont ();\r
37 if (mbf != null) {\r
38 font = mbf;\r
39 }}if (embeddedMenu == null) {\r
40 embeddedMenu =  new awt2swing.Panel ();\r
41 }var flowLayout1 =  new java.awt.FlowLayout ();\r
42 embeddedMenu.setBackground (java.awt.Color.lightGray);\r
43 embeddedMenu.setLayout (flowLayout1);\r
44 for (var mbi = 0, nMbi = menuBar.getMenuCount (); mbi < nMbi; mbi++) {\r
45 var mi = menuBar.getMenu (mbi);\r
46 var elab =  new awt2swing.Label (mi.getLabel ());\r
47 elab.setFont (font);\r
48 var popup =  new awt2swing.PopupMenu ();\r
49 var m;\r
50 var mSize = mi.getItemCount ();\r
51 for (m = 0; m < mSize; m++) {\r
52 if (mi.getItem (m) == null) popup.addSeparator ();\r
53  else popup.add (mi.getItem (m));\r
54 mSize--;\r
55 m--;\r
56 }\r
57 this.embeddedPopup.put (elab, popup);\r
58 embeddedMenu.add (elab);\r
59 elab.addMouseListener (clickHandler);\r
60 }\r
61 flowLayout1.setAlignment (0);\r
62 flowLayout1.setHgap (2);\r
63 flowLayout1.setVgap (0);\r
64 return embeddedMenu;\r
65 }, "awt2swing.MenuBar,java.awt.Font,~B,awt2swing.Panel,java.awt.event.MouseListener");\r
66 Clazz.overrideMethod (c$, "mousePressed", \r
67 function (evt) {\r
68 var popup = null;\r
69 var source = evt.getSource ();\r
70 popup = this.getPopupMenu (source);\r
71 if (popup != null) {\r
72 this.embeddedMenu.add (popup);\r
73 popup.show (this.embeddedMenu, source.getBounds ().x, source.getBounds ().y + source.getBounds ().getSize ().height);\r
74 }}, "java.awt.event.MouseEvent");\r
75 Clazz.defineMethod (c$, "getPopupMenu", \r
76 function (source) {\r
77 return this.embeddedPopup.get (source);\r
78 }, "awt2swing.Label");\r
79 Clazz.overrideMethod (c$, "mouseClicked", \r
80 function (evt) {\r
81 }, "java.awt.event.MouseEvent");\r
82 Clazz.overrideMethod (c$, "mouseReleased", \r
83 function (evt) {\r
84 }, "java.awt.event.MouseEvent");\r
85 Clazz.overrideMethod (c$, "mouseEntered", \r
86 function (evt) {\r
87 }, "java.awt.event.MouseEvent");\r
88 Clazz.overrideMethod (c$, "mouseExited", \r
89 function (evt) {\r
90 }, "java.awt.event.MouseEvent");\r
91 Clazz.defineMethod (c$, "destroyMenus", \r
92 function () {\r
93 if (this.embeddedPopup != null) {\r
94 for (var lb, $lb = this.embeddedPopup.keySet ().iterator (); $lb.hasNext () && ((lb = $lb.next ()) || true);) {\r
95 lb.removeMouseListener (this);\r
96 }\r
97 this.embeddedPopup.clear ();\r
98 }if (this.embeddedMenu != null) {\r
99 this.embeddedMenu.removeAll ();\r
100 }});\r
101 Clazz.defineMethod (c$, "finalize", \r
102 function () {\r
103 this.destroyMenus ();\r
104 this.embeddedPopup = null;\r
105 this.embeddedMenu = null;\r
106 Clazz.superCall (this, jalview.appletgui.EmbmenuFrame, "finalize", []);\r
107 });\r
108 c$.FONT_ARIAL_PLAIN_11 = c$.prototype.FONT_ARIAL_PLAIN_11 =  new java.awt.Font ("Arial", 0, 11);\r
109 c$.DEFAULT_MENU_FONT = c$.prototype.DEFAULT_MENU_FONT = jalview.appletgui.EmbmenuFrame.FONT_ARIAL_PLAIN_11;\r
110 });\r