implement node selection in project
[jSite2.git] / src / net / pterodactylus / jsite / gui / MainWindow.java
index 1d536c8..2e2e082 100644 (file)
@@ -23,6 +23,9 @@ import java.awt.BorderLayout;
 import java.awt.Component;
 import java.awt.Container;
 import java.awt.Dimension;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
 import java.awt.event.WindowAdapter;
 import java.awt.event.WindowEvent;
 import java.awt.event.WindowListener;
@@ -35,7 +38,6 @@ import java.util.TimerTask;
 import java.util.logging.Logger;
 
 import javax.swing.Box;
-import javax.swing.BoxLayout;
 import javax.swing.Icon;
 import javax.swing.JButton;
 import javax.swing.JFrame;
@@ -49,12 +51,12 @@ import javax.swing.SwingConstants;
 import javax.swing.border.EmptyBorder;
 
 import net.pterodactylus.jsite.core.Node;
+import net.pterodactylus.jsite.core.Project;
 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.I18nMenu;
 import net.pterodactylus.jsite.main.Version;
-import net.pterodactylus.jsite.project.Project;
 import net.pterodactylus.util.image.IconLoader;
 import net.pterodactylus.util.logging.Logging;
 import net.pterodactylus.util.swing.StatusBar;
@@ -114,7 +116,7 @@ public class MainWindow extends JFrame implements WindowListener, I18nable, Prop
        private JTabbedPane projectPane;
 
        /** The project overview panel. */
-       private Box projectOverviewPanel;
+       private JPanel projectOverviewPanel;
 
        /** Maps from node to menus. */
        private final Map<Node, JMenu> nodeMenus = new HashMap<Node, JMenu>();
@@ -269,6 +271,13 @@ public class MainWindow extends JFrame implements WindowListener, I18nable, Prop
                NodeLabel nodeLabel = new NodeLabel(swingInterface, node, onlineIcon, offlineIcon, errorIcon);
                nodeLabels.put(node, nodeLabel);
                statusBar.addSideComponent(nodeLabel);
+               for (int tabIndex = 0, tabCount = projectPane.getTabCount(); tabIndex < tabCount; tabIndex++) {
+                       Component tabComponent = projectPane.getComponentAt(tabIndex);
+                       if (!(tabComponent instanceof ProjectPanel)) {
+                               continue;
+                       }
+                       ((ProjectPanel) tabComponent).addNode(node);
+               }
                node.addPropertyChangeListener(this);
        }
 
@@ -281,6 +290,13 @@ public class MainWindow extends JFrame implements WindowListener, I18nable, Prop
        void removeNode(Node node) {
                nodeMenu.remove(nodeMenus.remove(node));
                statusBar.removeSideComponent(nodeLabels.remove(node));
+               for (int tabIndex = 0, tabCount = projectPane.getTabCount(); tabIndex < tabCount; tabIndex++) {
+                       Component tabComponent = projectPane.getComponentAt(tabIndex);
+                       if (!(tabComponent instanceof ProjectPanel)) {
+                               continue;
+                       }
+                       ((ProjectPanel) tabComponent).addNode(node);
+               }
                node.removePropertyChangeListener(this);
        }
 
@@ -419,7 +435,7 @@ public class MainWindow extends JFrame implements WindowListener, I18nable, Prop
                languageMenu = new I18nMenu("mainWindow.menu.language");
                menuBar.add(languageMenu);
 
-               for (I18nAction languageAction: swingInterface.getLanguageActions()) {
+               for (I18nAction languageAction : swingInterface.getLanguageActions()) {
                        languageMenu.add(new FixedJMenuItem(languageAction));
                }
 
@@ -433,9 +449,10 @@ public class MainWindow extends JFrame implements WindowListener, I18nable, Prop
                setJMenuBar(menuBar);
 
                JToolBar toolBar = new JToolBar(I18n.get("mainWindow.toolbar.name"));
-               toolBar.add(swingInterface.getAddNodeAction());
-               toolBar.addSeparator();
+               toolBar.add(swingInterface.getConfigureAction());
                toolBar.add(swingInterface.getQuitAction());
+               toolBar.addSeparator();
+               toolBar.add(swingInterface.getAddNodeAction());
                super.getContentPane().add(toolBar, BorderLayout.PAGE_START);
 
                super.getContentPane().add(contentPane, BorderLayout.CENTER);
@@ -465,15 +482,12 @@ public class MainWindow extends JFrame implements WindowListener, I18nable, Prop
                projectPane = new JTabbedPane(SwingConstants.TOP, JTabbedPane.SCROLL_TAB_LAYOUT);
                contentPane.add(projectPane, BorderLayout.CENTER);
 
-               projectOverviewPanel = new Box(BoxLayout.PAGE_AXIS);
+               projectOverviewPanel = new JPanel(new GridBagLayout());
                projectOverviewPanel.setName(I18n.get("mainWindow.pane.overview.title"));
                projectPane.add(projectOverviewPanel);
                projectOverviewPanel.setBorder(new EmptyBorder(12, 12, 12, 12));
-               projectOverviewPanel.add(Box.createVerticalGlue());
                JButton addProjectButton = new JButton(swingInterface.getAddProjectAction());
-               addProjectButton.setAlignmentX(0.5f);
-               projectOverviewPanel.add(addProjectButton);
-               projectOverviewPanel.add(Box.createVerticalGlue());
+               projectOverviewPanel.add(addProjectButton, new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
        }
 
        //
@@ -493,17 +507,17 @@ public class MainWindow extends JFrame implements WindowListener, I18nable, Prop
                jSiteMenu.updateI18n();
                nodeMenu.updateI18n();
                languageMenu.updateI18n();
-               for (Node node: swingInterface.getNodes()) {
+               for (Node node : swingInterface.getNodes()) {
                        swingInterface.getNodeConnectAction(node).updateI18n();
                        swingInterface.getNodeDisconnectAction(node).updateI18n();
                        swingInterface.getNodeEditAction(node).updateI18n();
                        swingInterface.getNodeDeleteAction(node).updateI18n();
                }
-               for (Project project: swingInterface.getProjects()) {
+               for (Project project : swingInterface.getProjects()) {
                        swingInterface.getCloneProjectAction(project).updateI18n();
                        swingInterface.getDeleteProjectAction(project).updateI18n();
                }
-               for (I18nAction languageAction: swingInterface.getLanguageActions()) {
+               for (I18nAction languageAction : swingInterface.getLanguageActions()) {
                        languageAction.updateI18n();
                }
                helpMenu.updateI18n();