package fr.orsay.lri.varna.applications.templateEditor; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.ComponentOrientation; import java.awt.Dimension; import java.awt.FlowLayout; 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.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.List; import javax.swing.BoxLayout; import javax.swing.ButtonGroup; import javax.swing.Icon; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JDialog; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JScrollPane; import javax.swing.JToggleButton; import javax.swing.JToolBar; import javax.swing.UIManager; import javax.swing.UIManager.LookAndFeelInfo; import javax.swing.filechooser.FileFilter; import javax.swing.undo.UndoManager; import fr.orsay.lri.varna.VARNAPanel; import fr.orsay.lri.varna.applications.FileNameExtensionFilter; import fr.orsay.lri.varna.exceptions.ExceptionInvalidRNATemplate; import fr.orsay.lri.varna.exceptions.ExceptionNonEqualLength; import fr.orsay.lri.varna.exceptions.ExceptionXMLGeneration; import fr.orsay.lri.varna.models.templates.Benchmark; import fr.orsay.lri.varna.models.templates.DrawRNATemplateCurveMethod; import fr.orsay.lri.varna.models.templates.DrawRNATemplateMethod; import fr.orsay.lri.varna.models.templates.RNATemplate; import fr.orsay.lri.varna.models.templates.RNATemplateDrawingAlgorithmException; import fr.orsay.lri.varna.models.templates.RNATemplateMapping; import fr.orsay.lri.varna.models.templates.RNATemplate.RNATemplateElement; public class TemplateEditor extends JFrame implements KeyListener, ActionListener,DropTargetListener { private TemplatePanel _sk; private VARNAPanel _vp; private File currentFilePath = null; private JButton saveButton; private JScrollPane jp; private UndoManager manager; private JButton flipButton; private JComboBox ellipseMethodList; private JComboBox applyMethodList; /*private JRadioButton ellipseButtons[]; private JRadioButton methodButtons[]; */ public TemplateEditor() { init(); clearCurrentFilePath(); } public JScrollPane getJp() { return jp; } private void init() { try { _vp = new VARNAPanel(" ","."); } catch (ExceptionNonEqualLength e) { e.printStackTrace(); } _vp.setNumPeriod(0); JPanel p = new JPanel(); p.setLayout(new GridLayout(1,2)); JToolBar systemBar = new JToolBar(); JToolBar optionsBar = new JToolBar(); JButton newButton = new JButton("New",UIManager.getIcon("FileView.fileIcon")); newButton.setActionCommand("new"); newButton.addActionListener(this); newButton.addKeyListener(this); JButton loadButton = new JButton("Open...",UIManager.getIcon("FileView.directoryIcon")); loadButton.setActionCommand("open"); loadButton.addActionListener(this); loadButton.addKeyListener(this); saveButton = new JButton("Save",UIManager.getIcon("FileView.floppyDriveIcon")); saveButton.setActionCommand("save"); saveButton.addActionListener(this); saveButton.addKeyListener(this); saveButton.setEnabled(false); JButton saveAsButton = new JButton("Save As...",UIManager.getIcon("FileView.floppyDriveIcon")); saveAsButton.setActionCommand("save as"); saveAsButton.addActionListener(this); saveAsButton.addKeyListener(this); JButton undoButton = new JButton("Undo"); undoButton.setActionCommand("undo"); undoButton.addActionListener(this); undoButton.addKeyListener(this); JButton redoButton = new JButton("Redo"); redoButton.setActionCommand("redo"); redoButton.addActionListener(this); redoButton.addKeyListener(this); JButton benchmarkButton = new JButton("Benchmark"); benchmarkButton.setActionCommand("benchmark"); benchmarkButton.addActionListener(this); benchmarkButton.addKeyListener(this); DrawRNATemplateMethod applyMethods[] = DrawRNATemplateMethod.values(); applyMethodList = new JComboBox(applyMethods); applyMethodList.setSelectedItem(DrawRNATemplateMethod.getDefault()); DrawRNATemplateCurveMethod ellipseMethods[] = DrawRNATemplateCurveMethod.values(); ellipseMethodList = new JComboBox(ellipseMethods); ellipseMethodList.setSelectedItem(DrawRNATemplateCurveMethod.getDefault()); JButton applyButton = new JButton("Apply"); applyButton.setActionCommand("apply"); applyButton.addActionListener(this); applyButton.addKeyListener(this); JButton retrieveButton = new JButton("Retrieve Templates"); retrieveButton.setActionCommand("retrieve"); retrieveButton.addActionListener(this); flipButton = new JButton("Flip helix"); flipButton.setActionCommand("flip"); flipButton.addActionListener(this); flipButton.addKeyListener(this); flipButton.setEnabled(false); systemBar.add(newButton); systemBar.add(loadButton); systemBar.add(saveButton); systemBar.add(saveAsButton); systemBar.addSeparator(); systemBar.addSeparator(); systemBar.addSeparator(); systemBar.add(benchmarkButton); systemBar.addKeyListener(this); optionsBar.setLayout(new FlowLayout(FlowLayout.LEFT)); optionsBar.add(new JLabel("Single-Stranded ")); optionsBar.add(this.ellipseMethodList); optionsBar.addSeparator(); optionsBar.add(new JLabel("Layout ")); optionsBar.add(this.applyMethodList); optionsBar.addSeparator(); optionsBar.add(applyButton); optionsBar.addSeparator(); optionsBar.add(retrieveButton); optionsBar.doLayout(); /*optionsBar.add(new JLabel("Curves:")); for (int i=0; i res = new ArrayList(); String s = b.readLine(); while(s!=null) { res.add(s); s = b.readLine(); } } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }