Site Map Mail This To A Friend PrivacyPolicy Subscribe to MakeLogic RSS Feed

File Menu - sample applications

Samples Index

File Menu Screenshot

Demonstrates how to get the FileChooser and change the properties of it. This sample sets the File filters to the following FileChooser

File Menu Screenshot

Sample 8:- It contains two files

File 1:- FileChooserFileFilter.java

File 2:- HandleFileChooserExample.java



/*
* @(#)HandleFileChooserExample.java
*
*Product Of : MakeLogic
* URL : http://www.makelogic.com
* Author : R.Venkatesh
* Date : 20 June, 2003
* email : venkat@makelogicmldb.com

* Please feel free to use this Sample Code in your Applications.
*/

/*
* This sample Application Demonstrates how to get the
* FileChooser and make Changes to the FileChooser.
*/





import java.io.File;
import java.util.Hashtable;
import java.util.Enumeration;
import javax.swing.*;

import javax.swing.filechooser.*;

/**
* A convenience implementation of FileFilter that filters out
* all files except for those type extensions that it knows about.
*
* Extensions are of the type ".foo", which is typically found on
* Windows and Unix boxes, but not on Macinthosh. Case is ignored.
*
* Example - create a new filter that filerts out all files
* but gif and jpg image files:
*
* JFileChooser chooser = new JFileChooser();
* MyFileFilter filter = new MyFileFilter(
* new String{"gif", "jpg"}, "JPEG & GIF Images")
* chooser.addChoosableFileFilter(filter);
* chooser.showOpenDialog(this);
*
*/
public class FileChooserFileFilter extends FileFilter {

private static String TYPE_UNKNOWN = "Type Unknown";
private static String HIDDEN_FILE = "Hidden File";

private Hashtable filters = null;
private String description = null;
private String fullDescription = null;
private boolean useExtensionsInDescription = true;

/**
* Creates a file filter. If no filters are added, then all
* files are accepted.
*
* @see #addExtension
*/
public FileChooserFileFilter() {
this.filters = new Hashtable();
}

/**
* Creates a file filter that accepts files with the given extension.
* Example: new MyFileFilter("jpg");
*
* @see #addExtension
*/
public FileChooserFileFilter(String extension) {
this(extension,null);
}

/**
* Creates a file filter that accepts the given file type.
* Example: new MyFileFilter("jpg", "JPEG Image Images");
*
* Note that the "." before the extension is not needed. If
* provided, it will be ignored.
*
* @see #addExtension
*/
public FileChooserFileFilter(String extension, String description) {
this();
if(extension!=null) addExtension(extension);
if(description!=null) setDescription(description);
}

/**
* Creates a file filter from the given string array.
* Example: new MyFileFilter(String {"gif", "jpg"});
*
* Note that the "." before the extension is not needed adn
* will be ignored.
*
* @see #addExtension
*/
public FileChooserFileFilter(String[] filters) {
this(filters, null);
}

/**
* Creates a file filter from the given string array and description.
* Example: new MyFileFilter(String {"gif", "jpg"}, "Gif and JPG Images");
*
* Note that the "." before the extension is not needed and will be ignored.
*
* @see #addExtension
*/
public FileChooserFileFilter(String[] filters, String description) {
this();
for (int i = 0; i < filters.length; i++) {
// add filters one by one
addExtension(filters[i]);
}
if(description!=null) setDescription(description);
}

/**
* Return true if this file should be shown in the directory pane,
* false if it shouldn't.
*
* Files that begin with "." are ignored.
*
* @see #getExtension
* @see FileFilter#accepts
*/
public boolean accept(File f) {
if(f != null) {
if(f.isDirectory()) {
return true;
}
String extension = getExtension(f);
if(extension != null && filters.get(getExtension(f)) != null) {
return true;
};
}
return false;
}

/**
* Return the extension portion of the file's name .
*
* @see #getExtension
* @see FileFilter#accept
*/
public String getExtension(File f) {
if(f != null) {
String filename = f.getName();
int i = filename.lastIndexOf('.');
if(i>0 && i<filename.length()-1) {
return filename.substring(i+1).toLowerCase();
};
}
return null;
}

/**
* Adds a filetype "dot" extension to filter against.
*
* For example: the following code will create a filter that filters
* out all files except those that end in ".jpg" and ".tif":
*
* MyFileFilter filter = new MyFileFilter();
* filter.addExtension("jpg");
* filter.addExtension("tif");
*
* Note that the "." before the extension is not needed and will be ignored.
*/
public void addExtension(String extension) {
if(filters == null) {
filters = new Hashtable(5);
}
filters.put(extension.toLowerCase(), this);
fullDescription = null;
}


/**
* Returns the human readable description of this filter. For
* example: "JPEG and GIF Image Files (*.jpg, *.gif)"
*
* @see setDescription
* @see setExtensionListInDescription
* @see isExtensionListInDescription
* @see FileFilter#getDescription
*/
public String getDescription() {
if(fullDescription == null) {
if(description == null || isExtensionListInDescription()) {
fullDescription = description==null ? "(" : description + " (";
// build the description from the extension list
Enumeration extensions = filters.keys();
if(extensions != null) {
fullDescription += "." + (String) extensions.nextElement();
while (extensions.hasMoreElements()) {
fullDescription += ", ." + (String) extensions.nextElement();
}
}
fullDescription += ")";
} else {
fullDescription = description;
}
}
return fullDescription;
}

/**
* Sets the human readable description of this filter. For
* example: filter.setDescription("Gif and JPG Images");
*
* @see setDescription
* @see setExtensionListInDescription
* @see isExtensionListInDescription
*/
public void setDescription(String description) {
this.description = description;
fullDescription = null;
}

/**
* Determines whether the extension list (.jpg, .gif, etc) should
* show up in the human readable description.
*
* Only relevent if a description was provided in the constructor
* or using setDescription();
*
* @see getDescription
* @see setDescription
* @see isExtensionListInDescription
*/
public void setExtensionListInDescription(boolean b) {
useExtensionsInDescription = b;
fullDescription = null;
}

/**
* Returns whether the extension list (.jpg, .gif, etc) should
* show up in the human readable description.
*
* Only relevent if a description was provided in the constructor
* or using setDescription();
*
* @see getDescription
* @see setDescription
* @see setExtensionListInDescription
*/
public boolean isExtensionListInDescription() {
return useExtensionsInDescription;
}
}



import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;


import javax.swing.JDesktopPane;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenuBar;
import javax.swing.JOptionPane;
import javax.swing.KeyStroke;

import com.makeLogic.utils.FileMenu;

class HandleFileChooser extends JFrame implements PropertyChangeListener
{
JDesktopPane desktop;
JMenuBar menuBar;

HandleFileChooser(String title)
{
//..calls the super class constructor
super(title);

//..creates a JMenuBar to Place Menus
menuBar=new JMenuBar();

//..container
desktop=new JDesktopPane();

//..gets the ContentPane of the JFrame
getContentPane().add("Center",desktop);


//..Creates the FileMenu Object
FileMenu fileMenu=new FileMenu(desktop);

//..Adds fileMenu to the MenuBar
menuBar.add(fileMenu);

//..Adds the JMenuBar to the JFrame
setJMenuBar(menuBar);

//..adds the PropertyChange Listeners
fileMenu.getOpenMenuItem().addPropertyChangeListener(this);
fileMenu.getSaveMenuItem().addPropertyChangeListener(this);
fileMenu.getSaveAsMenuItem().addPropertyChangeListener(this);

//.. exit when window closed
addWindowListener(fileMenu.getDefaultClosingListener());

}

//..PropertyChangeListener
//..it gets the FileChooser and changes the FileChooser properties
public void propertyChange(PropertyChangeEvent propertyChangeEvent)
{
//..checks the property Name as FileChooserOpend which is set by the developer
if(propertyChangeEvent.getPropertyName().equalsIgnoreCase("FileChooserOpened"))
{
//..gets the FileChooser
JFileChooser fileChooser = (JFileChooser)propertyChangeEvent.getOldValue();

if(fileChooser != null)
{
//..makes modifications to the FileChooser

//..creates the FileFilters
FileChooserFileFilter myFileFilter = new FileChooserFileFilter();

//..sets the FileFilters to the FileChooser
myFileFilter.addExtension("jpg");
myFileFilter.addExtension("gif");
myFileFilter.setDescription("JPG & GIF Images");
fileChooser.setFileFilter(myFileFilter);

//..sets the Title to the FileChooser
fileChooser.setDialogTitle("HandleFileChooser Demo");
fileChooser.validate();
}
else
{
//..do nothing

}

}
}

}

public class HandleFileChooserExample
{
public static void main(String args[]) throws Exception
{
HandleFileChooser handleFileChooser=new HandleFileChooser("Handle FileChooser Example");
handleFileChooser.show();
handleFileChooser.setSize(500,500);
handleFileChooser.validate();
}
}
Was this information helpful to you?
Rock The Vote Next Poll Question

RSS Feeds
Subscribe to MakeLogic RSS Feed Add to My Yahoo! Add to Google
NewsLetter