+ logger.log(Level.FINEST, "fileOverride: " + fileOverride);
+ return ((fileOverride == null) && projectFile.isHidden()) || ((fileOverride != null) && (Boolean.TRUE.equals(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());
+ List<ProjectFileWrapper> selectedProjectFileWrappers = getSelectedProjectFileWrappers(true);
+ for (ProjectFileWrapper selectedProjectFileWrapper : selectedProjectFileWrappers) {
+ ProjectFile projectFile = selectedProjectFileWrapper.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() {
+ List<String> allMimeTypes = MimeTypes.getAllMimeTypes();
+ allMimeTypes.add(0, null);
+ JComboBox mimeTypeComboBox = new JComboBox(allMimeTypes.toArray());
+ 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.mimeTypeOverride.message"), mimeTypeComboBox }, I18n.get("fileManager.dialog.mimeTypeOverride.title"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, new Object[] { okString, cancelString }, okString);
+ if ((choice == JOptionPane.CLOSED_OPTION) || (choice == 1)) {
+ return;
+ }
+ logger.log(Level.FINE, "selected mime type: " + mimeTypeComboBox.getSelectedItem());
+ List<ProjectFileWrapper> selectedProjectFileWrappers = getSelectedProjectFileWrappers(true);
+ for (ProjectFileWrapper selectedProjectFileWrapper : selectedProjectFileWrappers) {
+ ProjectFile projectFile = selectedProjectFileWrapper.getProjectFile();
+ FileOverride fileOverride = project.getFileOverride(projectFile);
+ if (fileOverride == null) {
+ fileOverride = new FileOverride();
+ project.addFileOverride(projectFile, fileOverride);
+ }
+ fileOverride.setContentType((String) mimeTypeComboBox.getSelectedItem());
+ }
+ }
+
+ /**
+ * Removes the overrides of all selected files.
+ */
+ private void removeOverride() {
+ String continueString = I18n.get("general.button.continue.name");
+ String cancelString = I18n.get("general.button.cancel.name");
+ List<ProjectFileWrapper> selectedProjectFileWrappers = getSelectedProjectFileWrappers(true);
+ int choice = JOptionPane.showOptionDialog(this, I18n.get("fileManager.dialog.removeOverride.message", selectedProjectFileWrappers.size()), I18n.get("fileManager.dialog.removeOverride.title"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE, null, new Object[] { continueString, cancelString }, continueString);
+ if ((choice == JOptionPane.CLOSED_OPTION) || (choice == 1)) {
+ return;
+ }
+ for (ProjectFileWrapper selectedProjectFileWrapper : selectedProjectFileWrappers) {
+ project.removeFileOverride(selectedProjectFileWrapper.getProjectFile());
+ }
+ }
+
+ /**
+ * Returns all currently selected {@link ProjectFileWrapper}s.
+ *
+ * @param filesOnly
+ * <code>true</code> to return only selected files,
+ * <code>false</code> to include directories
+ * @return All selected project file wrappers
+ */
+ private List<ProjectFileWrapper> getSelectedProjectFileWrappers(boolean filesOnly) {
+ List<ProjectFileWrapper> selectedProjectFileWrappers = new ArrayList<ProjectFileWrapper>();
+ TreePath[] selectedPaths = fileTree.getSelectionPaths();
+ if (selectedPaths != null) {
+ for (TreePath selectedPath : selectedPaths) {
+ ProjectFileWrapper projectFileWrapper = (ProjectFileWrapper) selectedPath.getLastPathComponent();
+ if (filesOnly && !projectFileWrapper.getProjectFile().isFile()) {
+ continue;
+ }
+ selectedProjectFileWrappers.add(projectFileWrapper);
+ }
+ }
+ return selectedProjectFileWrappers;