From: David ‘Bombe’ Roden Date: Thu, 21 Jan 2010 14:51:57 +0000 (+0100) Subject: Implement way to not insert a file at all. X-Git-Tag: 0.9~21 X-Git-Url: https://git.pterodactylus.net/?a=commitdiff_plain;h=d261320b9f6a902859a959dabdb16f2ed347dd09;p=jSite.git Implement way to not insert a file at all. --- diff --git a/src/de/todesbaum/jsite/application/FileOption.java b/src/de/todesbaum/jsite/application/FileOption.java index 6b979a6..46396f6 100644 --- a/src/de/todesbaum/jsite/application/FileOption.java +++ b/src/de/todesbaum/jsite/application/FileOption.java @@ -44,6 +44,9 @@ public class FileOption { /** The insert state. */ private boolean insert; + /** Whether to insert a redirect. */ + private boolean insertRedirect; + /** The custom key. */ private String customKey; @@ -80,7 +83,8 @@ public class FileOption { /** * Returns the custom key. The custom key is only used when - * {@link #isInsert()} returns true. + * {@link #isInsert()} and {@link #isInsertRedirect()} both return {@code + * true}. * * @return The custom key */ @@ -90,7 +94,7 @@ public class FileOption { /** * Sets the custom key. The custom key is only used when {@link #isInsert()} - * returns true. + * and {@link #isInsertRedirect()} both return {@code true}. * * @param customKey * The custom key @@ -104,8 +108,9 @@ public class FileOption { } /** - * Returns whether the file should be inserted. If a file is not inserted, a - * custom key has to be specified for it. + * Returns whether the file should be inserted. If a file is not inserted + * and {@link #isInsertRedirect()} is also {@code false}, the file will not + * be inserted at all. * * @see #setCustomKey(String) * @return true if the file should be inserted, @@ -116,8 +121,9 @@ public class FileOption { } /** - * Sets whether the file should be inserted. If a file is not inserted, a - * custom key has to be specified for it. + * Sets whether the file should be inserted. If a file is not inserted and + * {@link #isInsertRedirect()} is also {@code false}, the file will not be + * inserted at all. * * @param insert * true if the file should be inserted, @@ -128,6 +134,34 @@ public class FileOption { } /** + * Returns whether a redirect to a different key should be inserted. This + * will only matter if {@link #isInsert()} returns {@code false}. The key + * that should be redirected to still needs to be specified via + * {@link #setCustomKey(String)}. + * + * @return {@code true} if a redirect should be inserted, {@code false} + * otherwise + */ + public boolean isInsertRedirect() { + return insertRedirect; + } + + /** + * Sets whether a redirect should be inserted. This will only matter if + * {@link #isInsert()} returns {@code false}, i.e. it has been + * {@link #setInsert(boolean)} to {@code false}. The key that should be + * redirected to still needs to be specified via + * {@link #setCustomKey(String)}. + * + * @param insertRedirect + * {@code true} if a redirect should be inserted, {@code false} + * otherwise + */ + public void setInsertRedirect(boolean insertRedirect) { + this.insertRedirect = insertRedirect; + } + + /** * Sets the MIME type of the file. Setting the MIME type to * null will set the MIME type to the default MIME type. * diff --git a/src/de/todesbaum/jsite/application/ProjectInserter.java b/src/de/todesbaum/jsite/application/ProjectInserter.java index c6d0f85..569e2fe 100644 --- a/src/de/todesbaum/jsite/application/ProjectInserter.java +++ b/src/de/todesbaum/jsite/application/ProjectInserter.java @@ -344,7 +344,9 @@ public class ProjectInserter implements FileScannerListener, Runnable { /* ignore, null is returned. */ } } else { - fileEntry = new RedirectFileEntry(filename, fileOption.getMimeType(), fileOption.getCustomKey()); + if (fileOption.isInsertRedirect()) { + fileEntry = new RedirectFileEntry(filename, fileOption.getMimeType(), fileOption.getCustomKey()); + } } } return fileEntry; diff --git a/src/de/todesbaum/jsite/gui/ProjectFilesPage.java b/src/de/todesbaum/jsite/gui/ProjectFilesPage.java index 146161c..5fc0bcb 100644 --- a/src/de/todesbaum/jsite/gui/ProjectFilesPage.java +++ b/src/de/todesbaum/jsite/gui/ProjectFilesPage.java @@ -106,6 +106,9 @@ public class ProjectFilesPage extends TWizardPage implements ActionListener, Lis /** The “insert” checkbox. */ private JCheckBox fileOptionsInsertCheckBox; + /** The “insert redirect” checkbox. */ + private JCheckBox fileOptionsInsertRedirectCheckBox; + /** The “custom key” textfield. */ private JTextField fileOptionsCustomKeyTextField; @@ -268,9 +271,16 @@ public class ProjectFilesPage extends TWizardPage implements ActionListener, Lis fileOptionsCustomKeyTextField.setEnabled(false); fileOptionsCustomKeyTextField.getDocument().addDocumentListener(this); + fileOptionsInsertRedirectCheckBox = new JCheckBox(I18n.getMessage("jsite.project-files.insert-redirect"), false); + fileOptionsInsertRedirectCheckBox.setToolTipText(I18n.getMessage("jsite.project-files.insert-redirect.tooltip")); + fileOptionsInsertRedirectCheckBox.setName("insert-redirect"); + fileOptionsInsertRedirectCheckBox.setMnemonic(KeyEvent.VK_R); + fileOptionsInsertRedirectCheckBox.addActionListener(this); + final TLabel customKeyLabel = new TLabel(I18n.getMessage("jsite.project-files.custom-key") + ":", KeyEvent.VK_K, fileOptionsCustomKeyTextField); - fileOptionsPanel.add(customKeyLabel, new GridBagConstraints(0, 5, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(6, 18, 0, 0), 0, 0)); - fileOptionsPanel.add(fileOptionsCustomKeyTextField, new GridBagConstraints(1, 5, 4, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.HORIZONTAL, new Insets(6, 6, 0, 0), 0, 0)); + fileOptionsPanel.add(fileOptionsInsertRedirectCheckBox, new GridBagConstraints(0, 5, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(6, 18, 0, 0), 0, 0)); + fileOptionsPanel.add(customKeyLabel, new GridBagConstraints(1, 5, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(6, 6, 0, 0), 0, 0)); + fileOptionsPanel.add(fileOptionsCustomKeyTextField, new GridBagConstraints(2, 5, 3, 1, 1.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.HORIZONTAL, new Insets(6, 6, 0, 0), 0, 0)); fileOptionsMIMETypeComboBox = new JComboBox(DefaultMIMETypes.getAllMIMETypes()); fileOptionsMIMETypeComboBox.setToolTipText(I18n.getMessage("jsite.project-files.mime-type.tooltip")); @@ -340,6 +350,8 @@ public class ProjectFilesPage extends TWizardPage implements ActionListener, Lis defaultFileCheckBox.setToolTipText(I18n.getMessage("jsite.project-files.default.tooltip")); fileOptionsInsertCheckBox.setText(I18n.getMessage("jsite.project-files.insert")); fileOptionsInsertCheckBox.setToolTipText(I18n.getMessage("jsite.project-files.insert.tooltip")); + fileOptionsInsertRedirectCheckBox.setText(I18n.getMessage("jsite.project-files.insert-redirect")); + fileOptionsInsertRedirectCheckBox.setToolTipText(I18n.getMessage("jsite.project-files.insert-redirect.tooltip")); fileOptionsCustomKeyTextField.setToolTipText(I18n.getMessage("jsite.project-files.custom-key.tooltip")); customKeyLabel.setText(I18n.getMessage("jsite.project-files.custom-key") + ":"); fileOptionsMIMETypeComboBox.setToolTipText(I18n.getMessage("jsite.project-files.mime-type.tooltip")); @@ -564,11 +576,15 @@ public class ProjectFilesPage extends TWizardPage implements ActionListener, Lis } } else if ("insert".equals(checkBox.getName())) { boolean isInsert = checkBox.isSelected(); - fileOptionsCustomKeyTextField.setEnabled(!isInsert); fileOption.setInsert(isInsert); if (!isInsert) { fileOptionsContainerComboBox.setSelectedItem(""); } + fileOptionsInsertRedirectCheckBox.setEnabled(!isInsert); + } else if ("insert-redirect".equals(checkBox.getName())) { + boolean isInsertRedirect = checkBox.isSelected(); + fileOption.setInsertRedirect(isInsertRedirect); + fileOptionsCustomKeyTextField.setEnabled(isInsertRedirect); } else if ("project-files.replace-edition".equals(checkBox.getName())) { boolean replaceEdition = checkBox.isSelected(); fileOption.setReplaceEdition(replaceEdition); @@ -604,7 +620,6 @@ public class ProjectFilesPage extends TWizardPage implements ActionListener, Lis boolean insert = fileOptionsInsertCheckBox.isSelected(); defaultFileCheckBox.setEnabled(enabled); fileOptionsInsertCheckBox.setEnabled(enabled); - fileOptionsCustomKeyTextField.setEnabled(enabled && !insert); fileOptionsMIMETypeComboBox.setEnabled(enabled); fileOptionsContainerComboBox.setEnabled(enabled); addContainerAction.setEnabled(enabled); @@ -615,6 +630,9 @@ public class ProjectFilesPage extends TWizardPage implements ActionListener, Lis FileOption fileOption = project.getFileOption(filename); defaultFileCheckBox.setSelected(filename.equals(project.getIndexFile())); fileOptionsInsertCheckBox.setSelected(fileOption.isInsert()); + fileOptionsInsertRedirectCheckBox.setEnabled(!fileOption.isInsert()); + fileOptionsInsertRedirectCheckBox.setSelected(fileOption.isInsertRedirect()); + fileOptionsCustomKeyTextField.setEnabled(fileOption.isInsertRedirect()); fileOptionsCustomKeyTextField.setText(fileOption.getCustomKey()); fileOptionsMIMETypeComboBox.getModel().setSelectedItem(fileOption.getMimeType()); fileOptionsContainerComboBox.setSelectedItem(fileOption.getContainer()); @@ -624,6 +642,9 @@ public class ProjectFilesPage extends TWizardPage implements ActionListener, Lis } else { defaultFileCheckBox.setSelected(false); fileOptionsInsertCheckBox.setSelected(true); + fileOptionsInsertRedirectCheckBox.setEnabled(false); + fileOptionsInsertRedirectCheckBox.setSelected(false); + fileOptionsCustomKeyTextField.setEnabled(false); fileOptionsCustomKeyTextField.setText("CHK@"); fileOptionsMIMETypeComboBox.getModel().setSelectedItem(DefaultMIMETypes.DEFAULT_MIME_TYPE); fileOptionsContainerComboBox.setSelectedItem(""); diff --git a/src/de/todesbaum/jsite/i18n/jSite.properties b/src/de/todesbaum/jsite/i18n/jSite.properties index ff74685..c356bc8 100644 --- a/src/de/todesbaum/jsite/i18n/jSite.properties +++ b/src/de/todesbaum/jsite/i18n/jSite.properties @@ -150,6 +150,8 @@ jsite.project-files.default=Default file jsite.project-files.default.tooltip=Specify that this file is the project\u2019s index file jsite.project-files.insert=Insert jsite.project-files.insert.tooltip=Uncheck if this file was inserted externally +jsite.project-files.insert-redirect=Redirect +jsite.project-files.insert-redirect.tooltip=Check if you want to insert a redirect for this file jsite.project-files.custom-key=Custom key jsite.project-files.custom-key.tooltip=The externally created key for the file jsite.project-files.mime-type=MIME type diff --git a/src/de/todesbaum/jsite/i18n/jSite_de.properties b/src/de/todesbaum/jsite/i18n/jSite_de.properties index 67dc81c..fddeda9 100644 --- a/src/de/todesbaum/jsite/i18n/jSite_de.properties +++ b/src/de/todesbaum/jsite/i18n/jSite_de.properties @@ -150,6 +150,8 @@ jsite.project-files.default=Index-Datei jsite.project-files.default.tooltip=Lege Index-Datei f\u00fcr Projekt fest jsite.project-files.insert=Einf\u00fcgen jsite.project-files.insert.tooltip=jSite f\u00fcgt diese Datei ein +jsite.project-files.insert-redirect=Umleitung +jsite.project-files.insert-redirect.tooltip=F\u00fcgt eine Umleitung ein jsite.project-files.custom-key=Extern erstellter Schl\u00fcssel jsite.project-files.custom-key.tooltip=Der extern erstellte Schl\u00fcssel f\u00fcr diese Datei jsite.project-files.mime-type=MIME-Typ diff --git a/src/de/todesbaum/jsite/main/Configuration.java b/src/de/todesbaum/jsite/main/Configuration.java index 3bbce38..a54d529 100644 --- a/src/de/todesbaum/jsite/main/Configuration.java +++ b/src/de/todesbaum/jsite/main/Configuration.java @@ -356,6 +356,9 @@ public class Configuration { String filename = fileOptionNode.getNode("filename").getValue(); FileOption fileOption = project.getFileOption(filename); fileOption.setInsert(Boolean.parseBoolean(fileOptionNode.getNode("insert").getValue())); + if (fileOptionNode.getNode("insert-redirect") != null) { + fileOption.setInsertRedirect(Boolean.parseBoolean(fileOptionNode.getNode("insert-redirect").getValue())); + } fileOption.setCustomKey(fileOptionNode.getNode("custom-key").getValue("")); fileOption.setMimeType(fileOptionNode.getNode("mime-type").getValue("")); fileOption.setContainer(fileOptionNode.getNode("container").getValue()); @@ -404,6 +407,7 @@ public class Configuration { SimpleXML fileOptionNode = fileOptionsNode.append("file-option"); fileOptionNode.append("filename", entry.getKey()); fileOptionNode.append("insert", String.valueOf(fileOption.isInsert())); + fileOptionNode.append("insert-redirect", String.valueOf(fileOption.isInsertRedirect())); fileOptionNode.append("custom-key", fileOption.getCustomKey()); fileOptionNode.append("mime-type", fileOption.getMimeType()); fileOptionNode.append("container", fileOption.getContainer()); diff --git a/src/de/todesbaum/jsite/main/Main.java b/src/de/todesbaum/jsite/main/Main.java index 38a2347..80e0dd0 100644 --- a/src/de/todesbaum/jsite/main/Main.java +++ b/src/de/todesbaum/jsite/main/Main.java @@ -541,7 +541,7 @@ public class Main implements ActionListener, ListSelectionListener, WizardListen Set> fileOptionEntries = fileOptions.entrySet(); for (Entry fileOptionEntry : fileOptionEntries) { FileOption fileOption = fileOptionEntry.getValue(); - if (!fileOption.isInsert() && ((fileOption.getCustomKey().length() == 0) || "CHK@".equals(fileOption.getCustomKey()))) { + if (!fileOption.isInsert() && fileOption.isInsertRedirect() && ((fileOption.getCustomKey().length() == 0) || "CHK@".equals(fileOption.getCustomKey()))) { JOptionPane.showMessageDialog(wizard, MessageFormat.format(I18n.getMessage("jsite.project-files.no-custom-key"), fileOptionEntry.getKey()), null, JOptionPane.ERROR_MESSAGE); return; }