X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Fjsite%2Fgui%2FFileManager.java;h=b253bf0262d51b9ce47dc79aac50180f378e1538;hb=d02f9d6b1dfcb4b1afdbbf3bbd7af1a550c9770f;hp=ad4d0ab9871cb003802140a5308200d75a331764;hpb=596cad1ce5034297e4f9ac0726999d86f23e08a4;p=jSite2.git 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 //