// Copyright 2000, SLAC, Stanford, California, U.S.A. package org.freehep.xml.menus.test; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.AbstractButton; import javax.swing.JComponent; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JPopupMenu; import javax.swing.JToolBar; import org.freehep.xml.menus.XMLMenuBuilder; import org.xml.sax.SAXException; /** * A simple example of how to use the XML menu system. For xml menu * system can also be combined with the command dispatch system. * * @see org.freehep.util.commanddispatcher * @see org.freehep.util.commanddispatcher.test.Test * * @author Tony Johnson (tonyj@slac.stanford.edu) * @version $Id: Test.java 8584 2006-08-10 23:06:37Z duns $ */ public class Test extends org.freehep.swing.test.TestFrame implements ActionListener { private class MyXMLMenuBuilder extends XMLMenuBuilder { protected JMenuItem createMenuItem(String className, String name, String type, String command) throws SAXException { JMenuItem result = super.createMenuItem(className, name, type, command); result.addActionListener(Test.this); return result; } protected AbstractButton createToolBarItem(String className, String name, String type, String command) throws SAXException { AbstractButton result = super.createToolBarItem(className, name, type, command); result.addActionListener(Test.this); return result; } } protected JComponent createComponent() { JPanel main = new JPanel(new BorderLayout()); try { java.net.URL xml = getClass().getResource("menus.xml"); final XMLMenuBuilder menus = new MyXMLMenuBuilder(); menus.build(xml); JMenuBar b = menus.getMenuBar("mainMenu"); main.add(b,BorderLayout.NORTH); JPanel p = new JPanel(); main.add(p,BorderLayout.CENTER); p.setLayout(new BorderLayout()); JToolBar t = menus.getToolBar("applicationToolBar"); p.add(t,BorderLayout.NORTH); addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent e) { if (e.isPopupTrigger()) showPopup(e); super.mousePressed(e); } public void mouseReleased(MouseEvent e) { if (e.isPopupTrigger()) showPopup(e); super.mouseReleased(e); } private void showPopup(MouseEvent e) { JPopupMenu popup = menus.getPopupMenu("toolbarPopupMenu"); popup.show(Test.this,e.getX(),e.getY()); } }); } catch (Exception x) { x.printStackTrace(); System.exit(0); } main.setPreferredSize(new Dimension(400,200)); return main; } public static void main(String[] argv) throws Exception { new Test(); } public void actionPerformed(ActionEvent e) { System.out.println("Command="+e.getActionCommand()); } }