X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=srcjar%2Ffr%2Forsay%2Flri%2Fvarna%2Fviews%2FVueRNAList.java;fp=srcjar%2Ffr%2Forsay%2Flri%2Fvarna%2Fviews%2FVueRNAList.java;h=1fc7e28be04a06a9e98a651b5d8c220b1088ca38;hb=ec8f3cedf60fb1feed6d34de6b49f6bfa78b9dd8;hp=0000000000000000000000000000000000000000;hpb=056dad85a910551cc95e44d451a61f6b8c4dd35d;p=jalview.git diff --git a/srcjar/fr/orsay/lri/varna/views/VueRNAList.java b/srcjar/fr/orsay/lri/varna/views/VueRNAList.java new file mode 100644 index 0000000..1fc7e28 --- /dev/null +++ b/srcjar/fr/orsay/lri/varna/views/VueRNAList.java @@ -0,0 +1,195 @@ +package fr.orsay.lri.varna.views; + + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyVetoException; +import java.beans.VetoableChangeListener; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Vector; + +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTable; +import javax.swing.event.TableModelEvent; +import javax.swing.event.TableModelListener; +import javax.swing.table.AbstractTableModel; +import javax.swing.table.TableColumn; + +import fr.orsay.lri.varna.VARNAPanel; +import fr.orsay.lri.varna.components.ColorRenderer; +import fr.orsay.lri.varna.models.rna.ModeleBase; +import fr.orsay.lri.varna.models.rna.ModeleBaseNucleotide; +import fr.orsay.lri.varna.models.rna.ModeleColorMap; +import fr.orsay.lri.varna.models.rna.RNA; + +public class VueRNAList extends JPanel implements TableModelListener, ActionListener { + + private JTable table; + private ValueTableModel _tm; + private ArrayList data; + private ArrayList columns; + private ArrayList included; + + + public VueRNAList( ArrayList rnas) + { + super(new BorderLayout()); + data = rnas; + init(); + } + + public ArrayList getSelectedRNAs() + { + ArrayList result = new ArrayList(); + for (int i = 0; i < data.size(); i++) + { + if (included.get(i)) + { + result.add(data.get(i)); + } + } + return result; + } + + private void init() + { + Object[] col = {"Num","Selected","Name","ID","Length"}; + columns = new ArrayList(); + for (int i = 0; i < col.length; i++) + { + columns.add(col[i]); + } + included = new ArrayList(); + for (int i = 0; i < data.size(); i++) + { + included.add(new Boolean(true)); + } + + + _tm = new ValueTableModel(); + table = new JTable(_tm); + table.setDefaultRenderer(Color.class, new ColorRenderer(true)); + table.setPreferredScrollableViewportSize(new Dimension(600, 300)); + table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); + TableColumn c0 = table.getColumnModel().getColumn(0); + c0.setPreferredWidth(30); + TableColumn c1 = table.getColumnModel().getColumn(1); + c1.setPreferredWidth(30); + TableColumn c2 = table.getColumnModel().getColumn(2); + c2.setPreferredWidth(200); + TableColumn c3 = table.getColumnModel().getColumn(3); + c3.setPreferredWidth(200); + TableColumn c4 = table.getColumnModel().getColumn(4); + c4.setPreferredWidth(30); + table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS); + table.getModel().addTableModelListener(this); + + JScrollPane scrollPane = new JScrollPane(table); + this.add(scrollPane,BorderLayout.CENTER); + JPanel jp = new JPanel(); + JPanel jpl = new JPanel(); + JPanel jpr = new JPanel(); + jp.setLayout(new BorderLayout()); + jp.add(jpl,BorderLayout.WEST); + jp.add(jpr,BorderLayout.EAST); + jp.add(new JLabel("Please select which model(s) should be imported." ),BorderLayout.SOUTH); + JButton selectAll = new JButton("Select All"); + selectAll.addActionListener(this); + selectAll.setActionCommand("all"); + JButton deselectAll = new JButton("Deselect All"); + deselectAll.addActionListener(this); + deselectAll.setActionCommand("none"); + jpl.add(selectAll); + jpr.add(deselectAll); + + add(scrollPane,BorderLayout.CENTER); + add(jp,BorderLayout.SOUTH); + } + + + + private class ValueTableModel extends AbstractTableModel { + public String getColumnName(int col) { + return columns.get(col).toString(); + } + public int getRowCount() { return data.size(); } + public int getColumnCount() { return columns.size(); } + public Object getValueAt(int row, int col) { + RNA r = data.get(row); + if (col==0) + { + return new Integer(row+1); + } + else if (col==1) + { + return new Boolean(included.get(row)); + } + else if (col==2) + { + return new String(r.getName()); + } + else if (col==3) + { + return new String(r.getID()); + } + else if (col==4) + { + return new Integer(r.getSize()); + } + return "N/A"; + } + public boolean isCellEditable(int row, int col) + { + if (col==1) + return true; + return false; + } + public void setValueAt(Object value, int row, int col) { + if (col==1) + { + included.set(row, (Boolean)value); + fireTableCellUpdated(row, col); + } + } + public Class getColumnClass(int c) { + return getValueAt(0, c).getClass(); + } + } + + public void tableChanged(TableModelEvent e) { + if (e.getType() == TableModelEvent.UPDATE) + { + table.repaint(); + } + + } + + public void actionPerformed(ActionEvent e) { + if (e.getActionCommand().equals("none")) + { + for(int i=0;i