X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=srcjar%2Ffr%2Forsay%2Flri%2Fvarna%2FVARNA.java;fp=srcjar%2Ffr%2Forsay%2Flri%2Fvarna%2FVARNA.java;h=1f98d50ca1574792381d9ce44b7c964732410ff2;hb=2d6292c0377bc6b773c6844a45d3f2c5fac352c7;hp=0000000000000000000000000000000000000000;hpb=954af328a2a6a0055572cd1a09ee035301222574;p=jalview.git diff --git a/srcjar/fr/orsay/lri/varna/VARNA.java b/srcjar/fr/orsay/lri/varna/VARNA.java new file mode 100644 index 0000000..1f98d50 --- /dev/null +++ b/srcjar/fr/orsay/lri/varna/VARNA.java @@ -0,0 +1,260 @@ +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 _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 getPanels() + { + return _vpl; + } + + public String getSelection() + { + return getSelection(0); + } + + public String getSelection(int panel) + { + String result = "["; + VARNAPanel v = _vpl.get(panel); + List l = v.getSelectionIndices(); + for(int i=0;i0) + {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) { + } + + +} +