X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fnet%2Fpterodactylus%2Fjsite%2Fgui%2FMainWindow.java;h=fc9986a45b32b9d84a5158e2dcc7a8689c86463d;hb=439bd54002fcdfa9f88d7f21236d4d8b3fadd6b0;hp=b5bc5fb7278da5ad0b7c631673da771c47dd14d9;hpb=b05d1a5dbe9d88511c5ca64af179a4df985156ff;p=jSite2.git diff --git a/src/net/pterodactylus/jsite/gui/MainWindow.java b/src/net/pterodactylus/jsite/gui/MainWindow.java index b5bc5fb..fc9986a 100644 --- a/src/net/pterodactylus/jsite/gui/MainWindow.java +++ b/src/net/pterodactylus/jsite/gui/MainWindow.java @@ -25,11 +25,13 @@ import java.awt.Dimension; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; +import javax.swing.Action; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JMenuBar; +import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JTabbedPane; import javax.swing.JToolBar; @@ -68,6 +70,18 @@ public class MainWindow extends JFrame implements I18nable { /** The node menu. */ private I18nMenu nodeMenu; + /** The “connect” (advanced mode) menu. */ + private I18nMenu connectMenu; + + /** The “connect” (simple mode) menu. */ + private JMenuItem connectMenuItem; + + /** The “disconnect” (advanced mode) menu. */ + private I18nMenu disconnectMenu; + + /** The “diconnect” (simple mode) menu item. */ + private JMenuItem disconnectMenuItem; + /** The language menu. */ private I18nMenu languageMenu; @@ -113,6 +127,20 @@ public class MainWindow extends JFrame implements I18nable { } /** + * Sets whether the advanced mode is activated. + * + * @param advancedMode + * true if the advanced mode is activated, + * false if the simple mode is activated + */ + public void setAdvancedMode(boolean advancedMode) { + connectMenu.setVisible(advancedMode); + connectMenuItem.setVisible(!advancedMode); + disconnectMenu.setVisible(advancedMode); + disconnectMenuItem.setVisible(!advancedMode); + } + + /** * {@inheritDoc} */ @Override @@ -130,6 +158,34 @@ public class MainWindow extends JFrame implements I18nable { } // + // ACTIONS + // + + /** + * Refreshes the menu items in the “connect” and “disconnect” menus. + */ + void refreshNodeMenuItems() { + connectMenu.removeAll(); + for (Action nodeConnectAction: swingInterface.getNodeConnectActions()) { + connectMenu.add(nodeConnectAction); + } + if (connectMenu.getMenuComponentCount() == 0) { + JMenuItem noNodeAvailableItem = new JMenuItem(I18n.get("mainWindow.menu.connectNoNodeAvailable.name")); + noNodeAvailableItem.setEnabled(false); + connectMenu.add(noNodeAvailableItem); + } + disconnectMenu.removeAll(); + for (Action nodeDisconnectAction: swingInterface.getNodeDisconnectActions()) { + disconnectMenu.add(nodeDisconnectAction); + } + if (disconnectMenu.getMenuComponentCount() == 0) { + JMenuItem noNodeAvailableItem = new JMenuItem(I18n.get("mainWindow.menu.disconnectNoNodeAvailable.name")); + noNodeAvailableItem.setEnabled(false); + disconnectMenu.add(noNodeAvailableItem); + } + } + + // // PRIVATE METHODS // @@ -148,13 +204,19 @@ public class MainWindow extends JFrame implements I18nable { jSiteMenu.addSeparator(); jSiteMenu.add(new FixedJMenuItem(swingInterface.getQuitAction())); + connectMenu = new I18nMenu("mainWindow.menu.connect"); + disconnectMenu = new I18nMenu("mainWindow.menu.disconnect"); + nodeMenu = new I18nMenu("mainWindow.menu.node"); menuBar.add(nodeMenu); nodeMenu.add(new FixedJMenuItem(swingInterface.getManageNodesAction())); nodeMenu.addSeparator(); - nodeMenu.add(new FixedJMenuItem(swingInterface.getNodeConnectAction())); - nodeMenu.add(new FixedJMenuItem(swingInterface.getNodeDisconnectAction())); + nodeMenu.add(connectMenuItem = new FixedJMenuItem(swingInterface.getNodeConnectAction())); + nodeMenu.add(connectMenu); + nodeMenu.add(disconnectMenuItem = new FixedJMenuItem(swingInterface.getNodeDisconnectAction())); + nodeMenu.add(disconnectMenu); + refreshNodeMenuItems(); languageMenu = new I18nMenu("mainWindow.menu.language"); menuBar.add(languageMenu); @@ -244,7 +306,9 @@ public class MainWindow extends JFrame implements I18nable { swingInterface.getQuitAction().updateI18n(); swingInterface.getManageNodesAction().updateI18n(); swingInterface.getNodeConnectAction().updateI18n(); + connectMenu.updateI18n(); swingInterface.getNodeDisconnectAction().updateI18n(); + disconnectMenu.updateI18n(); swingInterface.getAddProjectAction().updateI18n(); swingInterface.getCloneProjectAction().updateI18n(); swingInterface.getDeleteProjectAction().updateI18n(); @@ -261,6 +325,7 @@ public class MainWindow extends JFrame implements I18nable { for (int componentIndex = 0; componentIndex < projectPane.getTabCount(); componentIndex++) { projectPane.setTitleAt(componentIndex, projectPane.getComponentAt(componentIndex).getName()); } + refreshNodeMenuItems(); SwingUtils.repackCentered(this); }