X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fde%2Ftodesbaum%2Fjsite%2Fgui%2FProjectPage.java;h=fe456b83405374f42a18b7e4c718068d212c8994;hb=bc7e254592c6a8d509e5d3b78866f425c75d6ac3;hp=f68ec573df118c14ea445d02a48b0e93ea1c845c;hpb=705ab7eee0d2b8194f6e8420ce3f588899f6da9a;p=jSite.git diff --git a/src/de/todesbaum/jsite/gui/ProjectPage.java b/src/de/todesbaum/jsite/gui/ProjectPage.java index f68ec57..fe456b8 100644 --- a/src/de/todesbaum/jsite/gui/ProjectPage.java +++ b/src/de/todesbaum/jsite/gui/ProjectPage.java @@ -68,31 +68,72 @@ import de.todesbaum.util.swing.TWizard; import de.todesbaum.util.swing.TWizardPage; /** - * @author David Roden <droden@gmail.com> - * @version $Id$ + * Wizard page that lets the user manage his projects and start inserts. + * + * @author David ‘Bombe’ Roden <bombe@freenetproject.org> */ public class ProjectPage extends TWizardPage implements ListSelectionListener, DocumentListener, ClipboardOwner { + /** The freenet interface. */ private Freenet7Interface freenetInterface; - protected Action projectLocalPathBrowseAction; - protected Action projectAddAction; - protected Action projectDeleteAction; - protected Action projectCloneAction; - protected Action projectCopyURIAction; - protected Action projectGenerateKeyAction; + /** The “browse” action. */ + private Action projectLocalPathBrowseAction; + + /** The “add project” action. */ + private Action projectAddAction; + + /** The “delete project” action. */ + private Action projectDeleteAction; + + /** The “clone project” action. */ + private Action projectCloneAction; + + /** The “copy URI” action. */ + private Action projectCopyURIAction; + /** The “generate key” action. */ + private Action projectGenerateKeyAction; + + /** The “reset edition” action. */ + private Action projectResetEditionAction; + + /** The file chooser. */ private JFileChooser pathChooser; + + /** The project list model. */ private SortedListModel projectListModel; + + /** The project list scroll pane. */ private JScrollPane projectScrollPane; + + /** The project list. */ private JList projectList; + + /** The project name textfield. */ private JTextField projectNameTextField; + + /** The project description textfield. */ private JTextField projectDescriptionTextField; + + /** The local path textfield. */ private JTextField projectLocalPathTextField; + + /** The public key textfield. */ private JTextField projectPublicKeyTextField; + + /** The private key textfield. */ private JTextField projectPrivateKeyTextField; + + /** The project path textfield. */ private JTextField projectPathTextField; + /** + * Creates a new project page. + * + * @param wizard + * The wizard this page belongs to + */ public ProjectPage(final TWizard wizard) { super(wizard); setLayout(new BorderLayout(12, 12)); @@ -109,7 +150,10 @@ public class ProjectPage extends TWizardPage implements ListSelectionListener, D }); } - protected void dialogInit() { + /** + * Initializes the page. + */ + private void dialogInit() { createActions(); pathChooser = new JFileChooser(); @@ -137,20 +181,32 @@ public class ProjectPage extends TWizardPage implements ListSelectionListener, D } /** + * Adds the given listener to the list of listeners. + * + * @param listener + * The listener to add */ public void addListSelectionListener(ListSelectionListener listener) { projectList.addListSelectionListener(listener); } /** + * Removes the given listener from the list of listeners. + * + * @param listener + * The listener to remove */ public void removeListSelectionListener(ListSelectionListener listener) { projectList.removeListSelectionListener(listener); } + /** + * Creates all actions. + */ private void createActions() { projectLocalPathBrowseAction = new AbstractAction(I18n.getMessage("jsite.project.action.browse")) { + @SuppressWarnings("synthetic-access") public void actionPerformed(ActionEvent actionEvent) { actionLocalPathBrowse(); } @@ -161,6 +217,7 @@ public class ProjectPage extends TWizardPage implements ListSelectionListener, D projectAddAction = new AbstractAction(I18n.getMessage("jsite.project.action.add-project")) { + @SuppressWarnings("synthetic-access") public void actionPerformed(ActionEvent actionEvent) { actionAdd(); } @@ -170,6 +227,7 @@ public class ProjectPage extends TWizardPage implements ListSelectionListener, D projectDeleteAction = new AbstractAction(I18n.getMessage("jsite.project.action.delete-project")) { + @SuppressWarnings("synthetic-access") public void actionPerformed(ActionEvent actionEvent) { actionDelete(); } @@ -180,6 +238,7 @@ public class ProjectPage extends TWizardPage implements ListSelectionListener, D projectCloneAction = new AbstractAction(I18n.getMessage("jsite.project.action.clone-project")) { + @SuppressWarnings("synthetic-access") public void actionPerformed(ActionEvent actionEvent) { actionClone(); } @@ -190,6 +249,7 @@ public class ProjectPage extends TWizardPage implements ListSelectionListener, D projectCopyURIAction = new AbstractAction(I18n.getMessage("jsite.project.action.copy-uri")) { + @SuppressWarnings("synthetic-access") public void actionPerformed(ActionEvent actionEvent) { actionCopyURI(); } @@ -200,6 +260,7 @@ public class ProjectPage extends TWizardPage implements ListSelectionListener, D projectGenerateKeyAction = new AbstractAction(I18n.getMessage("jsite.project.action.generate-new-key")) { + @SuppressWarnings("synthetic-access") public void actionPerformed(ActionEvent actionEvent) { actionGenerateNewKey(); } @@ -208,6 +269,17 @@ public class ProjectPage extends TWizardPage implements ListSelectionListener, D projectGenerateKeyAction.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_G); projectGenerateKeyAction.setEnabled(false); + projectResetEditionAction = new AbstractAction(I18n.getMessage("jsite.project.action.reset-edition")) { + + @SuppressWarnings("synthetic-access") + public void actionPerformed(ActionEvent actionEvent) { + actionResetEdition(); + } + }; + projectResetEditionAction.putValue(Action.SHORT_DESCRIPTION, I18n.getMessage("jsite.project.action.reset-edition.tooltip")); + projectResetEditionAction.putValue(Action.MNEMONIC_KEY, KeyEvent.VK_R); + projectResetEditionAction.setEnabled(false); + I18nContainer.getInstance().registerRunnable(new Runnable() { @SuppressWarnings("synthetic-access") @@ -224,11 +296,18 @@ public class ProjectPage extends TWizardPage implements ListSelectionListener, D projectCopyURIAction.putValue(Action.SHORT_DESCRIPTION, I18n.getMessage("jsite.project.action.copy-uri.tooltip")); projectGenerateKeyAction.putValue(Action.NAME, I18n.getMessage("jsite.project.action.generate-new-key")); projectGenerateKeyAction.putValue(Action.SHORT_DESCRIPTION, I18n.getMessage("jsite.project.action.generate-new-key.tooltip")); + projectResetEditionAction.putValue(Action.NAME, I18n.getMessage("jsite.project.action.reset-edition")); + projectResetEditionAction.putValue(Action.SHORT_DESCRIPTION, I18n.getMessage("jsite.project.action.reset-edition.tooltip")); pathChooser.setApproveButtonText(I18n.getMessage("jsite.project.action.browse.choose")); } }); } + /** + * Creates the information panel. + * + * @return The information panel + */ private JComponent createInformationPanel() { JPanel informationPanel = new JPanel(new BorderLayout(12, 12)); @@ -295,7 +374,8 @@ public class ProjectPage extends TWizardPage implements ListSelectionListener, D final TLabel projectPrivateKeyLabel = new TLabel(I18n.getMessage("jsite.project.project.private-key") + ":", KeyEvent.VK_R, projectPrivateKeyTextField); informationTable.add(projectPrivateKeyLabel, new GridBagConstraints(0, 6, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.NONE, new Insets(6, 18, 0, 0), 0, 0)); - informationTable.add(projectPrivateKeyTextField, new GridBagConstraints(1, 6, 2, 1, 1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(6, 6, 0, 0), 0, 0)); + informationTable.add(projectPrivateKeyTextField, new GridBagConstraints(1, 6, 1, 1, 1.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(6, 6, 0, 0), 0, 0)); + informationTable.add(new JButton(projectResetEditionAction), new GridBagConstraints(2, 6, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(6, 6, 0, 0), 0, 0)); projectPathTextField = new JTextField(); projectPathTextField.getDocument().putProperty("name", "project.path"); @@ -340,29 +420,54 @@ public class ProjectPage extends TWizardPage implements ListSelectionListener, D return informationPanel; } + /** + * Sets the project list. + * + * @param projects + * The list of projects + */ public void setProjects(Project[] projects) { projectListModel.clear(); - for (Project project: projects) { + for (Project project : projects) { projectListModel.add(project); } } + /** + * Returns the list of projects. + * + * @return The list of projects + */ public Project[] getProjects() { return (Project[]) projectListModel.toArray(new Project[projectListModel.size()]); } /** + * Sets the freenet interface to use. + * * @param freenetInterface - * The freenetInterface to set. + * The freenetInterface to use */ public void setFreenetInterface(Freenet7Interface freenetInterface) { this.freenetInterface = freenetInterface; } + /** + * Returns the currently selected project. + * + * @return The currently selected project + */ public Project getSelectedProject() { return (Project) projectList.getSelectedValue(); } + /** + * Updates the currently selected project with changed information from a + * textfield. + * + * @param documentEvent + * The document event to process + */ private void setTextField(DocumentEvent documentEvent) { Document document = documentEvent.getDocument(); String propertyName = (String) document.getProperty("name"); @@ -387,6 +492,7 @@ public class ProjectPage extends TWizardPage implements ListSelectionListener, D project.setPath(text); } } catch (BadLocationException e) { + /* ignore. */ } } @@ -394,7 +500,10 @@ public class ProjectPage extends TWizardPage implements ListSelectionListener, D // ACTIONS // - protected void actionLocalPathBrowse() { + /** + * Lets the user choose a local path for a project. + */ + private void actionLocalPathBrowse() { Project project = (Project) projectList.getSelectedValue(); if (project == null) { return; @@ -405,7 +514,10 @@ public class ProjectPage extends TWizardPage implements ListSelectionListener, D } } - protected void actionAdd() { + /** + * Adds a new project. + */ + private void actionAdd() { String[] keyPair = null; if (!freenetInterface.hasNode()) { JOptionPane.showMessageDialog(this, I18n.getMessage("jsite.project-files.no-node-selected"), null, JOptionPane.ERROR_MESSAGE); @@ -421,14 +533,18 @@ public class ProjectPage extends TWizardPage implements ListSelectionListener, D newProject.setName(I18n.getMessage("jsite.project.new-project.name")); newProject.setInsertURI(keyPair[0]); newProject.setRequestURI(keyPair[1]); - newProject.setEdition(0); + newProject.setEdition(-1); + newProject.setPath(""); projectListModel.add(newProject); projectScrollPane.revalidate(); projectScrollPane.repaint(); - projectList.setSelectedIndex(projectListModel.size() - 1); + projectList.setSelectedIndex(projectListModel.indexOf(newProject)); } - protected void actionDelete() { + /** + * Deletes the currently selected project. + */ + private void actionDelete() { int selectedIndex = projectList.getSelectedIndex(); if (selectedIndex > -1) { if (JOptionPane.showConfirmDialog(this, MessageFormat.format(I18n.getMessage("jsite.project.action.delete-project.confirm"), ((Project) projectList.getSelectedValue()).getName()), null, JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE) == JOptionPane.OK_OPTION) { @@ -441,7 +557,10 @@ public class ProjectPage extends TWizardPage implements ListSelectionListener, D } } - protected void actionClone() { + /** + * Clones the currently selected project. + */ + private void actionClone() { int selectedIndex = projectList.getSelectedIndex(); if (selectedIndex > -1) { Project newProject = new Project((Project) projectList.getSelectedValue()); @@ -451,7 +570,11 @@ public class ProjectPage extends TWizardPage implements ListSelectionListener, D } } - protected void actionCopyURI() { + /** + * Copies the request URI of the currently selected project to the + * clipboard. + */ + private void actionCopyURI() { int selectedIndex = projectList.getSelectedIndex(); if (selectedIndex > -1) { Project selectedProject = (Project) projectList.getSelectedValue(); @@ -460,7 +583,10 @@ public class ProjectPage extends TWizardPage implements ListSelectionListener, D } } - protected void actionGenerateNewKey() { + /** + * Generates a new key for the currently selected project. + */ + private void actionGenerateNewKey() { if (JOptionPane.showConfirmDialog(this, I18n.getMessage("jsite.project.warning.generate-new-key"), null, JOptionPane.OK_CANCEL_OPTION) == JOptionPane.CANCEL_OPTION) { return; } @@ -481,6 +607,20 @@ public class ProjectPage extends TWizardPage implements ListSelectionListener, D } } + /** + * Resets the current edition TODO + */ + private void actionResetEdition() { + if (JOptionPane.showConfirmDialog(this, I18n.getMessage("jsite.project.warning.reset-edition"), null, JOptionPane.OK_CANCEL_OPTION) == JOptionPane.CANCEL_OPTION) { + return; + } + int selectedIndex = projectList.getSelectedIndex(); + if (selectedIndex > -1) { + Project selectedProject = (Project) projectList.getSelectedValue(); + selectedProject.setEdition(-1); + } + } + // // INTERFACE ListSelectionListener // @@ -502,6 +642,7 @@ public class ProjectPage extends TWizardPage implements ListSelectionListener, D projectCloneAction.setEnabled(selectedRow > -1); projectCopyURIAction.setEnabled(selectedRow > -1); projectGenerateKeyAction.setEnabled(selectedRow > -1); + projectResetEditionAction.setEnabled(selectedRow > -1); if (selectedRow > -1) { projectNameTextField.setText(selectedProject.getName()); projectDescriptionTextField.setText(selectedProject.getDescription()); @@ -556,6 +697,7 @@ public class ProjectPage extends TWizardPage implements ListSelectionListener, D * {@inheritDoc} */ public void lostOwnership(Clipboard clipboard, Transferable contents) { + /* ignore. */ } }