--- /dev/null
+package fr.orsay.lri.varna;
+/*
+ VARNA is a tool for the automated drawing, visualization and annotation of the secondary structure of RNA, designed as a companion software for web servers and databases.
+ Copyright (C) 2008 Kevin Darty, Alain Denise and Yann Ponty.
+ electronic mail : Yann.Ponty@lri.fr
+ paper mail : LRI, bat 490 Université Paris-Sud 91405 Orsay Cedex France
+
+ This file is part of VARNA version 3.1.
+ VARNA version 3.1 is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License
+ as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+
+ VARNA version 3.1 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
+ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ See the GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along with VARNA version 3.1.
+ If not, see http://www.gnu.org/licenses.
+ */
+import java.awt.Component;
+import java.awt.GridLayout;
+import java.awt.datatransfer.DataFlavor;
+import java.awt.datatransfer.Transferable;
+import java.awt.dnd.DnDConstants;
+import java.awt.dnd.DropTarget;
+import java.awt.dnd.DropTargetDragEvent;
+import java.awt.dnd.DropTargetDropEvent;
+import java.awt.dnd.DropTargetEvent;
+import java.awt.dnd.DropTargetListener;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.JApplet;
+import javax.swing.JOptionPane;
+
+import fr.orsay.lri.varna.controlers.ControleurScriptParser;
+import fr.orsay.lri.varna.exceptions.ExceptionFileFormatOrSyntax;
+import fr.orsay.lri.varna.exceptions.ExceptionLoadingFailed;
+import fr.orsay.lri.varna.exceptions.ExceptionModeleStyleBaseSyntaxError;
+import fr.orsay.lri.varna.exceptions.ExceptionNonEqualLength;
+import fr.orsay.lri.varna.exceptions.ExceptionParameterError;
+import fr.orsay.lri.varna.interfaces.InterfaceParameterLoader;
+import fr.orsay.lri.varna.models.VARNAConfigLoader;
+import fr.orsay.lri.varna.models.rna.RNA;
+
+
+// @j2s issues -- see README_SWINGJS.txt
+
+public class VARNA extends JApplet implements InterfaceParameterLoader,DropTargetListener {
+ ArrayList<VARNAPanel> _vpl = null;
+ static{
+ /**
+ *
+ * @j2sNative
+ *
+ *
+ * if (!thisApplet.__Info.sequenceDBN) {
+ * thisApplet.__Info.sequenceDBN = "GGGGCCAAUAUGGCCAUCC";
+ * thisApplet.__Info.structureDBN = "((((((.....))))..))";
+ * thisApplet.__Info.title = "Hello RNA world, from SwingJS!";//prompt("Title?","Hello RNA world!");
+ * }
+ *
+ *
+ *
+ */
+ }
+
+
+// private static final_long serialVersionUID = -2598221520127067670L;
+
+ public VARNA() {
+ super();
+ }
+
+ public void init() {
+ try {
+ VARNAConfigLoader VARNAcfg = new VARNAConfigLoader(this);
+
+ try {
+ _vpl = VARNAcfg.createVARNAPanels();
+ for (int i=0;i<_vpl.size();i++)
+ {
+ new DropTarget(_vpl.get(i), this);
+ }
+ } catch (IOException e) {
+ JOptionPane.showMessageDialog(this, e.getMessage(),
+ "VARNA Error", JOptionPane.ERROR_MESSAGE);
+ } catch (ExceptionFileFormatOrSyntax e) {
+ JOptionPane.showMessageDialog(this, e.getMessage(),
+ "VARNA Error", JOptionPane.ERROR_MESSAGE);
+ } catch (ExceptionLoadingFailed e) {
+ JOptionPane.showMessageDialog(this, e.getMessage(),
+ "VARNA Error", JOptionPane.ERROR_MESSAGE);
+ }
+ setLayout(new GridLayout(VARNAcfg.getNbColumns(), VARNAcfg
+ .getNbRows()));
+ for (int i = 0; i < _vpl.size(); i++) {
+ getContentPane().add(_vpl.get(i));
+ }
+ } catch (ExceptionParameterError e) {
+ VARNAPanel.errorDialogStatic(e, this);
+ } catch (ExceptionModeleStyleBaseSyntaxError e) {
+ VARNAPanel.errorDialogStatic(e, this);
+ } catch (ExceptionNonEqualLength e) {
+ VARNAPanel.errorDialogStatic(e, this);
+ }
+
+ }
+
+ public void start() {
+ //setVisible(true);
+ //repaint();
+ //getContentPane().setVisible(true);
+ //getContentPane().repaint();
+ }
+
+ public void update() {
+ System.out.println("update");
+ }
+
+ public String getParameterValue(String key, String def) {
+ if (getParameter(key) == null) {
+ return def;
+ } else {
+ return getParameter(key);
+ }
+ }
+
+ public String[][] getParameterInfo() {
+ return VARNAConfigLoader.getParameterInfo();
+ }
+
+ public ArrayList<VARNAPanel> getPanels()
+ {
+ return _vpl;
+ }
+
+ public String getSelection()
+ {
+ return getSelection(0);
+ }
+
+ public String getSelection(int panel)
+ {
+ String result = "[";
+ VARNAPanel v = _vpl.get(panel);
+ List<Integer> l = v.getSelectionIndices();
+ for(int i=0;i<l.size();i++)
+ {
+ int n = l.get(i);
+ if (i>0)
+ {result += ",";}
+ result += n;
+
+ }
+ result += "]";
+ return result;
+ }
+
+ public void runScript(String script)
+ {
+ if (_vpl.size()>0)
+ {
+ VARNAPanel _vp = _vpl.get(0);
+ try {
+ ControleurScriptParser.executeScript(_vp, script);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+
+ public void setRNA(String seq, String str)
+ {
+ if (_vpl.size()>0)
+ {
+ try {
+ _vpl.get(0).drawRNA(seq, str);
+ } catch (ExceptionNonEqualLength e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public void setSmoothedRNA(String seq, String str)
+ {
+ if (_vpl.size()>0)
+ {
+ try {
+
+ _vpl.get(0).drawRNAInterpolated(seq, str);
+ _vpl.get(0).repaint();
+ } catch (ExceptionNonEqualLength e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public void dragEnter(DropTargetDragEvent arg0) {
+ }
+
+ public void dragExit(DropTargetEvent arg0) {
+ }
+
+ public void dragOver(DropTargetDragEvent arg0) {
+ }
+
+ public void drop(DropTargetDropEvent dtde)
+ {
+ try
+ {
+ Transferable tr = dtde.getTransferable();
+ DataFlavor[] flavors = tr.getTransferDataFlavors();
+ for (int i = 0; i < flavors.length; i++)
+ {
+ if (flavors[i].isFlavorJavaFileListType())
+ {
+ dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
+ List list = (List) tr.getTransferData(flavors[i]);
+ for (int j = 0; j < list.size(); j++)
+ {
+ Object o = list.get(j);
+ if (dtde.getSource() instanceof DropTarget)
+ {
+ DropTarget dt = (DropTarget) dtde.getSource();
+ Component c = dt.getComponent();
+ if (c instanceof VARNAPanel)
+ {
+ VARNAPanel vp = (VARNAPanel) c;
+ // BH -- in JavaScript, the File object has a .bytes
+ // property that we need to maintain.
+ //String path = o.toString();
+ vp.loadFile((File) o,true);
+ //vp.repaint(); BH unnecessary
+ }
+ }
+ }
+ dtde.dropComplete(true);
+ return;
+ }
+ }
+ dtde.rejectDrop();
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ dtde.rejectDrop();
+ }
+ }
+
+ public void dropActionChanged(DropTargetDragEvent arg0) {
+ }
+
+
+}
+