summaryrefslogtreecommitdiff
path: root/source/com/c2kernel/gui/MenuBuilder.java
diff options
context:
space:
mode:
Diffstat (limited to 'source/com/c2kernel/gui/MenuBuilder.java')
-rwxr-xr-xsource/com/c2kernel/gui/MenuBuilder.java247
1 files changed, 247 insertions, 0 deletions
diff --git a/source/com/c2kernel/gui/MenuBuilder.java b/source/com/c2kernel/gui/MenuBuilder.java
new file mode 100755
index 0000000..c385dbe
--- /dev/null
+++ b/source/com/c2kernel/gui/MenuBuilder.java
@@ -0,0 +1,247 @@
+package com.c2kernel.gui;
+import java.awt.Dimension;
+import java.awt.event.ActionListener;
+import java.awt.event.ItemListener;
+import java.util.Enumeration;
+import java.util.HashMap;
+
+import javax.swing.*;
+import javax.swing.event.HyperlinkEvent;
+import javax.swing.event.HyperlinkListener;
+import javax.swing.text.html.HTMLEditorKit;
+
+import com.c2kernel.lookup.DomainPath;
+import com.c2kernel.lookup.Path;
+import com.c2kernel.persistency.ClusterStorage;
+import com.c2kernel.process.Gateway;
+import com.c2kernel.property.Property;
+import com.c2kernel.utils.FileStringUtility;
+import com.c2kernel.utils.Language;
+import com.c2kernel.utils.Logger;
+import com.c2kernel.utils.Resource;
+/**
+ * @version $Revision: 1.47 $ $Date: 2006/03/03 13:52:21 $
+ * @author $Author: abranson $
+ */
+public class MenuBuilder extends JMenuBar implements ActionListener, ItemListener, HyperlinkListener
+{
+
+ protected UIManager.LookAndFeelInfo[] availableViews = UIManager.getInstalledLookAndFeels();
+ protected MainFrame myParentFrame;
+ protected JMenu fileMenu;
+ protected JMenu consoleMenu;
+ protected JMenu styleMenu;
+ protected JMenu prefMenu;
+ protected JMenu helpMenu;
+ protected HashMap availableMenus = new HashMap();
+
+ public MenuBuilder()
+ {}
+
+ /** Creates new DynamicMenuBuilder */
+ public MenuBuilder(MainFrame parentFrame)
+ {
+ myParentFrame = parentFrame;
+ fileMenu = new JMenu(Language.translate("File"));
+ consoleMenu = new JMenu(Language.translate("Console"));
+ styleMenu = new JMenu(Language.translate("Style"));
+ prefMenu = new JMenu("Preferences");
+ helpMenu = new JMenu(Language.translate("Help"));
+ availableMenus.put("file", fileMenu);
+ availableMenus.put("console", consoleMenu);
+ availableMenus.put("preferences", prefMenu);
+ availableMenus.put("style", styleMenu);
+ availableMenus.put("help", helpMenu);
+
+ addMenuItem(Language.translate("Close All"), "file", null, 0);
+ addMenuItem(Language.translate("Close Others"), "file", null, 0);
+ fileMenu.insertSeparator(2);
+ addMenuItem(Language.translate("Exit"), "file", null, 0);
+
+ addMenuItem(Language.translate("Local console"), "console", null, 0);
+ consoleMenu.insertSeparator(5);
+ addServerConsoles();
+
+ ButtonGroup styleButtonGroup = new ButtonGroup();
+ for (int i = 0; i < availableViews.length; i++)
+ addMenuItem(availableViews[i].getName(), "style", styleButtonGroup, 0);
+
+ addMenuItem(Language.translate("Tree Browser"), "preferences", null, MainFrame.getPref("ShowTree", "true").equals("true")?2:1);
+ addMenuItem(Language.translate("Outcome Field Help"), "preferences", null, MainFrame.getPref("ShowHelp", "true").equals("true")?2:1);
+ addMenuItem(Language.translate("Graph Properties"), "preferences", null, MainFrame.getPref("ShowProps", "true").equals("true")?2:1);
+ addMenuItem(Language.translate("About"), "help", null, 0);
+
+ add(fileMenu);
+ add(consoleMenu);
+ add(styleMenu);
+ add(prefMenu);
+ add(helpMenu);
+ }
+ /**
+ *
+ */
+ private void addServerConsoles() {
+ Enumeration servers = Gateway.getLDAPLookup().searchEntities(new DomainPath("/servers"));
+ while(servers.hasMoreElements()) {
+ Path thisServerPath = (Path)servers.nextElement();
+ try {
+ int syskey = thisServerPath.getSysKey();
+ String serverName = ((Property)Gateway.getStorage().get(syskey, ClusterStorage.PROPERTY+"/Name", null)).getValue();
+ String portStr = ((Property)Gateway.getStorage().get(syskey, ClusterStorage.PROPERTY+"/ConsolePort", null)).getValue();
+ addMenuItem(serverName+":"+portStr, "console", null, 0);
+ } catch (Exception ex) {
+ Logger.error("Exception retrieving proxy server connection data for "+thisServerPath);
+ Logger.error(ex);
+ }
+ }
+
+ }
+
+ /**
+ * Adds a menu item to a menu. Adds an action listener to the menu item.
+ */
+ public void addMenuItem(String itemName, String menuName, ButtonGroup bg, int checkBox)
+ {
+ //checks to see if the menu to add the item to exists
+ if (availableMenus.containsKey(menuName))
+ {
+ JMenuItem myItem = new JMenuItem(itemName);
+ if (bg != null)
+ {
+ //if the menu item equals the current style, set it selected
+ myItem = new JRadioButtonMenuItem(itemName, UIManager.getLookAndFeel().getName().equals(itemName));
+ bg.add(myItem);
+ }
+ if (checkBox != 0)
+ {
+ myItem = new JCheckBoxMenuItem(itemName, checkBox == 2);
+ }
+ myItem.addActionListener(this);
+ JMenu myMenu = (JMenu) availableMenus.get(menuName);
+ myMenu.add(myItem);
+ }
+ }
+ //checks to see if the event dispatched is one of the
+ //styles that belong to the UIManager
+ public int isStyleChange(String style)
+ {
+ for (int i = 0; i < availableViews.length; i++)
+ {
+ if (style.equals(availableViews[i].getName()))
+ return i;
+ }
+ return -1;
+ }
+ //listens for events performed on the menu items
+ public void actionPerformed(java.awt.event.ActionEvent e)
+ {
+ String s = e.getActionCommand();
+ int i = isStyleChange(s);
+ if (s.equals("Close All") || s.equals("Close Others")) {
+ MainFrame.myDesktopManager.closeAll(s.equals("Close Others"));
+ }
+ else if (s.equals(Language.translate("Exit")))
+ myParentFrame.exitForm();
+ else if (s.equals(Language.translate("About")))
+ showAboutWindow();
+ else if (i >= 0)
+ {
+ try
+ {
+ UIManager.setLookAndFeel(availableViews[i].getClassName());
+ SwingUtilities.updateComponentTreeUI(myParentFrame);
+ }
+ catch (Exception ex)
+ {
+ ex.printStackTrace();
+ }
+ }
+ else if (s.equals(Language.translate("Tree Browser")))
+ {
+ myParentFrame.toggleTree();
+ }
+ else if (s.indexOf(":")>0) { // server console
+ try
+ {
+ String[] serverDetails = s.split(":");
+ new Console(serverDetails[0], Integer.parseInt(serverDetails[1])).setVisible(true);
+ }
+ catch (Exception ex)
+ {
+ Logger.error(ex);
+ }
+ }
+ else if (s.equals(Language.translate("Local console"))) {
+ try
+ {
+ new Console("localhost", Logger.getConsolePort()).setVisible(true);
+ }
+ catch (Exception ex)
+ {
+ Logger.error(ex);
+ }
+ }
+ else
+ Logger.msg(1, "MenuBuilder.actionPerformed() - No action associated with the event received");
+ }
+ //constructs an about dialog
+ public void showAboutWindow()
+ {
+ JOptionPane myPane = new JOptionPane();
+ Box about = Box.createVerticalBox();
+
+ String aboutInfo;
+ try
+ {
+ aboutInfo = FileStringUtility.file2String(Gateway.getProperty("about"));
+ }
+ catch (Exception e)
+ {
+ aboutInfo = Language.translate("Cristal 2 Itembrowser");
+ }
+ JLabel title = new JLabel(aboutInfo);
+ about.add(title);
+
+ about.add(new JLabel("Domain version: "+Resource.getDomainVersion()));
+ about.add(new JLabel("Kernel version: "+Resource.getKernelVersion()));
+ // get license info
+ StringBuffer lictxt = new StringBuffer();
+ String domlictxt = Resource.getTextResource("license.html");
+ if (domlictxt != null)
+ lictxt.append(domlictxt);
+ lictxt.append(Resource.getTextResource("textFiles/license.html"));
+
+ JEditorPane license = new JEditorPane();
+ license.setEditable(false);
+ license.setEditorKit(new HTMLEditorKit());
+ license.setContentType("text/html");
+ license.addHyperlinkListener(this);
+ license.setText(lictxt.toString());
+ JScrollPane scroll = new JScrollPane(license);
+ scroll.setPreferredSize(new Dimension(300,200));
+ license.setCaretPosition(0);
+
+ about.add(scroll);
+ myPane.setMessage(about);
+ myPane.setMessageType(JOptionPane.INFORMATION_MESSAGE);
+ JDialog dialog = myPane.createDialog(null, Language.translate("About"));
+ dialog.setResizable(false);
+ Icon icon = Resource.getImageResource(Gateway.getProperty("banner"));
+ myPane.setIcon(icon);
+ dialog.pack();
+ dialog.setVisible(true);
+ }
+
+ public void hyperlinkUpdate(HyperlinkEvent e) {
+ try {
+ if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED)
+ Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler "+e.getURL().toString());
+ } catch (Exception ex) {
+ Logger.exceptionDialog(ex);
+ }
+ }
+
+ public void itemStateChanged(java.awt.event.ItemEvent e)
+ {
+ }
+}