import java.awt.dnd.DropTargetListener;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.awt.event.ComponentEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import fr.orsay.lri.varna.models.rna.Mapping;
import fr.orsay.lri.varna.models.rna.RNA;
-public class AppVarnaBinding extends JFrame implements DropTargetListener, InterfaceVARNAListener, MouseListener {
+public class AppVarnaBinding extends jalview.ext.varna.JalviewVarnaBinding implements DropTargetListener, InterfaceVARNAListener, MouseListener {
/**
*
*/
//private static final long serialVersionUID = -790155708306987257L;
- private String DEFAULT_SEQUENCE = "CAGCACGACACUAGCAGUCAGUGUCAGACUGCAIACAGCACGACACUAGCAGUCAGUGUCAGACUGCAIACAGCACGACACUAGCAGUCAGUGUCAGACUGCAIA";
-
- private String DEFAULT_STRUCTURE1 = "..(((((...(((((...(((((...(((((.....)))))...))))).....(((((...(((((.....)))))...))))).....)))))...)))))..";
- private String DEFAULT_STRUCTURE2 = "..(((((...(((((...(((((........(((((...(((((.....)))))...)))))..................))))).....)))))...)))))..";
- // private static final String DEFAULT_STRUCTURE1 = "((((....))))";
- // private static final String DEFAULT_STRUCTURE2 =
- // "((((..(((....)))..))))";
-
+ //private String DEFAULT_SEQUENCE = "CAGCACGACACUAGCAGUCAGUGUCAGACUGCAIACAGCACGACACUAGCAGUCAGUGUCAGACUGCAIACAGCACGACACUAGCAGUCAGUGUCAGACUGCAIA";
+ //private String DEFAULT_STRUCTURE1 = "..(((((...(((((...(((((...(((((.....)))))...))))).....(((((...(((((.....)))))...))))).....)))))...)))))..";
+ //private String DEFAULT_STRUCTURE2 = "..(((((...(((((...(((((........(((((...(((((.....)))))...)))))..................))))).....)))))...)))))..";
public VARNAPanel vp;
private JPanel _tools = new JPanel();
private BackupHolder _rnaList;
- public AppVarnaBinding() {
- super("VARNA in Jalview");
+ /*public AppVarnaBinding() {
+ //super("VARNA in Jalview");
//this.set_seq("ATGC");
//this.set_str(".().");
//RNAPanelDemoInit();
//initVarna("ATGCATGATATATATATAT","....((((...))))....");
initVarna(this.DEFAULT_SEQUENCE,this.DEFAULT_STRUCTURE1);
- }
+ }*/
- public AppVarnaBinding(String seq, String struc){
- super("VARNA in Jalview");
+ public AppVarnaBinding(String seq,String struc){
+ //super("VARNA in Jalview");
initVarna(seq,struc);
}
+ public AppVarnaBinding(ArrayList<RNA> rnalist){
+ //super("VARNA in Jalview");
+ initVarnaEdit(rnalist);
+ }
+
private void initVarna(String seq, String str){
vp.setPreferredSize(new Dimension(400, 400));
_rnaList.add(vp.getConfig().clone(),_RNA1,generateDefaultName(),true);
- setBackground(_backgroundColor);
+ //TODO setBackground(_backgroundColor);
+ vp.setBackground(_backgroundColor);
+
+ //TODO getContentPane().setLayout(new BorderLayout());
+ //TODO getContentPane().add(vp, BorderLayout.CENTER);
+
+ //setVisible(true);
+ vp.addVARNAListener(this);
+ }
+
+ private void initVarnaEdit(ArrayList<RNA> rnaInList)
+ {
+ DefaultListModel dlm = new DefaultListModel();
+
+
+ int marginTools = 40;
+
+ DefaultListSelectionModel m = new DefaultListSelectionModel();
+ m.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
+ m.setLeadAnchorNotificationEnabled(false);
+
+
+ _sideList = new ReorderableJList();
+ _sideList.setModel(dlm);
+ _sideList.addMouseListener(this);
+ _sideList.setSelectionModel(m);
+ _sideList.setPreferredSize(new Dimension(100, 0));
+ _sideList.addListSelectionListener( new ListSelectionListener(){
+ public void valueChanged(ListSelectionEvent arg0) {
+ //System.out.println(arg0);
+ if (!_sideList.isSelectionEmpty() && !arg0.getValueIsAdjusting())
+ {
+ FullBackup sel = (FullBackup) _sideList.getSelectedValue();
+ Mapping map = Mapping.DefaultOutermostMapping(vp.getRNA().getSize(), sel.rna.getSize());
+ vp.showRNAInterpolated(sel.rna,sel.config,map);
+ _seq.setText(sel.rna.getSeq());
+ _str.setText(sel.rna.getStructDBN());
+ }
+ }
+ });
+
+ _rnaList = new BackupHolder(dlm,_sideList);
+ try {
+ vp = new VARNAPanel("0",".");
+ for(int i=0;i<rnaInList.size();i++){
+ rnaInList.get(i).drawRNARadiate(vp.getConfig());
+ }
+ } catch (ExceptionNonEqualLength e) {
+ vp.errorDialog(e);
+ }
+ vp.setPreferredSize(new Dimension(400, 400));
+ for(int i=0;i<rnaInList.size();i++){
+ _rnaList.add(vp.getConfig().clone(),rnaInList.get(i),generateDefaultName(),true);
+ }
+ /*_rnaList.add(vp.getConfig().clone(),_RNA2,generateDefaultName());
+ _rnaList.add(vp.getConfig().clone(),_RNA1,generateDefaultName(),true);*/
+
+ JScrollPane listScroller = new JScrollPane(_sideList);
+ listScroller.setPreferredSize(new Dimension(150, 0));
+
+ //TODO setBackground(_backgroundColor);
vp.setBackground(_backgroundColor);
+
+ Font textFieldsFont = Font.decode("MonoSpaced-PLAIN-12");
+
+ _seqLabel.setHorizontalTextPosition(JLabel.LEFT);
+ _seqLabel.setPreferredSize(new Dimension(marginTools, 15));
+ _seq.setFont(textFieldsFont);
+ _seq.setText(rnaInList.get(0).getSeq());
+
+ _createButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ try {
+ RNA nRNA = new RNA(generateDefaultName());
+ nRNA.setRNA(_seq.getText(), _str.getText());
+ nRNA.drawRNARadiate(vp.getConfig());
+ _rnaList.add(new VARNAConfig(),nRNA,true);
+ } catch (ExceptionUnmatchedClosingParentheses e1) {
+ JOptionPane.showMessageDialog(vp, e1.getMessage(),"Error", JOptionPane.ERROR_MESSAGE);
+ } catch (ExceptionFileFormatOrSyntax e1) {
+ JOptionPane.showMessageDialog(vp, e1.getMessage(),"Error", JOptionPane.ERROR_MESSAGE);
+ }
+ }
+ });
+
+
+ _seqPanel.setLayout(new BorderLayout());
+ _seqPanel.add(_seqLabel, BorderLayout.WEST);
+ _seqPanel.add(_seq, BorderLayout.CENTER);
+
+ _strLabel.setPreferredSize(new Dimension(marginTools, 15));
+ _strLabel.setHorizontalTextPosition(JLabel.LEFT);
+ _str.setFont(textFieldsFont);
+ _strPanel.setLayout(new BorderLayout());
+ _strPanel.add(_strLabel, BorderLayout.WEST);
+ _strPanel.add(_str, BorderLayout.CENTER);
+
+ _input.setLayout(new GridLayout(2, 0));
+ _input.add(_seqPanel);
+ _input.add(_strPanel);
+
+ JPanel goPanel = new JPanel();
+ goPanel.setLayout(new BorderLayout());
+
+ _tools.setLayout(new BorderLayout());
+ _tools.add(_input, BorderLayout.CENTER);
+ _tools.add(_info, BorderLayout.SOUTH);
+ _tools.add(goPanel, BorderLayout.EAST);
+
+ _deleteButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ _rnaList.removeSelected();
+ }
+ });
+ _duplicateButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ _rnaList.add((VARNAConfig)vp.getConfig().clone(),vp.getRNA().clone(),vp.getRNA().getName()+"-"+DateFormat.getTimeInstance(DateFormat.LONG).format(new Date()),true);
+ }});
+
+ JPanel ops = new JPanel();
+ ops.setLayout(new GridLayout(1,2));
+ ops.add(_deleteButton);
+ ops.add(_duplicateButton);
+
+ JLabel j = new JLabel("Structures Manager",JLabel.CENTER);
+ _listPanel.setLayout(new BorderLayout());
+
+ _listPanel.add(ops,BorderLayout.SOUTH);
+ _listPanel.add(j,BorderLayout.NORTH);
+ _listPanel.add(listScroller,BorderLayout.CENTER);
+
+ goPanel.add(_createButton, BorderLayout.CENTER);
+
+ JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,_listPanel,vp);
+ /**TODO
getContentPane().setLayout(new BorderLayout());
- getContentPane().add(vp, BorderLayout.CENTER);
+ getContentPane().add(split, BorderLayout.CENTER);
+ getContentPane().add(_tools, BorderLayout.NORTH);
+ */
- setVisible(true);
+ //TODO setVisible(true);
+ DropTarget dt = new DropTarget(vp, this);
+
vp.addVARNAListener(this);
}
- private void RNAPanelDemoInit()
+
+ /*private void RNAPanelDemoInit()
{
DefaultListModel dlm = new DefaultListModel();
DropTarget dt = new DropTarget(vp, this);
vp.addVARNAListener(this);
- }
+ }*/
public static String generateDefaultName()
{
this._info = _info;
}
- public static void main(String[] args) {
+ /*public static void main(String[] args) {
AppVarnaBinding d = new AppVarnaBinding();
d.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
d.pack();
d.setVisible(true);
- }
+ }*/
public void dragEnter(DropTargetDragEvent arg0) {
ListModel dlm = _sideList.getModel();
FullBackup item = (FullBackup) dlm.getElementAt(index);;
_sideList.ensureIndexIsVisible(index);
- Object newName = JOptionPane.showInputDialog(
+ /*TODO Object newName = JOptionPane.showInputDialog(
this,
"Specify a new name for this RNA",
"Rename RNA",
{
item.name = newName.toString();
this._sideList.repaint();
- }
+ }*/
}
}
// TODO Auto-generated method stub
}
+
+ @Override
+ public Color getColour(int atomIndex, int pdbResNum, String chain,
+ String pdbId) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public String[] getPdbFile() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public void highlightAtom(int atomIndex, int pdbResNum, String chain,
+ String pdbId) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void mouseOverStructure(int atomIndex, String strInfo) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void releaseReferences(Object svl) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void updateColours(Object source) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void componentHidden(ComponentEvent e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void componentMoved(ComponentEvent e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void componentResized(ComponentEvent e) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void componentShown(ComponentEvent e) {
+ // TODO Auto-generated method stub
+
+ }
}