Obviously we had a problem with our Swing demo. At startup all the demos
createContent() methods were called twice, once when the constructor was
executed and then again by the Demo itself. So we built nearly the whole
GUI twice. This is corrected by this patch. Should greatly increase the
startup time of the Demo.

2006-01-27  Roman Kennke  <[EMAIL PROTECTED]>

        * examples/gnu/classpath/examples/swing/ButtonDemo.java
        (createContent): Only create new content if we don't have one
        already.
        * examples/gnu/classpath/examples/swing/ComboBoxDemo.java
        (createContent): Only create new content if we don't have one
        already.
        * examples/gnu/classpath/examples/swing/FileChooserDemo.java
        (createContent): Only create new content if we don't have one
        already.
        * examples/gnu/classpath/examples/swing/ScrollBarDemo.java
        (createContent): Only create new content if we don't have one
        already.
        * examples/gnu/classpath/examples/swing/SliderDemo.java
        (createContent): Only create new content if we don't have one
        already.
        * examples/gnu/classpath/examples/swing/TableDemo.java
        (createContent): Only create new content if we don't have one
        already.
        * examples/gnu/classpath/examples/swing/TextFieldDemo.java
        (createContent): Only create new content if we don't have one
        already.

/Roman
Index: examples/gnu/classpath/examples/swing/ButtonDemo.java
===================================================================
RCS file: /cvsroot/classpath/classpath/examples/gnu/classpath/examples/swing/ButtonDemo.java,v
retrieving revision 1.4
diff -u -r1.4 ButtonDemo.java
--- examples/gnu/classpath/examples/swing/ButtonDemo.java	29 Oct 2005 05:04:23 -0000	1.4
+++ examples/gnu/classpath/examples/swing/ButtonDemo.java	27 Jan 2006 21:50:29 -0000
@@ -46,6 +46,8 @@
   implements ActionListener 
 {
  
+  private JPanel content;
+
   private JCheckBox buttonState;  
   private JButton button1;
   private JButton button2;
@@ -95,13 +97,16 @@
    */       
   JPanel createContent() 
   {
-    JPanel content = new JPanel(new BorderLayout());
-    JPanel panel = new JPanel(new GridLayout(4, 1));
-    panel.add(createButtonPanel());
-    panel.add(createTogglePanel());
-    panel.add(createCheckBoxPanel());
-    panel.add(createRadioPanel());
-    content.add(panel);
+    if (content == null)
+      {
+        content = new JPanel(new BorderLayout());
+        JPanel panel = new JPanel(new GridLayout(4, 1));
+        panel.add(createButtonPanel());
+        panel.add(createTogglePanel());
+        panel.add(createCheckBoxPanel());
+        panel.add(createRadioPanel());
+        content.add(panel);
+      }
     return content;        
   }
     
Index: examples/gnu/classpath/examples/swing/ComboBoxDemo.java
===================================================================
RCS file: /cvsroot/classpath/classpath/examples/gnu/classpath/examples/swing/ComboBoxDemo.java,v
retrieving revision 1.5
diff -u -r1.5 ComboBoxDemo.java
--- examples/gnu/classpath/examples/swing/ComboBoxDemo.java	29 Oct 2005 05:04:23 -0000	1.5
+++ examples/gnu/classpath/examples/swing/ComboBoxDemo.java	27 Jan 2006 21:50:29 -0000
@@ -69,6 +69,7 @@
     }
   }
 
+  private JPanel content;
   private JCheckBox comboState1;  
   private JComboBox combo1;
   private JComboBox combo2;
@@ -120,15 +121,18 @@
    */       
   JPanel createContent() 
   {
-    JPanel content = new JPanel(new BorderLayout());
-    JPanel panel = new JPanel(new GridLayout(6, 1));
-    panel.add(createPanel1());
-    panel.add(createPanel2());
-    panel.add(createPanel3());
-    panel.add(createPanel4());
-    panel.add(createPanel5());
-    panel.add(createPanel6());
-    content.add(panel);
+    if (content == null)
+      {
+        content = new JPanel(new BorderLayout());
+        JPanel panel = new JPanel(new GridLayout(6, 1));
+        panel.add(createPanel1());
+        panel.add(createPanel2());
+        panel.add(createPanel3());
+        panel.add(createPanel4());
+        panel.add(createPanel5());
+        panel.add(createPanel6());
+        content.add(panel);
+      }
     return content;        
   }
     
Index: examples/gnu/classpath/examples/swing/FileChooserDemo.java
===================================================================
RCS file: /cvsroot/classpath/classpath/examples/gnu/classpath/examples/swing/FileChooserDemo.java,v
retrieving revision 1.1
diff -u -r1.1 FileChooserDemo.java
--- examples/gnu/classpath/examples/swing/FileChooserDemo.java	9 Nov 2005 16:37:56 -0000	1.1
+++ examples/gnu/classpath/examples/swing/FileChooserDemo.java	27 Jan 2006 21:50:29 -0000
@@ -63,7 +63,9 @@
         return false;
     }
   }
-    
+
+  private JPanel content;
+
   /** A label to display the selected file. */
   JLabel selectedFileLabel;
     
@@ -102,52 +104,56 @@
    * added if this demo is being run as a standalone demo).
    */
   JPanel createContent()
-  {      
-    JPanel panel = new JPanel(new BorderLayout());
-     
-    // create a panel of buttons to select the different styles of file 
-    // chooser...
-    JPanel buttonPanel = new JPanel(new GridLayout(5, 1));
-    JButton openButton = new JButton("Open...");
-    openButton.setActionCommand("OPEN");
-    openButton.addActionListener(this);
-    buttonPanel.add(openButton);
-    JButton saveButton = new JButton("Save...");
-    saveButton.setActionCommand("SAVE");
-    saveButton.addActionListener(this);
-    buttonPanel.add(saveButton);
-    JButton queryButton = new JButton("Select Directory...");
-    queryButton.setActionCommand("SELECT_DIRECTORY");
-    queryButton.addActionListener(this);
-    buttonPanel.add(queryButton);
-    JButton openJavaButton = new JButton("Open Java file...");
-    openJavaButton.setActionCommand("OPEN_JAVA");
-    openJavaButton.addActionListener(this);
-    buttonPanel.add(openJavaButton);
-    JButton openMultiButton = new JButton("Open multiple files...");
-    openMultiButton.setActionCommand("OPEN_MULTI");
-    openMultiButton.addActionListener(this);
-    buttonPanel.add(openMultiButton);
-    panel.add(buttonPanel, BorderLayout.WEST);
-    
-    // create a panel to display the selected file(s) and the return code
-    JPanel displayPanel = new JPanel(new BorderLayout());
-     
-    selectedFileLabel = new JLabel("-");
-    selectedFileLabel.setBorder(BorderFactory.createTitledBorder("Selected File/Directory: "));
-    displayPanel.add(selectedFileLabel, BorderLayout.NORTH);
-        
-    selectedFilesList = new JList();
-    JScrollPane sp = new JScrollPane(selectedFilesList);
-    sp.setBorder(BorderFactory.createTitledBorder("Selected Files: "));
-    displayPanel.add(sp);
-
-    returnCodeLabel = new JLabel("0");
-    returnCodeLabel.setBorder(BorderFactory.createTitledBorder("Return Code:"));
-    displayPanel.add(returnCodeLabel, BorderLayout.SOUTH);
+  {
+    if (content == null)
+      {
+        JPanel panel = new JPanel(new BorderLayout());
+        
+        // create a panel of buttons to select the different styles of file 
+        // chooser...
+        JPanel buttonPanel = new JPanel(new GridLayout(5, 1));
+        JButton openButton = new JButton("Open...");
+        openButton.setActionCommand("OPEN");
+        openButton.addActionListener(this);
+        buttonPanel.add(openButton);
+        JButton saveButton = new JButton("Save...");
+        saveButton.setActionCommand("SAVE");
+        saveButton.addActionListener(this);
+        buttonPanel.add(saveButton);
+        JButton queryButton = new JButton("Select Directory...");
+        queryButton.setActionCommand("SELECT_DIRECTORY");
+        queryButton.addActionListener(this);
+        buttonPanel.add(queryButton);
+        JButton openJavaButton = new JButton("Open Java file...");
+        openJavaButton.setActionCommand("OPEN_JAVA");
+        openJavaButton.addActionListener(this);
+        buttonPanel.add(openJavaButton);
+        JButton openMultiButton = new JButton("Open multiple files...");
+        openMultiButton.setActionCommand("OPEN_MULTI");
+        openMultiButton.addActionListener(this);
+        buttonPanel.add(openMultiButton);
+        panel.add(buttonPanel, BorderLayout.WEST);
+        
+        // create a panel to display the selected file(s) and the return code
+        JPanel displayPanel = new JPanel(new BorderLayout());
+        
+        selectedFileLabel = new JLabel("-");
+        selectedFileLabel.setBorder(BorderFactory.createTitledBorder("Selected File/Directory: "));
+        displayPanel.add(selectedFileLabel, BorderLayout.NORTH);
         
-    panel.add(displayPanel);
-    return panel;        
+        selectedFilesList = new JList();
+        JScrollPane sp = new JScrollPane(selectedFilesList);
+        sp.setBorder(BorderFactory.createTitledBorder("Selected Files: "));
+        displayPanel.add(sp);
+        
+        returnCodeLabel = new JLabel("0");
+        returnCodeLabel.setBorder(BorderFactory.createTitledBorder("Return Code:"));
+        displayPanel.add(returnCodeLabel, BorderLayout.SOUTH);
+        
+        panel.add(displayPanel);
+        content = panel;
+      }
+    return content;        
   }
     
   /**
Index: examples/gnu/classpath/examples/swing/ScrollBarDemo.java
===================================================================
RCS file: /cvsroot/classpath/classpath/examples/gnu/classpath/examples/swing/ScrollBarDemo.java,v
retrieving revision 1.3
diff -u -r1.3 ScrollBarDemo.java
--- examples/gnu/classpath/examples/swing/ScrollBarDemo.java	29 Oct 2005 05:04:23 -0000	1.3
+++ examples/gnu/classpath/examples/swing/ScrollBarDemo.java	27 Jan 2006 21:50:29 -0000
@@ -40,6 +40,8 @@
   implements ActionListener 
 {
 
+  private JPanel content;
+
   /**
    * Creates a new demo instance.
    * 
@@ -67,9 +69,12 @@
    */       
   JPanel createContent() 
   {
-    JPanel content = new JPanel(new BorderLayout());
-    JPanel panel = createScrollBarPanel();
-    content.add(panel);
+    if (content == null)
+      {
+        content = new JPanel(new BorderLayout());
+        JPanel panel = createScrollBarPanel();
+        content.add(panel);
+      }
     return content;        
   }
     
Index: examples/gnu/classpath/examples/swing/SliderDemo.java
===================================================================
RCS file: /cvsroot/classpath/classpath/examples/gnu/classpath/examples/swing/SliderDemo.java,v
retrieving revision 1.3
diff -u -r1.3 SliderDemo.java
--- examples/gnu/classpath/examples/swing/SliderDemo.java	29 Oct 2005 05:04:23 -0000	1.3
+++ examples/gnu/classpath/examples/swing/SliderDemo.java	27 Jan 2006 21:50:29 -0000
@@ -35,7 +35,9 @@
 
 public class SliderDemo extends JFrame implements ActionListener 
 {
-   
+
+  private JPanel content;
+
   JSlider hslider1;
   JSlider hslider2;
   JSlider hslider3;
@@ -59,13 +61,13 @@
   public SliderDemo(String frameTitle) 
   {
     super(frameTitle);
-    JPanel content = createContent();
+    JPanel cont = createContent();
     JPanel closePanel = new JPanel();
     JButton closeButton = new JButton("Close");
     closeButton.setActionCommand("CLOSE");
     closeButton.addActionListener(this);
     closePanel.add(closeButton);
-    content.add(closePanel, BorderLayout.SOUTH);
+    cont.add(closePanel, BorderLayout.SOUTH);
     getContentPane().add(content);
   }
        
@@ -78,20 +80,23 @@
    */       
   JPanel createContent() 
   {
-    JPanel content = new JPanel(new BorderLayout());
-    JPanel panel = new JPanel(new GridLayout(1, 2));
-    panel.add(createHorizontalPanel());
-    panel.add(createVerticalPanel());
-    enabledCheckBox = new JCheckBox("Enabled");
-    enabledCheckBox.setSelected(true);
-    enabledCheckBox.setActionCommand("TOGGLE_ENABLED");
-    enabledCheckBox.addActionListener(this);
-    JPanel checkBoxPanel = new JPanel();
-    checkBoxPanel.add(enabledCheckBox);
-    JPanel panel2 = new JPanel(new BorderLayout());
-    panel2.add(panel);
-    panel2.add(checkBoxPanel, BorderLayout.SOUTH);
-    content.add(panel2);
+    if (content == null)
+      {
+        content = new JPanel(new BorderLayout());
+        JPanel panel = new JPanel(new GridLayout(1, 2));
+        panel.add(createHorizontalPanel());
+        panel.add(createVerticalPanel());
+        enabledCheckBox = new JCheckBox("Enabled");
+        enabledCheckBox.setSelected(true);
+        enabledCheckBox.setActionCommand("TOGGLE_ENABLED");
+        enabledCheckBox.addActionListener(this);
+        JPanel checkBoxPanel = new JPanel();
+        checkBoxPanel.add(enabledCheckBox);
+        JPanel panel2 = new JPanel(new BorderLayout());
+        panel2.add(panel);
+        panel2.add(checkBoxPanel, BorderLayout.SOUTH);
+        content.add(panel2);
+      }
     return content;        
   }
     
Index: examples/gnu/classpath/examples/swing/TableDemo.java
===================================================================
RCS file: /cvsroot/classpath/classpath/examples/gnu/classpath/examples/swing/TableDemo.java,v
retrieving revision 1.1
diff -u -r1.1 TableDemo.java
--- examples/gnu/classpath/examples/swing/TableDemo.java	19 Jan 2006 12:40:51 -0000	1.1
+++ examples/gnu/classpath/examples/swing/TableDemo.java	27 Jan 2006 21:50:29 -0000
@@ -130,7 +130,9 @@
         return super.getColumnClass(column);
     }    
   }
-  
+
+  private JPanel content;
+
   /**
    * The table being displayed.
    */
@@ -165,29 +167,33 @@
    */
   JPanel createContent()
   {
-    JPanel p = new JPanel();
-    p.setLayout(new BorderLayout());
-    table.setModel(model);
-    values = new Object[rows][];
-    for (int i = 0; i < values.length; i++)
+    if (content == null)
       {
-        values[i] = new Object[cols];
-        for (int j = 1; j < cols; j++)
+        JPanel p = new JPanel();
+        p.setLayout(new BorderLayout());
+        table.setModel(model);
+        values = new Object[rows][];
+        for (int i = 0; i < values.length; i++)
           {
-            values[i][j] = "" + ((char) ('a' + j)) + i;
+            values[i] = new Object[cols];
+            for (int j = 1; j < cols; j++)
+              {
+                values[i][j] = "" + ((char) ('a' + j)) + i;
+              }
+            values [i][0] = i % 2 == 0? Boolean.TRUE : Boolean.FALSE;
           }
-        values [i][0] = i % 2 == 0? Boolean.TRUE : Boolean.FALSE;
+        
+        // Create the table, place it into scroll pane and place
+        // the pane into this frame.
+        JScrollPane scroll = new JScrollPane();
+        
+        // The horizontal scroll bar is never needed.
+        scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+        scroll.getViewport().add(table);
+        p.add(scroll, BorderLayout.CENTER);
+        content = p;
       }
-
-    // Create the table, place it into scroll pane and place
-    // the pane into this frame.
-    JScrollPane scroll = new JScrollPane();
-    
-    // The horizontal scroll bar is never needed.
-    scroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
-    scroll.getViewport().add(table);
-    p.add(scroll, BorderLayout.CENTER);
-    return p;
+    return content;
   }
   
   /**
Index: examples/gnu/classpath/examples/swing/TextFieldDemo.java
===================================================================
RCS file: /cvsroot/classpath/classpath/examples/gnu/classpath/examples/swing/TextFieldDemo.java,v
retrieving revision 1.1
diff -u -r1.1 TextFieldDemo.java
--- examples/gnu/classpath/examples/swing/TextFieldDemo.java	4 Nov 2005 12:23:13 -0000	1.1
+++ examples/gnu/classpath/examples/swing/TextFieldDemo.java	27 Jan 2006 21:50:29 -0000
@@ -107,6 +107,8 @@
     }
   }
 
+  private JPanel content;
+
   /**
    * The left aligned textfields and state buttons.
    */
@@ -180,15 +182,18 @@
    */       
   JPanel createContent() 
   {
-    JPanel content = new JPanel(new BorderLayout());
-    JPanel panel = new JPanel(new GridLayout(5, 1));
-    panel.add(createLeftAlignedPanel());
-    panel.add(createRightAlignedPanel());
-    panel.add(createCenteredPanel());
-    panel.add(createCustomColoredPanel());
-    panel.add(createMiscPanel());
-    content.add(panel);
-    //content.setPreferredSize(new Dimension(400, 300));
+    if (content == null)
+      {
+        content = new JPanel(new BorderLayout());
+        JPanel panel = new JPanel(new GridLayout(5, 1));
+        panel.add(createLeftAlignedPanel());
+        panel.add(createRightAlignedPanel());
+        panel.add(createCenteredPanel());
+        panel.add(createCustomColoredPanel());
+        panel.add(createMiscPanel());
+        content.add(panel);
+        //content.setPreferredSize(new Dimension(400, 300));
+      }
     return content;        
   }
     

Reply via email to