X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Fjsite%2Fgui%2FManageNodesDialog.java;h=0598144df5efa31f9f95229e61cef94152982905;hb=0a77fd9c0956cb61a4b6daba377343949b575add;hp=9d993a0180a2d76e8f9db43d3b3f24e68e3b4d1f;hpb=d1bf7681d79cf88ee860b6f5fa1732714cbd5055;p=jSite2.git diff --git a/src/net/pterodactylus/jsite/gui/ManageNodesDialog.java b/src/net/pterodactylus/jsite/gui/ManageNodesDialog.java index 9d993a0..0598144 100644 --- a/src/net/pterodactylus/jsite/gui/ManageNodesDialog.java +++ b/src/net/pterodactylus/jsite/gui/ManageNodesDialog.java @@ -22,13 +22,14 @@ package net.pterodactylus.jsite.gui; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.event.ActionEvent; +import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; +import java.util.logging.Logger; import javax.swing.AbstractListModel; -import javax.swing.Action; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JDialog; @@ -43,7 +44,11 @@ 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.i18n.gui.I18nLabel; import net.pterodactylus.jsite.main.Version; +import net.pterodactylus.util.logging.Logging; import net.pterodactylus.util.swing.SwingUtils; /** @@ -52,7 +57,11 @@ import net.pterodactylus.util.swing.SwingUtils; * @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 logger.  */ + @SuppressWarnings("unused") + private static final Logger logger = Logging.getLogger(ManageNodesDialog.class.getName()); /** The core. */ private final Core core; @@ -61,23 +70,26 @@ public class ManageNodesDialog extends JDialog implements ListSelectionListener 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; + /** The warning label. */ + private I18nLabel immediatelyEffectiveLabel; + /** The node list. */ private JList nodeList; @@ -97,6 +109,7 @@ public class ManageNodesDialog extends JDialog implements ListSelectionListener initComponents(); initDialogs(); pack(); + I18n.registerI18nable(this); SwingUtils.center(this); } @@ -105,6 +118,15 @@ 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 @@ -120,7 +142,7 @@ public class ManageNodesDialog extends JDialog implements ListSelectionListener * The list of nodes */ public void setNodeList(List nodeList) { - originalNodeList = nodeList; + originalNodeList = new ArrayList(nodeList); nodeListModel.clear(); for (Node node: nodeList) { nodeListModel.addNode(node); @@ -207,6 +229,11 @@ public class ManageNodesDialog extends JDialog implements ListSelectionListener rootPanel.add(contentPanel, BorderLayout.CENTER); contentPanel.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), BorderFactory.createEmptyBorder(12, 12, 12, 12))); + JPanel warningPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 12, 12)); + warningPanel.setBorder(BorderFactory.createEmptyBorder(-12, -12, -12, -12)); + warningPanel.add(immediatelyEffectiveLabel = new I18nLabel("manageNodesDialog.label.immediatelyEffective")); + contentPanel.add(warningPanel, BorderLayout.PAGE_START); + JPanel listButtonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 12, 12)); contentPanel.add(listButtonPanel, BorderLayout.PAGE_END); listButtonPanel.setBorder(BorderFactory.createEmptyBorder(-12, -12, -12, -12)); @@ -236,17 +263,26 @@ 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(); newNode.setName(editNodeDialog.getNodeName()); newNode.setHostname(editNodeDialog.getNodeHostname()); newNode.setPort(editNodeDialog.getNodePort()); - nodeListModel.addNode(newNode); + try { + if (!core.addNode(newNode)) { + JOptionPane.showMessageDialog(this, I18n.get("manageNodesDialog.error.nodeAlreadyKnown.message", newNode.getHostname(), newNode.getPort()), I18n.get("manageNodesDialog.error.nodeAlreadyKnown.title"), JOptionPane.ERROR_MESSAGE); + } + } catch (UnknownHostException e) { + /* + * normally this shouldn't throw because the node editor catches + * it. + */ + JOptionPane.showMessageDialog(this, I18n.get("manageNodesDialog.error.nodeUnresolvable.message", newNode.getHostname()), I18n.get("manageNodesDialog.error.nodeUnresolvable.title"), JOptionPane.ERROR_MESSAGE); + } } } @@ -258,13 +294,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(); } } @@ -338,8 +372,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(); + immediatelyEffectiveLabel.updateI18n(); + setTitle(I18n.get("manageNodesDialog.title") + " – jSite " + Version.getVersion()); + SwingUtils.repackCentered(this); + } + /** - * List model for the {@link ManageNodesDialog#nodeList}. TODO + * List model for the {@link ManageNodesDialog#nodeList}. * * @author David ‘Bombe’ Roden <bombe@freenetproject.org> * @version $Id$ @@ -354,6 +406,7 @@ public class ManageNodesDialog extends JDialog implements ListSelectionListener * Creates a new node list model. */ public NodeListModel() { + /* do nothing. */ } /**