/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package org.jlab.groot.studio;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
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.JSeparator;
import javax.swing.JSplitPane;
import javax.swing.JTree;
import javax.swing.KeyStroke;
import javax.swing.border.BevelBorder;
import javax.swing.tree.TreePath;
import org.jlab.groot.base.GStyle;
import org.jlab.groot.data.DataVector;
import org.jlab.groot.data.DatasetOperations;
import org.jlab.groot.data.H1F;
import org.jlab.groot.data.H2F;
import org.jlab.groot.data.IDataSet;
import org.jlab.groot.graphics.EmbeddedCanvas;
import org.jlab.groot.graphics.EmbeddedCanvasTabbed;
import org.jlab.groot.tree.DatasetDescriptor;
import org.jlab.groot.tree.DynamicTree;
import org.jlab.groot.tree.TreeAnalyzer;
import org.jlab.groot.tree.TreeCut;
import org.jlab.groot.tree.TreeFile;
import org.jlab.groot.tree.TreeProvider;
import org.jlab.groot.ui.CutPanel;
import org.jlab.groot.ui.DescriptorPanel;
import org.jlab.groot.ui.TreeEditor;
import org.jlab.groot.tree.TreeTextFile;
/**
*
* @author gavalian
*/
public class StudioUI implements MouseListener, ActionListener {
JSplitPane splitPane = null;
JPanel navigationPane = null;
EmbeddedCanvas drawCanvas = null;
EmbeddedCanvasTabbed drawCanvasTabbed = null;
JFrame frame = null;
TreeProvider studioTree = null;
JTree jtree = null;
JTree jtreeAnalyzer = null;
JPanel studioPane = null;
JPanel statusPane = null;
JMenuBar menuBar = null;
StudioToolBar toolBar = null;
TreeAnalyzer analyzer = new TreeAnalyzer();
Boolean previewMode = true;
int previewEvents = 1000;
JSplitPane secondSplitPane = null;
JSplitPane thirdSplitPane = null;
JScrollPane scrollPane = null;
JCheckBoxMenuItem menuPreviewMode;
TreePath lastLeaf = null;
JLabel statusLabel = new JLabel("Status:");
JLabel processedLabel = new JLabel("Processed:");
ArrayList importMenuPlugins = new ArrayList();
public void addImportMenuItem(JMenuItem item) {
importMenuPlugins.add(item);
}
public StudioUI() {
}
public void init(TreeProvider tree) {
frame = new JFrame("GROOT Studio");
frame.addWindowListener(new java.awt.event.WindowAdapter() {
@Override
public void windowClosing(java.awt.event.WindowEvent windowEvent) {
if (JOptionPane.showConfirmDialog(frame, "Are you sure to close this window?", "Really Closing?",
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
frame.setVisible(false);
// System.exit(0);
}
}
});
studioTree = tree;
frame.setMinimumSize(new Dimension(300, 300));
initUI();
frame.pack();
Dimension screensize = Toolkit.getDefaultToolkit().getScreenSize();
frame.setSize((int) (screensize.getHeight() * .75 * 1.618), (int) (screensize.getHeight() * .75));
splitPane.setDividerLocation(0.4);
secondSplitPane.setDividerLocation(0.4);
thirdSplitPane.setDividerLocation(0.2);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public StudioUI(TreeProvider tree) {
init(tree);
}
private void initUI() {
studioPane = new JPanel();
studioPane.setLayout(new BorderLayout());
initMenu();
splitPane = new JSplitPane();
navigationPane = new JPanel();
// navigationPane.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
JPanel canvasPane = new JPanel();
canvasPane.setLayout(new BorderLayout());
canvasPane.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
drawCanvas = new EmbeddedCanvas();// 500,500,2,2);
drawCanvasTabbed = new EmbeddedCanvasTabbed();
canvasPane.add(drawCanvasTabbed, BorderLayout.CENTER);
splitPane.setRightComponent(canvasPane);
// DefaultMutableTreeNode top = studioTree.getTree();
DynamicTree top = studioTree.tree().getDynamicTree();
// jtree = new JTree(top);
top.getTree().addMouseListener(this);
// top.setMinimumSize(new Dimension(100, 50));
// DefaultMutableTreeNode topa = analyzer.getTree();
// jtreeAnalyzer = new JTree(topa);
scrollPane = new JScrollPane(top);
secondSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
thirdSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
secondSplitPane.setTopComponent(scrollPane);
// DynamicTree tree = new DynamicTree();
// JScrollPane scrollPane2 = new JScrollPane(jtreeAnalyzer);
/*
* JScrollPane scrollPane2 = new JScrollPane(tree);
* DefaultMutableTreeNode node = tree.addObject("Tree");
* tree.addObject(node,"tree1"); tree.addObject(node,"tree2");
* tree.addObject(node,"tree3");
*/
thirdSplitPane.setTopComponent(studioTree.tree().getSelector().getTree());
studioTree.tree().getSelector().getTree().getTree().addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("Mouse clicked!");
if (e.getClickCount() == 2) {
TreePath path = studioTree.tree().getSelector().getTree().getTree().getPathForLocation(e.getX(),
e.getY());
if (path != null) {
System.out.println(path.getLastPathComponent().toString());
// for (int i = 0; i <
// studioTree.tree().getSelector().getSelectorCuts().size();
// i++) {
if (studioTree.tree().getSelector().getSelectorCuts()
.containsKey(path.getLastPathComponent().toString())) {
if ((e.getModifiers() & InputEvent.CTRL_MASK) != 0) {
editCut(studioTree.tree().getSelector().getSelectorCuts()
.get(path.getLastPathComponent().toString()));
}
}
// }
}
}
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
});
thirdSplitPane.setBottomComponent(analyzer.getTree());
analyzer.getTree().getTree().addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("Mouse clicked!");
if (e.getClickCount() == 2) {
TreePath path = analyzer.getTree().getTree().getPathForLocation(e.getX(), e.getY());
if (path != null) {
System.out.println(path.getLastPathComponent().toString());
for (int i = 0; i < analyzer.getDescriptors().size(); i++) {
System.out.println(analyzer.getDescriptors().get(i).getDescName() + " "
+ path.getLastPathComponent().toString());
if (analyzer.getDescriptors().get(i).getDescName()
.equals(path.getLastPathComponent().toString())) {
System.out.println(e.getModifiers());
if ((e.getModifiers() & InputEvent.CTRL_MASK) != 0) {
editDescriptor(analyzer.getDescriptors().get(i));
} else {
if ((e.getModifiers() & InputEvent.SHIFT_MASK) != 0) {
System.out.println("Drawing same");
drawCanvasTabbed.getCanvas().draw(analyzer.getDescriptors().get(i).getDataSet(),
"same");
drawCanvasTabbed.getCanvas().update();
} else {
drawCanvasTabbed.getCanvas()
.drawNext(analyzer.getDescriptors().get(i).getDataSet());
drawCanvasTabbed.getCanvas().update();
}
}
}
}
// scanTreeItem(path.getLastPathComponent().toString());
// String cutString =
// path.getLastPathComponent().toString();
}
}
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
});
secondSplitPane.setBottomComponent(thirdSplitPane);
splitPane.setLeftComponent(secondSplitPane);
splitPane.setDividerLocation(0.5);
studioPane.add(splitPane, BorderLayout.CENTER);
frame.add(studioPane);
}
private void initMenu() {
statusPane = new JPanel();
statusPane.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 1;
c.weighty = 1;
// statusPane.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED));
JPanel statusPane1 = new JPanel();
JPanel statusPane2 = new JPanel();
JPanel statusPane3 = new JPanel();
statusPane1.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
statusPane2.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
statusPane3.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
statusPane1.add(statusLabel);
statusPane2.add(processedLabel);
statusPane3.add(new JLabel("Memory:"));
statusPane.add(statusPane1, c);
statusPane.add(statusPane2, c);
statusPane.add(statusPane3, c);
studioPane.add(statusPane, BorderLayout.PAGE_END);
// JToolBar toolBar = new JToolBar("");
// toolBar.add(new Button("Divide"));
// toolBar.add(new Button("Add"));
toolBar = new StudioToolBar(this);
toolBar.fastButton.setSelected(this.previewMode);
menuBar = new JMenuBar();
JMenu menuFile = new JMenu("File");
JMenuItem newStudioWindow = new JMenuItem("New Window");
JMenuItem menuFileOpen = new JMenuItem("Import ASCII File...");
JMenuItem menuFileOpenHipo = new JMenuItem("Open HIPO File...");
JMenuItem newHistogram = new JMenuItem("New Histogram...");
JMenuItem newHistogram2D = new JMenuItem("New 2D Histogram...");
JMenuItem newGraphErrors = new JMenuItem("New GraphErrors...");
JMenuItem exit = new JMenuItem("Exit");
JMenuItem closeWindow = new JMenuItem("Close Window");
JMenu menuEdit = new JMenu("Edit");
menuPreviewMode = new JCheckBoxMenuItem("Preview Mode");
JMenuItem menuOperations = new JMenuItem("Operations");
menuOperations.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
datasetOperationDialog();
}
});
JMenu menuRun = new JMenu("Run");
JMenuItem menuItemPlay = new JMenuItem("Play");
menuItemPlay.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
processPlay();
}
});
menuRun.add(menuItemPlay);
menuEdit.add(menuPreviewMode);
menuEdit.add(menuOperations);
menuPreviewMode.setSelected(previewMode);
menuPreviewMode.setAccelerator(
KeyStroke.getKeyStroke(KeyEvent.VK_P, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
menuPreviewMode.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
previewMode = menuPreviewMode.isSelected();
toolBar.fastButton.setSelected(previewMode);
}
});
JMenu menuHelp = new JMenu("Help");
JMenuItem about = new JMenuItem("About...");
menuHelp.add(about);
about.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
JOptionPane.showMessageDialog(null,
"GROOT Documentation\n https://github.com/gavalian/groot/wiki\n Bug Reporting:\n https://github.com/gavalian/groot/issues\n Gagik Gavalian and Will Phelps\n gavalian@jlab.org , wphelps@jlab.org",
"About", JOptionPane.INFORMATION_MESSAGE);
}
});
closeWindow.setAccelerator(
KeyStroke.getKeyStroke(KeyEvent.VK_W, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
closeWindow.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
frame.dispose();
}
});
newStudioWindow.setAccelerator(
KeyStroke.getKeyStroke(KeyEvent.VK_N, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
newStudioWindow.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
new StudioUI(studioTree);
}
});
menuFileOpen.setAccelerator(
KeyStroke.getKeyStroke(KeyEvent.VK_O, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
menuFileOpen.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
String file = chooseFile("Select ASCII File to Open", true);
openASCIIFile(file);
}
});
menuFileOpenHipo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
KeyEvent.SHIFT_MASK | Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
menuFileOpenHipo.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
String file = chooseFile("Select HIPO File to Open", true);
openHipoFile(file);
}
});
exit.setAccelerator(
KeyStroke.getKeyStroke(KeyEvent.VK_Q, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
exit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
System.exit(0);
}
});
newHistogram.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,
KeyEvent.SHIFT_MASK | Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));
newHistogram.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
addDescriptor(1);
}
});
newHistogram2D.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
addDescriptor(2);
}
});
newGraphErrors.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
addDescriptor(3);
}
});
menuFile.add(newStudioWindow);
menuFile.add(new JSeparator());
menuFile.add(menuFileOpen);
menuFile.add(menuFileOpenHipo);
for (JMenuItem item : this.importMenuPlugins) {
menuFile.add(item);
}
menuFile.add(new JSeparator());
menuFile.add(newHistogram);
menuFile.add(newHistogram2D);
menuFile.add(newGraphErrors);
menuFile.add(new JSeparator());
menuFile.add(closeWindow);
menuFile.add(exit);
menuBar.add(menuFile);
menuBar.add(menuEdit);
menuBar.add(menuRun);
menuBar.add(menuHelp);
studioPane.add(toolBar.getToolBar(), BorderLayout.PAGE_START);
frame.setJMenuBar(menuBar);
}
public void openHipoFile(String file) {
if (file != null) {
System.out.println("Open new hipo File:" + file);
TreeFile tree = new TreeFile("HipoTree");
tree.openFile(file);
// new StudioUI(tree);
}
}
public void openASCIIFile(String file) {
if (file != null) {
System.out.println("Open new ASCII File:" + file);
TreeTextFile tree = new TreeTextFile("TextTree");
tree.readFile(file);
new StudioUI(tree);
}
}
public void createNewGraphErrors() {
System.out.println("Create new graph errors");
}
public void createNewHistogram() {
System.out.println("Create new Histogram");
}
public void createNewHistogram2D() {
System.out.println("Create new Histogram 2D");
}
public void datasetOperationDialog() {
JDialog dialog = DatasetOperations.createOperations(frame, drawCanvasTabbed.getCanvas().getObjectMap());
dialog.setLocationRelativeTo(this.frame);
dialog.setVisible(true);
List results = ((DatasetOperations) dialog.getContentPane()).getResults();
System.out.println("Finished operation result size = " + results.size());
for (int i = 0; i < results.size(); i++) {
drawCanvasTabbed.getCanvas().drawNext(results.get(i));
}
// dialog.setLocationRelativeTo(this.frame);
// dialog.setVisible(true);
}
public String chooseFile(String name, boolean open) {
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(chooser.getCurrentDirectory());
chooser.setDialogTitle(name);
chooser.setAcceptAllFileFilterUsed(true);
if (open) {
if (chooser.showOpenDialog(new JFrame()) == JFileChooser.APPROVE_OPTION) {
return chooser.getSelectedFile().toString();
} else {
return null;
}
} else {
if (chooser.showSaveDialog(new JFrame()) == JFileChooser.APPROVE_OPTION) {
return chooser.getSelectedFile().toString();
} else {
return null;
}
}
}
public H1F scanTreeItem(TreePath item) {
// if (this.studioTree.tree().hasBranch(item) == true) {
TreePath[] paths = {item};
// List vector =
// studioTree.getVector(item,studioTree.getSelector());
System.out.println("getting vector for item = " + item);
List vec;
if (this.previewMode) {
vec = studioTree.actionTreeNode(paths, previewEvents);
} else {
vec = studioTree.actionTreeNode(paths, -1);
}
if (vec.size() >= 1) {
System.out.println("result = " + vec.get(0).size());
H1F h1d = H1F.create(item.getLastPathComponent().toString(), vec.get(0).getBinSuggestion(), vec.get(0));
h1d.setTitle(item.getLastPathComponent().toString());
h1d.setTitleX(item.getLastPathComponent().toString());
h1d.setTitleY("Entries");
return h1d;
}
// h1d.setOptStat(11111);
// h1d.setLineColor(1);
// h1d.setFillColor(43);
return null;
}
public H2F scanTreeItemH2F(TreePath item) {
TreePath[] paths = {lastLeaf, item};
System.out.println("getting vector for item = " + item);
List vec;
if (this.previewMode) {
vec = studioTree.actionTreeNode(paths, previewEvents);
} else {
vec = studioTree.actionTreeNode(paths, -1);
}
System.out.println("Vector size"+vec.size());
if (vec.size() == 2) {
H2F h2d = H2F.create(
item.getLastPathComponent().toString() + "_vs_" + lastLeaf.getLastPathComponent().toString(),
vec.get(0).getBinSuggestion(), vec.get(1).getBinSuggestion(), vec.get(0), vec.get(1));
h2d.setTitle(item.getLastPathComponent().toString() + ":" + lastLeaf.toString());
h2d.setTitleX(item.getLastPathComponent().toString());
h2d.setTitleY(lastLeaf.getLastPathComponent().toString());
return h2d;
}
return null;
}
public void processPlay() {
statusLabel.setText("Status:Running");
processedLabel.setText("Processed: 0 events");
System.out.println("---> Replaying all the descriptors from the tree");
if (this.previewMode == true) {
this.analyzer.process(studioTree.tree(), this.previewEvents);
processedLabel.setText("Processed: " + this.previewEvents + " events");
} else {
this.analyzer.process(studioTree.tree());
processedLabel.setText("Processed: " + studioTree.tree().getEntries() + " events");
}
System.out.println("---> done replaying");
statusLabel.setText("Status: Finished Running");
}
public boolean isTree(String item) {
return this.studioTree.tree().getName() == item;
}
public void addCut() {
System.out.println("doing some stuff...");
CutPanel cutPane = new CutPanel(studioTree.tree());
JFrame frame = new JFrame("Cut Editor");
// frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(cutPane);
frame.pack();
frame.setLocationRelativeTo(this.frame);
frame.setMinimumSize(frame.getSize());
frame.setVisible(true);
}
private void editCut(TreeCut treeCut) {
System.out.println("Editing cut");
CutPanel cutPane = new CutPanel(studioTree.tree(), treeCut);
JFrame frame = new JFrame("Cut Editor");
// frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(cutPane);
frame.pack();
frame.setLocationRelativeTo(this.frame);
frame.setMinimumSize(frame.getSize());
frame.setVisible(true);
}
public void addDescriptor(int dim) {
// panel = new DescriptorPanel(studioTree,analyzer,2);
JFrame frame = new JFrame("Edit Histogram");
DescriptorPanel panel = new DescriptorPanel(studioTree.tree(), analyzer, dim);
frame.add(panel);
frame.pack();
frame.setLocationRelativeTo(this.frame);
// frame.setMinimumSize(new
// Dimension(frame.getSize().getHeight()/2,frame.getSize().getWidth()/2));
frame.setVisible(true);
}
public void editDescriptor(DatasetDescriptor desc) {
JFrame frame = new JFrame("Edit Descriptor");
DescriptorPanel panel = new DescriptorPanel(studioTree.tree(), analyzer, desc);
frame.add(panel);
frame.pack();
frame.setLocationRelativeTo(this.frame);
// frame.setMinimumSize(new
// Dimension(frame.getSize().getHeight()/2,frame.getSize().getWidth()/2));
frame.setVisible(true);
}
/*
* public void fillDescriptors(){ this.analyzer. }
*/
/*
* public void updateTree() { DefaultTreeModel model = new
* DefaultTreeModel(studioTree.getTree()); this.jtree.setModel(model);
* DefaultTreeModel modelAnalyzer = new
* DefaultTreeModel(this.analyzer.getTree());
* this.jtreeAnalyzer.setModel(modelAnalyzer); }
*/
public static void main(String[] args) {
GStyle.getGraphErrorsAttributes().setMarkerStyle(0);
GStyle.getGraphErrorsAttributes().setMarkerColor(3);
GStyle.getGraphErrorsAttributes().setMarkerSize(7);
GStyle.getGraphErrorsAttributes().setLineColor(3);
GStyle.getGraphErrorsAttributes().setLineWidth(2);
GStyle.getFunctionAttributes().setLineWidth(6);
GStyle.getAxisAttributesX().setTitleFontSize(14);
GStyle.getAxisAttributesX().setLabelFontSize(12);
GStyle.getAxisAttributesY().setTitleFontSize(14);
GStyle.getAxisAttributesY().setLabelFontSize(12);
GStyle.getH1FAttributes().setFillColor(43);
GStyle.getH1FAttributes().setOptStat("1110");
TreeTextFile tree = new TreeTextFile("TextTree");
//tree.readFile("/Users/gavalian/Desktop/pp_10k.txt");
tree.readFile("src/main/resources/sample_data/studio_data/pp_10k_wlab.txt");
/*EventTree tree = new EventTree();
tree.addBranch("LAMBDA", "-211:2212:X+:X-:Xn");
tree.addLeaf("LAMBDA", "Mppi", "[-211]+[2212]", "mass2", "mass", "theta", "phi");
tree.addBranch("LAMBDA_EK", "11:321:X+:X-:Xn");
tree.addLeaf("LAMBDA_EK", "MxeK", "[b]+[t]-[11]-[321]", "mass2", "mass", "theta", "phi");
tree.addBranch("LAMBDA_EKG", "11:321:22:X+:X-:Xn");
tree.addLeaf("LAMBDA_EKG", "MxeK", "[b]+[t]-[11]-[321]", "mass2", "mass", "theta", "phi");
tree.addBranch("LAMBDA_EKNG", "11:321:X+:X-");
tree.addLeaf("LAMBDA_EKNG", "MxeK", "[b]+[t]-[11]-[321]", "mass2", "mass", "theta", "phi");
tree.initTree();
tree.setSource("/Users/wphelps/Desktop/collaboration_demo/eKplusLambda.DST.hipo");
// System.out.println("#Entries:"+tree.getEntries());
StudioUI sui = new StudioUI(new RandomTree());
*/
new StudioUI(tree);
}
@Override
public void mouseClicked(MouseEvent e) {
// System.out.println("Mouse clicked!");
if (e.getClickCount() == 2) {
// System.out.println("Mouse Double clicked!");
TreePath path = this.studioTree.tree().getDynamicTree().getTree().getPathForLocation(e.getX(), e.getY());
if (path != null) {
System.out.println(path.getLastPathComponent().toString());
H1F histogram = scanTreeItem(path);
if (histogram != null) {
if ((e.getModifiers() & InputEvent.CTRL_MASK) != 0) {
System.out.println("Control mask");
H2F h2d = scanTreeItemH2F(path);
drawCanvasTabbed.getCanvas().drawNext(h2d);
drawCanvasTabbed.getCanvas().update();
} else {
if ((e.getModifiers() & InputEvent.SHIFT_MASK) != 0) {
System.out.println("Drawing same");
drawCanvasTabbed.getCanvas().draw(histogram, "same");
drawCanvasTabbed.getCanvas().update();
} else {
drawCanvasTabbed.getCanvas().drawNext(histogram);
drawCanvasTabbed.getCanvas().update();
}
}
}
if (isTree(path.getLastPathComponent().toString())) {
JFrame editorFrame = new JFrame("Tree Editor:" + path.getLastPathComponent().toString());
TreeEditor editor = new TreeEditor(this.studioTree.tree());
editorFrame.add(editor);
editorFrame.pack();
editorFrame.setLocationRelativeTo(this.frame);
editorFrame.setVisible(true);
}
/*
* if(path.getLastPathComponent() instanceof Tree){
* //path.getLastPathComponent()); }
*/
// if(cutString.contains("Selector")==true){
// addCut();
// }
if (lastLeaf != path) {
lastLeaf = path;
}
}
}
}
@Override
public void mousePressed(MouseEvent e) {
// this.updateTree();
}
@Override
public void mouseReleased(MouseEvent e) {
// this.updateTree();
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("Action appeared = " + e.getActionCommand());
if (e.getActionCommand().compareTo("Add Descriptor") == 0) {
this.addDescriptor(1);
}
if (e.getActionCommand().compareTo("Add Cut") == 0) {
this.addCut();
}
if (e.getActionCommand().compareTo("Add GraphErrors") == 0) {
this.addDescriptor(3);
}
if (e.getActionCommand().compareTo("Play") == 0) {
this.processPlay();
}
if (e.getActionCommand().compareTo("Preview Mode") == 0) {
this.previewMode = this.toolBar.fastButton.isSelected();
menuPreviewMode.setSelected(previewMode);
}
if (e.getActionCommand().compareTo("Import ASCII") == 0) {
this.openASCIIFile(this.chooseFile("Import ASCII File", true));
}
if (e.getActionCommand().compareTo("Action Jack") == 0) {
datasetOperationDialog();
}
if (e.getActionCommand().compareTo("Edit Tree") == 0) {
JDialog dialog = studioTree.treeConfigure();
if(dialog!=null){
dialog.setLocationRelativeTo(frame);
dialog.setVisible(true);
if(dialog.getComponentCount()==1){
dialog.setVisible(false);
dialog.dispose();
}
}
}
}
}
Ads help maintain this website.