X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=srcjar%2Ffr%2Forsay%2Flri%2Fvarna%2Fapplications%2FVARNAConsoleDemo.java;fp=srcjar%2Ffr%2Forsay%2Flri%2Fvarna%2Fapplications%2FVARNAConsoleDemo.java;h=487fa963024f759c3400398e13b06447d21853fb;hb=4f30214e8098748469c6a4269ac2ed6c5750e4b0;hp=0000000000000000000000000000000000000000;hpb=9dabc02511e3a334a5749a504f57f69d6c9017bd;p=jalview.git diff --git a/srcjar/fr/orsay/lri/varna/applications/VARNAConsoleDemo.java b/srcjar/fr/orsay/lri/varna/applications/VARNAConsoleDemo.java new file mode 100644 index 0000000..487fa96 --- /dev/null +++ b/srcjar/fr/orsay/lri/varna/applications/VARNAConsoleDemo.java @@ -0,0 +1,266 @@ +package fr.orsay.lri.varna.applications; + +/* +VARNA is a Java library for quick automated drawings RNA secondary structure +Copyright (C) 2007 Yann Ponty + +This program 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. + +This program 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 this program. If not, see . +*/ + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.JApplet; +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTextField; + +import fr.orsay.lri.varna.VARNAPanel; +import fr.orsay.lri.varna.components.VARNAConsole; +import fr.orsay.lri.varna.controlers.ControleurDemoTextField; +import fr.orsay.lri.varna.exceptions.ExceptionNonEqualLength; +import fr.orsay.lri.varna.models.rna.RNA; + +/** +* An RNA 2d Panel demo applet +* +* @author Yann Ponty & Darty Kévin +* +*/ + +public class VARNAConsoleDemo extends JApplet implements ActionListener { + + /** + * + */ + private static final long serialVersionUID = -790155708306987257L; + + private static final String DEFAULT_SEQUENCE = "CAGCACGACACUAGCAGUCAGUGUCAGACUGCAIACAGCACGACACUAGCAGUCAGUGUCAGACUGCAIACAGCACGACACUAGCAGUCAGUGUCAGACUGCAIA"; + + private static final String DEFAULT_STRUCTURE = "..(((((...(((((...(((((...(((((.....)))))...))))).....(((((...(((((.....)))))...))))).....)))))...))))).."; + + private VARNAPanel _vp; + + private JPanel _tools = new JPanel(); + private JPanel _input = new JPanel(); + + private JPanel _seqPanel = new JPanel(); + private JPanel _structPanel = new JPanel(); + private JLabel _info = new JLabel(); + private JButton _go = new JButton("Go"); + private JTextField _struct = new JTextField(); + private JTextField _seq = new JTextField(); + private JLabel _structLabel = new JLabel(" Str:"); + private JLabel _seqLabel = new JLabel(" Seq:"); + + private VARNAConsole _console; + + private static String errorOpt = "error"; + private boolean _error; + + private Color _backgroundColor = Color.white; + + private int _algoCode; + + public VARNAConsoleDemo() { + super(); + try { + _vp = new VARNAPanel(_seq.getText(), _struct.getText()); + _vp.setErrorsOn(false); + } catch (ExceptionNonEqualLength e) { + _vp.errorDialog(e); + } + RNAPanelDemoInit(); + } + + private void RNAPanelDemoInit() { + + + int marginTools = 40; + + setBackground(_backgroundColor); + _vp.setBackground(_backgroundColor); + + try { + _vp.getRNA().setRNA(_seq.getText(), _struct.getText()); + _vp.setErrorsOn(false); + } catch (Exception e1) { + _vp.errorDialog(e1); + } + + Font textFieldsFont = Font.decode("MonoSpaced-PLAIN-12"); + + _console = new VARNAConsole(_vp); + + + _go.addActionListener(this); + + _seqLabel.setHorizontalTextPosition(JLabel.LEFT); + _seqLabel.setPreferredSize(new Dimension(marginTools, 15)); + _seq.setFont(textFieldsFont); + _seq.setText(_vp.getRNA().getSeq()); + + _seqPanel.setLayout(new BorderLayout()); + _seqPanel.add(_seqLabel, BorderLayout.WEST); + _seqPanel.add(_seq, BorderLayout.CENTER); + + _structLabel.setPreferredSize(new Dimension(marginTools, 15)); + _structLabel.setHorizontalTextPosition(JLabel.LEFT); + _struct.setFont(textFieldsFont); + _struct.setText(_vp.getRNA().getStructDBN()); + _structPanel.setLayout(new BorderLayout()); + _structPanel.add(_structLabel, BorderLayout.WEST); + _structPanel.add(_struct, BorderLayout.CENTER); + + + _input.setLayout(new GridLayout(3, 0)); + _input.add(_seqPanel); + _input.add(_structPanel); + + _tools.setLayout(new BorderLayout()); + _tools.add(_input, BorderLayout.CENTER); + _tools.add(_info, BorderLayout.SOUTH); + _tools.add(_go, BorderLayout.EAST); + + getContentPane().setLayout(new BorderLayout()); + getContentPane().add(_vp, BorderLayout.CENTER); + getContentPane().add(_tools, BorderLayout.SOUTH); + + _vp.getVARNAUI().UIRadiate(); + setPreferredSize(new Dimension(400,400)); + + setVisible(true); + + _console.setVisible(true); + + } + + public String[][] getParameterInfo() { + String[][] info = { + // Parameter Name Kind of Value Description, + { "sequenceDBN", "String", "A raw RNA sequence" }, + { "structureDBN", "String", + "An RNA structure in dot bracket notation (DBN)" }, + { errorOpt, "boolean", "To show errors" }, }; + return info; + } + + public void init() { + retrieveParametersValues(); + _vp.setBackground(_backgroundColor); + _error = true; + } + + private Color getSafeColor(String col, Color def) { + Color result; + try { + result = Color.decode(col); + } catch (Exception e) { + try { + result = Color.getColor(col, def); + } catch (Exception e2) { + return def; + } + } + return result; + } + + private String getParameterValue(String key, String def) { + String tmp; + tmp = getParameter(key); + if (tmp == null) { + return def; + } else { + return tmp; + } + } + + private void retrieveParametersValues() { + _error = Boolean.parseBoolean(getParameterValue(errorOpt, "false")); + _vp.setErrorsOn(_error); + _backgroundColor = getSafeColor(getParameterValue("background", + _backgroundColor.toString()), _backgroundColor); + _vp.setBackground(_backgroundColor); + _seq.setText(getParameterValue("sequenceDBN", "")); + _struct.setText(getParameterValue("structureDBN", "")); + String _algo = getParameterValue("algorithm", "radiate"); + if (_algo.equals("circular")) + _algoCode = RNA.DRAW_MODE_CIRCULAR; + else if (_algo.equals("naview")) + _algoCode = RNA.DRAW_MODE_NAVIEW; + else if (_algo.equals("line")) + _algoCode = RNA.DRAW_MODE_LINEAR; + else + _algoCode = RNA.DRAW_MODE_RADIATE; + if (_seq.getText().equals("") && _struct.getText().equals("")) { + _seq.setText(DEFAULT_SEQUENCE); + _struct.setText(DEFAULT_STRUCTURE); + } + try { + _vp.drawRNA(_seq.getText(), _struct.getText(), _algoCode); + } catch (ExceptionNonEqualLength e) { + e.printStackTrace(); + } + + } + + public VARNAPanel get_varnaPanel() { + return _vp; + } + + public void set_varnaPanel(VARNAPanel surface) { + _vp = surface; + } + + public JTextField get_struct() { + return _struct; + } + + public void set_struct(JTextField _struct) { + this._struct = _struct; + } + + public JTextField get_seq() { + return _seq; + } + + public void set_seq(JTextField _seq) { + this._seq = _seq; + } + + public JLabel get_info() { + return _info; + } + + public void set_info(JLabel _info) { + this._info = _info; + } + + public void actionPerformed(ActionEvent arg0) { + RNA r = new RNA(); + try { + _vp.drawRNAInterpolated(_seq.getText(), _struct.getText()); + } catch (ExceptionNonEqualLength e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + _vp.repaint(); + } +}