C:\proj\zoneLayout\examples\com\atticlabs\zonelayout\swing\examples\ZoneLayoutComparison.java

1    package com.atticlabs.zonelayout.swing.examples; 
2     
3    import com.atticlabs.zonelayout.swing.ZoneLayout; 
4    import com.atticlabs.zonelayout.swing.ZoneLayoutFactory; 
5    import com.jgoodies.forms.factories.ButtonBarFactory; 
6     
7    import javax.swing.JPanel; 
8    import javax.swing.JLabel; 
9    import javax.swing.JTextField; 
10   import javax.swing.JComboBox; 
11   import javax.swing.BorderFactory; 
12   import javax.swing.JButton; 
13   import javax.swing.JList; 
14   import javax.swing.JFrame; 
15   import javax.swing.SwingUtilities; 
16   import java.awt.BorderLayout; 
17    
18   public class ZoneLayoutComparison { 
19       public static final Object[] values = new Object[] { 
20               "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" 
21       } ; 
22    
23       public JPanel buildPanel() { 
24           ZoneLayout layout = ZoneLayoutFactory.newZoneLayout(); 
25           layout.addRow("a-~a"); 
26           layout.addRow("b+*b"); 
27           layout.addRow("6..."); 
28           layout.addRow("c>.c"); 
29    
30           ZoneLayout aLayout = ZoneLayoutFactory.newZoneLayout(); 
31           aLayout.addRow("a>a2b-~b3c>c2d-~d", "valueRow"); 
32           aLayout.addRow("6................", "valueRow"); 
33           aLayout.addRow("e>e2f......-~...f"); 
34    
35           ZoneLayout bLayout = ZoneLayoutFactory.newZoneLayout(); 
36           bLayout.addRow("a>a2b-~b2c-c"); 
37           bLayout.addRow("...........6"); 
38           bLayout.addRow("g........d-d"); 
39           bLayout.addRow("...........6"); 
40           bLayout.addRow("...+*....e-e"); 
41           bLayout.addRow("...........6"); 
42           bLayout.addRow(".........f-f"); 
43           bLayout.addRow(".......g...!"); 
44    
45           JPanel namePanel = new JPanel(aLayout); 
46           aLayout.insertTemplate("valueRow"); 
47           namePanel.add(new JLabel("First Name:"), "a"); 
48           namePanel.add(new JTextField(15), "b"); 
49           namePanel.add(new JLabel("Last Name:"), "c"); 
50           namePanel.add(new JTextField(15), "d"); 
51           System.out.println(new JTextField(15).getMinimumSize()); 
52           aLayout.insertTemplate("valueRow"); 
53           namePanel.add(new JLabel("Title:"), "a"); 
54           namePanel.add(new JTextField(15), "b"); 
55           namePanel.add(new JLabel("Nickname:"), "c"); 
56           namePanel.add(new JTextField(15), "d"); 
57           namePanel.add(new JLabel("Display Format:"), "e"); 
58           namePanel.add(new JComboBox(values), "f"); 
59           namePanel.setBorder(BorderFactory.createCompoundBorder( 
60                   BorderFactory.createTitledBorder("Name"), 
61                   BorderFactory.createEmptyBorder(5, 5, 5, 5))); 
62    
63           JPanel emailPanel = new JPanel(bLayout); 
64           emailPanel.add(new JLabel("Email Address:"), "a"); 
65           emailPanel.add(new JTextField(15), "b"); 
66           emailPanel.add(new JButton("Add"), "c"); 
67           emailPanel.add(new JButton("Edit"), "d"); 
68           emailPanel.add(new JButton("Remove"), "e"); 
69           emailPanel.add(new JButton("Advanced"), "f"); 
70           emailPanel.add(new JList(values), "g"); 
71    
72           emailPanel.setBorder(BorderFactory.createCompoundBorder( 
73                   BorderFactory.createTitledBorder("E-mail"), 
74                   BorderFactory.createEmptyBorder(5, 5, 5, 5))); 
75    
76    
77           JPanel p = new JPanel(layout); 
78    
79           p.add(namePanel, "a"); 
80           p.add(emailPanel, "b"); 
81           p.add(ButtonBarFactory.buildOKCancelBar( 
82                   new JButton("OK"), 
83                   new JButton("Cancel")), "c"); 
84    
85           p.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); 
86           return p; 
87       } 
88    
89       public static void main(String[] args) { 
90           final JFrame frame = new JFrame("ZoneLayout"); 
91    
92           frame.getContentPane().add( 
93                   new ZoneLayoutComparison().buildPanel(), BorderLayout.CENTER); 
94    
95           frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
96    
97           SwingUtilities.invokeLater(new Runnable() { 
98               public void run() { 
99                   frame.pack(); 
100                  frame.setVisible(true); 
101              } 
102          }); 
103      } 
104  } 
105