/* * Copyright 2006-2018 The MZmine 2 Development Team * * This file is part of MZmine 2. * * MZmine 2 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 of the * License, or (at your option) any later version. * * MZmine 2 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 MZmine 2; if not, * write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 * USA */ /* * Code created was by or on behalf of Syngenta and is released under the open source license in use * for the pre-existing code or project. Syngenta does not assert ownership or copyright any over * pre-existing work. */ package net.sf.mzmine.parameters.parametertypes.filenames; import java.awt.BorderLayout; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JPanel; import javax.swing.JTextField; /** */ public class DirectoryComponent extends JPanel implements ActionListener { /** * */ private static final long serialVersionUID = 1L; // Text field width. private static final int TEXT_FIELD_COLUMNS = 15; // Text field font. private static final Font SMALL_FONT = new Font("SansSerif", Font.PLAIN, 10); // Chooser title. private static final String TITLE = "Select Directory"; // Text field. private final JTextField txtDirectory; /** * Create the component. */ public DirectoryComponent() { super(new BorderLayout()); // Create text field. txtDirectory = new JTextField(); txtDirectory.setColumns(TEXT_FIELD_COLUMNS); txtDirectory.setFont(SMALL_FONT); // Chooser button. final JButton btnFileBrowser = new JButton("..."); btnFileBrowser.addActionListener(this); add(txtDirectory, BorderLayout.CENTER); add(btnFileBrowser, BorderLayout.EAST); } public File getValue() { return new File(txtDirectory.getText()); } public void setValue(final File value) { txtDirectory.setText(value.getPath()); } @Override public void setToolTipText(final String text) { txtDirectory.setToolTipText(text); } @Override public void actionPerformed(final ActionEvent e) { // Create chooser. final JFileChooser chooser = new JFileChooser(); chooser.setMultiSelectionEnabled(false); chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); chooser.setAcceptAllFileFilterUsed(false); chooser.setDialogTitle(TITLE); // Set current directory. final String currentPath = txtDirectory.getText(); if (currentPath.length() > 0) { final File currentFile = new File(currentPath); final File currentDir = currentFile.getParentFile(); if (currentDir != null && currentDir.exists()) { chooser.setCurrentDirectory(currentDir); } } // Open chooser. if (chooser.showDialog(null, TITLE) == JFileChooser.APPROVE_OPTION) { txtDirectory.setText(chooser.getSelectedFile().getPath()); } } }