KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > demo > Everything


1 /*
2  * SwingWT demo. Displays most components, dialogs and things
3  * as an example.
4  *
5  * @author R. Rawson-Tetley
6  *
7  * $Log: Everything.java,v $
8  * Revision 1.43 2004/05/05 17:19:39 bobintetley
9  * Fix to make JComboBox update the selected item on it's model as the user
10  * chooses another item. Removed debug code from Everything demo
11  *
12  * Revision 1.42 2004/05/04 09:31:41 bobintetley
13  * PlainDocument/View support and implementation. Build script supports java/javax
14  * packages - fix to build script to use nested args in bootclasspath (single path broke on my Ant 1.6.1/Linux)
15  *
16  * Revision 1.41 2004/04/21 11:38:24 bobintetley
17  * *** empty log message ***
18  *
19  * Revision 1.40 2004/04/19 12:49:32 bobintetley
20  * JTaskTray implementation (and demo), along with Frame repaint fix
21  *
22  * Revision 1.39 2004/04/18 14:21:49 bobintetley
23  * JSpinner implementation
24  *
25  * Revision 1.38 2004/04/16 14:38:32 bobintetley
26  * Table and Tree cell editor support
27  *
28  * Revision 1.37 2004/01/20 07:38:01 bobintetley
29  * Bug fixes and compatibility methods
30  *
31  * Revision 1.36 2004/01/16 10:07:28 bobintetley
32  * ItemEvent/Listener support for combo
33  *
34  * Revision 1.35 2004/01/16 09:55:52 bobintetley
35  * Fixes
36  *
37  * Revision 1.34 2004/01/15 18:13:10 bobintetley
38  * TreeWillExpand support
39  *
40  * Revision 1.33 2004/01/13 08:43:50 bobintetley
41  * Implemented JSlider and added it to the demos
42  *
43  * Revision 1.32 2004/01/10 11:46:26 bobintetley
44  * JTree/TreePath fixes by Sachin (broken path, rootVisible support) and Rob
45  * (Missing root node from path, couldn't represent TreePath as string)
46  *
47  * Revision 1.31 2004/01/09 11:49:48 bobintetley
48  * Updated notes and set demo back to normal
49  *
50  * Revision 1.30 2004/01/09 11:47:26 bobintetley
51  * Automatic JButton mapping!
52  *
53  * Revision 1.29 2003/12/22 20:48:48 bobintetley
54  * Text and image support together for JButton
55  *
56  * Revision 1.28 2003/12/17 15:24:33 bobintetley
57  * Threading fixes
58  *
59  * Revision 1.27 2003/12/14 09:38:08 bobintetley
60  * Added swing.ButtonGroup to demo
61  *
62  * Revision 1.26 2003/12/14 08:47:37 bobintetley
63  * Added useful comments and CVS log header
64  *
65  */

66
67 package demo;
68
69 import swingwtx.custom.*;
70 import swingwtx.swing.*;
71 import swingwtx.swing.table.*;
72 import swingwtx.swing.tree.*;
73 import swingwtx.swing.event.*;
74 import swingwt.awt.*;
75 import swingwt.awt.image.*;
76 import swingwt.awt.event.*;
77
78 import java.net.*;
79
80 public class Everything extends JFrame {
81     
82     private JPanel comps = null;
83     
84     public void test() {
85         
86         setTitle("Test");
87         setSize(800, 500);
88         setLocation(200, 200);
89         
90         try {
91             setIconImage(new ImageIcon(getClass().getResource("/demo/pic.gif")).getImage());
92         }
93         catch (Exception JavaDoc e) {}
94         
95         getContentPane().setLayout(new BorderLayout());
96         
97         // When the frame gets closed
98
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
99         addWindowListener(new WindowAdapter() {
100             public void windowClosing(WindowEvent e) {
101                 checkClose();
102             }
103         });
104         
105         // Central panel to hold components
106
comps = new JPanel();
107         comps.setLayout(new FlowLayout());
108         
109         // Buttons and ActionEvents
110
JButton btn = new JButton("Button");
111         btn.addActionListener(new ActionListener() {
112             public void actionPerformed(ActionEvent e) {
113                 showConfirm();
114             }
115         });
116         btn.setMnemonic('B');
117         btn.setToolTipText("Test tooltip!");
118         comps.add(btn);
119         
120         comps.add(new JLabel("Quick test"));
121         JButton btn2 = new JButton("This works!");
122         btn2.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
123         btn2.addActionListener(new ActionListener() {
124             public void actionPerformed(ActionEvent e) {
125                 showMessage();
126             }
127         });
128         comps.add(btn2);
129         
130         
131         // Popup menu on the image button
132
final JPopupMenu jpop = new JPopupMenu();
133         JMenu mnuP = new JMenu("Popup!");
134         jpop.add(mnuP);
135         JMenuItem mnuI = new JMenuItem("Test Item");
136         mnuP.add(mnuI);
137         
138         // Images on buttons
139
final JButton btn3 = new JButton("Image Button");
140         try {
141             btn3.setIcon(new ImageIcon(getClass().getResource("/demo/Computer.png")));
142         }
143         catch (Exception JavaDoc e) {}
144         btn3.addActionListener(new ActionListener() {
145             public void actionPerformed(ActionEvent e) {
146                 jpop.show(btn3, 0, 0);
147             }
148         });
149         comps.add(btn3);
150         
151         // Text boxes and focus events
152
JTextField tb = new JTextField("Text box");
153         tb.setPreferredSize(new Dimension(100, 25));
154         tb.addFocusListener(new FocusListener() {
155             public void focusGained(FocusEvent e) {
156                 System.out.println("Text box got focus");
157             }
158             public void focusLost(FocusEvent e) {
159             }
160         });
161         comps.add(tb);
162         
163         // Text areas, scrollpanes and key events
164
JScrollPane jp = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
165         JTextArea ta = new JTextArea("Text Area");
166         ta.addKeyListener( new KeyListener() {
167             public void keyTyped(KeyEvent e) {
168                 showMessage();
169             }
170             public void keyPressed(KeyEvent e) {
171                 showMessage();
172             }
173             public void keyReleased(KeyEvent e) {
174             }
175         });
176         jp.getViewport().add(ta);
177         comps.add(jp);
178         
179         comps.add(new JCheckBox("Test"));
180         
181         ButtonGroup bg = new ButtonGroup();
182         JRadioButton rad1 = new JRadioButton("Radio1");
183         JRadioButton rad2 = new JRadioButton("Radio2");
184         bg.add(rad1);
185         bg.add(rad2);
186         bg.setSelected(rad1.getModel(), true);
187         comps.add(rad1);
188         comps.add(rad2);
189         
190         // Password fields
191
JPasswordField pass = new JPasswordField();
192         pass.setEchoChar('*');
193         pass.setPreferredSize(new Dimension(100, 25));
194         comps.add(pass);
195         
196         // Combo boxes
197
JComboBox jc = new JComboBox();
198         jc.setEditable(false);
199         jc.addItem("Test 1");
200         jc.addItem("Test 2");
201         jc.addItem("Test 3");
202         comps.add(jc);
203         
204         // Lists
205
JList jl = new JList( new String JavaDoc[] { "Item 1", "Item 2", "Item 3" } );
206         JScrollPane jlScr = new JScrollPane(jl);
207         jlScr.setPreferredSize(new Dimension(50, 100));
208         comps.add(jlScr);
209         
210         // Slider
211
JSlider slid = new JSlider(JSlider.VERTICAL, 1, 100, 50);
212         slid.setPreferredSize(new Dimension(30, 150));
213         comps.add(slid);
214         
215         // Spinner
216
JSpinner spin = new JSpinner();
217         comps.add(spin);
218         
219         // Tables -- oooh! Yeah baby! You like that?
220
Object JavaDoc[] cols = { "Column 1", "Column 2" };
221         Object JavaDoc[][] data = new Object JavaDoc[2][2];
222         data[0][0] = "Col 1 data";
223         data[0][1] = "Col 2 data";
224         data[1][0] = "Col 1.1 data";
225         data[1][1] = "Col 2.1 data";
226         DefaultTableModel dm = new DefaultTableModel(data, cols);
227         JTable tab = new JTable();
228         tab.setModel(dm);
229         tab.setCellSelectionEnabled(false);
230         tab.setRowSelectionAllowed(true);
231         tab.setPreferredSize(new Dimension(200, 150));
232         
233         // Custom cell renderering - yeah!
234
tab.getColumnModel().getColumn(0).setCellRenderer( new DefaultTableCellRenderer() {
235             
236             public Component getTableCellRendererComponent(JTable table, Object JavaDoc value,
237             boolean isSelected, boolean hasFocus,
238             int row, int column) {
239                 if (isSelected) {
240                     setBackground(table.getSelectionBackground());
241                     setForeground(table.getSelectionForeground());
242                 }
243                 else {
244                     setBackground(table.getBackground());
245                     setForeground(table.getForeground());
246                 }
247                 setIcon(new ImageIcon(getClass().getResource("/demo/pic.gif")));
248                 setValue(value);
249                 return this;
250             }
251             
252         });
253         JScrollPane tabScr = new JScrollPane(tab);
254         tabScr.setPreferredSize(new Dimension(150, 100));
255         comps.add(tabScr);
256         
257         // Trees... woohoo!
258
DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("RootNode");
259         
260         DefaultMutableTreeNode node11 = new DefaultMutableTreeNode("Node 11");
261         DefaultMutableTreeNode node12 = new DefaultMutableTreeNode("Node 12");
262         
263         DefaultMutableTreeNode book111 = new DefaultMutableTreeNode("Node 111");
264         DefaultMutableTreeNode book112 = new DefaultMutableTreeNode("Node 112");
265         
266         DefaultMutableTreeNode book121 = new DefaultMutableTreeNode("Node 121");
267         DefaultMutableTreeNode book122 = new DefaultMutableTreeNode("Node 122");
268         
269         DefaultMutableTreeNode book131 = new DefaultMutableTreeNode("Node 131");
270         DefaultMutableTreeNode book132 = new DefaultMutableTreeNode("Node 132");
271         
272         DefaultMutableTreeNode book141 = new DefaultMutableTreeNode("Node 141");
273         DefaultMutableTreeNode book142 = new DefaultMutableTreeNode("Node 142");
274         
275         DefaultMutableTreeNode book151 = new DefaultMutableTreeNode("Node 151");
276         DefaultMutableTreeNode book152 = new DefaultMutableTreeNode("Node 152");
277         
278         
279         rootNode.add(node11);
280         rootNode.add(node12);
281         
282         node12.add(book111);
283         node12.add(book112);
284         
285         book112.add(book121);
286         book112.add(book122);
287         
288         book122.add(book131);
289         book122.add(book132);
290         
291         book132.add(book141);
292         book132.add(book142);
293         
294         book142.add(book151);
295         book142.add(book152);
296         
297         
298         JTree tree = new JTree(rootNode);
299         tree.setPreferredSize(new Dimension(200, 150));
300         tree.addTreeExpansionListener(new TreeExpansionListener() {
301             public void treeExpanded(TreeExpansionEvent event) {
302                 System.out.println("treeExpanded :- "+ event.getPath());
303             }
304             
305             public void treeCollapsed(TreeExpansionEvent event) {
306                 System.out.println("treeExpanded :- "+ event.getPath());
307             }
308         });
309         tree.addWillTreeExpansionListener(new TreeWillExpandListener(){
310             public void treeWillExpand(TreeExpansionEvent event) throws ExpandVetoException {
311                 System.out.println("treeWillExpand :- " + event.getPath());
312                 //If u dont want control to go to treeExpanded() method uncomment the next line of code
313
//throw new ExpandVetoException(event);
314
}
315             public void treeWillCollapse(TreeExpansionEvent event){
316                 System.out.println("treeWillCollapse :- " + event.getPath());
317             }
318         });
319         
320         
321         
322         // Custom tree rendering!
323
tree.setCellRenderer( new DefaultTreeCellRenderer() {
324             
325             public Component getTreeCellRendererComponent(JTree tree,
326             Object JavaDoc value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus) {
327                 
328                 super.getTreeCellRendererComponent(
329                 tree, value, selected,
330                 expanded, leaf, row,
331                 hasFocus);
332                 
333                 if (value.toString().indexOf("Root") != -1)
334                     setIcon(new ImageIcon(getClass().getResource("/demo/pic.gif")));
335                 else
336                     setIcon(null);
337                 setText(value.toString());
338                 return this;
339             }
340             
341         });
342         comps.add(tree);
343         
344         
345         // Bit of direct Canvas rendering!
346
JComponent c = new JComponent() {
347             public void paint(Graphics g) {
348                 g.drawString("Direct Graphics Rendering", 20, 20);
349                 g.drawOval(40, 40, 50, 50);
350             }
351         };
352         c.setPreferredSize(new Dimension(200, 100));
353         comps.add(c);
354         
355         // Task Tray demo (SwingWT ONLY)
356
// Popup menu on task tray
357
final JPopupMenu jpop2 = new JPopupMenu();
358         JMenu mnuT = new JMenu("Popup!");
359         jpop2.add(mnuT);
360         JMenuItem mnuY = new JMenuItem("Tray Popup");
361         mnuT.add(mnuY);
362         JTaskTrayItem item = new JTaskTrayItem(
363                 new ImageIcon(getClass().getResource("/demo/pic.gif")),
364                 "Sample Task Tray Icon",
365                 jpop2);
366         item.show();
367         /// -------------
368

369         // Menu stuff
370
JMenuBar mb = new JMenuBar();
371         
372         JMenu mnuFile = new JMenu("File");
373         mnuFile.setMnemonic('F');
374         
375         JCheckBoxMenuItem mnuFileToggle = new JCheckBoxMenuItem("Toggle", true);
376         JRadioButtonMenuItem mnuFileRadio = new JRadioButtonMenuItem("Radio", true);
377         JRadioButtonMenuItem mnuFileRadio2 = new JRadioButtonMenuItem("Radio2", false);
378         
379         JMenu mnuFileOpen = new JMenu("Open");
380         mnuFileOpen.setMnemonic('O');
381         JMenuItem mnuFileOpenDoc = new JMenuItem("Document");
382         mnuFileOpenDoc.setMnemonic('D');
383         mnuFileOpenDoc.addActionListener(new ActionListener() {
384             public void actionPerformed(ActionEvent e) {
385                 showMessage();
386             }
387         });
388         try {
389             mnuFileOpenDoc.setIcon(new ImageIcon(getClass().getResource("/demo/pic.gif")));
390         }
391         catch (Exception JavaDoc e) {}
392         
393         JMenuItem mnuFileOpenFileDialog = new JMenuItem("File Dialog");
394         mnuFileOpenFileDialog.setMnemonic('i');
395         mnuFileOpenFileDialog.addActionListener(new ActionListener() {
396             public void actionPerformed(ActionEvent e) {
397                 showFileDialog();
398             }
399         });
400         
401         JMenuItem mnuFileOpenColorDialog = new JMenuItem("Color Dialog");
402         mnuFileOpenColorDialog.setMnemonic('C');
403         mnuFileOpenColorDialog.addActionListener(new ActionListener() {
404             public void actionPerformed(ActionEvent e) {
405                 showColorDialog();
406             }
407         });
408         
409         JMenuItem mnuFileExit = new JMenuItem("Exit\tCtrl+X");
410         mnuFileExit.setMnemonic('x');
411         mnuFileExit.setAccelerator(KeyStroke.getKeyStroke(
412         swingwt.awt.event.KeyEvent.VK_X, swingwt.awt.event.InputEvent.CTRL_MASK));
413         mnuFileExit.addActionListener(new ActionListener() {
414             public void actionPerformed(ActionEvent e) {
415                 dispose();
416                 System.exit(0);
417             }
418         });
419         
420         
421         mb.add(mnuFile);
422         mnuFile.add(mnuFileToggle);
423         mnuFile.addSeparator();
424         mnuFile.add(mnuFileRadio);
425         mnuFile.add(mnuFileRadio2);
426         mnuFile.addSeparator();
427         mnuFile.add(mnuFileOpen);
428         mnuFileOpen.add(mnuFileOpenDoc);
429         mnuFileOpen.add(mnuFileOpenFileDialog);
430         mnuFileOpen.add(mnuFileOpenColorDialog);
431         mnuFile.add(mnuFileExit);
432         
433         setJMenuBar(mb);
434         
435         // Toolbars !
436
JToolBar bar = new JToolBar();
437         getContentPane().add(bar, BorderLayout.NORTH);
438         JButton btnTool1 = new JButton("ToolButton 1");
439         bar.add(btnTool1);
440         JButton btnTool2 = new JButton("ToolButton 2");
441         bar.add(btnTool2);
442         
443         // Splitpane the lot!
444
JSplitPane jsp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, new JButton("SplitPane"), comps);
445         jsp.setResizeWeight(0.1);
446         getContentPane().add(jsp, BorderLayout.CENTER);
447         
448         // Show the frame
449
show();
450         while(true){
451             try {
452                 Thread.sleep(1000);
453             } catch (InterruptedException JavaDoc e) {
454                 // TODO ×Ô¶¯Éú³É catch ¿é
455
e.printStackTrace();
456             }
457         }
458     }
459     
460     public void showMessage() {
461         JOptionPane.showMessageDialog(this, "You did something and I caught the event!");
462     }
463     
464     public void showConfirm() {
465         if (JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(this, "Are you sure you wanted to press that?"))
466             System.out.println("You picked yes");
467         else
468             System.out.println("You picked no");
469     }
470     
471     public void checkClose() {
472         if (JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(this, "Sure you want to close?")) {
473             dispose();
474             System.exit(0);
475         }
476     }
477     
478     public void showFileDialog() {
479         try {
480             JFileChooser jf = new JFileChooser();
481             jf.setSelectedFile(new java.io.File JavaDoc(System.getProperty("user.home")));
482             int picked = jf.showOpenDialog(this);
483             if (picked == jf.CANCEL_OPTION)
484                 System.out.println("You cancelled the dialog");
485             else {
486                 System.out.println("You chose: " + jf.getSelectedFile().getAbsolutePath());
487             }
488         }
489         catch (Exception JavaDoc e) {
490             e.printStackTrace();
491         }
492     }
493     
494     public void showColorDialog() {
495         try {
496             JColorChooser jf = new JColorChooser();
497             Color c = jf.showDialog(this, "Choose that colour!", null);
498             if (c == null)
499                 System.out.println("You cancelled the dialog");
500             else {
501                 System.out.println("You chose: " + c.toString());
502             }
503         }
504         catch (Exception JavaDoc e) {
505             e.printStackTrace();
506         }
507     }
508     
509     public void testTabs() {
510         
511         setTitle("Testing Tabs");
512         setLayout(new BorderLayout());
513         
514         JTabbedPane jtp = new JTabbedPane();
515         
516         JPanel pnl1 = new JPanel();
517         pnl1.setLayout(new FlowLayout());
518         
519         JLabel lblTest = new JLabel("Test");
520         pnl1.add(lblTest);
521         
522         JPanel pnl2 = new JPanel();
523         pnl2.setLayout(new GridLayout(2,2));
524         
525         JButton btnTest = new JButton();
526         btnTest.setIcon(new ImageIcon(getClass().getResource("/demo/Computer.png")));
527         pnl2.add(btnTest);
528         
529         jtp.addTab("Test", pnl1);
530         jtp.addTab("Again", pnl2);
531         
532         add(jtp, BorderLayout.CENTER);
533         
534         jtp.setIconAt(1, new ImageIcon(getClass().getResource("/demo/Computer.png")));
535         
536         show();
537         dispatchEvents();
538         dispose();
539         
540     }
541     
542     public void testSlider() {
543         setTitle("Test Slider");
544         setSize(640, 480);
545         setLocation(200, 200);
546         org.eclipse.swt.widgets.Shell s = (org.eclipse.swt.widgets.Shell) this.getPeer();
547         s.setLayout(new org.eclipse.swt.layout.RowLayout());
548         org.eclipse.swt.widgets.Slider sl = new org.eclipse.swt.widgets.Slider(s, org.eclipse.swt.SWT.BORDER | org.eclipse.swt.SWT.HORIZONTAL);
549         sl.setMaximum(100);
550         sl.setMinimum(0);
551         sl.setSelection(50);
552         sl.setThumb(10);
553         
554         show();
555         dispose();
556         
557     }
558     
559     public class TestAction extends AbstractAction {
560         
561         public void actionPerformed(ActionEvent e) {
562         }
563         
564     }
565     
566     public static void main(String JavaDoc[] args) {
567         new Everything().test();
568         //new Everything().testSlider();
569
//new Everything().testTabs();
570
}
571     
572 }
573
Popular Tags