/** The insert state. */
private boolean insert;
+ /** Whether to insert a redirect. */
+ private boolean insertRedirect;
+
/** The custom key. */
private String customKey;
/**
* Returns the custom key. The custom key is only used when
- * {@link #isInsert()} returns <code>true</code>.
+ * {@link #isInsert()} and {@link #isInsertRedirect()} both return {@code
+ * true}.
*
* @return The custom key
*/
/**
* Sets the custom key. The custom key is only used when {@link #isInsert()}
- * returns <code>true</code>.
+ * and {@link #isInsertRedirect()} both return {@code true}.
*
* @param customKey
* The custom key
}
/**
- * 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 <code>true</code> if the file should be inserted,
}
/**
- * 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
* <code>true</code> if the file should be inserted,
}
/**
+ * 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
* <code>null</code> will set the MIME type to the default MIME type.
*
/** The “insert” checkbox. */
private JCheckBox fileOptionsInsertCheckBox;
+ /** The “insert redirect” checkbox. */
+ private JCheckBox fileOptionsInsertRedirectCheckBox;
+
/** The “custom key” textfield. */
private JTextField fileOptionsCustomKeyTextField;
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"));
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"));
}
} 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);
boolean insert = fileOptionsInsertCheckBox.isSelected();
defaultFileCheckBox.setEnabled(enabled);
fileOptionsInsertCheckBox.setEnabled(enabled);
- fileOptionsCustomKeyTextField.setEnabled(enabled && !insert);
fileOptionsMIMETypeComboBox.setEnabled(enabled);
fileOptionsContainerComboBox.setEnabled(enabled);
addContainerAction.setEnabled(enabled);
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());
} 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("");