/* RegisterCodecStepOnePanel.java created 2007-09-18
*
*/
package org.signalml.app.view.signal.signalml;
import static org.signalml.app.util.i18n.SvarogI18n._;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.KeyEvent;
import java.io.File;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JFileChooser;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
import javax.swing.filechooser.FileNameExtensionFilter;
import org.signalml.app.view.common.components.filechooser.EmbeddedFileChooser;
import org.signalml.codec.SignalMLCodec;
/**
* Panel for the first step of {@link RegisterCodecDialog}.
* Contains only one {@link #getFilePanel() panel}, which allows to
* select the file with the {@link SignalMLCodec codec}.
*
* @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o.
*/
public class RegisterCodecStepOnePanel extends JPanel {
private static final long serialVersionUID = 1L;
/**
* the {@link #getFileChooser() embedded file chooser}
*/
private EmbeddedFileChooser fileChooser = null;
/**
* the panel with the {@link #getFileChooser() file chooser}.
*/
private JPanel filePanel = null;
/**
* Constructor. Initializes the panel.
*/
public RegisterCodecStepOnePanel() {
super();
initialize();
}
/**
* Initializes this panel with the {@link BorderLayout} and
* adds to it the {@link #getFilePanel() panel} with the
* {@link #getFileChooser() file chooser}.
*/
private void initialize() {
setLayout(new BorderLayout());
add(getFilePanel(), BorderLayout.CENTER);
}
/**
* Returns the panel with the {@link #getFileChooser() file chooser}.
* If the panel doens't exist it is created.
* @return the panel with the file chooser.
*/
private JPanel getFilePanel() {
if (filePanel == null) {
filePanel = new JPanel();
filePanel.setBorder(BorderFactory.createTitledBorder(_("Choose XML definition file")));
filePanel.setLayout(new BoxLayout(filePanel, BoxLayout.Y_AXIS));
filePanel.add(getFileChooser());
}
return filePanel;
}
/**
* Returns the embedded file chooser.
* If it doesn't exist it is created:
* <ul>
* <li>as open dialog,</li>
* <li>without multi-selection and hiding files,</li>
* <li>to open files: {@code XML} or all,</li>
* <li>with the user directory as the current directory.</li>
* </ul>
* @return the embedded file chooser
*/
public EmbeddedFileChooser getFileChooser() {
if (fileChooser == null) {
fileChooser = new EmbeddedFileChooser();
fileChooser.setDialogType(JFileChooser.OPEN_DIALOG);
fileChooser.setFileHidingEnabled(false);
fileChooser.setMultiSelectionEnabled(false);
fileChooser.setAcceptAllFileFilterUsed(true);
fileChooser.resetChoosableFileFilters();
fileChooser.addChoosableFileFilter(new FileNameExtensionFilter(_("XML files (*.xml)"), "xml"));
fileChooser.setAlignmentX(Component.LEFT_ALIGNMENT);
fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
fileChooser.setCurrentDirectory(new File(System.getProperty("user.dir"),"specs"));
fileChooser.setPreferredSize(new Dimension(500,350));
// remove escape key binding to allow for dialog closing
KeyStroke escape = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0, false);
fileChooser.getInputMap(JFileChooser.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(escape, "none");
}
return fileChooser;
}
}