private Action projectDeleteAction;
private Action projectCloneAction;
private Action projectCopyURIAction;
+ private Action projectGenerateKeyAction;
private JFileChooser pathChooser;
private SortedListModel projectListModel;
projectCopyURIAction.putValue(Action.SHORT_DESCRIPTION, I18n.getMessage("jsite.project.action.copy-uri.tooltip"));
projectCopyURIAction.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_U);
projectCopyURIAction.setEnabled(false);
+
+ projectGenerateKeyAction = new AbstractAction(I18n.getMessage("jsite.project.action.generate-new-key")) {
+ public void actionPerformed(ActionEvent actionEvent) {
+ actionGenerateNewKey();
+ }
+ };
+ projectGenerateKeyAction.putValue(Action.SHORT_DESCRIPTION, I18n.getMessage("jsite.project.action.generate-new-key.tooltip"));
+ projectGenerateKeyAction.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_G);
+ projectGenerateKeyAction.setEnabled(false);
}
private JComponent createInformationPanel() {
projectPublicKeyTextField.setEnabled(false);
informationTable.add(new TLabel(I18n.getMessage("jsite.project.project.public-key") + ":", KeyEvent.VK_U, projectPublicKeyTextField), new GridBagConstraints(0, 5, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(6, 18, 0, 0), 0, 0));
- informationTable.add(projectPublicKeyTextField, new GridBagConstraints(1, 5, 2, 1, 1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(6, 6, 0, 0), 0, 0));
+ informationTable.add(projectPublicKeyTextField, new GridBagConstraints(1, 5, 1, 1, 1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(6, 6, 0, 0), 0, 0));
+ informationTable.add(new JButton(projectGenerateKeyAction), new GridBagConstraints(2, 5, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(6, 6, 0, 0), 0, 0));
projectPrivateKeyTextField = new JTextField(27);
projectPrivateKeyTextField.getDocument().putProperty("name", "project.privatekey");
clipboard.setContents(new StringSelection(selectedProject.getFinalRequestURI(0)), this);
}
}
+
+ protected void actionGenerateNewKey() {
+ if (JOptionPane.showConfirmDialog(this, I18n.getMessage("jsite.project.warning.generate-new-key"), null, JOptionPane.OK_CANCEL_OPTION) == JOptionPane.CANCEL_OPTION) {
+ return;
+ }
+ int selectedIndex = projectList.getSelectedIndex();
+ if (selectedIndex > -1) {
+ Project selectedProject = (Project) projectList.getSelectedValue();
+ String[] keyPair = null;
+ try {
+ keyPair = freenetInterface.generateKeyPair();
+ } catch (IOException ioe1) {
+ JOptionPane.showMessageDialog(this, MessageFormat.format(I18n.getMessage("jsite.project.keygen.io-error"), ioe1.getMessage()), null, JOptionPane.ERROR_MESSAGE);
+ return;
+ }
+ selectedProject.setInsertURI(keyPair[0]);
+ selectedProject.setRequestURI(keyPair[1]);
+ projectPublicKeyTextField.setText(selectedProject.getRequestURI());
+ projectPrivateKeyTextField.setText(selectedProject.getInsertURI());
+ }
+ }
//
// INTERFACE ListSelectionListener
projectDeleteAction.setEnabled(selectedRow > -1);
projectCloneAction.setEnabled(selectedRow > -1);
projectCopyURIAction.setEnabled(selectedRow > -1);
+ projectGenerateKeyAction.setEnabled(selectedRow > -1);
if (selectedRow > -1) {
projectNameTextField.setText(selectedProject.getName());
projectDescriptionTextField.setText(selectedProject.getDescription());
jsite.project.action.clone-project.tooltip=Clone the selected project
jsite.project.action.copy-uri=Copy URI to Clipboard
jsite.project.action.copy-uri.tooltip=Copies the URI of the project to the clipboard
+jsite.project.action.generate-new-key=Generate New Key
+jsite.project.action.generate-new-key.tooltip=Generates a new key for the project
jsite.project.project.information=Project Information
jsite.project.project.name=Name
jsite.project.project.description=Description
jsite.project.keygen.io-error=<html><b>Node communication failure</b><br><br>Communication with the node failed<br>with the following error message:<br><br><code>{0}</code><br><br>Please make sure that you have entered<br>the correct host name and port number<br>on the "Node Settings" page.</html>
jsite.project.warning.no-local-path=<html><b>No local path</b><br><br>You did not specify a local path for the files to insert.<br>It is not possible to continue without one.</html>
jsite.project.warning.no-path=<html><b>No freesite path</b><br><br>You did not specify a freesite path.<br>It is not possible to continue without one.</html>
+jsite.project.warning.generate-new-key=<html><b>Generate new key?</b><br><br>If you generate a new key, your site will be published<br>under that new key. Any trust that other users put<br>in the old key of your site will be gone!</html>
jsite.project-files.heading=Project Files
jsite.project-files.description=<html>On this page you can specify parameters for the files within the project, such as<br>externally generated keys or MIME types, if the automatic detection failed.</html>
jsite.project.action.clone-project.tooltip=Das ausgewählte Projekt duplizieren
jsite.project.action.copy-uri=URI kopieren
jsite.project.action.copy-uri.tooltip=Kopiert die URI des ausgewählten Projektes in die Zwischenablage
+jsite.project.action.generate-new-key=Schlüssel generieren
+jsite.project.action.generate-new-key.tooltip=Generiert ein neues Schlüsselpaar für das Projekt
jsite.project.project.information=Projektinformation
jsite.project.project.name=Name
jsite.project.project.description=Beschreibung
jsite.project.keygen.io-error=<html><b>Kommunikation fehlgeschlagen</b><br><br>Die Kommunikation mit dem Freenet Node<br>ergab folgende Fehlermeldung:<br><br><code>{0}</code><br><br>Bitte vergewissern Sie sich, dass der Node läuft und dass Sie<br> den korrekten Hostnamen und die korrekte Portnummer auf der<br>\u201eNode Einstellungen\u201c Seite eingegeben haben.</html>
jsite.project.warning.no-local-path=<html><b>Kein lokaler Pfad</b><br><br>Sie haben keinen lokalen Pfad für die einzufügenden Dateien angegeben.<br>Es ist nicht möglich, ohne lokalen Pfad weiter zu machen.</html>
jsite.project.warning.no-path=<html><b>Kein Freesite-Pfad</b><br><br>Sie haben keinen Pfad für die Freesite angegeben.<br>Es ist nicht möglich, ohne einen Freesite-Pfad weiter zu machen.</html>
+jsite.project.warning.generate-new-key=<html><b>Neues Schlüsselpaar generieren?</b><br><br>Wenn Sie das Schlüsselpaar für das Projekt ändern,<br>wird sich die URI für Ihr Projekt ebenfalls<br>ändern, und jegliches Vertrauen, dass andere<br>Benutzer in das alte Schlüsselpaar hatten, wird<br>verloren gehen!</html>
jsite.project-files.heading=Projektdateien
jsite.project-files.description=<html>Auf dieser Seite können Parameter für die einzelnen Dateien dieses Projekts angegeben werden, z.B.<br>extern erstellte Schlüssel oder der korrekte MIME-Typ, wenn er nicht automatisch richtig erkannt wurde.</html>
jsite.project.action.clone-project=Cloner le projet
jsite.project.action.clone-project.copy=Copie de {0}
jsite.project.action.clone-project.tooltip=Cloner le projet sélectionné
+jsite.project.action.generate-new-key=
+jsite.project.action.generate-new-key.tooltip=
jsite.project.project.information=Informations concernant le projet
jsite.project.project.name=Nom
jsite.project.project.description=Description
jsite.project.keygen.io-error=<html><b>Erreur de communication avec le noeud</b><br><br>La communication avec le noeud à échouée<br>Erreur:<br><br><code>{0}</code><br><br>Assurez vous que les informations saisies dans la page de configuration sont correctes.</html>
jsite.project.warning.no-local-path=<html><b>Pas de chemin local spécifié</b><br><br>Vous avez omis de spécifier le chemin local à insérer.</html>
jsite.project.warning.no-path=<html><b>Vous n'avez pas spécifié de chemin dans le freesite</b><br><br>Vous n'avez pas spécifié de chemin dans le freesite.<br>Ce champ est nécessaire.</html>
+jsite.project.warning.generate-new-key=
jsite.project-files.heading=Fichiers du projet
jsite.project-files.description=<html>Dans cette page vous pouvez spécifier les informations concernant la configuration des noeuds telles que:<br>Le type de contenu mime si l'auto détection à échouée.</html>