classpath-patches
[Top][All Lists]
Advanced

[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);
+  }
+
+}

reply via email to

[Prev in Thread] Current Thread [Next in Thread]