X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Fjsite%2Fgui%2FManageNodesDialog.java;h=0ae270ca5400d9d99e4a199da2357a90962f2d4d;hb=6f655f2a30d35fd6192ea86ccfd08149438011b0;hp=c2d6adfe2bb912924565963600f7391f3bfdd3dd;hpb=c303c800fd219b20b2fb60e01f3e99ae983da37b;p=jSite2.git diff --git a/src/net/pterodactylus/jsite/gui/ManageNodesDialog.java b/src/net/pterodactylus/jsite/gui/ManageNodesDialog.java index c2d6adf..0ae270c 100644 --- a/src/net/pterodactylus/jsite/gui/ManageNodesDialog.java +++ b/src/net/pterodactylus/jsite/gui/ManageNodesDialog.java @@ -28,11 +28,9 @@ import java.util.Iterator; import java.util.List; import javax.swing.AbstractListModel; -import javax.swing.Action; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JDialog; -import javax.swing.JFrame; import javax.swing.JList; import javax.swing.JOptionPane; import javax.swing.JPanel; @@ -41,36 +39,42 @@ import javax.swing.border.EtchedBorder; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; +import net.pterodactylus.jsite.core.Core; import net.pterodactylus.jsite.core.Node; import net.pterodactylus.jsite.i18n.I18n; +import net.pterodactylus.jsite.i18n.I18nable; +import net.pterodactylus.jsite.i18n.gui.I18nAction; import net.pterodactylus.jsite.main.Version; import net.pterodactylus.util.swing.SwingUtils; /** * Dialog that lets the user manage her nodes. - * + * * @author David ‘Bombe’ Roden <bombe@freenetproject.org> * @version $Id$ */ -public class ManageNodesDialog extends JDialog implements ListSelectionListener { +public class ManageNodesDialog extends JDialog implements ListSelectionListener, I18nable { + + /** The core. */ + private final Core core; /** The original list of nodes. */ private List originalNodeList; /** The “add node” action. */ - private Action addNodeAction; + private I18nAction addNodeAction; /** The “edit node” action. */ - private Action editNodeAction; + private I18nAction editNodeAction; /** The “delete node” action. */ - private Action deleteNodeAction; + private I18nAction deleteNodeAction; /** The “okay” action. */ - private Action okayAction; + private I18nAction okayAction; /** The “cancel” action. */ - private Action cancelAction; + private I18nAction cancelAction; /** The “edit node” dialog. */ private EditNodeDialog editNodeDialog; @@ -83,16 +87,18 @@ public class ManageNodesDialog extends JDialog implements ListSelectionListener /** * Creates a new node manager dialog. - * - * @param parentFrame - * The parent frame of the dialog + * + * @param swingInterface + * The Swing interface */ - public ManageNodesDialog(JFrame parentFrame) { - super(parentFrame, I18n.get("manageNodesDialog.title") + " – jSite " + Version.getVersion(), true); + public ManageNodesDialog(SwingInterface swingInterface) { + super(swingInterface.getMainWindow(), I18n.get("manageNodesDialog.title") + " – jSite " + Version.getVersion(), true); + this.core = swingInterface.getCore(); initActions(); initComponents(); initDialogs(); pack(); + I18n.registerI18nable(this); SwingUtils.center(this); } @@ -101,8 +107,17 @@ public class ManageNodesDialog extends JDialog implements ListSelectionListener // /** + * Expose the edit node dialog for the simple mode. + * + * @return The edit node dialog + */ + EditNodeDialog getEditNodeDialog() { + return editNodeDialog; + } + + /** * Returns the list of nodes. - * + * * @return The list of nodes */ public List getNodeList() { @@ -111,7 +126,7 @@ public class ManageNodesDialog extends JDialog implements ListSelectionListener /** * Sets the list of nodes. - * + * * @param nodeList * The list of nodes */ @@ -232,10 +247,9 @@ public class ManageNodesDialog extends JDialog implements ListSelectionListener * Adds a new node via {@link #editNodeDialog}. */ private void addNode() { - editNodeDialog.setNodeName("New Node"); + editNodeDialog.setNodeName(I18n.get("general.newNode.name")); editNodeDialog.setNodeHostname("localhost"); editNodeDialog.setNodePort(9481); - editNodeDialog.setNodeOnSameMachine(true); editNodeDialog.setVisible(true); if (!editNodeDialog.wasCancelled()) { Node newNode = new Node(); @@ -254,13 +268,11 @@ public class ManageNodesDialog extends JDialog implements ListSelectionListener editNodeDialog.setNodeName(selectedNode.getName()); editNodeDialog.setNodeHostname(selectedNode.getHostname()); editNodeDialog.setNodePort(selectedNode.getPort()); - editNodeDialog.setNodeOnSameMachine(selectedNode.isSameMachine()); editNodeDialog.setVisible(true); if (!editNodeDialog.wasCancelled()) { selectedNode.setName(editNodeDialog.getNodeName()); selectedNode.setHostname(editNodeDialog.getNodeHostname()); selectedNode.setPort(editNodeDialog.getNodePort()); - selectedNode.setSameMachine(editNodeDialog.isNodeOnSameMachine()); nodeList.repaint(); } } @@ -271,14 +283,23 @@ public class ManageNodesDialog extends JDialog implements ListSelectionListener private void deleteNodes() { Object[] selectedNodes = nodeList.getSelectedValues(); for (Object node: selectedNodes) { - nodeListModel.removeNode((Node) node); + Node selectedNode = (Node) node; + if (core.isNodeConnected(selectedNode)) { + int response = JOptionPane.showConfirmDialog(this, I18n.get("manageNodesDialog.error.nodeConnected.message", selectedNode.getName()), I18n.get("manageNodesDialog.error.nodeConnected.title"), JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); + if (response == JOptionPane.CANCEL_OPTION) { + break; + } else if (response == JOptionPane.NO_OPTION) { + continue; + } + } + nodeListModel.removeNode(selectedNode); } nodeList.clearSelection(); } /** * Checks whether the list of nodes is not empty. - * + * * @return true if there is at least one node defined, * false otherwise */ @@ -325,9 +346,26 @@ public class ManageNodesDialog extends JDialog implements ListSelectionListener deleteNodeAction.setEnabled(selectCount >= 1); } + // + // INTERFACE I18nable + // + + /** + * {@inheritDoc} + */ + public void updateI18n() { + okayAction.updateI18n(); + cancelAction.updateI18n(); + addNodeAction.updateI18n(); + editNodeAction.updateI18n(); + deleteNodeAction.updateI18n(); + setTitle(I18n.get("manageNodesDialog.title") + " – jSite " + Version.getVersion()); + SwingUtils.repackCentered(this); + } + /** * List model for the {@link ManageNodesDialog#nodeList}. TODO - * + * * @author David ‘Bombe’ Roden <bombe@freenetproject.org> * @version $Id$ */ @@ -341,11 +379,12 @@ public class ManageNodesDialog extends JDialog implements ListSelectionListener * Creates a new node list model. */ public NodeListModel() { + /* do nothing. */ } /** * Adds the given node to the list model. - * + * * @see Collection#add(Object) * @param node * The node to add @@ -357,7 +396,7 @@ public class ManageNodesDialog extends JDialog implements ListSelectionListener /** * Removes the given node from the list model. - * + * * @see Collection#remove(Object) * @param node * The node to remove @@ -370,7 +409,7 @@ public class ManageNodesDialog extends JDialog implements ListSelectionListener /** * Removes all nodes from the list model. - * + * * @see Collection#clear() */ public void clear() {