1 package org.jmol.popup;
2 
3 import java.util.Properties;
4 
5 import org.jmol.api.PlatformViewer;
6 import org.jmol.api.SC;
7 import org.jmol.i18n.GT;
8 import org.jmol.viewer.Viewer;
9 
10 
11 /**
12  * An abstract popup class that is
13  * instantiated for a given platform and
14  * context as one of:
15  *
16  * <pre>
17  * -- abstract JmolGenericPopup
18  *   -- abstract JmolPopup
19  *      -- AwtJmolPopup
20  *      -- JSJmolPopup
21  *   -- abstract ModelKitPopup
22  *      -- AwtModelKitPopup
23  *      -- JSModelKitPopup
24  * </pre>
25  *
26  */
27 public abstract class JmolGenericPopup extends GenericPopup {
28 
29 
30   protected SC frankPopup;
31   protected int nFrankList = 0;
32   protected Viewer vwr;
33   protected Properties menuText = new Properties();
34 
35   @Override
jpiInitialize(PlatformViewer vwr, String menu)36   public void jpiInitialize(PlatformViewer vwr, String menu) {
37     boolean doTranslate = GT.setDoTranslate(true);
38     PopupResource bundle = getBundle(menu);
39     initialize((Viewer) vwr, bundle, bundle.getMenuName());
40     GT.setDoTranslate(doTranslate);
41   }
42 
getBundle(String menu)43   abstract protected PopupResource getBundle(String menu);
44 
initialize(Viewer vwr, PopupResource bundle, String title)45   protected void initialize(Viewer vwr, PopupResource bundle, String title) {
46     this.vwr = vwr;
47     initSwing(title, bundle, vwr.html5Applet, vwr.isJSNoAWT,
48         vwr.getBooleanProperty("_signedApplet"), vwr.isWebGL);
49   }
50 
51   @Override
jpiShow(int x, int y)52   public void jpiShow(int x, int y) {
53     if (!vwr.haveDisplay)
54       return;
55     thisx = x;
56     thisy = y;
57     show(x, y, false);
58     if (x < 0 && showFrankMenu())
59       return;
60     appRestorePopupMenu();
61     menuShowPopup(popupMenu, thisx, thisy);
62   }
63 
showFrankMenu()64   protected boolean showFrankMenu() {
65     // subclassed in JmolGenericPopup
66     return true;
67   }
68 
69   @Override
jpiDispose()70   public void jpiDispose() {
71     helper.menuClearListeners(popupMenu);
72     popupMenu = thisPopup = null;
73   }
74 
75   @Override
jpiGetMenuAsObject()76   public SC jpiGetMenuAsObject() {
77     return popupMenu;
78   }
79 
80   @Override
appFixLabel(String label)81   protected String appFixLabel(String label) {
82     return label;
83   }
84 
85   @Override
appGetBooleanProperty(String name)86   protected boolean appGetBooleanProperty(String name) {
87     return vwr.getBooleanProperty(name);
88   }
89 
90 
91   @Override
appRunSpecialCheckBox(SC item, String basename, String script, boolean TF)92   protected boolean appRunSpecialCheckBox(SC item, String basename, String script,
93                                          boolean TF) {
94     if (appGetBooleanProperty(basename) == TF)
95       return true;
96     if (basename.indexOf("mk") < 0 && !basename.endsWith("P!"))
97       return false;
98     if (basename.indexOf("mk") >= 0 || basename.indexOf("??") >= 0) {
99       script = getUnknownCheckBoxScriptToRun(item, basename, script, TF);
100     } else {
101       if (!TF)
102         return true;
103       script = "set picking " + basename.substring(0, basename.length() - 2);
104     }
105     if (script != null)
106       appRunScript(script);
107     return true;
108   }
109 
110   @Override
appRestorePopupMenu()111   protected void appRestorePopupMenu() {
112     thisPopup = popupMenu;
113   }
114 
115   @Override
appRunScript(String script)116   protected void appRunScript(String script) {
117     vwr.evalStringQuiet(script);
118 //    System.out.println("eval 1 " + vwr.eval.isExecuting());
119 //    System.out.println(script);
120 //    ((ScriptEval) vwr.eval).runBufferedSafely(script, null);
121 //    System.out.println("eval 2 " + vwr.eval.isExecuting());
122 
123   }
124 
125 
126 }
127