X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src2%2Ffr%2Forsay%2Flri%2Fvarna%2Fviews%2FVueBases.java;fp=src2%2Ffr%2Forsay%2Flri%2Fvarna%2Fviews%2FVueBases.java;h=6f9d95a9afd4c0996ad25fc4a62c65ff4aee802d;hb=9f55415c9f8005e9dcd8243453883ff853fd5b76;hp=0000000000000000000000000000000000000000;hpb=d8e8c742b864e58406d13e21d124699a26b6492f;p=jalview.git diff --git a/src2/fr/orsay/lri/varna/views/VueBases.java b/src2/fr/orsay/lri/varna/views/VueBases.java new file mode 100644 index 0000000..6f9d95a --- /dev/null +++ b/src2/fr/orsay/lri/varna/views/VueBases.java @@ -0,0 +1,215 @@ +/* + 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. + */ +package fr.orsay.lri.varna.views; + +import java.awt.Color; +import java.awt.Dimension; +import java.awt.GridLayout; +import java.util.ArrayList; +import java.util.Hashtable; + +import javax.swing.JComponent; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.event.TableModelEvent; +import javax.swing.event.TableModelListener; + + +import fr.orsay.lri.varna.VARNAPanel; +import fr.orsay.lri.varna.components.BaseSpecialColorEditor; +import fr.orsay.lri.varna.components.BaseTableModel; +import fr.orsay.lri.varna.components.ColorRenderer; +import fr.orsay.lri.varna.models.BaseList; +import fr.orsay.lri.varna.models.rna.ModeleBase; +import fr.orsay.lri.varna.models.rna.ModeleBaseNucleotide; + +public class VueBases extends JPanel { + /** + * + */ + private static final long serialVersionUID = 1L; + + /** + * for bases by kind + */ + public final static int KIND_MODE = 1; + /** + * for all bases + */ + public final static int ALL_MODE = 2; + /** + * for base pairs by king + */ + public final static int COUPLE_MODE = 3; + + private int _mode; + + private VARNAPanel _vp; + + private ArrayList data = new ArrayList(); + + private Hashtable revdata = new Hashtable(); + + private JTable table; + + private BaseTableModel specialTableModel; + + public VueBases(VARNAPanel vp, int mode) { + super(new GridLayout(1, 0)); + _vp = vp; + switch (mode) { + case (KIND_MODE): + _mode = KIND_MODE; + kindMode(); + break; + case (ALL_MODE): + _mode = ALL_MODE; + allMode(); + break; + case (COUPLE_MODE): + _mode = COUPLE_MODE; + coupleMode(); + break; + default: + break; + } + } + + private BaseList locateOrAddList(String caption) + { + if (!revdata.containsKey(caption)) + { + BaseList mbl = new BaseList(caption); + revdata.put(caption,mbl); + data.add(mbl); + } + return revdata.get(caption); + } + + private void coupleMode() { + String pairString; + for (int i = 0; i < _vp.getRNA().get_listeBases().size(); i++) { + + int j = _vp.getRNA().get_listeBases().get(i).getElementStructure(); + if (j > i) { + String tmp1 = (_vp.getRNA().get_listeBases().get(i).getContent()); + String tmp2 = (_vp.getRNA().get_listeBases().get(j).getContent()); + pairString = tmp1 +"-"+ tmp2; + BaseList bl = locateOrAddList(pairString); + bl.addBase(_vp.getRNA().get_listeBases().get(i)); + bl.addBase(_vp.getRNA().get_listeBases().get(j)); + } + } + createView(); + } + + private void allMode() { + for (int i = 0; i < _vp.getRNA().get_listeBases().size(); i++) { + ModeleBase mb = _vp.getRNA().get_listeBases().get(i); + BaseList bl = locateOrAddList(""+i); + bl.addBase(mb); + } + createView(); + } + + private void kindMode() { + for (int i = 0; i < _vp.getRNA().get_listeBases().size(); i++) { + ModeleBase mb = _vp.getRNA().get_listeBases().get(i); + String tmp1 = (mb.getContent()); + BaseList bl = locateOrAddList(tmp1); + bl.addBase(mb); + } + createView(); + } + + private void createView() { + specialTableModel = new BaseTableModel(data); + table = new JTable(specialTableModel); + table.setPreferredScrollableViewportSize(new Dimension(500, 300)); + // TODO: Find equivalent in JRE 1.5 + //table.setFillsViewportHeight(true); + // Create the scroll pane and add the table to it. + JScrollPane scrollPane = new JScrollPane(table); + + // Set up renderer and editor for the Favorite Color column. + table.setDefaultRenderer(Color.class, new ColorRenderer(true)); + table.setDefaultEditor(Color.class, new BaseSpecialColorEditor(this)); + specialTableModel.addTableModelListener(new TableModelListener(){ + + public void tableChanged(TableModelEvent e) { + _vp.repaint(); + } + + }); + + // Add the scroll pane to this panel. + add(scrollPane); + + UIvueBases(); + } + + /** + * Create the GUI and show it. For thread safety, this method should be + * invoked from the event-dispatching thread. + */ + public void UIvueBases() { + // Create and set up the content pane. + JComponent newContentPane = this; + newContentPane.setOpaque(true); // content panes must be opaque + + JOptionPane.showMessageDialog(_vp, newContentPane, + "Base Colors Edition", JOptionPane.PLAIN_MESSAGE); + + } + + public int getMode() { + return _mode; + } + + public BaseList getDataAt(int i) { + return data.get(i); + } + + + public ArrayList getData() { + return data; + } + + public VARNAPanel get_vp() { + return _vp; + } + + public JTable getTable() { + return table; + } + + public void setTable(JTable table) { + this.table = table; + } + + public BaseTableModel getSpecialTableModel() { + return specialTableModel; + } + + public void setSpecialTableModel(BaseTableModel specialTableModel) { + this.specialTableModel = specialTableModel; + } + +}