summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorGuilhem Lavaux <guilhem@kaffe.org>2006-02-18 18:33:27 +0000
committerGuilhem Lavaux <guilhem@kaffe.org>2006-02-18 18:33:27 +0000
commitcc0db4315db5e0550da9a4a13f4b5e502e58a5c2 (patch)
tree25a49d0fc9588fae44f8e5edfc496f612a316931 /examples
parent5093bf804963cd90f1c6c6053c0417f78b945ca6 (diff)
downloadclasspath-cc0db4315db5e0550da9a4a13f4b5e502e58a5c2.tar.gz
Merged with HEAD.
Diffstat (limited to 'examples')
-rw-r--r--examples/gnu/classpath/examples/CORBA/swing/x5/_GameManagerImpl_Tie.java9
-rw-r--r--examples/gnu/classpath/examples/CORBA/swing/x5/_PlayerImpl_Tie.java7
-rw-r--r--examples/gnu/classpath/examples/swing/SpinnerDemo.java230
-rw-r--r--examples/gnu/classpath/examples/swing/TableDemo.java36
4 files changed, 264 insertions, 18 deletions
diff --git a/examples/gnu/classpath/examples/CORBA/swing/x5/_GameManagerImpl_Tie.java b/examples/gnu/classpath/examples/CORBA/swing/x5/_GameManagerImpl_Tie.java
index 17a62600c..a0c33df34 100644
--- a/examples/gnu/classpath/examples/CORBA/swing/x5/_GameManagerImpl_Tie.java
+++ b/examples/gnu/classpath/examples/CORBA/swing/x5/_GameManagerImpl_Tie.java
@@ -57,13 +57,8 @@ import org.omg.PortableServer.Servant;
* Tie on the client side. The Game Manager methods contain the code for remote
* invocation.
*
- * This class is normally generated with rmic from the {@link GameManagerImpl}:
- *
- * <pre>
- * rmic -iiop -poa -keep gnu.classpath.examples.CORBA.swing.x5.GameManagerImpl
- * </pre>
- *
- * (the compiled package must be present in the current folder).
+ * This class is normally generated with rmic or grmic from the
+ * {@link GameManagerImpl}. See tools/gnu/classpath/tools/giop/README.
*
* In this example the class was manually edited and commented for better
* understanding of functionality.
diff --git a/examples/gnu/classpath/examples/CORBA/swing/x5/_PlayerImpl_Tie.java b/examples/gnu/classpath/examples/CORBA/swing/x5/_PlayerImpl_Tie.java
index 730c6f469..f6c5f4765 100644
--- a/examples/gnu/classpath/examples/CORBA/swing/x5/_PlayerImpl_Tie.java
+++ b/examples/gnu/classpath/examples/CORBA/swing/x5/_PlayerImpl_Tie.java
@@ -58,11 +58,8 @@ import org.omg.PortableServer.Servant;
* rmic -iiop -poa -keep gnu.classpath.examples.CORBA.swing.x5.PlayerImpl
* (the compiled package must be present in the current folder).
*
- * This class is normally generated with rmic from the {@link PlayerImpl}:
- * <pre>
- * rmic -iiop -poa -keep gnu.classpath.examples.CORBA.swing.x5.PlayerImpl
- * </pre>
- * (the compiled package must be present in the current folder).
+ * This class is normally generated with rmic or grmic from the
+ * {@link PlayerImpl}. See tools/gnu/classpath/tools/giop/README.
*
* In this example the class was manually edited and commented for better
* understanding of functionality.
diff --git a/examples/gnu/classpath/examples/swing/SpinnerDemo.java b/examples/gnu/classpath/examples/swing/SpinnerDemo.java
new file mode 100644
index 000000000..4a05bc482
--- /dev/null
+++ b/examples/gnu/classpath/examples/swing/SpinnerDemo.java
@@ -0,0 +1,230 @@
+/* SpinnerDemo.java -- An example showing various spinners in Swing.
+ Copyright (C) 2006, Free Software Foundation, Inc.
+
+This file is part of GNU Classpath examples.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+*/
+
+
+package gnu.classpath.examples.swing;
+
+import java.awt.BorderLayout;
+import java.awt.Font;
+import java.awt.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.util.Calendar;
+import java.util.Date;
+
+import javax.swing.BorderFactory;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JFrame;
+import javax.swing.JPanel;
+import javax.swing.JSpinner;
+import javax.swing.SpinnerDateModel;
+import javax.swing.SpinnerListModel;
+import javax.swing.SpinnerNumberModel;
+import javax.swing.UIManager;
+import javax.swing.plaf.metal.DefaultMetalTheme;
+import javax.swing.plaf.metal.MetalLookAndFeel;
+
+/**
+ * A simple demo showing various spinners in different states.
+ */
+public class SpinnerDemo
+ extends JFrame
+ implements ActionListener
+{
+ private JPanel content;
+ private JCheckBox spinnerState1;
+ private JSpinner spinner1;
+ private JSpinner spinner2;
+
+ private JCheckBox spinnerState2;
+ private JSpinner spinner3;
+ private JSpinner spinner4;
+
+ private JCheckBox spinnerState3;
+ private JSpinner spinner5;
+ private JSpinner spinner6;
+
+ /**
+ * Creates a new demo instance.
+ *
+ * @param title the frame title.
+ */
+ public SpinnerDemo(String title)
+ {
+ super(title);
+ JPanel content = createContent();
+ // initFrameContent() is only called (from main) when running this app
+ // standalone
+ }
+
+ /**
+ * When the demo is run independently, the frame is displayed, so we should
+ * initialise the content panel (including the demo content and a close
+ * button). But when the demo is run as part of the Swing activity board,
+ * only the demo content panel is used, the frame itself is never displayed,
+ * so we can avoid this step.
+ */
+ public void initFrameContent()
+ {
+ JPanel closePanel = new JPanel();
+ JButton closeButton = new JButton("Close");
+ closeButton.setActionCommand("CLOSE");
+ closeButton.addActionListener(this);
+ closePanel.add(closeButton);
+ content.add(closePanel, BorderLayout.SOUTH);
+ getContentPane().add(content);
+ }
+
+ /**
+ * Returns a panel with the demo content. The panel
+ * uses a BorderLayout(), and the BorderLayout.SOUTH area
+ * is empty, to allow callers to add controls to the
+ * bottom of the panel if they want to (a close button is
+ * added if this demo is being run as a standalone demo).
+ */
+ JPanel createContent()
+ {
+ if (content == null)
+ {
+ content = new JPanel(new BorderLayout());
+ JPanel panel = new JPanel(new GridLayout(3, 1));
+ panel.add(createPanel1());
+ panel.add(createPanel2());
+ panel.add(createPanel3());
+ content.add(panel);
+ }
+ return content;
+ }
+
+ private JPanel createPanel1()
+ {
+ JPanel panel = new JPanel(new BorderLayout());
+ this.spinnerState1 = new JCheckBox("Enabled", true);
+ this.spinnerState1.setActionCommand("COMBO_STATE1");
+ this.spinnerState1.addActionListener(this);
+ panel.add(this.spinnerState1, BorderLayout.EAST);
+
+ JPanel controlPanel = new JPanel();
+ controlPanel.setBorder(BorderFactory.createTitledBorder(
+ "Number Spinner: "));
+ this.spinner1 = new JSpinner(new SpinnerNumberModel(5.0, 0.0, 10.0, 0.5));
+ this.spinner2 = new JSpinner(new SpinnerNumberModel(50, 0, 100, 5));
+ this.spinner2.setFont(new Font("Dialog", Font.PLAIN, 20));
+ controlPanel.add(this.spinner1);
+ controlPanel.add(this.spinner2);
+
+ panel.add(controlPanel);
+
+ return panel;
+ }
+
+ private JPanel createPanel2()
+ {
+ JPanel panel = new JPanel(new BorderLayout());
+ this.spinnerState2 = new JCheckBox("Enabled", true);
+ this.spinnerState2.setActionCommand("COMBO_STATE2");
+ this.spinnerState2.addActionListener(this);
+ panel.add(this.spinnerState2, BorderLayout.EAST);
+
+ JPanel controlPanel = new JPanel();
+ controlPanel.setBorder(BorderFactory.createTitledBorder("Date Spinner: "));
+ this.spinner3 = new JSpinner(new SpinnerDateModel(new Date(), null, null,
+ Calendar.DATE));
+
+ this.spinner4 = new JSpinner(new SpinnerDateModel(new Date(), null, null,
+ Calendar.YEAR));
+ this.spinner4.setFont(new Font("Dialog", Font.PLAIN, 20));
+
+ controlPanel.add(this.spinner3);
+ controlPanel.add(this.spinner4);
+
+ panel.add(controlPanel);
+
+ return panel;
+ }
+
+ private JPanel createPanel3()
+ {
+ JPanel panel = new JPanel(new BorderLayout());
+ this.spinnerState3 = new JCheckBox("Enabled", true);
+ this.spinnerState3.setActionCommand("COMBO_STATE3");
+ this.spinnerState3.addActionListener(this);
+ panel.add(this.spinnerState3, BorderLayout.EAST);
+
+ JPanel controlPanel = new JPanel();
+ controlPanel.setBorder(BorderFactory.createTitledBorder("List Spinner: "));
+ this.spinner5 = new JSpinner(new SpinnerListModel(new Object[] {"Red",
+ "Orange", "Yellow", "Green", "Blue", "Indigo", "Violet"}));
+
+ this.spinner6 = new JSpinner(new SpinnerListModel(new Object[] {"Red",
+ "Orange", "Yellow", "Green", "Blue", "Indigo", "Violet"}));
+ this.spinner6.setValue("Yellow");
+ this.spinner6.setFont(new Font("Dialog", Font.PLAIN, 20));
+
+ controlPanel.add(this.spinner5);
+ controlPanel.add(this.spinner6);
+
+ panel.add(controlPanel);
+
+ return panel;
+ }
+
+ public void actionPerformed(ActionEvent e)
+ {
+ if (e.getActionCommand().equals("COMBO_STATE1"))
+ {
+ spinner1.setEnabled(spinnerState1.isSelected());
+ spinner2.setEnabled(spinnerState1.isSelected());
+ }
+ else if (e.getActionCommand().equals("COMBO_STATE2"))
+ {
+ spinner3.setEnabled(spinnerState2.isSelected());
+ spinner4.setEnabled(spinnerState2.isSelected());
+ }
+ else if (e.getActionCommand().equals("COMBO_STATE3"))
+ {
+ spinner5.setEnabled(spinnerState3.isSelected());
+ spinner6.setEnabled(spinnerState3.isSelected());
+ }
+ else if (e.getActionCommand().equals("CLOSE"))
+ {
+ System.exit(0);
+ }
+ }
+
+ public static void main(String[] args)
+ {
+ try
+ {
+ MetalLookAndFeel.setCurrentTheme(new DefaultMetalTheme());
+ UIManager.setLookAndFeel(new javax.swing.plaf.metal.MetalLookAndFeel());
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ }
+ SpinnerDemo app = new SpinnerDemo("Spinner Demo");
+ app.initFrameContent();
+ app.pack();
+ app.setVisible(true);
+ }
+
+}
diff --git a/examples/gnu/classpath/examples/swing/TableDemo.java b/examples/gnu/classpath/examples/swing/TableDemo.java
index 92f4cc758..1fbf2de53 100644
--- a/examples/gnu/classpath/examples/swing/TableDemo.java
+++ b/examples/gnu/classpath/examples/swing/TableDemo.java
@@ -45,7 +45,9 @@ import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
+import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.DefaultTableModel;
+import javax.swing.table.TableColumn;
/**
* Displays the editable table. The first column consists of check boxes.
@@ -62,7 +64,7 @@ public class TableDemo extends JFrame
/**
* The initial column count for this table.
*/
- static int cols = 8;
+ static int cols = 7;
/**
@@ -112,11 +114,13 @@ public class TableDemo extends JFrame
}
/**
- * The column name.
+ * The column name, as suggested by model. This header should not be
+ * visible, as it is overridden by setting the header name with
+ * {@link TableColumn#setHeaderValue} in {@link TableDemo#createContent}.
*/
public String getColumnName(int column)
{
- return "Demo "+column;
+ return "Error "+column;
}
/**
@@ -137,7 +141,7 @@ public class TableDemo extends JFrame
* The table being displayed.
*/
JTable table = new JTable();
-
+
/**
* The table model.
*/
@@ -171,7 +175,6 @@ public class TableDemo extends JFrame
{
JPanel p = new JPanel();
p.setLayout(new BorderLayout());
- table.setModel(model);
values = new Object[rows][];
for (int i = 0; i < values.length; i++)
{
@@ -183,6 +186,27 @@ public class TableDemo extends JFrame
values [i][0] = i % 2 == 0? Boolean.TRUE : Boolean.FALSE;
}
+ table.setModel(model);
+
+ // Make the columns with gradually increasing width:
+ DefaultTableColumnModel cm = new DefaultTableColumnModel();
+ for (int i = 0; i < cols; i++)
+ {
+ TableColumn column = new TableColumn(i);
+
+ // Showing the variable width columns.
+ int width = 100+20*i;
+ column.setPreferredWidth(width);
+
+ // If we do not set the header value here, the value, returned
+ // by model, is used.
+ column.setHeaderValue("Width +"+(20*i));
+
+ cm.addColumn(column);
+ }
+
+ table.setColumnModel(cm);
+
// Create the table, place it into scroll pane and place
// the pane into this frame.
JScrollPane scroll = new JScrollPane();
@@ -209,4 +233,4 @@ public class TableDemo extends JFrame
frame.validate();
frame.setVisible(true);
}
-} \ No newline at end of file
+}