+ /**
+ * {@inheritDoc}
+ */
+ public void coreLoaded() {
+ mainWindow.setVisible(true);
+ mainWindow.setStatusBarText(I18n.get("mainWindow.statusBar.coreLoaded"));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void coreStopped() {
+ mainWindow.setStatusBarText(I18n.get("mainWindow.statusBar.coreStopped"));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void nodeAdded(final Node node) {
+ logger.log(Level.INFO, "node added: " + node);
+ nodeList.add(node);
+ node.addPropertyChangeListener(this);
+ logger.log(Level.FINE, "nodeList.size(): " + nodeList.size());
+ nodeConnectActions.put(node, new I18nAction("mainWindow.menu.node.item.connect") {
+
+ /**
+ * {@inheritDoc}
+ */
+ @SuppressWarnings("synthetic-access")
+ public void actionPerformed(ActionEvent e) {
+ nodeConnect(node);
+ }
+ });
+ nodeDisconnectActions.put(node, new I18nAction("mainWindow.menu.node.item.disconnect") {
+
+ /**
+ * {@inheritDoc}
+ */
+ @SuppressWarnings("synthetic-access")
+ public void actionPerformed(ActionEvent e) {
+ nodeDisconnect(node);
+ }
+ });
+ nodeDisconnectActions.get(node).setEnabled(false);
+ nodeEditActions.put(node, new I18nAction("mainWindow.menu.node.item.edit") {
+
+ /**
+ * {@inheritDoc}
+ */
+ @SuppressWarnings("synthetic-access")
+ public void actionPerformed(ActionEvent actionEvent) {
+ editNode(node);
+ }
+ });
+ nodeDeleteActions.put(node, new I18nAction("mainWindow.menu.node.item.remove") {
+
+ /**
+ * {@inheritDoc}
+ */
+ @SuppressWarnings("synthetic-access")
+ public void actionPerformed(ActionEvent actionEvent) {
+ deleteNode(node);
+ }
+ });
+ mainWindow.addNode(node);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void nodeRemoved(Node node) {
+ logger.log(Level.INFO, "node removed: " + node);
+ nodeList.remove(node);
+ node.removePropertyChangeListener(this);
+ nodeConnectActions.remove(node);
+ nodeDisconnectActions.remove(node);
+ nodeEditActions.remove(node);
+ nodeDeleteActions.remove(node);
+ mainWindow.removeNode(node);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void nodeConnecting(Node node) {
+ nodeConnectActions.get(node).setEnabled(false);
+ nodeEditActions.get(node).setEnabled(false);
+ nodeDeleteActions.get(node).setEnabled(false);
+ mainWindow.setStatusBarText(I18n.get("mainWindow.statusBar.connectingToNode", node.getName(), node.getHostname(), node.getPort()));
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void nodeConnected(Node node) {
+ nodeDisconnectActions.get(node).setEnabled(true);
+ mainWindow.setStatusBarText(I18n.get("mainWindow.statusBar.connectedToNode", node.getName(), node.getHostname(), node.getPort()));
+ mainWindow.setOnline(node);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void nodeConnectionFailed(Node node, Throwable cause) {
+ nodeConnectActions.get(node).setEnabled(true);
+ nodeEditActions.get(node).setEnabled(true);
+ nodeDeleteActions.get(node).setEnabled(true);
+ mainWindow.setStatusBarText(I18n.get("mainWindow.statusBar.connectionToNodeFailed", node.getName(), node.getHostname(), node.getPort(), (cause != null) ? cause.getMessage() : "no reason given"));
+ mainWindow.setError(node);
+ JOptionPane.showMessageDialog(mainWindow, I18n.get("mainWindow.error.nodeConnectionFailed.message", node.getName(), node.getHostname(), node.getPort(), (cause != null) ? cause.getMessage() : "no reason given"), I18n.get("mainWindow.error.nodeConnectionFailed.title"), JOptionPane.ERROR_MESSAGE);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public void nodeDisconnected(Node node, Throwable throwable) {
+ nodeDisconnectActions.get(node).setEnabled(false);
+ nodeConnectActions.get(node).setEnabled(true);
+ nodeEditActions.get(node).setEnabled(true);
+ nodeDeleteActions.get(node).setEnabled(true);
+ mainWindow.setStatusBarText(I18n.get("mainWindow.statusBar.disconnectedFromNode", node.getName(), node.getHostname(), node.getPort()));
+ mainWindow.setOffline(node);
+ }
+
+ /**
+ * @see net.pterodactylus.jsite.core.CoreListener#projectInsertStarted(net.pterodactylus.jsite.project.Project)
+ */
+ public void projectInsertStarted(Project project) {
+ mainWindow.projectInsertStarted(project);
+ }
+
+ /**
+ * @see net.pterodactylus.jsite.core.CoreListener#projectInsertProgressed(net.pterodactylus.jsite.project.Project,
+ * int, int, int, int, int, boolean)
+ */
+ public void projectInsertProgressed(Project project, int totalBlocks, int requiredBlocks, int successfulBlocks, int failedBlocks, int fatallyFailedBlocks, boolean finalizedTotal) {
+ mainWindow.projectInsertProgressed(project, totalBlocks, requiredBlocks, successfulBlocks, failedBlocks, fatallyFailedBlocks, finalizedTotal);
+ }
+
+ /**
+ * @see net.pterodactylus.jsite.core.CoreListener#projectInsertGeneratedURI(net.pterodactylus.jsite.project.Project,
+ * java.lang.String)
+ */
+ public void projectInsertGeneratedURI(Project project, String uri) {
+ mainWindow.projectInsertGeneratedURI(project);
+ }
+
+ /**
+ * @see net.pterodactylus.jsite.core.CoreListener#projectInsertFinished(net.pterodactylus.jsite.project.Project,
+ * boolean)
+ */
+ public void projectInsertFinished(Project project, boolean success) {
+ mainWindow.projectInsertFinished(project, success);
+ }
+
+ //
+ // INTERFACE LoggingListener
+ //
+
+ /**
+ * {@inheritDoc}
+ */
+ public void logged(LogRecord logRecord) {
+ logWindow.logged(logRecord);
+ }
+
+ //
+ // INTERFACE PropertyChangeListener
+ //
+
+ /**
+ * {@inheritDoc}
+ */
+ public void propertyChange(PropertyChangeEvent propertyChangeEvent) {
+ /* do not react to anything (yet). */
+ }
+