// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: packimports(3) 
// Source File Name:   RootObjectBrowser.java

package hep.rootio.util;

import hep.rootio.RootFileReader;
import hep.rootio.interfaces.RootObject;
import hep.rootio.interfaces.TDirectory;
import hep.rootio.interfaces.TKey;
import hep.rootio.interfaces.TNamed;

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTree;
import javax.swing.ToolTipManager;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.filechooser.FileFilter;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;

// Referenced classes of package hep.rootio.util:
//            RootDirectoryTreeCellRenderer, RootObjectTreeCellRenderer, BranchEntry, RootObjectTreeModel, 
//            StreamerInfoBrowser, RootDirectoryTreeModel, HackedFileSystemView

public class RootObjectBrowser extends JPanel
    implements TreeSelectionListener
{
    private static class RootFileFilter extends FileFilter
    {

        public boolean accept(File file)
        {
            return file.isDirectory() || file.getName().endsWith(".root");
        }

        public String getDescription()
        {
            return "Root Files (*.root)";
        }

        private RootFileFilter()
        {
        }

    }

    private class RootHelpMenu extends JMenu
    {


        RootHelpMenu()
        {
            super("Help");
            add(new JMenuItem("About...") {

                public void fireActionPerformed(ActionEvent e)
                {
                    JOptionPane.showMessageDialog(RootObjectBrowser.this, "RootObjectBrowser $Id: RootObjectBrowser.java,v 1.10 2001/06/04 16:17:53 tonyj Exp $
Author: Tony Johnson (tonyj@slac.stanford.edu)"); } }); } } private class RootToolsMenu extends JMenu { void setFileOpen(boolean state) { view.setEnabled(state); } private JMenuItem view; RootToolsMenu() { super("Tools"); add(view = new JMenuItem("View Streamer Info...") { public void fireActionPerformed(ActionEvent e) { showStreamerInfo(); } }); } } private class RootFileMenu extends JMenu { RootFileMenu() { super("File"); add(new JMenuItem("Open...") { public void fireActionPerformed(ActionEvent e) { JFileChooser dlg = null; try { if(System.getSecurityManager() != null && System.getProperty("os.name").indexOf("indows") > 0 && System.getProperty("java.version").startsWith("1.3")) dlg = new JFileChooser("Open Root File...", new HackedFileSystemView()); } catch(SecurityException securityexception) { } if(dlg == null) dlg = new JFileChooser("Open Root File..."); dlg.setFileFilter(new RootFileFilter()); int rc = dlg.showOpenDialog(RootObjectBrowser.this); if(rc == 0) try { setRootFile(dlg.getSelectedFile()); } catch(IOException x) { error(x); } } }); add(new JMenuItem("Exit") { public void fireActionPerformed(ActionEvent e) { System.exit(0); } }); } } private class RootMenuBar extends JMenuBar { void setFileOpen(boolean state) { tools.setFileOpen(state); } private RootToolsMenu tools; RootMenuBar() { add(new RootFileMenu()); add(tools = new RootToolsMenu()); add(new RootHelpMenu()); } } public RootObjectBrowser() { super(new BorderLayout()); tree = new JTree(emptyTree); tree.setCellRenderer(new RootDirectoryTreeCellRenderer()); tree.addTreeSelectionListener(this); objTree = new JTree(emptyTree); objTree.setCellRenderer(new RootObjectTreeCellRenderer()); ToolTipManager.sharedInstance().registerComponent(objTree); JSplitPane split = new JSplitPane(1, new JScrollPane(tree), new JScrollPane(objTree)); add(split, "Center"); add(menuBar = new RootMenuBar(), "North"); menuBar.setFileOpen(false); setPreferredSize(new Dimension(500, 300)); split.setDividerLocation(245); ToolTipManager.sharedInstance().setEnabled(true); } public void setRootFile(File file) throws IOException { Cursor old = getCursor(); setCursor(Cursor.getPredefinedCursor(3)); try { reader = new RootFileReader(file); TreeModel model = new RootDirectoryTreeModel(reader) { public void handleException(IOException x) { error(x); x.printStackTrace(); super.handleException(x); } }; tree.setModel(model); tree.setRowHeight(20); tree.setLargeModel(true); menuBar.setFileOpen(true); } finally { setCursor(old); } } public static void main(String argv[]) throws IOException { if(argv.length > 1) usage(); if(argv.length == 1 && argv[0].startsWith("-")) usage(); JFrame frame = new JFrame("Root Object Browser"); RootObjectBrowser browser = new RootObjectBrowser(); if(argv.length == 1) browser.setRootFile(new File(argv[0])); frame.setContentPane(browser); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.pack(); frame.show(); } private static void usage() { System.out.println("java RootObjectBrowser []"); System.exit(0); } public void valueChanged(TreeSelectionEvent event) { Cursor old = getCursor(); setCursor(Cursor.getPredefinedCursor(3)); try { TreePath path = tree.getSelectionPath(); if(path == null) { objTree.setModel(emptyTree); } else { Object node = path.getLastPathComponent(); if(node instanceof BranchEntry) node = ((BranchEntry)node).getValue(); if(node instanceof TKey) { TKey key = (TKey)node; objTree.setModel(new RootObjectTreeModel(key.getObject(), key.getName())); } else if(node instanceof TNamed) objTree.setModel(new RootObjectTreeModel(node, ((TNamed)node).getName())); else if(node instanceof RootObject) objTree.setModel(new RootObjectTreeModel(node, "")); else if(node.getClass().isArray()) objTree.setModel(new RootObjectTreeModel(node, "")); else if(node instanceof java.util.List) objTree.setModel(new RootObjectTreeModel(node, "")); else objTree.setModel(emptyTree); } } catch(IOException x) { objTree.setModel(emptyTree); x.printStackTrace(); error(x); } finally { setCursor(old); } } private void error(IOException x) { JOptionPane.showMessageDialog(this, x.getMessage(), "Error", 0); } private void showStreamerInfo() { try { Comparator sortByName = new Comparator() { public int compare(Object a, Object b) { return ((TNamed)a).getName().compareTo(((TNamed)b).getName()); } public boolean equals(Object o) { return o.getClass() == getClass(); } }; java.util.List streamerInfo = new ArrayList(reader.streamerInfo()); Collections.sort(streamerInfo, sortByName); StreamerInfoBrowser browser = new StreamerInfoBrowser(streamerInfo); JFrame f = new JFrame("Root Streamer Info Browser"); f.setContentPane(browser); f.setDefaultCloseOperation(2); f.pack(); f.show(); } catch(IOException x) { error(x); } } private static final String aboutMessage = "RootObjectBrowser $Id: RootObjectBrowser.java,v 1.10 2001/06/04 16:17:53 tonyj Exp $
Author: Tony Johnson (tonyj@slac.stanford.edu)"; private static final TreeModel emptyTree = null; private JTree tree; private JTree objTree; private RootFileReader reader; private RootMenuBar menuBar; }

Ads help maintain this website.