01: package com.tagtraum.perf.gcviewer.action;
02:
03: import com.tagtraum.perf.gcviewer.GCViewer;
04: import com.tagtraum.perf.gcviewer.util.ExtensionFileFilter;
05:
06: import javax.swing.*;
07: import java.awt.*;
08: import java.awt.event.ActionEvent;
09: import java.io.File;
10:
11: /**
12: *
13: * @author <a href="mailto:hs@tagtraum.com">Hendrik Schreiber</a>
14: * Date: May 20, 2005
15: * Time: 1:48:26 PM
16: *
17: */
18: public class OpenFile extends AbstractAction {
19: private GCViewer gcViewer;
20: private JFileChooser openDialog;
21: private File[] lastSelectedFiles = new File[0];
22: private JCheckBox addURLCheckBox;
23:
24: public OpenFile(final GCViewer gcViewer) {
25: this .gcViewer = gcViewer;
26: putValue(NAME, GCViewer.localStrings
27: .getString("main_frame_menuitem_open_file"));
28: putValue(SHORT_DESCRIPTION, GCViewer.localStrings
29: .getString("main_frame_menuitem_hint_open_file"));
30: putValue(MNEMONIC_KEY, new Integer(GCViewer.localStrings
31: .getString("main_frame_menuitem_mnemonic_open_file")
32: .charAt(0)));
33: putValue(ACTION_COMMAND_KEY, "open");
34: putValue(ACCELERATOR_KEY, KeyStroke.getKeyStroke('O',
35: Event.CTRL_MASK));
36: putValue(SMALL_ICON, new ImageIcon(Toolkit.getDefaultToolkit()
37: .getImage(
38: gcViewer.getClass().getResource(
39: "images/open.png"))));
40: openDialog = new JFileChooser();
41: openDialog.setDialogTitle(GCViewer.localStrings
42: .getString("fileopen_dialog_title"));
43: openDialog.setMultiSelectionEnabled(true);
44: openDialog
45: .addChoosableFileFilter(ExtensionFileFilter.GcExtensionFilter);
46: openDialog
47: .addChoosableFileFilter(ExtensionFileFilter.TxtExtensionFilter);
48: openDialog
49: .addChoosableFileFilter(ExtensionFileFilter.LogExtensionFilter);
50: addURLCheckBox = new JCheckBox(GCViewer.localStrings
51: .getString("fileopen_dialog_add_checkbox"), false);
52: addURLCheckBox.setVerticalTextPosition(SwingConstants.TOP);
53: addURLCheckBox.setToolTipText(GCViewer.localStrings
54: .getString("fileopen_dialog_hint_add_checkbox"));
55:
56: final JPanel panel = new JPanel(new GridBagLayout());
57: final GridBagConstraints gridBagConstraints = new GridBagConstraints();
58: gridBagConstraints.anchor = GridBagConstraints.NORTH;
59: gridBagConstraints.weighty = 2;
60: panel.add(addURLCheckBox, gridBagConstraints);
61: openDialog.setAccessory(panel);
62: }
63:
64: public void actionPerformed(final ActionEvent e) {
65: final boolean aDocumentIsAlreadyOpen = gcViewer
66: .getSelectedGCDocument() != null;
67: addURLCheckBox.setVisible(aDocumentIsAlreadyOpen);
68: addURLCheckBox.setEnabled(aDocumentIsAlreadyOpen);
69: final int val = openDialog.showOpenDialog(gcViewer);
70: if (val == JFileChooser.APPROVE_OPTION) {
71: lastSelectedFiles = openDialog.getSelectedFiles();
72: if (addURLCheckBox.isSelected()) {
73: gcViewer.add(lastSelectedFiles);
74: } else {
75: gcViewer.open(lastSelectedFiles);
76: }
77: }
78: }
79:
80: public void setSelectedFile(final File file) {
81: openDialog.setCurrentDirectory(file.getParentFile());
82: openDialog.setSelectedFile(file);
83: }
84:
85: public File[] getLastSelectedFiles() {
86: return lastSelectedFiles;
87: }
88:
89: }
|