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