X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Fjsite%2Fgui%2FSwingInterface.java;h=3f2b8b414df9414af6172cfebe111797c8247b5b;hb=f01867ca12edbb3fd6a34ebc3572cdde9a1f280c;hp=fad301d033c964d2df0d704ab6b987e08c32d03d;hpb=76ab673808ebdf525e0dbbab41445d2e6784d206;p=jSite2.git diff --git a/src/net/pterodactylus/jsite/gui/SwingInterface.java b/src/net/pterodactylus/jsite/gui/SwingInterface.java index fad301d..3f2b8b4 100644 --- a/src/net/pterodactylus/jsite/gui/SwingInterface.java +++ b/src/net/pterodactylus/jsite/gui/SwingInterface.java @@ -26,6 +26,7 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; +import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Collections; import java.util.Date; @@ -40,7 +41,8 @@ import java.util.logging.Level; import java.util.logging.LogRecord; import java.util.logging.Logger; -import javax.swing.Action; +import javax.swing.DefaultComboBoxModel; +import javax.swing.JComboBox; import javax.swing.JOptionPane; import javax.swing.UIManager; import javax.swing.UnsupportedLookAndFeelException; @@ -49,9 +51,9 @@ import net.pterodactylus.jsite.core.Core; import net.pterodactylus.jsite.core.CoreListener; import net.pterodactylus.jsite.core.JSiteException; import net.pterodactylus.jsite.core.Node; +import net.pterodactylus.jsite.core.Project; import net.pterodactylus.jsite.i18n.I18n; import net.pterodactylus.jsite.i18n.gui.I18nAction; -import net.pterodactylus.jsite.project.Project; import net.pterodactylus.util.image.IconLoader; import net.pterodactylus.util.io.Closer; import net.pterodactylus.util.logging.Logging; @@ -59,9 +61,8 @@ import net.pterodactylus.util.logging.LoggingListener; /** * The Swing user interface. - * + * * @author David ‘Bombe’ Roden <bombe@freenetproject.org> - * @version $Id$ */ public class SwingInterface implements CoreListener, LoggingListener, PropertyChangeListener { @@ -92,8 +93,8 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh /** The “quit” action. */ private I18nAction quitAction; - /** The “manage nodes” action. */ - private I18nAction manageNodesAction; + /** The “add node” action. */ + private I18nAction addNodeAction; /** All node menu items. */ private Map nodeConnectActions = Collections.synchronizedMap(new HashMap()); @@ -101,8 +102,11 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh /** All node disconnect actions. */ private Map nodeDisconnectActions = Collections.synchronizedMap(new HashMap()); - /** The node manager dialog. */ - private ManageNodesDialog manageNodesDialog; + /** All node edit actions. */ + private Map nodeEditActions = Collections.synchronizedMap(new HashMap()); + + /** All node removal actions. */ + private Map nodeDeleteActions = Collections.synchronizedMap(new HashMap()); /** All lanugage menu items. */ private List languageActions = new ArrayList(); @@ -113,11 +117,14 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh /** The “add project” action. */ private I18nAction addProjectAction; - /** The “clone project” action. */ - private I18nAction cloneProjectAction; + /** The “insert project” actions. */ + private Map insertProjectActions = new HashMap(); + + /** The “clone project” actions. */ + private Map cloneProjectActions = new HashMap(); - /** The “delete project” action. */ - private I18nAction deleteProjectAction; + /** The “delete project” actions. */ + private Map deleteProjectActions = new HashMap(); /** The “about” dialog. */ private AboutDialog aboutDialog; @@ -125,9 +132,15 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh /** The configuration dialog. */ private ConfigurationDialog configurationDialog; + /** The node editor dialog. */ + private AddNodeDialog addNodeDialog; + /** The list of all defined nodes. */ private List nodeList = Collections.synchronizedList(new ArrayList()); + /** The list of all projects. */ + private List projectList = Collections.synchronizedList(new ArrayList()); + // // CONFIGURATION // @@ -161,7 +174,7 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh /** * Creates a new swing interface. - * + * * @param core * The core to operate on * @param configDirectory @@ -211,7 +224,7 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh /** * Returns the core that is controlled by the Swing interface. - * + * * @return The core */ Core getCore() { @@ -220,7 +233,7 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh /** * Returns the main window of the Swing interface. - * + * * @return The main window */ MainWindow getMainWindow() { @@ -229,7 +242,7 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh /** * Returns whether the advanced mode is activated. - * + * * @return true if the advanced mode is activated, * false if the simple mode is activated */ @@ -239,7 +252,7 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh /** * Returns the “configure” action. - * + * * @return The “configure” action */ I18nAction getConfigureAction() { @@ -248,7 +261,7 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh /** * Returns the “import config” action. - * + * * @return The “import config” action */ I18nAction getImportConfigAction() { @@ -257,7 +270,7 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh /** * Returns the “quit” action. - * + * * @return The “quit” action */ I18nAction getQuitAction() { @@ -265,17 +278,17 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh } /** - * Returns the “manage nodes” action. - * - * @return The “manage nodes” action + * Returns the “add node” action. + * + * @return The “add node” action */ - I18nAction getManageNodesAction() { - return manageNodesAction; + I18nAction getAddNodeAction() { + return addNodeAction; } /** * Returns the “connect to node” action for the given node. - * + * * @param node * The node go get the “connect” action for * @return The “connect to node” action @@ -286,7 +299,7 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh /** * Returns the “disconnect from node” action for the given node. - * + * * @param node * The node go get the “disconnect” action for * @return The “disconnect from node” action @@ -296,8 +309,30 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh } /** + * Returns the “edit node” action for the given node. + * + * @param node + * The node to edit + * @return The “edit node” action + */ + I18nAction getNodeEditAction(Node node) { + return nodeEditActions.get(node); + } + + /** + * Returns the “delete node” action for the given node. + * + * @param node + * The node to delete + * @return The “delete node” action + */ + I18nAction getNodeDeleteAction(Node node) { + return nodeDeleteActions.get(node); + } + + /** * Returns all language actions. - * + * * @return All language actions */ List getLanguageActions() { @@ -306,7 +341,7 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh /** * Returns the “about” action. - * + * * @return The “about” action */ I18nAction getHelpAboutAction() { @@ -315,7 +350,7 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh /** * Returns the “add project” action. - * + * * @return The “add project” action */ I18nAction getAddProjectAction() { @@ -323,32 +358,65 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh } /** - * Returns the “clone project” action. - * + * Returns the “insert project” action for the given project. + * + * @param project + * The project to get the “insert project” action for + * @return The “insert project” action + */ + I18nAction getInsertProjectAction(Project project) { + return insertProjectActions.get(project); + } + + /** + * Returns the “clone project” action for the given project. + * + * @param project + * The project to get the “clone project” action for * @return The “clone project” action */ - I18nAction getCloneProjectAction() { - return cloneProjectAction; + I18nAction getCloneProjectAction(Project project) { + return cloneProjectActions.get(project); } /** - * Returns the “delete project” action. - * + * Returns the “delete project” action for the given project. + * + * @param project + * The project to get the “delete project” action for * @return The “delete project” action */ - I18nAction getDeleteProjectAction() { - return deleteProjectAction; + I18nAction getDeleteProjectAction(Project project) { + return deleteProjectActions.get(project); } /** * Returns all currently configured nodes. - * + * * @return All configured nodes */ List getNodes() { return nodeList; } + /** + * Returns a list of all projects. + * + * @return All projects + */ + List getProjects() { + return projectList; + } + + /** + * Returns the thread pool used for off-thread processes. + * + * @return The thread pool + */ + Executor getThreadPool() { + return threadPool; + } + // // ACTIONS // @@ -493,19 +561,10 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh quit(); } }; - manageNodesAction = new I18nAction("mainWindow.menu.node.item.manageNodes") { - - /** - * {@inheritDoc} - */ - @SuppressWarnings("synthetic-access") - public void actionPerformed(ActionEvent actionEvent) { - manageNodes(); - } - }; List availableLanguages = I18n.findAvailableLanguages(); - for (final Locale locale: availableLanguages) { - I18nAction languageAction = new I18nAction("general.language." + locale.getLanguage()) { + for (final Locale locale : availableLanguages) { + String language = locale.getLanguage(); + I18nAction languageAction = new I18nAction("general.language." + language, IconLoader.loadIcon("/flag-" + language + ".png")) { @SuppressWarnings("synthetic-access") public void actionPerformed(ActionEvent e) { @@ -513,49 +572,39 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh } }; - if (I18n.getLocale().getLanguage().equals(locale.getLanguage())) { + if (I18n.getLocale().getLanguage().equals(language)) { languageAction.setEnabled(false); } languageActions.add(languageAction); } - helpAboutAction = new I18nAction("mainWindow.menu.help.item.about") { - - /** - * {@inheritDoc} - */ - @SuppressWarnings("synthetic-access") - public void actionPerformed(ActionEvent actionEvent) { - helpAbout(); - } - }; - addProjectAction = new I18nAction("mainWindow.button.addProject") { + addNodeAction = new I18nAction("mainWindow.menu.node.item.addNode", IconLoader.loadIcon("/node-new.png")) { /** * {@inheritDoc} */ @SuppressWarnings("synthetic-access") public void actionPerformed(ActionEvent actionEvent) { - addProject(); + addNode(); } }; - cloneProjectAction = new I18nAction("mainWindow.button.cloneProject") { + helpAboutAction = new I18nAction("mainWindow.menu.help.item.about") { /** * {@inheritDoc} */ @SuppressWarnings("synthetic-access") public void actionPerformed(ActionEvent actionEvent) { - cloneProject(); + helpAbout(); } }; - deleteProjectAction = new I18nAction("mainWindow.button.deleteProject") { + addProjectAction = new I18nAction("mainWindow.button.addProject") { /** * {@inheritDoc} */ @SuppressWarnings("synthetic-access") public void actionPerformed(ActionEvent actionEvent) { - deleteProject(); + addProject(); } }; } @@ -564,9 +613,9 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh * Initializes all child dialogs. */ private void initDialogs() { - manageNodesDialog = new ManageNodesDialog(this); aboutDialog = new AboutDialog(this); configurationDialog = new ConfigurationDialog(this); + addNodeDialog = new AddNodeDialog(mainWindow); } // @@ -619,40 +668,60 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh } /** - * Pops up the “manage nodes” dialog. + * Adds a node. */ - private void manageNodes() { - if (advancedMode) { - manageNodesDialog.setNodeList(nodeList); - manageNodesDialog.setVisible(true); - nodeList = manageNodesDialog.getNodeList(); - /* TODO - notify main window of changes */ - } else { - if (nodeList.isEmpty()) { - Node newNode = new Node(); - newNode.setName(I18n.get("general.defaultNode.name")); - newNode.setHostname("localhost"); - newNode.setPort(9481); - nodeList.add(newNode); - } - Node firstNode = nodeList.get(0); - EditNodeDialog editNodeDialog = manageNodesDialog.getEditNodeDialog(); - editNodeDialog.setNodeName(firstNode.getName()); - editNodeDialog.setNodeHostname(firstNode.getHostname()); - editNodeDialog.setNodePort(firstNode.getPort()); - editNodeDialog.setVisible(true); - if (!editNodeDialog.wasCancelled()) { - firstNode.setName(editNodeDialog.getNodeName()); - firstNode.setHostname(editNodeDialog.getNodeHostname()); - firstNode.setPort(editNodeDialog.getNodePort()); - /* TODO - give to core. */ + private void addNode() { + addNodeDialog.setNodeName(I18n.get(nodeList.isEmpty() ? "general.defaultNode.name" : "general.newNode.name")); + addNodeDialog.setNodeHostname("localhost"); + addNodeDialog.setNodePort(9481); + addNodeDialog.setVisible(true); + if (!addNodeDialog.wasCancelled()) { + Node newNode = new Node(); + newNode.setName(addNodeDialog.getNodeName()); + newNode.setHostname(addNodeDialog.getNodeHostname()); + newNode.setPort(addNodeDialog.getNodePort()); + try { + core.addNode(newNode); + } catch (UnknownHostException e) { + JOptionPane.showMessageDialog(mainWindow, I18n.get("mainWindow.error.hostnameUnresolvable.message"), I18n.get("mainWindow.error.hostnameUnresolvable.title"), JOptionPane.ERROR_MESSAGE); } } } /** + * Edits the given node. + * + * @param node + * The node to edit + */ + private void editNode(Node node) { + addNodeDialog.setNodeName(node.getName()); + addNodeDialog.setNodeHostname(node.getHostname()); + addNodeDialog.setNodePort(node.getPort()); + addNodeDialog.setVisible(true); + if (!addNodeDialog.wasCancelled()) { + node.setName(addNodeDialog.getNodeName()); + node.setHostname(addNodeDialog.getNodeHostname()); + node.setPort(addNodeDialog.getNodePort()); + } + } + + /** + * Deletes the given node. + * + * @param node + * The node to delete + */ + private void deleteNode(Node node) { + int option = JOptionPane.showConfirmDialog(mainWindow, I18n.get("mainWindow.question.deleteNode.message", node.getName()), I18n.get("mainWindow.question.deleteNode.title"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); + if (option == JOptionPane.OK_OPTION) { + core.removeNode(node); + } + } + + /** * Connects to the node. - * + * * @param node * The node to connect to */ @@ -672,7 +741,7 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh /** * Disconnects from the node. - * + * * @param node * The node to disconnect from */ @@ -684,14 +753,14 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh /** * Changes the language of the interface. This method also disables the * action for the newly set language and enables all others. - * + * * @param newLocale * The new language * @param languageAction * The action that triggered the change */ private void changeLanguage(Locale newLocale, I18nAction languageAction) { - for (I18nAction i18nAction: languageActions) { + for (I18nAction i18nAction : languageActions) { i18nAction.setEnabled(i18nAction != languageAction); } I18n.setLocale(newLocale); @@ -709,13 +778,9 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh */ private void addProject() { try { - Project project = core.createProject(); - project.setName(I18n.get("general.newProject.name")); - project.setDescription(I18n.get("general.newProject.description", new Date())); - mainWindow.addProject(project, true); - } catch (JSiteException nne1) { - /* TODO - add i18n */ - JOptionPane.showMessageDialog(mainWindow, I18n.get(""), I18n.get(""), JOptionPane.ERROR_MESSAGE); + core.createProject(); + } catch (JSiteException jse1) { + JOptionPane.showMessageDialog(mainWindow, I18n.get("mainWindow.error.notConnected.message"), I18n.get("mainWindow.error.notConnected.title"), JOptionPane.ERROR_MESSAGE); } catch (IOException e) { /* TODO - add i18n */ JOptionPane.showMessageDialog(mainWindow, I18n.get(""), I18n.get(""), JOptionPane.ERROR_MESSAGE); @@ -723,17 +788,51 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh } /** + * Inserts the given project. + * + * @param project + * The project to insert + */ + private void insertProject(Project project) { + Node targetNode = project.getNode(); + if (targetNode == null) { + JComboBox nodeComboBox = new JComboBox(); + for (Node node : nodeList) { + ((DefaultComboBoxModel) nodeComboBox.getModel()).addElement(node.getName() + " (" + node.getHostname() + ":" + node.getPort() + ")"); + } + int selectedOption = JOptionPane.showConfirmDialog(mainWindow, new Object[] { I18n.get("nodeSelectionDialog.selectNode.text"), nodeComboBox }, I18n.get("nodeSelectionDialog.noNodeSelected.text"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); + if (selectedOption == JOptionPane.CANCEL_OPTION) { + return; + } + int selectedNodeIndex = nodeComboBox.getSelectedIndex(); + logger.log(Level.FINE, "selected node index: " + selectedNodeIndex); + targetNode = nodeList.get(selectedNodeIndex); + } + logger.log(Level.INFO, "Inserting project “" + project.getName() + "” to node “" + targetNode.getName() + "”..."); + } + + /** * Clones a project. + * + * @param project + * The project to clone */ - private void cloneProject() { - /* TODO */ + private void cloneProject(Project project) { + core.cloneProject(project); } /** * Deletes a project. + * + * @param project + * The project to delete */ - private void deleteProject() { - /* TODO */ + private void deleteProject(Project project) { + int choice = JOptionPane.showConfirmDialog(mainWindow, I18n.get("mainWindow.question.deleteProject.message", project.getName()), I18n.get("mainWindow.question.deleteProject.title"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); + if (choice == JOptionPane.NO_OPTION) { + return; + } + core.removeProject(project); } // @@ -745,8 +844,8 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh */ public void loadingProjectsDone(String directory) { mainWindow.setStatusBarText(I18n.get("mainWindow.statusBar.projectLoadingDone")); - for (Project project: core.getProjects()) { - mainWindow.addProject(project, false); + for (Project project : core.getProjects()) { + projectAdded(project, false); } } @@ -774,6 +873,70 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh /** * {@inheritDoc} */ + public void projectAdded(Project project) { + project.setName(I18n.get("general.newProject.name")); + project.setDescription(I18n.get("general.newProject.description", new Date())); + projectAdded(project, true); + } + + /** + * @param project + * @param switchToProject + */ + private void projectAdded(final Project project, boolean switchToProject) { + insertProjectActions.put(project, new I18nAction("mainWindow.button.insertProject") { + + /** + * {@inheritDoc} + */ + @SuppressWarnings("synthetic-access") + public void actionPerformed(ActionEvent actionEvent) { + insertProject(project); + } + }); + cloneProjectActions.put(project, new I18nAction("mainWindow.button.cloneProject") { + + /** + * {@inheritDoc} + */ + @SuppressWarnings("synthetic-access") + public void actionPerformed(ActionEvent actionEvent) { + cloneProject(project); + } + }); + deleteProjectActions.put(project, new I18nAction("mainWindow.button.deleteProject") { + + /** + * {@inheritDoc} + */ + @SuppressWarnings("synthetic-access") + public void actionPerformed(ActionEvent actionEvent) { + deleteProject(project); + } + }); + projectList.add(project); + mainWindow.addProject(project, switchToProject); + } + + /** + * {@inheritDoc} + */ + public void projectCloned(Project clonedProject, Project projectClone) { + projectAdded(projectClone, true); + } + + /** + * {@inheritDoc} + */ + public void projectRemoved(Project project) { + mainWindow.removeProject(project); + cloneProjectActions.remove(project); + deleteProjectActions.remove(project); + } + + /** + * {@inheritDoc} + */ public void loadingNodesDone(String directory) { mainWindow.setStatusBarText(I18n.get("mainWindow.statusBar.loadingNodesDone")); } @@ -822,8 +985,7 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh nodeList.add(node); node.addPropertyChangeListener(this); logger.log(Level.FINE, "nodeList.size(): " + nodeList.size()); - manageNodesDialog.setNodeList(nodeList); - nodeConnectActions.put(node, new I18nAction("mainWindow.menu.connect") { + nodeConnectActions.put(node, new I18nAction("mainWindow.menu.node.item.connect") { /** * {@inheritDoc} @@ -833,7 +995,7 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh nodeConnect(node); } }); - nodeDisconnectActions.put(node, new I18nAction("mainWindow.menu.disconnect") { + nodeDisconnectActions.put(node, new I18nAction("mainWindow.menu.node.item.disconnect") { /** * {@inheritDoc} @@ -844,6 +1006,26 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh } }); 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); } @@ -856,6 +1038,8 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh node.removePropertyChangeListener(this); nodeConnectActions.remove(node); nodeDisconnectActions.remove(node); + nodeEditActions.remove(node); + nodeDeleteActions.remove(node); mainWindow.removeNode(node); } @@ -864,6 +1048,8 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh */ 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())); } @@ -873,6 +1059,7 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh 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); } /** @@ -880,7 +1067,10 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh */ 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); } @@ -890,18 +1080,21 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh 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) + * @see net.pterodactylus.jsite.core.CoreListener#projectInsertStarted(net.pterodactylus.jsite.core.Project) */ public void projectInsertStarted(Project project) { mainWindow.projectInsertStarted(project); } /** - * @see net.pterodactylus.jsite.core.CoreListener#projectInsertProgressed(net.pterodactylus.jsite.project.Project, + * @see net.pterodactylus.jsite.core.CoreListener#projectInsertProgressed(net.pterodactylus.jsite.core.Project, * int, int, int, int, int, boolean) */ public void projectInsertProgressed(Project project, int totalBlocks, int requiredBlocks, int successfulBlocks, int failedBlocks, int fatallyFailedBlocks, boolean finalizedTotal) { @@ -909,7 +1102,7 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh } /** - * @see net.pterodactylus.jsite.core.CoreListener#projectInsertGeneratedURI(net.pterodactylus.jsite.project.Project, + * @see net.pterodactylus.jsite.core.CoreListener#projectInsertGeneratedURI(net.pterodactylus.jsite.core.Project, * java.lang.String) */ public void projectInsertGeneratedURI(Project project, String uri) { @@ -917,7 +1110,7 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh } /** - * @see net.pterodactylus.jsite.core.CoreListener#projectInsertFinished(net.pterodactylus.jsite.project.Project, + * @see net.pterodactylus.jsite.core.CoreListener#projectInsertFinished(net.pterodactylus.jsite.core.Project, * boolean) */ public void projectInsertFinished(Project project, boolean success) { @@ -938,16 +1131,12 @@ public class SwingInterface implements CoreListener, LoggingListener, PropertyCh // // INTERFACE PropertyChangeListener // - + /** * {@inheritDoc} */ public void propertyChange(PropertyChangeEvent propertyChangeEvent) { - if (propertyChangeEvent.getSource() instanceof Node) { - Node changedNode = (Node) propertyChangeEvent.getSource(); - nodeConnectActions.get(changedNode).putValue(Action.NAME, changedNode.getName()); - nodeDisconnectActions.get(changedNode).putValue(Action.NAME, changedNode.getName()); - } + /* do not react to anything (yet). */ } }