add status bar texts when connecting and disconnecting
[jSite2.git] / src / net / pterodactylus / jsite / gui / SwingInterface.java
index b79cdc9..65e1edd 100644 (file)
@@ -47,6 +47,7 @@ import net.pterodactylus.jsite.core.Core;
 import net.pterodactylus.jsite.core.CoreListener;
 import net.pterodactylus.jsite.core.Node;
 import net.pterodactylus.jsite.core.Project;
+import net.pterodactylus.jsite.core.Request;
 import net.pterodactylus.jsite.i18n.I18n;
 import net.pterodactylus.jsite.i18n.gui.I18nAction;
 import net.pterodactylus.util.image.IconLoader;
@@ -141,7 +142,7 @@ public class SwingInterface implements CoreListener, LoggingListener {
        private ConfigurationDialog configurationDialog;
 
        /** The list of all defined nodes. */
-       private List<Node> nodeList;
+       private List<Node> nodeList = Collections.synchronizedList(new ArrayList<Node>());
 
        //
        // CONFIGURATION
@@ -623,6 +624,8 @@ public class SwingInterface implements CoreListener, LoggingListener {
         * Quits jSite.
         */
        private void quit() {
+               /* TODO - ask */
+               core.stop();
                saveConfig();
                System.exit(0);
        }
@@ -634,6 +637,7 @@ public class SwingInterface implements CoreListener, LoggingListener {
         *            The list of nodes
         */
        private void rebuildNodeActions(List<Node> nodes) {
+               logger.fine("rebuilding node actions…");
                nodeConnectActions.clear();
                nodeNodeConnectActions.clear();
                nodeConnectActionNodes.clear();
@@ -641,6 +645,7 @@ public class SwingInterface implements CoreListener, LoggingListener {
                nodeNodeDisconnectActions.clear();
                nodeDisconnectActionNodes.clear();
                for (Node node: nodes) {
+                       logger.finer("adding node “" + node + "” to menu");
                        Action nodeConnectAction = new AbstractAction(node.getName()) {
 
                                /**
@@ -846,8 +851,6 @@ public class SwingInterface implements CoreListener, LoggingListener {
         * {@inheritDoc}
         */
        public void coreLoaded() {
-               this.nodeList = core.getNodes();
-               manageNodesDialog.setNodeList(nodeList);
                mainWindow.setVisible(true);
                mainWindow.setStatusBarText(I18n.get("mainWindow.statusBar.coreLoaded"));
        }
@@ -862,6 +865,27 @@ public class SwingInterface implements CoreListener, LoggingListener {
        /**
         * {@inheritDoc}
         */
+       public void nodeAdded(Node node) {
+               logger.log(Level.INFO, "node added: " + node);
+               nodeList.add(node);
+               manageNodesDialog.setNodeList(nodeList);
+               rebuildNodeActions(nodeList);
+               mainWindow.refreshNodeMenuItems();
+       }
+
+       /**
+        * {@inheritDoc}
+        */
+       public void nodeRemoved(Node node) {
+               logger.log(Level.INFO, "node removed: " + node);
+               nodeList.remove(node);
+               rebuildNodeActions(nodeList);
+               mainWindow.refreshNodeMenuItems();
+       }
+
+       /**
+        * {@inheritDoc}
+        */
        public void nodeConnecting(Node node) {
                Action nodeConnectAction = nodeNodeConnectActions.get(node);
                nodeConnectActions.remove(nodeConnectAction);
@@ -875,6 +899,7 @@ public class SwingInterface implements CoreListener, LoggingListener {
        public void nodeConnected(Node node) {
                Action nodeDisconnectAction = nodeNodeDisconnectActions.get(node);
                nodeDisconnectActions.add(nodeDisconnectAction);
+               mainWindow.setStatusBarText(I18n.get("mainWindow.statusBar.connectedToNode", node.getName(), node.getHostname(), node.getPort()));
                mainWindow.refreshNodeMenuItems();
        }
 
@@ -886,9 +911,25 @@ public class SwingInterface implements CoreListener, LoggingListener {
                nodeConnectActions.add(nodeConnectAction);
                Action nodeDisconnectAction = nodeNodeDisconnectActions.get(node);
                nodeDisconnectActions.remove(nodeDisconnectAction);
+               mainWindow.setStatusBarText(I18n.get("mainWindow.statusBar.disconnectedFromNode", node.getName(), node.getHostname(), node.getPort()));
                mainWindow.refreshNodeMenuItems();
        }
 
+       /**
+        * {@inheritDoc}
+        */
+       public void requestAdded(Node node, Request request) {
+               logger.log(Level.INFO, "request added to node: " + request + ", " + node);
+               /* TODO - implement */
+       }
+
+       /**
+        * {@inheritDoc}
+        */
+       public void requestProgressed(Request request, int totalBlocks, int requiredBlocks, int successfulBlocks, int failedBlocks, int fatallyFailedBlocks, boolean finalizedTotal) {
+               /* TODO - update table model */
+       }
+
        //
        // INTERFACE LoggingListener
        //