import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
+import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.JToolBar;
* Defines the main window of the application.
*
* @author David ‘Bombe’ Roden <bombe@freenetproject.org>
- * @version $Id$
*/
public class MainWindow extends JFrame implements WindowListener, I18nable, PropertyChangeListener {
SwingUtils.center(this);
I18n.registerI18nable(this);
addWindowListener(this);
+ setIconImage(IconLoader.loadImage("/jSite-frame-icon.png"));
}
//
return null;
}
+ /**
+ * Sets the given node to the “online” state.
+ *
+ * @param node
+ * The node to set online
+ */
+ public void setOnline(Node node) {
+ nodeLabels.get(node).setOnline();
+ }
+
+ /**
+ * Sets the given node to the “offline” state in the status bar.
+ *
+ * @param node
+ * The node to set offline
+ */
+ public void setOffline(Node node) {
+ nodeLabels.get(node).setOffline();
+ }
+
+ /**
+ * Sets the given node to the “error” state in the status bar.
+ *
+ * @param node
+ * The node to set the error state for
+ */
+ public void setError(Node node) {
+ nodeLabels.get(node).setError();
+ }
+
//
// ACTIONS
//
nodeMenus.put(node, newNodeMenu);
newNodeMenu.add(swingInterface.getNodeConnectAction(node));
newNodeMenu.add(swingInterface.getNodeDisconnectAction(node));
+ newNodeMenu.addSeparator();
+ newNodeMenu.add(swingInterface.getNodeEditAction(node));
+ newNodeMenu.add(swingInterface.getNodeDeleteAction(node));
nodeMenu.add(newNodeMenu);
NodeLabel nodeLabel = new NodeLabel(swingInterface, node, onlineIcon, offlineIcon, errorIcon);
nodeLabels.put(node, nodeLabel);
statusBar.addSideComponent(nodeLabel);
+ node.addPropertyChangeListener(this);
}
/**
void removeNode(Node node) {
nodeMenu.remove(nodeMenus.remove(node));
statusBar.removeSideComponent(nodeLabels.remove(node));
+ node.removePropertyChangeListener(this);
}
/**
project.addPropertyChangeListener(this);
if (switchToProject) {
projectPane.setSelectedIndex(newTabIndex);
+ while (project.getBasePath().length() == 0) {
+ JOptionPane.showMessageDialog(this, I18n.get("mainWindow.information.changeProjectBasePath.message"), I18n.get("mainWindow.information.changeProjectBasePath.title"), JOptionPane.INFORMATION_MESSAGE);
+ projectPanel.changeBasePath();
+ }
}
}
nodeMenu = new I18nMenu("mainWindow.menu.node");
menuBar.add(nodeMenu);
- nodeMenu.add(new FixedJMenuItem(swingInterface.getManageNodesAction()));
+ nodeMenu.add(new FixedJMenuItem(swingInterface.getAddNodeAction()));
nodeMenu.addSeparator();
languageMenu = new I18nMenu("mainWindow.menu.language");
setJMenuBar(menuBar);
JToolBar toolBar = new JToolBar(I18n.get("mainWindow.toolbar.name"));
- toolBar.add(swingInterface.getManageNodesAction());
+ toolBar.add(swingInterface.getAddNodeAction());
toolBar.addSeparator();
toolBar.add(swingInterface.getQuitAction());
super.getContentPane().add(toolBar, BorderLayout.PAGE_START);
*/
private void initComponents() {
super.getContentPane().add(statusBar, BorderLayout.PAGE_END);
-
- /* TODO - remove upper panel */
- JPanel upperPanel = new JPanel(new BorderLayout(12, 12));
- getContentPane().add(upperPanel, BorderLayout.CENTER);
contentPane.setBorder(new EmptyBorder(12, 12, 12, 12));
projectPane = new JTabbedPane(SwingConstants.TOP, JTabbedPane.SCROLL_TAB_LAYOUT);
- upperPanel.add(projectPane, BorderLayout.CENTER);
+ contentPane.add(projectPane, BorderLayout.CENTER);
projectOverviewPanel = new Box(BoxLayout.PAGE_AXIS);
projectOverviewPanel.setName(I18n.get("mainWindow.pane.overview.title"));
addProjectButton.setAlignmentX(0.5f);
projectOverviewPanel.add(addProjectButton);
projectOverviewPanel.add(Box.createVerticalGlue());
-
- // JPanel lowerPanel = new JPanel(new BorderLayout(12, 12));
- // getContentPane().add(lowerPanel, BorderLayout.CENTER);
}
//
swingInterface.getConfigureAction().updateI18n();
swingInterface.getImportConfigAction().updateI18n();
swingInterface.getQuitAction().updateI18n();
- swingInterface.getManageNodesAction().updateI18n();
+ swingInterface.getAddNodeAction().updateI18n();
swingInterface.getAddProjectAction().updateI18n();
- swingInterface.getCloneProjectAction().updateI18n();
- swingInterface.getDeleteProjectAction().updateI18n();
swingInterface.getHelpAboutAction().updateI18n();
jSiteMenu.updateI18n();
nodeMenu.updateI18n();
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()) {
+ swingInterface.getCloneProjectAction(project).updateI18n();
+ swingInterface.getDeleteProjectAction(project).updateI18n();
}
for (I18nAction languageAction: swingInterface.getLanguageActions()) {
languageAction.updateI18n();
}
}
}
+ } else if (eventSource instanceof Node) {
+ if (propertyName.equals(Node.PROPERTY_NAME)) {
+ Node changedNode = (Node) eventSource;
+ nodeMenus.get(changedNode).setText(changedNode.getName());
+ }
}
}