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;
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.main.Version;
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 core. */
+ private final Core core;
/** The original list of nodes. */
private List<Node> 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;
/**
* 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);
}
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();
}
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
*