Java tutorial
/* * * Copyright (C) 2008-2009 Yves Zoundi * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * under the License. */ package net.sf.vfsjfilechooser.accessories; import net.sf.vfsjfilechooser.VFSJFileChooser; import net.sf.vfsjfilechooser.accessories.bookmarks.BookmarksDialog; import net.sf.vfsjfilechooser.accessories.connection.ConnectionDialog; import net.sf.vfsjfilechooser.utils.SwingCommonsUtilities; import net.sf.vfsjfilechooser.utils.VFSResources; import org.apache.commons.vfs.FileObject; import java.awt.BorderLayout; import java.awt.Frame; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.net.URL; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.Box; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.SwingConstants; import javax.swing.SwingUtilities; import javax.swing.border.Border; import javax.swing.border.CompoundBorder; import javax.swing.border.EmptyBorder; import javax.swing.border.EtchedBorder; /** * <p>The default accessory panel you could add * It contains a bookmarks manager and the a connection dialog</p> * @author Yves Zoundi <yveszoundi at users dot sf dot net> * @version 0.0.2 */ @SuppressWarnings("serial") public final class DefaultAccessoriesPanel extends JComponent { private static final String RES_PATH = "/net/sf/vfsjfilechooser/plaf/icons/"; private JButton bookmarksButton; private JButton localFSButton; private JButton connectionsButton; private BookmarksDialog bookmarksDialog; private ConnectionDialog connectionDialog; private JComponent buttonsPanel; private VFSJFileChooser fileChooser; /** * Create an accessory panel * @param fileChooser The file dialog */ public DefaultAccessoriesPanel(final VFSJFileChooser fileChooser) { setLayout(new BorderLayout()); this.fileChooser = fileChooser; initBorder(); initComponents(); } private void initBorder() { Border outsideBorder = new EtchedBorder(); Border insideBorder = new EmptyBorder(2, 4, 0, 2); Border insideBorder1 = new CompoundBorder(outsideBorder, insideBorder); Border outsideBorder1 = new EmptyBorder(0, 2, 0, 2); setBorder(new CompoundBorder(outsideBorder1, insideBorder1)); } private Icon getIcon(String iconName) { URL iconURL = getClass().getResource(RES_PATH + iconName); return new ImageIcon(iconURL); } private void initComponents() { buttonsPanel = new JPanel(); buttonsPanel.setLayout(new GridLayout(0, 1, 3, 3)); Action action; action = new ManageBookmarksAction(VFSResources.getMessage("VFSJFileChooser.bookmarksLabelText"), getIcon("book.png")); bookmarksButton = new JButton(action); bookmarksButton.setHorizontalAlignment(SwingConstants.LEFT); action = new ConnectionWizardAction(VFSResources.getMessage("VFSJFileChooser.connectionButtonText"), getIcon("connect.png")); connectionsButton = new JButton(action); connectionsButton.setHorizontalAlignment(SwingConstants.LEFT); action = new LocalFilesAction(VFSResources.getMessage("VFSJFileChooser.localFilesButtonText"), getIcon("drive.png")); localFSButton = new JButton(action); localFSButton.setHorizontalAlignment(SwingConstants.LEFT); buttonsPanel.add(bookmarksButton); buttonsPanel.add(Box.createVerticalStrut(20)); buttonsPanel.add(connectionsButton); buttonsPanel.add(Box.createVerticalStrut(20)); buttonsPanel.add(localFSButton); add(buttonsPanel, BorderLayout.NORTH); add(new JPanel(), BorderLayout.CENTER); final Frame c = (Frame) SwingUtilities.getWindowAncestor(fileChooser); bookmarksDialog = new BookmarksDialog(c, fileChooser); connectionDialog = new ConnectionDialog(c, bookmarksDialog, fileChooser); } /** * Action to display the connection wizard dialog */ private class ConnectionWizardAction extends AbstractAction { public ConnectionWizardAction(String name, Icon icon) { super(name, icon); } public void actionPerformed(ActionEvent e) { connectionDialog.setLocationRelativeTo(connectionDialog.getOwner()); connectionDialog.setVisible(true); } } /** * Action to show the local file system */ private class LocalFilesAction extends AbstractAction { public LocalFilesAction(String name, Icon icon) { super(name, icon); } public void actionPerformed(ActionEvent e) { FileObject fo = SwingCommonsUtilities.getVFSFileChooserDefaultDirectory(); fileChooser.setCurrentDirectory(fo); } } /** * Action to display the bookmarks manager dialog */ private class ManageBookmarksAction extends AbstractAction { public ManageBookmarksAction(String name, Icon icon) { super(name, icon); } public void actionPerformed(ActionEvent e) { bookmarksDialog.setLocationRelativeTo(bookmarksDialog.getOwner()); bookmarksDialog.setVisible(true); } } }