?? centeredfilechooser.java
字號:
/* * Copyright 2005-2007 JavaAtWork All rights reserved. * Use is subject to license terms. */package javaatwork.myuploader.dialog;import java.applet.Applet;import java.awt.Component;import java.awt.Container;import java.awt.Dimension;import java.awt.HeadlessException;import java.awt.Toolkit;import java.awt.event.MouseListener;import java.io.File;import java.io.UnsupportedEncodingException;import java.net.URLDecoder;import java.net.URLEncoder;import javaatwork.myuploader.utils.CookieManager;import javaatwork.myuploader.utils.LocaleManager;import javaatwork.myuploader.utils.Logger;import javaatwork.myuploader.utils.Parameters;import javax.swing.JDialog;import javax.swing.JFileChooser;import javax.swing.JList;import javax.swing.SwingUtilities;import javax.swing.UIManager;/** * A JFileChooser that is in the center of the screen. * * @author Johannes Postma */ public class CenteredFileChooser extends JFileChooser { /** * serialVersionUID */ private static final long serialVersionUID = -5006688261460210335L; /** * Creates a new CenteredFileChooser */ public CenteredFileChooser() { super(); UIManager.put("FileChooser.readOnly", Boolean.TRUE); this.setMultiSelectionEnabled(true); if (Parameters.getParameter(Parameters.UPLOAD_DIRECTORIES, true)) { this.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES); } else { this.setFileSelectionMode(JFileChooser.FILES_ONLY); } if (Parameters.getParameter(Parameters.SHOW_THUMBNAILS_IN_FILEDIALOG, false)) { this.setAccessory(new ImagePreview(this)); } // remove the file rename functionality in the JFileChooser // this is done for JDK 1.4 and less // the preferred way is UIManager.put("FileChooser.readOnly", Boolean.TRUE) (JDK 1.5) see above; JList list = searchJList(this); if (list != null) { String listenerClassName; MouseListener[] listeners = list.getMouseListeners(); for (int i = 0; i < listeners.length; i++) { listenerClassName = listeners[i].getClass().getName(); if (listenerClassName.indexOf("SingleClick") != -1) { list.removeMouseListener(listeners[i]); break; } } } final String dialogTitle = LocaleManager.getInstance().getDialogTitle(); // the dialogtitle must come from a resourcebundle // the title is not given in the english resourcebundle // and therefore the return dialogtitle is null // the default dialogtitle will be used. if (dialogTitle != null) { try { SwingUtilities.invokeLater(new Runnable() { public void run() { setDialogTitle(dialogTitle); } }); } catch (Exception e) { Logger.log("CenteredFileChooser", "CenteredFileChooser()", e.toString()); } } if (Parameters.getParameter(Parameters.DISABLE_DEFAULT_FILEFILTER, false)) { this.removeChoosableFileFilter(this.getFileFilter()); } // determine fileFilter String fileFilter = Parameters.getParameter(Parameters.FILEFILTER, null); if (fileFilter != null) { try { this.setFileFilter(new UploadFileFilter(fileFilter)); } catch (FileFilterException ffe) { Logger.log("CenteredFileChooser", "CenteredFileChooser()", ffe.toString()); } } } /** * Creates a JDialog. * * @param parent The parent component. * @throws HeadlessException If an error occurred. */ protected JDialog createDialog(Component parent) throws HeadlessException { JDialog dialog = super.createDialog(parent); // sets the frame to the center Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = dialog.getSize(); if (frameSize.height > screenSize.height) { frameSize.height = screenSize.height; } if (frameSize.width > screenSize.width) { frameSize.width = screenSize.width; } dialog.setLocation( (screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); return dialog; } /** * Returns the JList of a JFileChooser. * * @param fileChooser The JFileChooser. * @return JList */ private JList searchJList(Container fileChooser) { JList ret = null; if (fileChooser instanceof JList) { ret = (JList) fileChooser; } else { Component[] children = fileChooser.getComponents(); for (int i = children.length - 1; i >= 0; i--) { if (children[i] instanceof Container) { ret = searchJList((Container) children[i]); if (ret != null) { break; } } } } return ret; } /** * Returns the selected files. * * @param applet The parent applet. * @return The selected files. */ public File[] getSelectedFiles(Applet applet) { String currentDirectory = this.getCurrentDirectory().toString(); String encDir = null; try { encDir = URLEncoder.encode(currentDirectory, "UTF-8"); } catch (UnsupportedEncodingException e) { encDir = URLEncoder.encode(currentDirectory); } CookieManager.setCookie(applet.getCodeBase(), "javaatwork_local_directory=" + encDir + ";expires=Sunday, 25-Dec-50 23:59:00 GMT"); return super.getSelectedFiles(); } /** * Shows an open file dialog. * * @param applet The parent applet. * @return See JFileChooser. */ public int showOpenDialog(Applet applet) { String dir = CookieManager.getCookieValue(applet.getCodeBase(), "javaatwork_local_directory"); if (dir != null) { try { dir = URLDecoder.decode(dir, "UTF-8"); } catch (UnsupportedEncodingException e) { dir = URLDecoder.decode(dir); } this.setCurrentDirectory(new File(dir)); } return super.showOpenDialog(applet); }}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -