Java tutorial
/* * Enhydra Java Application Server Project * * The contents of this file are subject to the Enhydra Public License * Version 1.1 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License on * the gEnhydra web site ( http://www.enhydra.org/ ). * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific terms governing rights and limitations * under the License. * * The Initial Developer of the Enhydra Application Server is Lutris * Technologies, Inc. The Enhydra Application Server and portions created * by Lutris Technologies, Inc. are Copyright Lutris Technologies, Inc. * All Rights Reserved. * * Contributor(s): * Paul Mahar * Thomas Wessell * */ // import javax.swing.JFileChooser; import javax.swing.UIManager; import java.awt.Dialog; import java.awt.Frame; import java.awt.Window; import java.awt.Component; import java.awt.Dimension; import java.awt.Point; import java.awt.Toolkit; import java.io.File; import javax.swing.filechooser.FileFilter; import java.util.ResourceBundle; /** * SwingUtil contains static utility methods for working with Swing * classes. * */ public class SwingUtil { /** * Hidden default constructor */ private SwingUtil() { } /** * Open a JFileChooser dialog for selecting a directory and return the * selected directory. * * @param owner * The frame or dialog that controls the invokation of this dialog. * @param defaultDir * A string representation of the directory to show when the * dialog opens. * @param title * Tile for the dialog. * * @return * The selected directory as a File. Null if user cancels dialog without * a selection. * */ public static File getDirectoryChoice(Component owner, String defaultDir, String title) { return getDirectoryChoice(owner, new File(defaultDir), title); } /** * Open a JFileChooser dialog for selecting a directory and return the * selected directory. * * * @param owner * The frame or dialog that controls the invokation of this dialog. * @param defaultDir * The directory to show when the dialog opens. * @param title * Tile for the dialog. * * @return * The selected directory as a File. Null if user cancels dialog without * a selection. * */ public static File getDirectoryChoice(Component owner, File defaultDir, String title) { // // There is apparently a bug in the native Windows FileSystem class that // occurs when you use a file chooser and there is a security manager // active. An error dialog is displayed indicating there is no disk in // Drive A:. To avoid this, the security manager is temporarily set to // null and then reset after the file chooser is closed. // SecurityManager sm = null; JFileChooser chooser = null; File choice = null; sm = System.getSecurityManager(); System.setSecurityManager(null); chooser = new JFileChooser(); chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); if ((defaultDir != null) && defaultDir.exists() && defaultDir.isDirectory()) { chooser.setCurrentDirectory(defaultDir); chooser.setSelectedFile(defaultDir); } chooser.setDialogTitle(title); chooser.setApproveButtonText("OK"); int v = chooser.showOpenDialog(owner); owner.requestFocus(); switch (v) { case JFileChooser.APPROVE_OPTION: if (chooser.getSelectedFile() != null) { if (chooser.getSelectedFile().exists()) { choice = chooser.getSelectedFile(); } else { File parentFile = new File(chooser.getSelectedFile().getParent()); choice = parentFile; } } break; case JFileChooser.CANCEL_OPTION: case JFileChooser.ERROR_OPTION: } chooser.removeAll(); chooser = null; System.setSecurityManager(sm); return choice; } /** * Get a file selection using the FileChooser dialog. * * @param owner * The parent of this modal dialog. * @param defaultSelection * The default file selection as a string. * @param filter * An extension filter * @param title * The caption for the dialog. * * @return * A selected file or null if no selection is made. */ public static File getFileChoice(Component owner, String defaultSelection, FileFilter filter, String title) { return SwingUtil.getFileChoice(owner, new File(defaultSelection), filter, title); } /** * Get a file selection using the FileChooser dialog. * * @param owner * The parent of this modal dialog. * @param defaultSelection * The default file selection as a file. * @param filter * An extension filter * @param title * The caption for the dialog. * * @return * A selected file or null if no selection is made. */ public static File getFileChoice(Component owner, File defaultSelection, FileFilter filter, String title) { // // There is apparently a bug in the native Windows FileSystem class that // occurs when you use a file chooser and there is a security manager // active. An error dialog is displayed indicating there is no disk in // Drive A:. To avoid this, the security manager is temporarily set to // null and then reset after the file chooser is closed. // SecurityManager sm = null; File choice = null; JFileChooser chooser = null; sm = System.getSecurityManager(); System.setSecurityManager(null); chooser = new JFileChooser(); if (defaultSelection.isDirectory()) { chooser.setCurrentDirectory(defaultSelection); } else { chooser.setSelectedFile(defaultSelection); } chooser.setFileFilter(filter); chooser.setDialogTitle(title); chooser.setApproveButtonText("OK"); int v = chooser.showOpenDialog(owner); owner.requestFocus(); switch (v) { case JFileChooser.APPROVE_OPTION: if (chooser.getSelectedFile() != null) { choice = chooser.getSelectedFile(); } break; case JFileChooser.CANCEL_OPTION: case JFileChooser.ERROR_OPTION: } chooser.removeAll(); chooser = null; System.setSecurityManager(sm); return choice; } /** * Get the point on point on the screen at which to open a dialog * or window for it to appear centered. This point is the top right hand * corner of the container you want to position. * * * @param size * The demensions of the dialog or window to position. * * @return * The top left hand point at which to position the container * for it to appear centered. * */ public static Point getCenteringPoint(Dimension size) { Point centeringPoint = new Point(); Dimension screenSize; screenSize = Toolkit.getDefaultToolkit().getScreenSize(); if (size.height > screenSize.height) { size.height = screenSize.height; } if (size.width > screenSize.width) { size.width = screenSize.width; } centeringPoint.x = (screenSize.width - size.width) / 2; centeringPoint.y = (screenSize.height - size.height) / 2; return centeringPoint; } }