Add missing @Override annotations.
[jSite.git] / src / de / todesbaum / jsite / gui / NodeManagerPage.java
index 1d99369..49c25bc 100644 (file)
@@ -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
@@ -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"));
@@ -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("<html><b>" + I18n.getMessage("jsite.node-manager.node-information") + "</b></html>");
                                nodeNameLabel.setText(I18n.getMessage("jsite.node-manager.name") + ":");
@@ -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();
                        }
                }