From d02f9d6b1dfcb4b1afdbbf3bbd7af1a550c9770f Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20=E2=80=98Bombe=E2=80=99=20Roden?= Date: Sat, 31 May 2008 17:05:58 +0200 Subject: [PATCH] implement apply insert override --- src/net/pterodactylus/jsite/gui/FileManager.java | 78 +++++++++++++++++----- src/net/pterodactylus/jsite/i18n/jSite.properties | 3 + .../pterodactylus/jsite/i18n/jSite_de.properties | 3 + 3 files changed, 67 insertions(+), 17 deletions(-) diff --git a/src/net/pterodactylus/jsite/gui/FileManager.java b/src/net/pterodactylus/jsite/gui/FileManager.java index ad4d0ab..b253bf0 100644 --- a/src/net/pterodactylus/jsite/gui/FileManager.java +++ b/src/net/pterodactylus/jsite/gui/FileManager.java @@ -47,7 +47,6 @@ import java.util.logging.Logger; 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; @@ -160,9 +159,6 @@ public class FileManager extends JDialog implements I18nable, ActionListener, Tr /** The “apply mime type override” action. */ private I18nAction applyMimeTypeOverrideAction; - /** The “insert” checkbox. */ - private JCheckBoxMenuItem insertCheckBoxMenuItem; - /** * Creates a new file manager. * @@ -285,19 +281,23 @@ public class FileManager extends JDialog implements I18nable, ActionListener, Tr } }; 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(); } }; } @@ -308,12 +308,10 @@ public class FileManager extends JDialog implements I18nable, ActionListener, Tr 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); @@ -458,14 +456,25 @@ public class FileManager extends JDialog implements I18nable, ActionListener, Tr 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); } @@ -484,6 +493,41 @@ public class FileManager extends JDialog implements I18nable, ActionListener, Tr 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 // diff --git a/src/net/pterodactylus/jsite/i18n/jSite.properties b/src/net/pterodactylus/jsite/i18n/jSite.properties index b1615b2..3a2061e 100644 --- a/src/net/pterodactylus/jsite/i18n/jSite.properties +++ b/src/net/pterodactylus/jsite/i18n/jSite.properties @@ -405,3 +405,6 @@ fileManager.menu.item.applyMimeTypeOverride.mnemonic: VK_C fileManager.menu.item.applyMimeTypeOverride.accelerator: Ctrl-VK_C fileManager.menu.item.applyMimeTypeOverride.shortDescription: Overrides default \u201cContent Type\u201d setting fileManager.menu.item.applyMimeTypeOverride.longDescription: Overrides default \u201cContent Type\u201d setting + +fileManager.dialog.insertOverride.title: Apply Insert Override +fileManager.dialog.insertOverride.message: Please choose a setting for the \u201cInsert\u201d override. diff --git a/src/net/pterodactylus/jsite/i18n/jSite_de.properties b/src/net/pterodactylus/jsite/i18n/jSite_de.properties index ef346a2..47e5a53 100644 --- a/src/net/pterodactylus/jsite/i18n/jSite_de.properties +++ b/src/net/pterodactylus/jsite/i18n/jSite_de.properties @@ -405,3 +405,6 @@ fileManager.menu.item.applyMimeTypeOverride.mnemonic: VK_M fileManager.menu.item.applyMimeTypeOverride.accelerator: Ctrl-VK_M fileManager.menu.item.applyMimeTypeOverride.shortDescription: \u00dcberschreibt die \u201eMIME-Typ\u201c-Einstellung fileManager.menu.item.applyMimeTypeOverride.longDescription: \u00dcberschreibt die \u201eMIME-Typ\u201c-Einstellung + +fileManager.dialog.insertOverride.title: \u201eEinf\u00fcgen\u201c-Einstellung \u00fcberschreiben +fileManager.dialog.insertOverride.message: Bitte eine Option zum \u00dcberschreiben der \u201eEinf\u00fcgen\u201c-Einstellung ausw\u00e4hlen. -- 2.7.4