[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[cp-patches] FYI: FileChooserDemo
From: |
David Gilbert |
Subject: |
[cp-patches] FYI: FileChooserDemo |
Date: |
Wed, 09 Nov 2005 16:43:40 +0000 |
User-agent: |
Mozilla Thunderbird 1.0.7 (X11/20051026) |
I added a demo for the JFileChooser component, and integrated this into the
gnu.classpath.examples.swing.Demo class. I also made a change to the latter class
so that the buttons at the bottom appear in two rows now, so that the demo frame
isn't so wide:
2005-11-09 David Gilbert <address@hidden>
* examples/gnu/classpath/examples/swing/Demo.java
(mkMenuBar): added file chooser item,
(mkButtonBar): split buttons into two rows, added 'FileChooser' button,
* examples/gnu/classpath/examples/swing/FileChooserDemo.java: New file.
Regards,
Dave
Index: examples/gnu/classpath/examples/swing/Demo.java
===================================================================
RCS file:
/cvsroot/classpath/classpath/examples/gnu/classpath/examples/swing/Demo.java,v
retrieving revision 1.27
diff -u -r1.27 Demo.java
--- examples/gnu/classpath/examples/swing/Demo.java 4 Nov 2005 12:23:13
-0000 1.27
+++ examples/gnu/classpath/examples/swing/Demo.java 9 Nov 2005 16:20:36
-0000
@@ -211,6 +211,10 @@
(new TextFieldDemo("TextField Demo")).createContent(),
examples);
+ new PopUpAction("FileChooser",
+ (new FileChooserDemo("FileChooser Demo")).createContent(),
+ examples);
+
new PopUpAction("ColorChooser",
mkColorChooser(),
examples);
@@ -1018,28 +1022,29 @@
private JPanel mkButtonBar()
{
- JPanel panel = new JPanel ();
- panel.setLayout(new FlowLayout());
+ JPanel panel = new JPanel (new GridLayout(2, 1));
+ JPanel panelA = new JPanel(new FlowLayout());
+ JPanel panelB = new JPanel(new FlowLayout());
new PopUpAction("Buttons",
(new ButtonDemo("Button Demo")).createContent(),
- panel);
+ panelA);
new PopUpAction("Toggles",
mkToggle("cool and refreshing"),
- panel);
+ panelA);
new PopUpAction("Checkbox",
mkCheckbox("ice cold"),
- panel);
+ panelA);
new PopUpAction("Radio",
mkRadio("delicious"),
- panel);
+ panelA);
new PopUpAction("Slider",
(new SliderDemo("Slider Demo")).createContent(),
- panel);
+ panelA);
new PopUpAction("List",
mkListPanel(new String[] { "hello",
@@ -1050,56 +1055,60 @@
"that",
"wraps",
"over"}),
- panel);
+ panelA);
new PopUpAction("Scrollbar",
(new ScrollBarDemo("ScrollBar Demo")).createContent(),
- panel);
+ panelA);
new PopUpAction("Viewport",
mkViewportBox(mkBigButton("View Me!")),
- panel);
+ panelA);
new PopUpAction("ScrollPane",
mkScrollPane(mkBigButton("Scroll Me!")),
- panel);
+ panelA);
new PopUpAction("TabPane",
mkTabs(new String[] {"happy",
"sad",
"indifferent"}),
- panel);
+ panelB);
new PopUpAction("Spinner",
mkSpinner(),
- panel);
+ panelB);
new PopUpAction("TextField",
(new TextFieldDemo("TextField Demo")).createContent(),
- panel);
+ panelB);
+
+ new PopUpAction("FileChooser",
+ (new FileChooserDemo("FileChooser Demo")).createContent(),
+ panelB);
new PopUpAction("ColorChooser",
mkColorChooser(),
- panel);
+ panelB);
new PopUpAction("ComboBox",
(new ComboBoxDemo("ComboBox Demo")).createContent(),
- panel);
+ panelB);
new PopUpAction("Editor",
mkEditorPane(),
- panel);
+ panelB);
new PopUpAction("Tree",
mkTree(),
- panel);
+ panelB);
new PopUpAction("Table",
mkTable(),
- panel);
+ panelB);
JButton exitDisposer = mkDisposerButton(frame);
- panel.add(exitDisposer);
+ panelB.add(exitDisposer);
exitDisposer.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
@@ -1107,6 +1116,8 @@
System.exit(1);
}
});
+ panel.add(panelA);
+ panel.add(panelB);
return panel;
}
}
Index: examples/gnu/classpath/examples/swing/FileChooserDemo.java
===================================================================
RCS file: examples/gnu/classpath/examples/swing/FileChooserDemo.java
diff -N examples/gnu/classpath/examples/swing/FileChooserDemo.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ examples/gnu/classpath/examples/swing/FileChooserDemo.java 9 Nov 2005
16:20:36 -0000
@@ -0,0 +1,228 @@
+/* FileChooserDemo.java -- An example showing file choosers in Swing.
+ Copyright (C) 2005, 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.GridLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+
+import javax.swing.BorderFactory;
+import javax.swing.DefaultListModel;
+import javax.swing.JButton;
+import javax.swing.JFileChooser;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.filechooser.FileFilter;
+
+/**
+ * A simple demo showing the address@hidden JFileChooser} component used in
different
+ * ways.
+ */
+public class FileChooserDemo extends JFrame implements ActionListener
+{
+ /**
+ * A file filter for Java source files.
+ */
+ static class JavaFileFilter extends FileFilter
+ {
+ public String getDescription()
+ {
+ return "Java Source Files (.java)";
+ }
+ public boolean accept(File f)
+ {
+ if (f != null)
+ {
+ return f.getName().endsWith(".java") || f.isDirectory();
+ }
+ else
+ return false;
+ }
+ }
+
+ /** A label to display the selected file. */
+ JLabel selectedFileLabel;
+
+ /**
+ * A list showing the selected files (where multi selections are
+ * allowed).
+ */
+ JList selectedFilesList;
+
+ /** A label to display the return code for the JFileChooser. */
+ JLabel returnCodeLabel;
+
+ /**
+ * Creates a new demo instance.
+ *
+ * @param frameTitle the frame title.
+ */
+ public FileChooserDemo(String frameTitle)
+ {
+ super(frameTitle);
+ JPanel content = createContent();
+ 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()
+ {
+ 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);
+
+ panel.add(displayPanel);
+ return panel;
+ }
+
+ /**
+ * When the user clicks on a button, launch the appropriate file chooser
+ * and report the results.
+ *
+ * @param e the event.
+ */
+ public void actionPerformed(ActionEvent e)
+ {
+ int option = 0;
+ File selectedFile = null;
+ File[] selectedFiles = new File[0];
+
+ if (e.getActionCommand().equals("CLOSE"))
+ {
+ System.exit(0);
+ }
+ else if (e.getActionCommand().equals("OPEN"))
+ {
+ JFileChooser chooser = new JFileChooser();
+ option = chooser.showOpenDialog(this);
+ selectedFile = chooser.getSelectedFile();
+ selectedFiles = chooser.getSelectedFiles();
+ }
+ else if (e.getActionCommand().equals("OPEN_MULTI"))
+ {
+ JFileChooser chooser = new JFileChooser();
+ chooser.setMultiSelectionEnabled(true);
+ option = chooser.showOpenDialog(this);
+ selectedFile = chooser.getSelectedFile();
+ selectedFiles = chooser.getSelectedFiles();
+ }
+ else if (e.getActionCommand().equals("OPEN_JAVA"))
+ {
+ JFileChooser chooser = new JFileChooser();
+ chooser.setAcceptAllFileFilterUsed(false);
+ chooser.setFileFilter(new JavaFileFilter());
+ option = chooser.showOpenDialog(this);
+ selectedFile = chooser.getSelectedFile();
+ selectedFiles = chooser.getSelectedFiles();
+ }
+ else if (e.getActionCommand().equals("SAVE"))
+ {
+ JFileChooser chooser = new JFileChooser();
+ option = chooser.showSaveDialog(this);
+ selectedFile = chooser.getSelectedFile();
+ selectedFiles = chooser.getSelectedFiles();
+ }
+ else if (e.getActionCommand().equals("SELECT_DIRECTORY"))
+ {
+ JFileChooser chooser = new JFileChooser();
+ chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
+ option = chooser.showDialog(this, "Select");
+ selectedFile = chooser.getSelectedFile();
+ selectedFiles = chooser.getSelectedFiles();
+ }
+
+ // display the selection and return code
+ if (selectedFile != null)
+ selectedFileLabel.setText(selectedFile.toString());
+ else
+ selectedFileLabel.setText("null");
+ DefaultListModel listModel = new DefaultListModel();
+ for (int i = 0; i < selectedFiles.length; i++)
+ listModel.addElement(selectedFiles[i]);
+ selectedFilesList.setModel(listModel);
+ returnCodeLabel.setText(Integer.toString(option));
+ }
+
+ public static void main(String[] args)
+ {
+ FileChooserDemo app = new FileChooserDemo("File Chooser Demo");
+ app.pack();
+ app.setVisible(true);
+ }
+
+}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [cp-patches] FYI: FileChooserDemo,
David Gilbert <=