implement node selection in project
[jSite2.git] / src / net / pterodactylus / jsite / gui / ProjectPanel.java
index c3b9a78..187e057 100644 (file)
@@ -31,6 +31,7 @@ import java.util.logging.Logger;
 import javax.swing.AbstractAction;
 import javax.swing.Action;
 import javax.swing.BorderFactory;
+import javax.swing.DefaultComboBoxModel;
 import javax.swing.JButton;
 import javax.swing.JComboBox;
 import javax.swing.JFileChooser;
@@ -40,6 +41,7 @@ import javax.swing.event.DocumentEvent;
 import javax.swing.event.DocumentListener;
 import javax.swing.text.Document;
 
+import net.pterodactylus.jsite.core.Node;
 import net.pterodactylus.jsite.core.Project;
 import net.pterodactylus.jsite.i18n.I18n;
 import net.pterodactylus.jsite.i18n.I18nable;
@@ -129,6 +131,31 @@ public class ProjectPanel extends JPanel implements DocumentListener, I18nable {
        }
 
        //
+       // ACTIONS
+       //
+
+       /**
+        * Adds the given node to the node combo boxes in all {@link ProjectPanel}s.
+        * 
+        * @param node
+        *            The node to add
+        */
+       public void addNode(Node node) {
+               ((DefaultComboBoxModel) nodeComboBox.getModel()).addElement(node);
+       }
+
+       /**
+        * Removes the given node from the node combo boxes in all
+        * {@link ProjectPanel}s.
+        * 
+        * @param node
+        *            The node to remove
+        */
+       public void removeNode(Node node) {
+               ((DefaultComboBoxModel) nodeComboBox.getModel()).removeElement(node);
+       }
+
+       //
        // PRIVATE METHODS
        //
 
@@ -161,8 +188,10 @@ public class ProjectPanel extends JPanel implements DocumentListener, I18nable {
                        /**
                         * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
                         */
+                       @SuppressWarnings("synthetic-access")
                        public void actionPerformed(ActionEvent actionEvent) {
-                               /* TODO */
+                               Node node = (Node) nodeComboBox.getSelectedItem();
+                               project.setNode(node);
                        }
                };
        }
@@ -210,7 +239,12 @@ public class ProjectPanel extends JPanel implements DocumentListener, I18nable {
                propertiesPanel.add(changeBasePathButton, new GridBagConstraints(2, 2, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(12, 12, 0, 0), 0, 0));
                propertiesPanel.add(editFilesButton, new GridBagConstraints(3, 2, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(12, 12, 0, 0), 0, 0));
 
-               nodeComboBox = new JComboBox();
+               nodeComboBox = new JComboBox(new DefaultComboBoxModel());
+               ((DefaultComboBoxModel) nodeComboBox.getModel()).addElement(null);
+               for (Node node : swingInterface.getNodes()) {
+                       ((DefaultComboBoxModel) nodeComboBox.getModel()).addElement(node);
+               }
+               nodeComboBox.setSelectedItem(project.getNode());
                nodeComboBox.addActionListener(nodeAction);
                nodeLabel = new I18nLabel("projectPanel.label.node", nodeComboBox);
                propertiesPanel.add(nodeLabel, new GridBagConstraints(0, 3, 1, 1, 0.0, 0.0, GridBagConstraints.LINE_START, GridBagConstraints.BOTH, new Insets(12, 0, 0, 0), 0, 0));