AdventureDemo.java
上传用户:zhengdagz
上传日期:2014-03-06
资源大小:1956k
文件大小:14k
源码类别:

xml/soap/webservice

开发平台:

Java

  1. /*
  2.  * BindingDemoForm.java
  3.  *
  4.  * Created on January 10, 2005, 1:55 PM
  5.  */
  6. package org.jdesktop.demo.adventure;
  7. import java.awt.BorderLayout;
  8. import java.awt.Dimension;
  9. import java.awt.GridBagConstraints;
  10. import java.awt.GridBagLayout;
  11. import java.awt.Insets;
  12. import java.text.NumberFormat;
  13. import javax.swing.BorderFactory;
  14. import javax.swing.JButton;
  15. import javax.swing.JFormattedTextField;
  16. import javax.swing.JFrame;
  17. import javax.swing.JLabel;
  18. import javax.swing.JPanel;
  19. import javax.swing.JScrollPane;
  20. import javax.swing.JSplitPane;
  21. import javax.swing.text.DefaultFormatterFactory;
  22. import javax.swing.text.NumberFormatter;
  23. import org.jdesktop.dataset.DataSet;
  24. import java.io.File;
  25. import javax.swing.JList;
  26. import javax.swing.JMenuBar;
  27. import javax.swing.JTable;
  28. import javax.swing.JTextArea;
  29. import javax.swing.JTextField;
  30. //import org.jdesktop.binding.BindingFactory;
  31. import org.jdesktop.dataset.DataRelation;
  32. import org.jdesktop.dataset.DataRelationTable;
  33. import org.jdesktop.demo.DemoPanel;
  34. import org.jdesktop.demo.MainWindow;
  35. import org.jdesktop.swingx.JXFrame;
  36. import org.jdesktop.swingx.JXImagePanel;
  37. import org.jdesktop.swingx.JXTitledPanel;
  38. import org.jdesktop.swingx.util.WindowUtils;
  39. /**
  40.  *
  41.  * @author  Richard Bair
  42.  */
  43. public class AdventureDemo extends JXFrame {
  44. /**
  45.  * Comment for <code>serialVersionUID</code>
  46.  */
  47. private static final long serialVersionUID = 3544670668122894901L;
  48. private DataSet ds;
  49.     private JTextField nameTF;
  50.     private JTextField locationTF;
  51.     private JFormattedTextField priceTF;
  52.     private JTextArea descriptionTA;
  53.     private JXImagePanel imagePanel;
  54.     private JList navigator;
  55.     private JTextField catNameTF;
  56.     private JTable activitiesTBL;
  57.   
  58.     /** Creates new form BindingDemoForm */
  59.     public AdventureDemo() {
  60.         //construct the DataSet, and loads it with data
  61.         createDataSet();
  62.         
  63.         //init the gui components
  64.         initComponents();
  65.         
  66.         //bind the gui components
  67. //        navigator.setDataSource(ds.getTable("package"));
  68. //        navigator.setDataField("name");
  69. //        
  70. //        nameTF.setDataSource(ds.getTable("package"));
  71. //        nameTF.setDataField("name");
  72. //
  73. //        locationTF.setDataSource(ds.getTable("package"));
  74. //        locationTF.setDataField("location");
  75. //        
  76. //        BindingFactory.bind(priceTF, ds.getTable("package"), "price");
  77. //        
  78. //        descriptionTA.setDataSource(ds.getTable("package"));
  79. //        descriptionTA.setDataField("description");
  80. //        
  81. //        BindingFactory.bind(imagePanel, ds.getTable("package"), "imageuri");
  82. //        
  83. //        activitiesTBL.setDataSource(ds.getTable("activitiesDetail"));
  84. //        activitiesTBL.setDataField("");
  85.     }
  86.         
  87.     /** This method is called from within the constructor to
  88.      * initialize the form.
  89.      * WARNING: Do NOT modify this code. The content of this method is
  90.      * always regenerated by the Form Editor.
  91.      */
  92.     private void initComponents() {
  93.         setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  94.         setTitle("Adventure Builder 2.1");
  95.         //use a border layout for the content pane
  96.         JPanel contentPane = new JPanel(new GridBagLayout());
  97.         setContentPane(contentPane);
  98.         JSplitPane splitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);
  99.         splitPane.setBorder(BorderFactory.createEmptyBorder());
  100.         contentPane.add(splitPane, new GridBagConstraints(0, 0, 1, 1, 1.0, 1.0, GridBagConstraints.CENTER, GridBagConstraints.BOTH, new Insets(11, 11, 12, 12), 0, 0));
  101.         
  102.         JXTitledPanel navigatorPanel = new JXTitledPanel("Packages");
  103.         navigator = new JList();
  104.         //ok, this part is just for fun :)
  105. //        navigator.setCellRenderer(new DefaultListCellRenderer() {
  106. //         Map<String,ImageIcon> cachedImages = new HashMap<String,ImageIcon>();
  107. //            public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
  108. //             JLabel lbl = (JLabel)super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
  109. //             String imageurl = (String)packageDS.getFieldValue("IMAGEURI", index);
  110. //             if (!cachedImages.containsKey(imageurl)) {
  111. //             //scale the image and stuff it in the cache
  112. //             try {
  113. //             ImageIcon icon = new ImageIcon(new URL(imageurl));
  114. //             icon = new ImageIcon(icon.getImage().getScaledInstance(16, 16, 0));
  115. //             cachedImages.put(imageurl, icon);
  116. //             } catch (Exception e) {
  117. //             e.printStackTrace();
  118. //             }
  119. //             }
  120. //             lbl.setIcon(cachedImages.get(imageurl));
  121. //             return lbl;
  122. //            }
  123. //        });
  124.         JScrollPane navSP = new JScrollPane(navigator);
  125.         navSP.setBorder(BorderFactory.createEmptyBorder());
  126.         navigatorPanel.setContentContainer(navSP);
  127.         splitPane.setLeftComponent(navigatorPanel);
  128.         
  129.         JSplitPane detailSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
  130.         detailSplitPane.setBorder(BorderFactory.createEmptyBorder());
  131.         detailSplitPane.setTopComponent(createPackageDetail());
  132.         detailSplitPane.setBottomComponent(createActivitiesDetail());
  133.         detailSplitPane.setDividerLocation(250);
  134.         
  135.         splitPane.setRightComponent(detailSplitPane);
  136.         
  137.         JButton saveButton = new JButton("Save");
  138.         saveButton.setMnemonic('S');
  139.         saveButton.addActionListener(new java.awt.event.ActionListener() {
  140.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  141.                 saveButtonActionPerformed(evt);
  142.             }
  143.         });
  144.         JButton refreshButton = new JButton("Refresh");
  145.         refreshButton.setMnemonic('R');
  146.         refreshButton.addActionListener(new java.awt.event.ActionListener() {
  147.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  148.                 refreshButtonActionPerformed(evt);
  149.             }
  150.         });
  151. //        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));
  152.         
  153.         setSize(new Dimension(800, 600));
  154.         setLocation(WindowUtils.getPointForCentering(this));
  155.     }   
  156.     
  157.     private JXTitledPanel createPackageDetail() {
  158.         //builder for creating the detail pane
  159.         JPanel detailsPanel = new JPanel(new GridBagLayout());
  160.         imagePanel = new JXImagePanel();
  161.         imagePanel.setBorder(BorderFactory.createEmptyBorder());
  162.         detailsPanel.add(imagePanel, new GridBagConstraints(0, 0, 1, 4, 0.0, 0.0, GridBagConstraints.NORTHWEST, GridBagConstraints.NONE, new Insets(12, 12, 5, 5), 0, 0));
  163.         
  164.         nameTF = new JTextField();
  165.         detailsPanel.add(new JLabel("Name"), new GridBagConstraints(1, 0, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets(12, 0, 0, 0), 0, 0));
  166.         detailsPanel.add(nameTF, new GridBagConstraints(2, 0, 1, 1, 1.0, 0.0, GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL, new Insets(12, 12, 0, 11), 0, 0));
  167.         locationTF = new JTextField();
  168.         detailsPanel.add(new JLabel("Location"), new GridBagConstraints(1, 1, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets(5, 0, 0, 0), 0, 0));
  169.         detailsPanel.add(locationTF, new GridBagConstraints(2, 1, 1, 1, 1.0, 0.0, GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL, new Insets(5, 12, 0, 11), 0, 0));
  170.         priceTF = new JFormattedTextField();
  171. NumberFormat amountDisplayFormat = NumberFormat.getCurrencyInstance();
  172. amountDisplayFormat.setMinimumFractionDigits(2);
  173. NumberFormat amountEditFormat = NumberFormat.getNumberInstance();
  174. priceTF.setFormatterFactory(new DefaultFormatterFactory(
  175. new NumberFormatter(amountDisplayFormat),
  176. new NumberFormatter(amountDisplayFormat),
  177. new NumberFormatter(amountEditFormat)));
  178.         detailsPanel.add(new JLabel("Price"), new GridBagConstraints(1, 2, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets(5, 0, 0, 0), 0, 0));
  179.         detailsPanel.add(priceTF, new GridBagConstraints(2, 2, 1, 1, 1.0, 0.0, GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL, new Insets(5, 12, 0, 11), 0, 0));
  180.         catNameTF = new JTextField();
  181. //        detailsPanel.add(new JLabel("Category"), new GridBagConstraints(1, 3, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets(5, 0, 0, 0), 0, 0));
  182. //        detailsPanel.add(catNameTF, new GridBagConstraints(2, 3, 1, 1, 1.0, 0.0, GridBagConstraints.NORTH, GridBagConstraints.HORIZONTAL, new Insets(5, 12, 0, 11), 0, 0));
  183.         descriptionTA = new JTextArea();
  184.         detailsPanel.add(new JLabel("Description"), new GridBagConstraints(1, 3, 1, 1, 0.0, 0.0, GridBagConstraints.NORTHEAST, GridBagConstraints.NONE, new Insets(5, 0, 0, 0), 0, 0));
  185.         detailsPanel.add(new JScrollPane(descriptionTA), new GridBagConstraints(2, 3, 1, 1, 1.0, 1.0, GridBagConstraints.NORTH, GridBagConstraints.BOTH, new Insets(5, 12, 11, 11), 0, 0));
  186.         
  187.         JXTitledPanel detailPanel = new JXTitledPanel("Package Details");
  188.         detailPanel.setContentContainer(detailsPanel);
  189.         return detailPanel;
  190.     }
  191.     
  192.     private JXTitledPanel createActivitiesDetail() {
  193.         JXTitledPanel activitiesPanel = new JXTitledPanel("Activities");
  194.         activitiesTBL = new JTable();
  195. //        activitiesTBL.setEvenRowBackground(Color.WHITE);
  196. //        activitiesTBL.setOddRowBackground(new Color(0xd2dfee));
  197. //        activitiesTBL.setHasColumnControl(true);
  198.         activitiesTBL.setShowHorizontalLines(false);
  199. //        activitiesTBL.getTable().setSortable(true);
  200.         activitiesTBL.setBorder(BorderFactory.createEmptyBorder());
  201. //        activitiesTBL.getTable().setDefaultRenderer(String.class, new DefaultTableCellRenderer() {
  202. //            private JXImagePanel imagePanel = new JXImagePanel();
  203. //            public Component getTableCellRendererComponent(javax.swing.JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
  204. //                if (value instanceof String && ((String)value).startsWith("http://") && ((String)value).endsWith(".gif")) {
  205. //                    try {
  206. ////                        super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
  207. //                        ImageIcon ii = new ImageIcon(new URL((String)value));
  208. //                        System.out.println(ii.getIconWidth());
  209. //                        System.out.println(ii.getImageLoadStatus() == java.awt.MediaTracker.COMPLETE);
  210. //                        imagePanel.setIcon(ii);
  211. //                        return imagePanel;
  212. //                    } catch (Exception e) {
  213. //                        e.printStackTrace();
  214. //                    }
  215. //                }
  216. //                return super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
  217. //            }
  218. //            
  219. //        });
  220.         activitiesPanel.getContentContainer().setLayout(new BorderLayout());
  221.         activitiesPanel.getContentContainer().add(activitiesTBL, BorderLayout.CENTER);
  222.         return activitiesPanel;
  223.     }
  224.     private void refreshButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_refreshButtonActionPerformed
  225. //     conn.setConnected(false);
  226.         ds.readXml(new File("/home/rb156199/dataset.xml"));
  227.         
  228.     }//GEN-LAST:event_refreshButtonActionPerformed
  229.     private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveButtonActionPerformed
  230. //     conn.setConnected(true);
  231.         System.out.println(ds.writeXml());
  232.     }//GEN-LAST:event_saveButtonActionPerformed
  233.     
  234.     private void createDataSet() {
  235.      ds = DataSet.createFromSchema(getClass().getResourceAsStream("resources/dataset.xsd"));
  236.         DataRelation packageToCategory = ds.createRelation();
  237.      packageToCategory.setName("packageToCategory");
  238.      packageToCategory.setParentColumn(ds.getTable("package").getColumn("catid"));
  239.      packageToCategory.setChildColumn(ds.getTable("category").getColumn("catid"));
  240.     
  241.      DataRelation packageToActivityList = ds.createRelation();
  242.      packageToActivityList.setName("packageToActivityList");
  243.      packageToActivityList.setParentColumn(ds.getTable("package").getColumn("packageid"));
  244.      packageToActivityList.setChildColumn(ds.getTable("activityList").getColumn("packageid"));
  245.         
  246.         DataRelationTable activityListDetails = ds.createRelationTable();
  247.         activityListDetails.setName("activityListDetails");
  248.         activityListDetails.setRelation(packageToActivityList);
  249.         activityListDetails.setParentSelector(ds.getTable("package").getSelector("current"));
  250.         
  251.         DataRelation activityListToActivity = ds.createRelation();
  252.         activityListToActivity.setName("activityListToActivity");
  253.         activityListToActivity.setParentColumn(ds.getTable("activityList").getColumn("activityid"));
  254.         activityListToActivity.setChildColumn(ds.getTable("activity").getColumn("activityid"));
  255.         
  256.         DataRelationTable categoryDetail = ds.createRelationTable();
  257.         categoryDetail.setName("categoryDetail");
  258.         categoryDetail.setRelation(packageToCategory);
  259.         categoryDetail.setParentSelector(ds.getTable("package").getSelector("current"));
  260.         
  261.         DataRelationTable activitiesDetail = ds.createRelationTable();
  262.         activitiesDetail.setName("activitiesDetail");
  263.         activitiesDetail.setRelation(activityListToActivity);
  264.         activitiesDetail.setParentTable(ds.getTable("activityListDetails"));
  265.         ds.readXml(getClass().getResourceAsStream("resources/dataset.xml"));
  266.     }
  267.     
  268.     public static void main(String[] args) {
  269. //        MainWindow.main(new String[]{"-d", "org.jdesktop.demo.adventure.AdventureDemo"});
  270.         new AdventureDemo().setVisible(true);
  271.     }
  272. }