*/\r
package jalview.bin;\r
\r
+import jalview.api.StructureSelectionManagerProvider;\r
import jalview.appletgui.AlignFrame;\r
+import jalview.appletgui.AlignViewport;\r
import jalview.appletgui.EmbmenuFrame;\r
import jalview.appletgui.FeatureSettings;\r
import jalview.datamodel.Alignment;\r
* Jalview Applet. Runs in Java 1.18 runtime\r
* \r
* @author $author$\r
- * @version $Revision$\r
+ * @version $Revision: 1.92 $\r
*/\r
-public class JalviewLite extends Applet\r
+public class JalviewLite extends Applet implements StructureSelectionManagerProvider\r
{\r
\r
// /////////////////////////////////////////\r
&& (alignedPosition.trim().length() == 0 || alignedPosition\r
.toLowerCase().indexOf("false") > -1))\r
{\r
- StructureSelectionManager.getStructureSelectionManager()\r
+ StructureSelectionManager.getStructureSelectionManager(this)\r
.mouseOverVamsasSequence(sq, sq.findIndex(apos), null);\r
}\r
else\r
{\r
- StructureSelectionManager.getStructureSelectionManager()\r
+ StructureSelectionManager.getStructureSelectionManager(this)\r
.mouseOverVamsasSequence(sq, apos, null);\r
}\r
\r
setMouseoverListener(currentAlignFrame, listener);\r
}\r
\r
- private Vector javascriptListeners = new Vector();\r
+ private Vector<jalview.javascript.JSFunctionExec> javascriptListeners = new Vector<jalview.javascript.JSFunctionExec>();\r
\r
public void setMouseoverListener(AlignFrame af, String listener)\r
{\r
jalview.javascript.MouseOverListener mol = new jalview.javascript.MouseOverListener(\r
this, af, listener);\r
javascriptListeners.addElement(mol);\r
- StructureSelectionManager.getStructureSelectionManager()\r
+ StructureSelectionManager.getStructureSelectionManager(this)\r
.addStructureViewerListener(mol);\r
if (debug)\r
{\r
jalview.javascript.JsSelectionSender mol = new jalview.javascript.JsSelectionSender(\r
this, af, listener);\r
javascriptListeners.addElement(mol);\r
- StructureSelectionManager.getStructureSelectionManager()\r
+ StructureSelectionManager.getStructureSelectionManager(this)\r
.addSelectionListener(mol);\r
if (debug)\r
{\r
jalview.javascript.MouseOverStructureListener mol = new jalview.javascript.MouseOverStructureListener(\r
this, listener, separatorListToArray(modelSet));\r
javascriptListeners.addElement(mol);\r
- StructureSelectionManager.getStructureSelectionManager()\r
+ StructureSelectionManager.getStructureSelectionManager(this)\r
.addStructureViewerListener(mol);\r
if (debug)\r
{\r
msSize--;\r
if (lstner instanceof SelectionListener)\r
{\r
- StructureSelectionManager.getStructureSelectionManager()\r
+ StructureSelectionManager.getStructureSelectionManager(this)\r
.removeSelectionListener((SelectionListener) lstner);\r
}\r
else\r
{\r
- StructureSelectionManager.getStructureSelectionManager()\r
+ StructureSelectionManager.getStructureSelectionManager(this)\r
.removeStructureViewerListener(lstner, null);\r
}\r
rprt = debug;\r
\r
public void stop()\r
{\r
+ System.err.println("Applet "+getName()+" stop().");\r
+ tidyUp();\r
+ }\r
+ public void destroy()\r
+ {\r
+ System.err.println("Applet "+getName()+" destroy().");\r
+ tidyUp();\r
+ }\r
+ private void tidyUp()\r
+ {\r
+ removeAll();\r
+ if (currentAlignFrame!=null && currentAlignFrame.viewport!=null\r
+ && currentAlignFrame.viewport.applet!=null)\r
+ {\r
+ AlignViewport av = currentAlignFrame.viewport;\r
+ currentAlignFrame.closeMenuItem_actionPerformed();\r
+ av.applet=null;\r
+ currentAlignFrame=null;\r
+ }\r
if (javascriptListeners != null)\r
{\r
while (javascriptListeners.size() > 0)\r
{\r
- Object mol = javascriptListeners.elementAt(0);\r
+ jalview.javascript.JSFunctionExec mol = javascriptListeners.elementAt(0);\r
javascriptListeners.removeElement(mol);\r
if (mol instanceof SelectionListener)\r
{\r
- StructureSelectionManager.getStructureSelectionManager()\r
+ StructureSelectionManager.getStructureSelectionManager(this)\r
.removeSelectionListener((SelectionListener) mol);\r
}\r
else\r
{\r
- StructureSelectionManager.getStructureSelectionManager()\r
+ StructureSelectionManager.getStructureSelectionManager(this)\r
.removeStructureViewerListener(mol, null);\r
}\r
+ mol.jvlite=null;\r
}\r
}\r
- jsFunctionExec.stopQueue();\r
+ if (jsFunctionExec!=null) {\r
+ jsFunctionExec.stopQueue();\r
+ jsFunctionExec.jvlite=null;\r
+ }\r
+ initialAlignFrame=null;\r
+ jsFunctionExec = null;\r
+ javascriptListeners=null;\r
+ StructureSelectionManager.release(this);\r
}\r
private jalview.javascript.JSFunctionExec jsFunctionExec;\r
/**\r
{\r
try\r
{\r
- StructureSelectionManager.getStructureSelectionManager()\r
+ StructureSelectionManager.getStructureSelectionManager(this)\r
.mouseOverStructure(new Integer(pdbResNum).intValue(), chain,\r
pdbfile);\r
if (debug)\r
+ pdbResNum + "'");\r
}\r
}\r
+ /**\r
+ * adjust horizontal/vertical scroll to the make the given location the top left hand corner for given current view\r
+ * \r
+ * @param alf\r
+ * @param topRow\r
+ * @param leftHandColumn\r
+ */\r
+ public void scrollViewToIn(AlignFrame alf, String topRow, String leftHandColumn)\r
+ {\r
+ try {\r
+ alf.scrollTo(new Integer(topRow).intValue(), new Integer(leftHandColumn).intValue());\r
+ \r
+ } catch (Exception ex)\r
+ {\r
+ System.err.println("Couldn't parse integer arguments (topRow='"+topRow+"' and leftHandColumn='"+leftHandColumn+"'");\r
+ ex.printStackTrace();\r
+ }\r
+ }\r
\r
// //////////////////////////////////////////////\r
// //////////////////////////////////////////////\r
{\r
if (frame instanceof AlignFrame)\r
{\r
+ AlignViewport vp = ((AlignFrame) frame).viewport;\r
((AlignFrame) frame).closeMenuItem_actionPerformed();\r
- if (((AlignFrame) frame).viewport.applet.currentAlignFrame == frame)\r
+ if (vp.applet.currentAlignFrame == frame)\r
{\r
- ((AlignFrame) frame).viewport.applet.currentAlignFrame = null;\r
+ vp.applet.currentAlignFrame = null;\r
}\r
+ vp.applet=null;\r
+ vp=null;\r
+ \r
}\r
lastFrameX -= 40;\r
lastFrameY -= 40;\r
applet.remove(launcher);\r
applet.repaint();\r
}\r
+ callInitCallback();\r
}\r
\r
/**\r
\r
public void start()\r
{\r
- callInitCallback();\r
+// callInitCallback();\r
}\r
private Hashtable<String,long[]> jshashes=new Hashtable<String,long[]>();\r
private Hashtable<String,Hashtable<String,String[]>> jsmessages=new Hashtable<String,Hashtable<String,String[]>>();\r