OSPE_BrowserToolBar.java 6.77 KB
package osp.ui;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JToolBar;

import osp.utils.ToolBarButton;
import osp.utils.ToolBarToggleButton;

public class OSPE_BrowserToolBar extends JToolBar {
	private static final long serialVersionUID = 1L;

	private ToolBarActionInterface tooBarAction;

	static private final int NEW = 0, OPEN = 1, SAVE = 2, 
			UNDO = 3, MOVE = 4, TURN = 5, STOP = 6,
			HELP = 7;

	private ToolBarButton buttonSave;

	private ToolBarButton buttonStop;

	private ToolBarButton buttonUndo;

	private ToolBarToggleButton toggleButtonMove;

	private ToolBarToggleButton toggleButtonTurn;
	
	
	private final String[] imageFiles = { "new.gif", "open.gif", "save.gif", "undo.gif", "move.gif",
			"turn.gif", "stop.gif", "help.gif", "slit.gif" };
	private final String[] toolbarLabels = { "New", "Open", "Save", "Undo", "Move Mask", "Turn Mask",
			"Stop Move/Turn Mask", "Help" };


	public OSPE_BrowserToolBar() {
		add(getButtonNew());
		add(getButtonOpen());
		add(getButtonSave());
		add(getButtonUndoToolBar());
		add(getToggleButtonMove());	
		add(getToggleButtonTurn());
		add(getButtonStop());		
		add(getHelpButton());
	}

	/**
	 * 
	 */
	public ToolBarToggleButton getToggleButtonTurn() {
		if (toggleButtonTurn == null) {
			toggleButtonTurn = new ToolBarToggleButton(ImageUtils.createImageIcon("icons/" + imageFiles[TURN]));
			toggleButtonTurn.setSize(50, 40);
			toggleButtonTurn.setEnabled(false);
			toggleButtonTurn.setToolTipText(toolbarLabels[TURN]);
			toggleButtonTurn.addActionListener(new ActionListener() {
				@Override
				public void actionPerformed(ActionEvent e) {
					tooBarAction.turnMask();

				}
			});
		}
		return toggleButtonTurn;
	}

	/**
	 * 
	 */
	public ToolBarToggleButton getToggleButtonMove() {
		if (toggleButtonMove == null) {
			toggleButtonMove = new ToolBarToggleButton(ImageUtils.createImageIcon("icons/" + imageFiles[MOVE]));
			toggleButtonMove.setSize(50, 40);
			toggleButtonMove.setEnabled(false);
			toggleButtonMove.setToolTipText(toolbarLabels[MOVE]);
			toggleButtonMove.addActionListener(new ActionListener() {
				@Override
				public void actionPerformed(ActionEvent e) {
					//System.out.println("BrowToolBar-getToggleMove");
					tooBarAction.moveMask();
				}
			});
		}
		return toggleButtonMove;
	}

	/**
	 * 
	 */
	public ToolBarButton getButtonSave() {
		if (buttonSave ==null) {
			buttonSave = new ToolBarButton(ImageUtils.createImageIcon("icons/" + imageFiles[SAVE]));
			buttonSave.setEnabled(false);
			buttonSave.setToolTipText(toolbarLabels[SAVE]);
			buttonSave.addActionListener(new ActionListener() {
				@Override
				public void actionPerformed(ActionEvent e) {
					tooBarAction.projectSave();
				}
			});
		}
		
		return buttonSave;
	}

	/**
	 * 
	 */
	public ToolBarButton getButtonStop() {
		if (buttonStop == null){
			buttonStop = new ToolBarButton(ImageUtils.createImageIcon("icons/" + imageFiles[STOP]));
			buttonStop.setSize(50, 40);
			buttonStop.setEnabled(false);
			buttonStop.setToolTipText(toolbarLabels[STOP]);
			buttonStop.addActionListener(new ActionListener() {
				@Override
				public void actionPerformed(ActionEvent e) {
					tooBarAction.stop();
				}
			});
		}
		
		return buttonStop;
	}

	/**
	 * @return
	 */
	public ToolBarButton getButtonNew() {
		ToolBarButton buttonNew = new ToolBarButton(ImageUtils.createImageIcon("icons/" + imageFiles[NEW]));
		buttonNew.setToolTipText(toolbarLabels[NEW]);
		buttonNew.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				tooBarAction.projectNew();
			}
		});
		return buttonNew;
	}

	/**
	 * @return
	 */
	public ToolBarButton getButtonOpen() {
		ToolBarButton buttonOpen = new ToolBarButton(ImageUtils.createImageIcon("icons/" + imageFiles[OPEN]));
		buttonOpen.setToolTipText(toolbarLabels[OPEN]);
		buttonOpen.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				tooBarAction.projectOpen();
			}
		});
		return buttonOpen;
	}

	/**
	 * @return
	 */
	public ToolBarButton getHelpButton() {
		ToolBarButton buttonHelp = new ToolBarButton(ImageUtils.createImageIcon("icons/" + imageFiles[HELP]));
		buttonHelp.setSize(50, 40);
		buttonHelp.setToolTipText(toolbarLabels[HELP]);
		buttonHelp.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				tooBarAction.getDisplayHelpAction().actionPerformed(e);
				
			}
		});
		return buttonHelp;
	}

	/**
	 * @param imageFiles
	 */
	public ToolBarButton getButtonUndoToolBar() {
		if (buttonUndo == null){
			buttonUndo = new ToolBarButton(ImageUtils.createImageIcon("icons/" + imageFiles[UNDO]));
			buttonUndo.setSize(50, 40);
			buttonUndo.setEnabled(false);
			
			buttonUndo.setToolTipText(toolbarLabels[UNDO]);
			buttonUndo.addActionListener(new ActionListener() {
				
				@Override
				public void actionPerformed(ActionEvent e) {
					tooBarAction.undo();
				}
			});
		}
		return buttonUndo;
	}
	
	public void setControl(ToolBarActionInterface action){
		tooBarAction = action;
	}
	
	public static void main(String[] args) {
		JFrame frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
		frame.add(new OSPE_BrowserToolBar());
	}

	public void enableForNewProject() {
		buttonSave.setEnabled(true);
	}
	
	public void disableButtonForCloseProject() {
		buttonSave.setEnabled(false);
		toggleButtonMove.setEnabled(false);
		toggleButtonTurn.setEnabled(false);
		
	}

	public void moveMask(boolean moved) {
		if (moved){
			buttonStop.setEnabled(true);
		//	System.out.println("ToolBar : move true");
			toggleButtonMove.setBorder(BorderFactory.createLineBorder(Color.red));
			toggleButtonTurn.setBorder(BorderFactory.createLineBorder(Color.gray));
		} else {
			toggleButtonMove.setBorder(BorderFactory.createLineBorder(Color.gray));
			//System.out.println("ToolBar : move false");
		}
	}
	
	public void turnMask(boolean turned) {
		if (turned){
			//System.out.println("ToolBar : turn true");
			buttonStop.setEnabled(turned);
			toggleButtonMove.setBorder(BorderFactory.createLineBorder(Color.gray));
			toggleButtonTurn.setBorder(BorderFactory.createLineBorder(Color.red));
		}else {
			//System.out.println("ToolBar : turn false");
			toggleButtonTurn.setBorder(BorderFactory.createLineBorder(Color.gray));
		}
	}


	public void enableButtonDuringMaskEdition(boolean enable) {
		toggleButtonMove.setEnabled(enable);
		toggleButtonTurn.setEnabled(enable);
		buttonStop.setEnabled(enable);
		
	}


	
}