package jas2.util.moverlayeredpane;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.event.*;
import jas2.util.multibuttontoolbar.*;
import jas2.plot.EditableLabel;

/**
 * The annotation toolbar for a MoverLayeredPane.
 * 
 * @author Peter Armstrong
 * @author Tony Johnson
 */
public class AnnotationToolBar extends jas2.util.multibuttontoolbar.MultiToolBar {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	public AnnotationToolBar() {
		JButton normalCursor			= new JButton(jas2.util.JASIcon.create(this, "images/defaultcursor.gif"));
		JButton noArrows				= new JButton(jas2.util.JASIcon.create(this, "images/linenoarrows.gif"));
		JButton arrowOnFront			= new JButton(jas2.util.JASIcon.create(this, "images/linefrontarrow.gif"));
		JButton arrowOnBack				= new JButton(jas2.util.JASIcon.create(this, "images/linebackarrow.gif"));
		JButton arrowsOnFrontAndBack	= new JButton(jas2.util.JASIcon.create(this, "images/linebotharrows.gif"));
		JButton arrowOnFrontFilled		= new JButton(jas2.util.JASIcon.create(this, "images/linefrontfilledarrow.gif"));
		JButton arrowOnBackFilled		= new JButton(jas2.util.JASIcon.create(this, "images/linebackfilledarrow.gif"));
		JButton arrowsOnFrontAndBackFilled = new JButton(jas2.util.JASIcon.create(this, "images/linebothfilledarrows.gif"));
		JButton more					= new JButton(jas2.util.JASIcon.create(this, "images/more.gif"));
		JButton labelNoBorder			= new JButton(jas2.util.JASIcon.create(this, "images/labelnoborder.gif"));
		JButton labelThinBorder			= new JButton(jas2.util.JASIcon.create(this, "images/labelthinborder.gif"));
		JButton labelThickBorder		= new JButton(jas2.util.JASIcon.create(this, "images/labelthickborder.gif"));
		
		normalCursor.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getTheMLP().setCursorState(MoverLayeredPane.CursorStates.OBJECT_SELECTION);
			}
		});
		noArrows.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getTheMLP().setCursorState(MoverLayeredPane.CursorStates.OBJECT_CREATION);
				getTheArrowFactory().setArrowHeadDrawState(MLPArrowFactory.ArrowheadDrawStates.NONE);
				getTheMLP().setMLPObjectFactory(getTheArrowFactory());
			}
		});
		arrowOnFront.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getTheMLP().setCursorState(MoverLayeredPane.CursorStates.OBJECT_CREATION);
				getTheArrowFactory().setArrowHeadDrawState(MLPArrowFactory.ArrowheadDrawStates.FINISH);
				getTheArrowFactory().setArrowHeadFillState(false);
				getTheMLP().setMLPObjectFactory(getTheArrowFactory());
			}
		});
		arrowOnFrontFilled.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getTheMLP().setCursorState(MoverLayeredPane.CursorStates.OBJECT_CREATION);
				getTheArrowFactory().setArrowHeadDrawState(MLPArrowFactory.ArrowheadDrawStates.FINISH);
				getTheArrowFactory().setArrowHeadFillState(true);
				getTheMLP().setMLPObjectFactory(getTheArrowFactory());
			}
		});
		arrowOnBack.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getTheMLP().setCursorState(MoverLayeredPane.CursorStates.OBJECT_CREATION);
				getTheArrowFactory().setArrowHeadDrawState(MLPArrowFactory.ArrowheadDrawStates.START);
				getTheArrowFactory().setArrowHeadFillState(false);
				getTheMLP().setMLPObjectFactory(getTheArrowFactory());
			}
		});
		arrowOnBackFilled.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getTheMLP().setCursorState(MoverLayeredPane.CursorStates.OBJECT_CREATION);
				getTheArrowFactory().setArrowHeadDrawState(MLPArrowFactory.ArrowheadDrawStates.START);
				getTheArrowFactory().setArrowHeadFillState(true);
				getTheMLP().setMLPObjectFactory(getTheArrowFactory());
			}
		});
		arrowsOnFrontAndBack.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getTheMLP().setCursorState(MoverLayeredPane.CursorStates.OBJECT_CREATION);
				getTheArrowFactory().setArrowHeadDrawState(MLPArrowFactory.ArrowheadDrawStates.BOTH);
				getTheArrowFactory().setArrowHeadFillState(false);
				getTheMLP().setMLPObjectFactory(getTheArrowFactory());
			}
		});
		arrowsOnFrontAndBackFilled.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getTheMLP().setCursorState(MoverLayeredPane.CursorStates.OBJECT_CREATION);
				getTheArrowFactory().setArrowHeadDrawState(MLPArrowFactory.ArrowheadDrawStates.BOTH);
				getTheArrowFactory().setArrowHeadFillState(true);
				getTheMLP().setMLPObjectFactory(getTheArrowFactory());
			}
		});
		more.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.out.println("Show dialog box");
				getTheArrowFactory().showArrowConfigDialog();
				getTheMLP().setMLPObjectFactory(getTheArrowFactory());
			}
		});
		labelNoBorder.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getTheMLP().setCursorState(MoverLayeredPane.CursorStates.OBJECT_CREATION);
				getTheLabelFactory().setLabelBorderDrawState(MLPLabelFactory.LabelBorderDrawStates.NONE);
				getTheMLP().setMLPObjectFactory(getTheLabelFactory());
			}
		});
		labelThinBorder.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getTheMLP().setCursorState(MoverLayeredPane.CursorStates.OBJECT_CREATION);
				getTheLabelFactory().setLabelBorderDrawState(MLPLabelFactory.LabelBorderDrawStates.THIN);
				getTheMLP().setMLPObjectFactory(getTheLabelFactory());
			}
		});
		labelThickBorder.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				getTheMLP().setCursorState(MoverLayeredPane.CursorStates.OBJECT_CREATION);
				getTheLabelFactory().setLabelBorderDrawState(MLPLabelFactory.LabelBorderDrawStates.THICK);
				getTheMLP().setMLPObjectFactory(getTheLabelFactory());
			}
		});
		
		jas2.util.multibuttontoolbar.MultiButtonGroup arrow =
			new jas2.util.multibuttontoolbar.MultiButtonGroup(noArrows);
		arrow.add(arrowOnFront);
		arrow.add(arrowOnBack);
		arrow.add(arrowsOnFrontAndBack);
		arrow.add(arrowOnFrontFilled);
		arrow.add(arrowOnBackFilled);
		arrow.add(arrowsOnFrontAndBackFilled);
		arrow.add(more);

		jas2.util.multibuttontoolbar.MultiButtonGroup label =
			new jas2.util.multibuttontoolbar.MultiButtonGroup(labelNoBorder);
		label.add(labelThinBorder);
		label.add(labelThickBorder);
		
		add(normalCursor);
		add(arrow);
		add(label);
		setName("testMBT");
	}
	//
	//convenience methods (save.a.lot.of.typing)
	//
	private MLPArrowFactory getTheArrowFactory() {
		return jas2.swingstudio.JavaAnalysisStudio.getApp().getTheArrowFactory();
	}
	private MLPLabelFactory getTheLabelFactory() {
		return jas2.swingstudio.JavaAnalysisStudio.getApp().getTheLabelFactory();
	}
	private MoverLayeredPane getTheMLP() {
		return jas2.swingstudio.JavaAnalysisStudio.getApp().getMLP();
	}
}

 

Ads help maintain this website.