X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fde%2Ftodesbaum%2Fjsite%2Fgui%2FNodeManagerPage.java;h=49c25bc21fbd803d8950217a3fbd5c9c55c41528;hb=593eba180ca6538a680810651f127fbcf0a620a3;hp=e73ce2679f26314141f0e1435dca2ebf8490582a;hpb=c16a49102239ccaf1eadd1c9a7a8d2bbd7bf3e4b;p=jSite.git diff --git a/src/de/todesbaum/jsite/gui/NodeManagerPage.java b/src/de/todesbaum/jsite/gui/NodeManagerPage.java index e73ce26..49c25bc 100644 --- a/src/de/todesbaum/jsite/gui/NodeManagerPage.java +++ b/src/de/todesbaum/jsite/gui/NodeManagerPage.java @@ -1,6 +1,5 @@ /* - * jSite-0.7 - - * Copyright (C) 2006 David Roden + * jSite - NodeManagerPage.java - Copyright © 2006–2012 David Roden * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -62,7 +61,7 @@ import de.todesbaum.util.swing.TWizardPage; /** * Wizard page that lets the user edit his nodes. - * + * * @author David ‘Bombe’ Roden <bombe@freenetproject.org> */ public class NodeManagerPage extends TWizardPage implements ListSelectionListener, DocumentListener, ChangeListener { @@ -93,7 +92,7 @@ public class NodeManagerPage extends TWizardPage implements ListSelectionListene /** * Creates a new node manager wizard page. - * + * * @param wizard * The wizard this page belongs to */ @@ -104,6 +103,7 @@ public class NodeManagerPage extends TWizardPage implements ListSelectionListene setDescription(I18n.getMessage("jsite.node-manager.description")); I18nContainer.getInstance().registerRunnable(new Runnable() { + @Override public void run() { setHeading(I18n.getMessage("jsite.node-manager.heading")); setDescription(I18n.getMessage("jsite.node-manager.description")); @@ -113,7 +113,7 @@ public class NodeManagerPage extends TWizardPage implements ListSelectionListene /** * Adds a listener for node manager events. - * + * * @param nodeManagerListener * The listener to add */ @@ -123,7 +123,7 @@ public class NodeManagerPage extends TWizardPage implements ListSelectionListene /** * Removes a listener for node manager events. - * + * * @param nodeManagerListener * The listener to remove */ @@ -133,7 +133,7 @@ public class NodeManagerPage extends TWizardPage implements ListSelectionListene /** * Notifies all listeners that the node configuration has changed. - * + * * @param nodes * The new list of nodes */ @@ -144,11 +144,24 @@ public class NodeManagerPage extends TWizardPage implements ListSelectionListene } /** + * Notifies all listeners that a new node was selected. + * + * @param node + * The newly selected node + */ + protected void fireNodeSelected(Node node) { + for (NodeManagerListener nodeManagerListener : nodeManagerListeners) { + nodeManagerListener.nodeSelected(node); + } + } + + /** * Creates all actions. */ private void createActions() { addNodeAction = new AbstractAction(I18n.getMessage("jsite.node-manager.add-node")) { + @Override @SuppressWarnings("synthetic-access") public void actionPerformed(ActionEvent actionEvent) { addNode(); @@ -157,6 +170,7 @@ public class NodeManagerPage extends TWizardPage implements ListSelectionListene deleteNodeAction = new AbstractAction(I18n.getMessage("jsite.node-manager.delete-node")) { + @Override @SuppressWarnings("synthetic-access") public void actionPerformed(ActionEvent actionEvent) { deleteNode(); @@ -166,6 +180,7 @@ public class NodeManagerPage extends TWizardPage implements ListSelectionListene I18nContainer.getInstance().registerRunnable(new Runnable() { + @Override public void run() { addNodeAction.putValue(Action.NAME, I18n.getMessage("jsite.node-manager.add-node")); deleteNodeAction.putValue(Action.NAME, I18n.getMessage("jsite.node-manager.delete-node")); @@ -227,6 +242,7 @@ public class NodeManagerPage extends TWizardPage implements ListSelectionListene I18nContainer.getInstance().registerRunnable(new Runnable() { + @Override public void run() { nodeInformationLabel.setText("" + I18n.getMessage("jsite.node-manager.node-information") + ""); nodeNameLabel.setText(I18n.getMessage("jsite.node-manager.name") + ":"); @@ -249,7 +265,7 @@ public class NodeManagerPage extends TWizardPage implements ListSelectionListene /** * Sets the node list. - * + * * @param nodes * The list of nodes */ @@ -264,7 +280,7 @@ public class NodeManagerPage extends TWizardPage implements ListSelectionListene /** * Returns the node list. - * + * * @return The list of nodes */ public Node[] getNodes() { @@ -277,7 +293,7 @@ public class NodeManagerPage extends TWizardPage implements ListSelectionListene /** * Returns the currently selected node. - * + * * @return The selected node, or null if no node is selected */ private Node getSelectedNode() { @@ -286,7 +302,7 @@ public class NodeManagerPage extends TWizardPage implements ListSelectionListene /** * Updates node name or hostname when the user types into the textfields. - * + * * @see #insertUpdate(DocumentEvent) * @see #removeUpdate(DocumentEvent) * @see #changedUpdate(DocumentEvent) @@ -331,6 +347,7 @@ public class NodeManagerPage extends TWizardPage implements ListSelectionListene private void addNode() { Node node = new Node("localhost", 9481, I18n.getMessage("jsite.node-manager.new-node")); nodeListModel.addElement(node); + deleteNodeAction.setEnabled(nodeListModel.size() > 1); wizard.setNextEnabled(true); fireNodesUpdated(getNodes()); } @@ -346,9 +363,12 @@ public class NodeManagerPage extends TWizardPage implements ListSelectionListene if (JOptionPane.showConfirmDialog(wizard, I18n.getMessage("jsite.node-manager.delete-node.warning"), null, JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE) == JOptionPane.CANCEL_OPTION) { return; } + int nodeIndex = nodeListModel.indexOf(node); nodeListModel.removeElement(node); nodeList.repaint(); + fireNodeSelected((Node) nodeListModel.get(Math.min(nodeIndex, nodeListModel.size() - 1))); fireNodesUpdated(getNodes()); + deleteNodeAction.setEnabled(nodeListModel.size() > 1); wizard.setNextEnabled(nodeListModel.size() > 0); } @@ -359,6 +379,8 @@ public class NodeManagerPage extends TWizardPage implements ListSelectionListene /** * {@inheritDoc} */ + @Override + @SuppressWarnings("null") public void valueChanged(ListSelectionEvent e) { Object source = e.getSource(); if (source instanceof JList) { @@ -369,7 +391,7 @@ public class NodeManagerPage extends TWizardPage implements ListSelectionListene nodeNameTextField.setEnabled(enabled); nodeHostnameTextField.setEnabled(enabled); nodePortSpinner.setEnabled(enabled); - deleteNodeAction.setEnabled(enabled); + deleteNodeAction.setEnabled(enabled && (nodeListModel.size() > 1)); if (enabled) { nodeNameTextField.setText(node.getName()); nodeHostnameTextField.setText(node.getHostname()); @@ -390,6 +412,7 @@ public class NodeManagerPage extends TWizardPage implements ListSelectionListene /** * {@inheritDoc} */ + @Override public void insertUpdate(DocumentEvent e) { updateTextField(e); } @@ -397,6 +420,7 @@ public class NodeManagerPage extends TWizardPage implements ListSelectionListene /** * {@inheritDoc} */ + @Override public void removeUpdate(DocumentEvent e) { updateTextField(e); } @@ -404,6 +428,7 @@ public class NodeManagerPage extends TWizardPage implements ListSelectionListene /** * {@inheritDoc} */ + @Override public void changedUpdate(DocumentEvent e) { updateTextField(e); } @@ -415,6 +440,7 @@ public class NodeManagerPage extends TWizardPage implements ListSelectionListene /** * {@inheritDoc} */ + @Override public void stateChanged(ChangeEvent e) { Object source = e.getSource(); Node selectedNode = getSelectedNode(); @@ -425,6 +451,7 @@ public class NodeManagerPage extends TWizardPage implements ListSelectionListene JSpinner sourceSpinner = (JSpinner) source; if ("node-port".equals(sourceSpinner.getName())) { selectedNode.setPort((Integer) sourceSpinner.getValue()); + fireNodeSelected(selectedNode); nodeList.repaint(); } }