KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > snow > sortabletable > Test


1 package snow.sortabletable;
2
3 import java.awt.*;
4 import java.awt.event.*;
5 import javax.swing.*;
6 import javax.swing.event.*;
7 import javax.swing.table.*;
8
9 import java.util.*;
10
11 public final class Test extends JFrame
12 {
13
14   TestModel mod;
15   SortableTableModel stm;
16   JCheckBox simpleViewCB = new JCheckBox("Simple view", false);
17
18   public Test()
19   {
20     super();
21     this.setTitle( "Test sortable table" );
22
23     mod = new TestModel();
24     stm = new SortableTableModel(mod, 0, true);
25
26     final JTable table = new JTable(stm)
27     {
28        public Component _prepareEditor(TableCellEditor editor, int row, int col)
29        {
30           Component comp = editor.getTableCellEditorComponent(this,"", true,row,col);
31           return comp;
32        }
33     };
34     table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
35     stm.installGUI(table);
36     table.setDragEnabled(true);
37
38     UniversalTableCellRenderer utr = new UniversalTableCellRenderer(stm);
39     table.setDefaultRenderer(Object JavaDoc.class, utr);
40     table.setDefaultRenderer(Double JavaDoc.class, utr);
41     table.setDefaultRenderer(Integer JavaDoc.class, utr);
42
43     UniversalTableEditor ute = new UniversalTableEditor();
44     table.setDefaultEditor(Object JavaDoc.class, ute);
45     table.setDefaultEditor(Double JavaDoc.class, ute);
46     table.setDefaultEditor(Integer JavaDoc.class, ute);
47
48
49     table.setFont(new Font("Dialog", Font.PLAIN, 14));
50     table.setRowHeight(30);
51
52     JPanel content = new JPanel(new BorderLayout());
53     setContentPane(content);
54     content.add(new JScrollPane(table), BorderLayout.CENTER);
55
56     JPanel controlPanel = new JPanel();
57     content.add(controlPanel, BorderLayout.SOUTH);
58
59     JButton addBT = new JButton("Add");
60     controlPanel.add(addBT);
61     addBT.addActionListener(new ActionListener()
62     {
63       public void actionPerformed(ActionEvent e)
64       {
65         mod.addRandom();
66       }
67     });
68
69     JButton removeBT = new JButton("Remove Last");
70     controlPanel.add(removeBT);
71     removeBT.addActionListener(new ActionListener()
72     {
73       public void actionPerformed(ActionEvent e)
74       {
75         mod.removeLast();
76       }
77     });
78
79     JButton removeSel = new JButton("Remove Selected");
80     controlPanel.add(removeSel);
81     removeSel.addActionListener(new ActionListener()
82     {
83       public void actionPerformed(ActionEvent e)
84       {
85         int[] sels = table.getSelectedRows();
86         // retrieve the selected items list
87
TestModelItem[] selit = new TestModelItem[sels.length];
88         for(int i=0; i<sels.length; i++)
89         {
90           int pos = stm.getIndexInUnsortedFromTablePos(sels[i]);
91           selit[i] = mod.getItemAt(pos);
92         }
93
94         // remove them, per reference, to avoid index iteration conflicts
95
for(int i=0; i<sels.length; i++)
96         {
97           mod.remove(selit[i]);
98         }
99       }
100     });
101
102
103     // search
104
AdvancedSearchPanel searchPanel = new AdvancedSearchPanel("Search: ", null, stm, true);
105     JPanel wrap = new JPanel(new FlowLayout(FlowLayout.LEFT,0,0));
106     wrap.add(searchPanel);
107     searchPanel.add(Box.createHorizontalStrut(40));
108     searchPanel.add(simpleViewCB);
109     simpleViewCB.setOpaque(false);
110     simpleViewCB.addActionListener(new ActionListener()
111     {
112       public void actionPerformed(ActionEvent e)
113       {
114         if(!simpleViewCB.isSelected())
115         {
116           int[] allCols = new int[mod.getColumnCount()];
117           for(int i=0; i<allCols.length; i++) allCols[i] = i;
118           stm.setVisibleColumns(allCols);
119         }
120         else
121         {
122           stm.setVisibleColumns(new int[]{0,3});
123         }
124         stm.setPreferredColumnSizesFromModel();
125       }
126     });
127
128     getContentPane().add(wrap, BorderLayout.NORTH);
129
130     this.addWindowListener( new WindowAdapter()
131      {
132        @Override JavaDoc public void windowClosing(WindowEvent e)
133        {
134            terminateFrame(); // calls System.exit();
135
}
136        @Override JavaDoc public void windowClosed(WindowEvent e)
137        {
138            terminateFrame(); // calls System.exit();
139
}
140      }
141     );
142
143
144     final Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
145     this.setSize(800,600);
146     this.setLocation(180,120);
147     this.setVisible(true);
148
149     // must be visible
150
EventQueue.invokeLater(new Runnable JavaDoc()
151     {
152       public void run()
153       {
154         table.setRowSelectionInterval(40, 40);
155         table.scrollRectToVisible(table.getCellRect(100, 0, true));
156       }
157     });
158
159   } // Constructor
160

161
162
163
164   private void terminateFrame()
165   {
166     System.exit(0);
167   }
168
169
170  /**
171   * Static main method
172   */

173   public static void main( String JavaDoc[] arguments )
174   {
175      JFrame.setDefaultLookAndFeelDecorated(true);
176      EventQueue.invokeLater(new Runnable JavaDoc()
177      {
178        public void run()
179        {
180          new Test();
181        }
182      });
183    }
184
185
186    public static void numericalTest()
187    {
188      // numerical test described by sun in an article, showing ULP and addition errors.
189
//
190
long t0 = System.currentTimeMillis();
191      double f=0.0;
192      for(int i=0;i<=1000000000;i++)
193      {
194         f += Math.sqrt(i);
195      }
196      System.out.println(f+", t="+(t0-System.currentTimeMillis())/1000+" sec");
197
198      t0 = System.currentTimeMillis();
199      double newsum;
200      double sumerr=0.0;
201      double err, sum=0;
202      for(int i=1;i<=1000000000;i++)
203      {
204           f= Math.sqrt(i);
205           newsum = sum + f;
206           err = (newsum - sum ) - f;
207           sumerr += err;
208           sum = newsum;
209      }
210      System.out.println((sum-sumerr)+", t="+(t0-System.currentTimeMillis())/1000+" sec");
211
212   } // main
213

214
215
216 } // Test
Popular Tags