KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > snow > sortabletable > Test2


1 package snow.sortabletable;
2
3
4 import java.awt.*;
5 import java.awt.event.*;
6 import javax.swing.*;
7 import javax.swing.event.*;
8 import javax.swing.table.*;
9
10 import java.util.*;
11
12 /** test for wirestock tables: an index column also exists
13 */

14 public final class Test2 extends JFrame// implements AdjustmentListener
15
{
16   final JTable rowIndexTable = new JTable();
17   final JTable table = new JTable();
18   TestModel tableModel = new TestModel();
19   RowHeaderExtractorWrapperSortableTableModel m1, m2;
20   SortableTableModel sortableTableModel;
21   JScrollPane scrollPane, scrollPaneIndex;
22
23   public Test2()
24   {
25     super("Test with index");
26
27     sortableTableModel = new SortableTableModel(tableModel, 0, true);
28
29     m1 = new RowHeaderExtractorWrapperSortableTableModel(true, sortableTableModel, 2);
30     m2 = new RowHeaderExtractorWrapperSortableTableModel(false, sortableTableModel, 2);
31
32     table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
33     rowIndexTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
34
35     table.setModel(m2);
36     rowIndexTable.setModel(m1);
37
38     table.setRowMargin(3);
39     rowIndexTable.setRowMargin(3);
40
41     //table.setRowHeight(35);
42

43     rowIndexTable.setBackground(table.getTableHeader().getBackground());
44
45     // this synchronize the selections and install header sort renderers...
46
sortableTableModel.installGUI(rowIndexTable, table);
47
48
49     getContentPane().setLayout(new BorderLayout());
50     scrollPaneIndex = new JScrollPane(rowIndexTable);
51
52    //JPanel wrapPanel = new JPanel(new BorderLayout(0,0));
53
// wrapPanel.add(table, BorderLayout.CENTER);
54

55     scrollPane = new JScrollPane(table);
56     getContentPane().add(scrollPane, BorderLayout.CENTER);
57
58
59     // first rows size
60
rowIndexTable.setPreferredScrollableViewportSize(new Dimension(150,5000));
61
62 /* table.setPreferredScrollableViewportSize(new Dimension(300,100));
63     table.setMinimumSize(new Dimension(500,500));
64     table.setPreferredSize(new Dimension(700,500));
65     */

66
67     //this.sortableTableModel.setPreferredColumnSizesFromModel();
68

69     //rowIndexTable.getColumnModel().getColumn(0).setPreferredWidth(50);
70

71     //scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
72
//scrollPane.setAutoscrolls(true);
73

74     // row index
75
scrollPane.setRowHeaderView(scrollPaneIndex.getViewport());
76
77     final JTableHeader th = rowIndexTable.getTableHeader();
78     scrollPane.setCorner(JScrollPane.UPPER_LEFT_CORNER, (Component) th);
79     JViewport tv = new JViewport();
80     tv.setView(table.getTableHeader());
81     scrollPane.setColumnHeader(tv);
82
83        /* in the sortable table model now !!!
84     th.addMouseListener(new MouseAdapter()
85     {
86       @Override public void mouseClicked(MouseEvent me)
87       {
88       }
89       @Override public void mouseReleased(MouseEvent me)
90       {
91          tableModel.fireTableModelWillChange();
92          int w = rowIndexTable.getColumnModel().getTotalColumnWidth();
93          Dimension dim = new Dimension(w, (int) table.getPreferredScrollableViewportSize().getHeight());
94          rowIndexTable.setPreferredScrollableViewportSize(dim);
95
96          //table.setPreferredScrollableViewportSize( table.getPreferredScrollableViewportSize() );
97          tableModel.fireTableDataChanged();
98          tableModel.fireTableModelHasChanged();
99       }
100
101       public void mouseEntered(MouseEvent me)
102       {
103       }
104       public void mouseExited(MouseEvent me)
105       {
106       }
107
108     }); */

109
110     installControlPanel();
111
112     setSize(800,450);
113     setVisible(true);
114
115
116   } // Constructor
117

118
119   private void installControlPanel()
120   {
121     JPanel controlPanel = new JPanel();
122     getContentPane().add(controlPanel, BorderLayout.SOUTH);
123
124     JButton addBT = new JButton("Add");
125     controlPanel.add(addBT);
126     addBT.addActionListener(new ActionListener()
127     {
128       public void actionPerformed(ActionEvent e)
129       {
130         tableModel.addRandom();
131       }
132     });
133
134     JButton removeBT = new JButton("Remove Last");
135     controlPanel.add(removeBT);
136     removeBT.addActionListener(new ActionListener()
137     {
138       public void actionPerformed(ActionEvent e)
139       {
140         tableModel.removeLast();
141       }
142     });
143
144     JButton removeSel = new JButton("Remove Selected");
145     controlPanel.add(removeSel);
146     removeSel.addActionListener(new ActionListener()
147     {
148       public void actionPerformed(ActionEvent e)
149       {
150         int[] sels = table.getSelectedRows();
151         // retrieve the selected items list
152
TestModelItem[] selit = new TestModelItem[sels.length];
153         for(int i=0; i<sels.length; i++)
154         {
155           int pos = sortableTableModel.getIndexInUnsortedFromTablePos(sels[i]);
156           selit[i] = tableModel.getItemAt(pos);
157         }
158
159         // remove them, per reference, to avoid index iteration conflicts
160
for(int i=0; i<sels.length; i++)
161         {
162           tableModel.remove(selit[i]);
163         }
164
165
166       }
167     });
168
169
170
171     AdvancedSearchPanel searchPanel = new AdvancedSearchPanel("Search: ", null, this.sortableTableModel, true);
172     getContentPane().add(searchPanel, BorderLayout.NORTH);
173
174
175
176     this.addWindowListener( new WindowAdapter()
177      {
178        public void windowClosing(WindowEvent e)
179        {
180            System.exit(0);
181        }
182        public void windowClosed(WindowEvent e)
183        {
184            System.exit(0);
185        }
186      }
187     );
188   }
189
190
191   /**
192    * Static main method
193    */

194   public static void main( String JavaDoc[] arguments )
195   {
196      EventQueue.invokeLater(new Runnable JavaDoc()
197      {
198        public void run()
199        {
200          new Test2();
201        }
202      });
203   } // main
204

205
206 } // Test2
Popular Tags