KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jdesktop > demo > adventure > MainWindow


1 /*
2  * BindingDemoForm.java
3  *
4  * Created on January 10, 2005, 1:55 PM
5  */

6
7 package org.jdesktop.demo.adventure;
8
9 import java.awt.Component JavaDoc;
10 import java.awt.Dimension JavaDoc;
11 import java.awt.GridBagConstraints JavaDoc;
12 import java.awt.GridBagLayout JavaDoc;
13 import java.awt.Insets JavaDoc;
14 import java.text.NumberFormat JavaDoc;
15 import java.util.HashMap JavaDoc;
16 import java.util.Map JavaDoc;
17
18 import javax.swing.BorderFactory JavaDoc;
19 import javax.swing.DefaultListCellRenderer JavaDoc;
20 import javax.swing.ImageIcon JavaDoc;
21 import javax.swing.JButton JavaDoc;
22 import javax.swing.JFormattedTextField JavaDoc;
23 import javax.swing.JFrame JavaDoc;
24 import javax.swing.JLabel JavaDoc;
25 import javax.swing.JList JavaDoc;
26 import javax.swing.JPanel JavaDoc;
27 import javax.swing.JScrollPane JavaDoc;
28 import javax.swing.JSplitPane JavaDoc;
29 import javax.swing.JTextArea JavaDoc;
30 import javax.swing.JTextField JavaDoc;
31 import javax.swing.text.DefaultFormatterFactory JavaDoc;
32 import javax.swing.text.NumberFormatter JavaDoc;
33 import org.jdesktop.swing.binding.TextBinding;
34 import org.jdesktop.dataset.DataSet;
35 import java.io.File JavaDoc;
36 import org.jdesktop.swing.binding.ImagePanelBinding;
37 import org.jdesktop.swing.binding.DirectListBinding;
38 import org.jdesktop.dataset.DataRelation;
39 import org.jdesktop.dataset.DataRelationTable;
40 import org.jdesktop.dataset.DataSelector;
41 import org.jdesktop.dataset.DataTable;
42 import org.jdesktop.dataset.adapter.DataModelAdapter;
43 import org.jdesktop.dataset.adapter.SelectionModelAdapter;
44 import org.jdesktop.dataset.adapter.TabularDataModelAdapter;
45 import org.jdesktop.demo.Main;
46 import org.jdesktop.swing.JXImagePanel;
47 import org.jdesktop.swing.JXTable;
48 import org.jdesktop.swing.JXTitledPanel;
49 import org.jdesktop.swing.binding.DirectTableBinding;
50 import org.jdesktop.swing.utils.WindowUtils;
51
52 /**
53  *
54  * @author Richard Bair
55  */

56 public class MainWindow extends JFrame JavaDoc {
57     /**
58      * Comment for <code>serialVersionUID</code>
59      */

60     private static final long serialVersionUID = 3544670668122894901L;
61     
62     private DataSet ds;
63     private JTextField JavaDoc nameTF;
64     private JTextField JavaDoc locationTF;
65     private JFormattedTextField JavaDoc priceTF;
66     private JTextArea JavaDoc descriptionTA;
67     private JXImagePanel imagePanel;
68     private JList JavaDoc navigator;
69     private JTextField JavaDoc catNameTF;
70     private JXTable activitiesTBL;
71   
72     /** Creates new form BindingDemoForm */
73     public MainWindow() {
74         //construct the DataSet, and loads it with data
75
createDataSet();
76         
77         //init the gui components
78
initComponents();
79         
80         //bind the gui components
81
DataModelAdapter packageModel = new DataModelAdapter(ds.getTable("package").getSelector("current"));
82         new TextBinding(locationTF, packageModel, "location");
83         new TextBinding(priceTF, packageModel, "price");
84         new TextBinding(nameTF, packageModel, "name");
85         new TextBinding(descriptionTA, packageModel, "description");
86         new ImagePanelBinding(imagePanel, packageModel, "imageuri");
87         TabularDataModelAdapter navModel = new TabularDataModelAdapter(ds.getTable("package"));
88         SelectionModelAdapter sm = new SelectionModelAdapter(ds.getTable("package").getSelector("current"));
89         new DirectListBinding(navigator, navModel, "name", sm);
90         DataModelAdapter categoryDetailModel = new DataModelAdapter(ds.getTable("categoryDetail").getSelector("current"));
91         new TextBinding(catNameTF, categoryDetailModel, "name");
92         TabularDataModelAdapter activitiesDetailModel = new TabularDataModelAdapter(ds.getTable("activitiesDetail"));
93         new DirectTableBinding(activitiesTBL, activitiesDetailModel, new String JavaDoc[]{"name", "description", "price"});
94     }
95         
96     /** This method is called from within the constructor to
97      * initialize the form.
98      * WARNING: Do NOT modify this code. The content of this method is
99      * always regenerated by the Form Editor.
100      */

101     private void initComponents() {
102         setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
103         setTitle("Adventure Builder 2.0");
104
105         //use a border layout for the content pane
106
JPanel JavaDoc contentPane = new JPanel JavaDoc(new GridBagLayout JavaDoc());
107         setContentPane(contentPane);
108
109         JSplitPane JavaDoc splitPane = new JSplitPane JavaDoc(JSplitPane.HORIZONTAL_SPLIT);
110         splitPane.setBorder(BorderFactory.createEmptyBorder());
111         contentPane.add(splitPane, new GridBagConstraints JavaDoc(0, 0, 1, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets JavaDoc(11, 11, 12, 12), 0, 0));
112         
113         JXTitledPanel navigatorPanel = new JXTitledPanel("Packages");
114         navigator = new JList JavaDoc();
115         //ok, this part is just for fun :)
116
navigator.setCellRenderer(new DefaultListCellRenderer JavaDoc() {
117             Map JavaDoc<String JavaDoc,ImageIcon JavaDoc> cachedImages = new HashMap JavaDoc<String JavaDoc,ImageIcon JavaDoc>();
118             public Component JavaDoc getListCellRendererComponent(JList JavaDoc list, Object JavaDoc value, int index, boolean isSelected, boolean cellHasFocus) {
119                 JLabel JavaDoc lbl = (JLabel JavaDoc)super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
120 // String imageurl = (String)packageDS.getFieldValue("IMAGEURI", index);
121
// if (!cachedImages.containsKey(imageurl)) {
122
// //scale the image and stuff it in the cache
123
// try {
124
// ImageIcon icon = new ImageIcon(new URL(imageurl));
125
// icon = new ImageIcon(icon.getImage().getScaledInstance(16, 16, 0));
126
// cachedImages.put(imageurl, icon);
127
// } catch (Exception e) {
128
// e.printStackTrace();
129
// }
130
// }
131
// lbl.setIcon(cachedImages.get(imageurl));
132
return lbl;
133             }
134         });
135         JScrollPane JavaDoc navSP = new JScrollPane JavaDoc(navigator);
136         navSP.setBorder(BorderFactory.createEmptyBorder());
137         navigatorPanel.setContentContainer(navSP);
138         splitPane.setLeftComponent(navigatorPanel);
139         
140         //builder for creating the detail pane
141
JPanel JavaDoc detailsPanel = new JPanel JavaDoc(new GridBagLayout JavaDoc());
142         imagePanel = new JXImagePanel();
143         imagePanel.setBorder(BorderFactory.createEmptyBorder());
144         detailsPanel.add(imagePanel, new GridBagConstraints JavaDoc(0, 0, 1, 4, 0.0, 0.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets JavaDoc(12, 12, 5, 5), 0, 0));
145         
146         nameTF = new JTextField JavaDoc();
147         detailsPanel.add(new JLabel JavaDoc("Name"), new GridBagConstraints JavaDoc(1, 0, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets JavaDoc(12, 0, 0, 0), 0, 0));
148         detailsPanel.add(nameTF, new GridBagConstraints JavaDoc(2, 0, 1, 1, 1.0, 0.0, GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL, new Insets JavaDoc(12, 12, 0, 11), 0, 0));
149
150         locationTF = new JTextField JavaDoc();
151         detailsPanel.add(new JLabel JavaDoc("Location"), new GridBagConstraints JavaDoc(1, 1, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets JavaDoc(5, 0, 0, 0), 0, 0));
152         detailsPanel.add(locationTF, new GridBagConstraints JavaDoc(2, 1, 1, 1, 1.0, 0.0, GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL, new Insets JavaDoc(5, 12, 0, 11), 0, 0));
153
154         priceTF = new JFormattedTextField JavaDoc();
155         NumberFormat JavaDoc amountDisplayFormat = NumberFormat.getCurrencyInstance();
156         amountDisplayFormat.setMinimumFractionDigits(2);
157         NumberFormat JavaDoc amountEditFormat = NumberFormat.getNumberInstance();
158         priceTF.setFormatterFactory(new DefaultFormatterFactory JavaDoc(
159             new NumberFormatter JavaDoc(amountDisplayFormat),
160             new NumberFormatter JavaDoc(amountDisplayFormat),
161             new NumberFormatter JavaDoc(amountEditFormat)));
162         detailsPanel.add(new JLabel JavaDoc("Price"), new GridBagConstraints JavaDoc(1, 2, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets JavaDoc(5, 0, 0, 0), 0, 0));
163         detailsPanel.add(priceTF, new GridBagConstraints JavaDoc(2, 2, 1, 1, 1.0, 0.0, GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL, new Insets JavaDoc(5, 12, 0, 11), 0, 0));
164
165         catNameTF = new JTextField JavaDoc();
166         detailsPanel.add(new JLabel JavaDoc("Category"), new GridBagConstraints JavaDoc(1, 3, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets JavaDoc(5, 0, 0, 0), 0, 0));
167         detailsPanel.add(catNameTF, new GridBagConstraints JavaDoc(2, 3, 1, 1, 1.0, 0.0, GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL, new Insets JavaDoc(5, 12, 0, 11), 0, 0));
168
169         descriptionTA = new JTextArea JavaDoc();
170         detailsPanel.add(new JLabel JavaDoc("Description"), new GridBagConstraints JavaDoc(0, 4, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets JavaDoc(5, 12, 0, 0), 0, 0));
171         detailsPanel.add(new JScrollPane JavaDoc(descriptionTA), new GridBagConstraints JavaDoc(0, 5, 3, 1, 1.0, 1.0, GridBagConstraints.NORTH, GridBagConstraints.BOTH, new Insets JavaDoc(5, 12, 0, 11), 0, 0));
172         
173         activitiesTBL = new JXTable();
174         detailsPanel.add(new JLabel JavaDoc("Activities"), new GridBagConstraints JavaDoc(0, 6, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets JavaDoc(5, 12, 0, 0), 0, 0));
175         detailsPanel.add(new JScrollPane JavaDoc(activitiesTBL), new GridBagConstraints JavaDoc(0, 7, 3, 1, 1.0, 1.0, GridBagConstraints.NORTH, GridBagConstraints.BOTH, new Insets JavaDoc(5, 12, 11, 11), 0, 0));
176         
177         JXTitledPanel detailPanel = new JXTitledPanel("Package Details");
178         detailPanel.setContentContainer(detailsPanel);
179         splitPane.setRightComponent(detailPanel);
180         
181         JButton JavaDoc saveButton = new JButton JavaDoc("Save");
182         saveButton.setMnemonic('S');
183         saveButton.addActionListener(new java.awt.event.ActionListener JavaDoc() {
184             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
185                 saveButtonActionPerformed(evt);
186             }
187         });
188
189         JButton JavaDoc refreshButton = new JButton JavaDoc("Refresh");
190         refreshButton.setMnemonic('R');
191         refreshButton.addActionListener(new java.awt.event.ActionListener JavaDoc() {
192             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
193                 refreshButtonActionPerformed(evt);
194             }
195         });
196
197 // contentPane.add(ButtonBarFactory.buildRightAlignedBar(saveButton, refreshButton), new GridBagConstraints(0, 1, 1, 1, 1.0, 0.0, GridBagConstraints.EAST, GridBagConstraints.HORIZONTAL, new Insets(0, 11, 12, 12), 0, 0));
198

199         setSize(new Dimension JavaDoc(800, 600));
200         setLocation(WindowUtils.getPointForCentering(this));
201     }
202
203     private void refreshButtonActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_refreshButtonActionPerformed
204
// conn.setConnected(false);
205
ds.readXml(new File JavaDoc("/home/rb156199/dataset.xml"));
206         
207     }//GEN-LAST:event_refreshButtonActionPerformed
208

209     private void saveButtonActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_saveButtonActionPerformed
210
// conn.setConnected(true);
211
System.out.println(ds.writeXml());
212     }//GEN-LAST:event_saveButtonActionPerformed
213

214     private void createDataSet() {
215         ds = DataSet.createFromSchema(getClass().getResourceAsStream("resources/dataset.xsd"));
216         DataTable packageTable = ds.getTable("package");
217         DataSelector currentPackage = packageTable.createSelector("current");
218                 
219         DataRelation packageCategoryRelation = ds.createRelation();
220         packageCategoryRelation.setName("packageCategory");
221         packageCategoryRelation.setParentColumn(ds.getTable("package").getColumn("catid"));
222         packageCategoryRelation.setChildColumn(ds.getTable("category").getColumn("catid"));
223         
224         DataRelation activitiesRelation = ds.createRelation();
225         activitiesRelation.setName("activities");
226         activitiesRelation.setParentColumn(ds.getTable("package").getColumn("packageid"));
227         activitiesRelation.setChildColumn(ds.getTable("activity").getColumn("packageid"));
228         
229         //set up relational tables
230
DataRelationTable categoryDetail = ds.createRelationTable();
231         categoryDetail.setName("categoryDetail");
232         categoryDetail.setRelation(packageCategoryRelation);
233         categoryDetail.setParentSelector(currentPackage);
234         
235         DataRelationTable activitiesDetail = ds.createRelationTable();
236         activitiesDetail.setName("activitiesDetail");
237         activitiesDetail.setRelation(activitiesRelation);
238         activitiesDetail.setParentSelector(currentPackage);
239
240         ds.readXml(getClass().getResourceAsStream("resources/dataset.xml"));
241     }
242     
243     public static void main(String JavaDoc[] args) {
244         Main.main(new String JavaDoc[]{"-w", "org.jdesktop.demo.adventure.MainWindow"});
245     }
246 }
247
Popular Tags