package jas.hist.test; import jas.hist.JASHist; import jas.hist.XMLHistBuilder; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.BufferedReader; import java.io.FileReader; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.SwingUtilities; class XMLHistViewer extends JFrame { public XMLHistViewer(String str, String fileName) { super(str); getContentPane().add(new JLabel("Reading "+fileName+"...")); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) {System.exit(0);} }); } void load(String fileName) { try { xhb = new XMLHistBuilder(new BufferedReader(new FileReader(fileName)),fileName); final JASHist hist = xhb.getSoloPlot(); if (hist == null) throw new RuntimeException("No Histogram found"); final JPanel p = new JPanel(new BorderLayout()); p.add("Center",hist); JButton export = new JButton("Save As..."); export.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { hist.saveAs(); } }); p.add("South",export); SwingUtilities.invokeLater(new Runnable() { public void run() { setContentPane(p); pack(); } }); } catch (final Throwable t) { SwingUtilities.invokeLater(new Runnable() { public void run() { dispose(); JOptionPane.showMessageDialog(null, t.getMessage(), "Error", JOptionPane.ERROR_MESSAGE); System.exit(0); } }); } } public static void main(String args[]) { XMLHistViewer xhv = new XMLHistViewer("XMLHistViewer", args[0]); xhv.pack(); xhv.show(); xhv.load(args[0]); // Attempt to register functions/fitters // Will fail of Fitting.jar is not in the CLASSPATH try { Class c = XMLHistViewer.class.forName("jasext.hist.Register"); java.lang.reflect.Method m = c.getMethod("init",noArgc); Object reg = c.newInstance(); m.invoke(reg,noArgs); } catch (Throwable t) { System.err.println("Unable to register functions/fitters"); t.printStackTrace(); } // Attempt to register exporters // Will fail of freehep-*.jar is not in the CLASSPATH try { Class c = TestJASHist.class.forName("jas.export.Register"); java.lang.reflect.Method m = c.getMethod("init",noArgc); Object reg = c.newInstance(); m.invoke(reg,noArgs); } catch (Throwable t) { System.err.println("Unable to register exporters"); } } public final static Class[] noArgc = {}; public final static Object[] noArgs = {}; private XMLHistBuilder xhb; }