1 package fr.orsay.lri.varna.views;
4 import java.awt.BorderLayout;
6 import java.awt.Dimension;
7 import java.awt.GridLayout;
8 import java.awt.event.ActionEvent;
9 import java.awt.event.ActionListener;
10 import java.beans.PropertyChangeEvent;
11 import java.beans.PropertyVetoException;
12 import java.beans.VetoableChangeListener;
13 import java.util.ArrayList;
14 import java.util.Collection;
15 import java.util.Vector;
17 import javax.swing.JButton;
18 import javax.swing.JLabel;
19 import javax.swing.JPanel;
20 import javax.swing.JScrollPane;
21 import javax.swing.JTable;
22 import javax.swing.event.TableModelEvent;
23 import javax.swing.event.TableModelListener;
24 import javax.swing.table.AbstractTableModel;
25 import javax.swing.table.TableColumn;
27 import fr.orsay.lri.varna.VARNAPanel;
28 import fr.orsay.lri.varna.components.ColorRenderer;
29 import fr.orsay.lri.varna.models.rna.ModeleBase;
30 import fr.orsay.lri.varna.models.rna.ModeleBaseNucleotide;
31 import fr.orsay.lri.varna.models.rna.ModeleColorMap;
32 import fr.orsay.lri.varna.models.rna.RNA;
34 public class VueRNAList extends JPanel implements TableModelListener, ActionListener {
37 private ValueTableModel _tm;
38 private ArrayList<RNA> data;
39 private ArrayList<Object> columns;
40 private ArrayList<Boolean> included;
43 public VueRNAList( ArrayList<RNA> rnas)
45 super(new BorderLayout());
50 public ArrayList<RNA> getSelectedRNAs()
52 ArrayList<RNA> result = new ArrayList<RNA>();
53 for (int i = 0; i < data.size(); i++)
57 result.add(data.get(i));
65 Object[] col = {"Num","Selected","Name","ID","Length"};
66 columns = new ArrayList<Object>();
67 for (int i = 0; i < col.length; i++)
71 included = new ArrayList<Boolean>();
72 for (int i = 0; i < data.size(); i++)
74 included.add(new Boolean(true));
78 _tm = new ValueTableModel();
79 table = new JTable(_tm);
80 table.setDefaultRenderer(Color.class, new ColorRenderer(true));
81 table.setPreferredScrollableViewportSize(new Dimension(600, 300));
82 table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
83 TableColumn c0 = table.getColumnModel().getColumn(0);
84 c0.setPreferredWidth(30);
85 TableColumn c1 = table.getColumnModel().getColumn(1);
86 c1.setPreferredWidth(30);
87 TableColumn c2 = table.getColumnModel().getColumn(2);
88 c2.setPreferredWidth(200);
89 TableColumn c3 = table.getColumnModel().getColumn(3);
90 c3.setPreferredWidth(200);
91 TableColumn c4 = table.getColumnModel().getColumn(4);
92 c4.setPreferredWidth(30);
93 table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
94 table.getModel().addTableModelListener(this);
96 JScrollPane scrollPane = new JScrollPane(table);
97 this.add(scrollPane,BorderLayout.CENTER);
98 JPanel jp = new JPanel();
99 JPanel jpl = new JPanel();
100 JPanel jpr = new JPanel();
101 jp.setLayout(new BorderLayout());
102 jp.add(jpl,BorderLayout.WEST);
103 jp.add(jpr,BorderLayout.EAST);
104 jp.add(new JLabel("Please select which model(s) should be imported." ),BorderLayout.SOUTH);
105 JButton selectAll = new JButton("Select All");
106 selectAll.addActionListener(this);
107 selectAll.setActionCommand("all");
108 JButton deselectAll = new JButton("Deselect All");
109 deselectAll.addActionListener(this);
110 deselectAll.setActionCommand("none");
112 jpr.add(deselectAll);
114 add(scrollPane,BorderLayout.CENTER);
115 add(jp,BorderLayout.SOUTH);
120 private class ValueTableModel extends AbstractTableModel {
121 public String getColumnName(int col) {
122 return columns.get(col).toString();
124 public int getRowCount() { return data.size(); }
125 public int getColumnCount() { return columns.size(); }
126 public Object getValueAt(int row, int col) {
127 RNA r = data.get(row);
130 return new Integer(row+1);
134 return new Boolean(included.get(row));
138 return new String(r.getName());
142 return new String(r.getID());
146 return new Integer(r.getSize());
150 public boolean isCellEditable(int row, int col)
156 public void setValueAt(Object value, int row, int col) {
159 included.set(row, (Boolean)value);
160 fireTableCellUpdated(row, col);
163 public Class getColumnClass(int c) {
164 return getValueAt(0, c).getClass();
168 public void tableChanged(TableModelEvent e) {
169 if (e.getType() == TableModelEvent.UPDATE)
176 public void actionPerformed(ActionEvent e) {
177 if (e.getActionCommand().equals("none"))
179 for(int i=0;i<this.included.size();i++)
181 included.set(i, false);
183 _tm.fireTableRowsUpdated(0, included.size()-1);
185 else if (e.getActionCommand().equals("all"))
187 for(int i=0;i<this.included.size();i++)
189 included.set(i, true);
191 _tm.fireTableRowsUpdated(0, included.size()-1);