import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JCheckBox;
-import javax.swing.JCheckBoxMenuItem;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
/** The “apply mime type override” action. */
private I18nAction applyMimeTypeOverrideAction;
- /** The “insert” checkbox. */
- private JCheckBoxMenuItem insertCheckBoxMenuItem;
-
/**
* Creates a new file manager.
*
}
};
applyInsertOverrideAction = new I18nAction("fileManager.menu.item.applyInsertOverride") {
+
/**
* {@inheritDoc}
*/
+ @SuppressWarnings("synthetic-access")
public void actionPerformed(ActionEvent actionEvent) {
- /* TODO */
+ applyInsertOverride();
}
};
applyMimeTypeOverrideAction = new I18nAction("fileManager.menu.item.applyMimeTypeOverride") {
+
/**
* {@inheritDoc}
*/
+ @SuppressWarnings("synthetic-access")
public void actionPerformed(ActionEvent actionEvent) {
- /* TODO */
+ applyMimeTypeOverride();
}
};
}
private void initComponents() {
treeContextMenu = new JPopupMenu();
treeContextMenu.add(setDefaultFileAction);
- insertCheckBoxMenuItem = new JCheckBoxMenuItem(insertAction);
- treeContextMenu.add(insertCheckBoxMenuItem);
-
+
overrideMenu = new I18nMenu("fileManager.menu.override");
treeContextMenu.add(overrideMenu);
-
+
overrideMenu.add(applyInsertOverrideAction);
overrideMenu.add(applyMimeTypeOverrideAction);
return;
}
Point eventLocation = mouseEvent.getPoint();
- TreePath clickedPath = fileTree.getPathForLocation(eventLocation.x, eventLocation.y);
- if (clickedPath == null) {
- return;
+ TreePath[] selectedPaths = fileTree.getSelectionPaths();
+ if ((selectedPaths == null) || (selectedPaths.length == 0)) {
+ /* try to find item under click. */
+ TreePath clickedPath = fileTree.getPathForLocation(mouseEvent.getX(), mouseEvent.getY());
+ if (clickedPath != null) {
+ fileTree.setSelectionPath(clickedPath);
+ selectedPaths = new TreePath[] { clickedPath };
+ } else {
+ logger.log(Level.FINER, "nothing selected for context menu");
+ return;
+ }
+ }
+ if (selectedPaths.length == 1) {
+ ProjectFileWrapper projectFileWrapper = (ProjectFileWrapper) selectedPaths[0].getLastPathComponent();
+ ProjectFile projectFile = projectFileWrapper.getProjectFile();
+ setDefaultFileAction.setEnabled(!isHidden(projectFileWrapper) && projectFile.isFile() && !projectFile.getCompletePath().equals(project.getDefaultFile()));
+ } else {
+ setDefaultFileAction.setEnabled(false);
}
- fileTree.setSelectionPath(clickedPath);
- ProjectFileWrapper projectFileWrapper = (ProjectFileWrapper) clickedPath.getLastPathComponent();
- setDefaultFileAction.setEnabled(projectFileWrapper.getProjectFile().isFile() && !isHidden(projectFileWrapper));
- insertCheckBoxMenuItem.setSelected(!isHidden(projectFileWrapper));
treeContextMenu.show(fileTree, eventLocation.x, eventLocation.y);
}
return ((fileOverride == null) && projectFile.isHidden()) || ((fileOverride != null) && (fileOverride.isInsert()));
}
+ /**
+ * Opens the “apply insert override” dialog and lets the user apply an
+ * override for the “insert” setting for multiple files.
+ */
+ private void applyInsertOverride() {
+ JCheckBox insertCheckBox = new JCheckBox(I18n.get("fileManager.checkbox.insertFile.name"));
+ String okString = I18n.get("general.button.okay.name");
+ String cancelString = I18n.get("general.button.cancel.name");
+ int choice = JOptionPane.showOptionDialog(this, new Object[] { I18n.get("fileManager.dialog.insertOverride.message"), insertCheckBox }, I18n.get("fileManager.dialog.insertOverride.title"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, new Object[] { okString, cancelString }, okString);
+ logger.log(Level.FINEST, "choice: " + choice);
+ if ((choice == JOptionPane.CLOSED_OPTION) || (choice == 1)) {
+ return;
+ }
+ logger.log(Level.INFO, "selected insert override: " + insertCheckBox.isSelected());
+ TreePath[] selectedPaths = fileTree.getSelectionPaths();
+ for (TreePath selectedPath: selectedPaths) {
+ ProjectFileWrapper projectFileWrapper = (ProjectFileWrapper) selectedPath.getLastPathComponent();
+ ProjectFile projectFile = projectFileWrapper.getProjectFile();
+ FileOverride fileOverride = project.getFileOverride(projectFile);
+ if (fileOverride == null) {
+ fileOverride = new FileOverride();
+ project.addFileOverride(projectFile, fileOverride);
+ }
+ fileOverride.setInsert(insertCheckBox.isSelected());
+ }
+ }
+
+ /**
+ * Opens the “apply mime type override” dialog and lets the user apply an
+ * override for the “mime type” setting for multiple files.
+ */
+ private void applyMimeTypeOverride() {
+ /* TODO */
+ }
+
//
// INTERFACE I18nable
//