package org.jlab.groot.ui;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.JTextField;
import javax.swing.JToggleButton;
import javax.swing.SwingUtilities;
import javax.swing.border.TitledBorder;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import org.jlab.groot.base.AxisAttributes.AxisAttributesPane;
import org.jlab.groot.base.DatasetAttributes.DatasetAttributesPane;
import org.jlab.groot.base.FontProperties;
import org.jlab.groot.graphics.EmbeddedCanvas;
import org.jlab.groot.graphics.Histogram2DPlotter;
import org.jlab.groot.graphics.IDataSetPlotter;
public class OptionsPanel extends JPanel {
int pad;
EmbeddedCanvas can = null;
JTabbedPane tabbedPane = null;
JTabbedPane datasetPanes = null;
public OptionsPanel(EmbeddedCanvas can, int pad){
this.can = can;
this.pad = pad;
tabbedPane = new JTabbedPane();
this.setLayout(new BorderLayout());
this.add(tabbedPane,BorderLayout.CENTER);
initMain();
initAxes();
initDatasets();
}
private void initMain() {
JPanel main = new JPanel();
main.setLayout(new GridBagLayout());
main.setMinimumSize(new Dimension(200,300));
GridBagConstraints c = new GridBagConstraints();
//main.add(new JLabel("Main Panel"));
int yGrid = 0;
c.fill = GridBagConstraints.BOTH;
c.gridy = yGrid++;
c.weightx = 1.0;
c.weighty = 1.0;
JPanel frameOptions = new JPanel();
initFrameOptions(frameOptions);
JPanel generalOptions = new JPanel();
initAxisOptions(generalOptions);
main.add(generalOptions,c);
c.gridy = yGrid++;
c.weightx = 1.0;
c.weighty = 1.0;
main.add(frameOptions,c);
tabbedPane.add("Main", main);
}
private void initAxisOptions(JPanel axisOptions){
JCheckBox[] applyToAllCheckBoxes;
RangeSlider xSlider, ySlider;
String xAxisLabel, yAxisLabel, title;
String[] systemFonts = FontProperties.getSystemFontsArray();
String[] fontSize = FontProperties.getFontSizeArray();
axisOptions.setLayout(new BorderLayout());
JPanel optionsPanel = new JPanel(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.BOTH;
optionsPanel.setBorder(new TitledBorder("Options"));
String[] lineThickness = {"1","2","3","4","5","6","7","8"};
String[] fillColor = {"34","35","36","37","38"};
String[] colors = {"1","2","3","4","5","6","7","8","9"};
String[] colorNames = {"Black","White","Red","Green","Blue","Yellow","Magenta","Cyan","Dark Green","Purple-ish"};
//String[] fontSize = {"6","8","10","12","14","16","18","24","36","48"};
//int[] fontSizeInts = {6,8,10,12,14,16,18,24,36,48};
String[] translucency = {"100%","80%","60%","40%","20%"};
//JComboBox lineWidthBox = new JComboBox(lineThickness);
JComboBox fontsBox = new JComboBox(systemFonts);
fontsBox.setSelectedIndex(0);
for(int i=0; i0){
if(can.getPad(pad).getDatasetPlotters().get(0) instanceof Histogram2DPlotter){
AxisAttributesPane panez = new AxisAttributesPane(can.getPad(pad).getAxisFrame().getAxisZ().getAttributes());
panez.addAttributeListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
can.repaint();
}
});
axes.add("Z Axis", panez);
}
}
tabbedPane.add("Axes",axes);
}
private void initDatasets() {
List datasets = can.getPad(pad).getDatasetPlotters();
ArrayList datasetPaneList = new ArrayList();
datasetPanes = new JTabbedPane();
for(IDataSetPlotter dataset : datasets){
DatasetAttributesPane tempPane = new DatasetAttributesPane(dataset.getDataSet().getAttributes());
tempPane.addAttributeListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
can.repaint();
}
});
datasetPaneList.add(tempPane);
datasetPanes.add(dataset.getName(),tempPane);
ActionListener removeButtonListener = new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
for(int i=0; i=1)?tabSelectionIndex-1:0);
datasetPanes.remove(i);
datasetPaneList.remove(i);
datasetPanes.repaint();
can.getPad(pad).remove(datasets.get(i).getDataSet());
break;
}
}
can.update();
}
};
ActionListener defaultButtonListener = new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
for(int i=0; i=1)?tabSelectionIndex-1:0);
datasetPaneList.remove(i);
datasetPanes.setComponentAt(i, pane);
datasetPaneList.add(i,pane);
datasetPanes.repaint();
break;
}
}
can.update();
}
};
tempPane.buttonRemove.addActionListener(removeButtonListener);
tempPane.buttonDefault.addActionListener(defaultButtonListener);
}
tabbedPane.add("Datasets",datasetPanes);
}
}
Ads help maintain this website.