package jas2.swingstudio.adaptor;
import javax.swing.*;
import jas2.util.*;
import java.awt.event.*;
import java.util.*;
import jas2.job.HistogramAccess;
import jas2.hist.*;
import jas2.swingstudio.*;

public class HistogramAccessTreeAdaptor extends TreeAdaptor
{
	protected void init()
	{
		m_hist = (HistogramAccess) getAssociatedObject();
		reset();
	}
	protected void updateNode(int flags)
	{
		if ((flags & Job.SHOWNOW) != 0) 
		{
			if (JavaAnalysisStudio.getApp().getCurrentPage() != null) onShowInNewPlot();
			else onShowOnNewPage();
		}
		if ((flags & Job.RESET) != 0) reset();
	}
	/**
	 * Called when a RESET message is sent to this node
	 */
	private void reset()
	{
		DataSource ds = m_hist.getData();
		if      (ds instanceof Rebinnable1DHistogramData) m_data = new OneDTreeData(getTreeItem(),(Rebinnable1DHistogramData) ds);
		else if (ds instanceof Rebinnable2DHistogramData) m_data = new ScatterTreeData(getTreeItem(),(Rebinnable2DHistogramData) ds);
	}
	public void onShowInNewPlot()
	{
		JASPage page = JavaAnalysisStudio.getApp().getCurrentPage();
		page.addPlot();
		JASHist plot = page.getCurrentPlot();
		plot.addData(m_data).show(true);
		page.calculateTitlesAndLabels(plot);
		page.currentPlotUpdated();
	}
	public void enableShowInNewPlot(JASState state)
	{
		state.setEnabled(m_data != null && JavaAnalysisStudio.getApp().getCurrentPage() != null);
	}
	public void onShowOnNewPage()
	{
		JASPage page = JavaAnalysisStudio.getApp().createNewPage();
		JASHist plot = page.getCurrentPlot();
		plot.addData(m_data).show(true);
		page.calculateTitlesAndLabels(plot);
		page.currentPlotUpdated();
	}
	public void enableShowOnNewPage(JASState state)
	{
		state.setEnabled(m_data != null);
	}
	public void onShow()
	{
		JASPage page = JavaAnalysisStudio.getApp().createCurrentPage();
		if (page != null) 
		{
			JASHist plot = page.getCurrentPlot();
			plot.removeAllData();
			plot.addData(m_data).show(true);
			page.calculateTitlesAndLabels(plot);
			page.currentPlotUpdated();
		}
	}
	public void enableShow(JASState state)
	{
		state.setEnabled(m_data != null);
	}
	public void onOverlay()
	{
		JASPage page = JavaAnalysisStudio.getApp().getCurrentPage();
		JASHist plot = page.getCurrentPlot();
		plot.addData(m_data).show(true);
		page.calculateTitlesAndLabels(plot);
		page.currentPlotUpdated();
	}
	public void enableOverlay(JASState state)
	{
		JASPage page = JavaAnalysisStudio.getApp().getCurrentPage();
		if (page != null && m_data != null)
		{
			JASHist plot = page.getCurrentPlot();
			state.setEnabled(plot.getNumberOfDataSources()>0);
		}
		else state.setEnabled(false);
	}
	public void onDelete()
	{
		m_hist.delete();
	}
	public void onRename()
	{
		startEditing();
	}
	public boolean stopEditing(String newName)
	{
		try
		{
			m_hist.rename(newName);
			return true;
		}
		catch (hepjas.analysis.NamedObject.RenameException x)
		{
			JavaAnalysisStudio.getApp().error("Illegal name",x);
			return false;
		}
	}
	public void enableClearOnRewind(JASCheckboxState state)
	{
		state.setEnabled(m_hist.canSetClearOnRewind());
		state.setCheckbox(m_hist.isClearOnRewind());
	}
	public void onClearOnRewind(boolean value)
	{
		m_hist.setClearOnRewind(value);
	}
	public void onClear()
	{
		m_hist.clear();
	}
	public void onDoubleClick()
	{
		if (m_data != null) onShow();
	}
	public void onSelect()
	{
		JavaAnalysisStudio.getApp().setMessage(m_hist.getDescription());
	}
	protected boolean isEditable()
	{
		return true;
	}
	protected JPopupMenu getPopupMenu()
	{
		if (menu == null)
		{
			menu = new OnScreenPopupMenu();
			menu.add(new JASMenuItem("Show",'S'));
			menu.add(new JASMenuItem("Overlay",'O'));
			menu.add(new JASMenuItem("Show In New Plot",'P'));
			menu.add(new JASMenuItem("Show On New Page",'N'));
			menu.add(new JASMenuItem("Clear",'C'));
			menu.add(new JASCheckboxMenuItem("Clear On Rewind",'W'));
			menu.add(new JASMenuItem("Rename",'R'));
			menu.add(new JASMenuItem("Delete",'D'));
		}
		return menu;
	}
	private static JPopupMenu menu;
	private HistogramAccess m_hist = null;
	private DataSource m_data;
}


 

Ads help maintain this website.