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.