/*******************************************************************************
* See the NOTICE file distributed with this work for additional information
* regarding copyright ownership.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package hr.fer.zemris.vhdllab.applets.schema2.gui.canvas;
import hr.fer.zemris.vhdllab.applets.editor.schema2.enums.ECanvasState;
import hr.fer.zemris.vhdllab.applets.editor.schema2.interfaces.ILocalGuiController;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.ResourceBundle;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JToggleButton;
import javax.swing.JToolBar;
public class CanvasToolbar extends JToolBar implements PropertyChangeListener,ActionListener {
/**
*
*/
private static final long serialVersionUID = 8135365480214217897L;
protected ILocalGuiController localController = null;
private JToggleButton addWireState=null;
private JToggleButton selactState=null;
private JToggleButton deleteState=null;
@SuppressWarnings("unused")
private ResourceBundle bundle = null; //TODO kad aleks sredi bundle
public CanvasToolbar(ResourceBundle bundle) {
this.bundle =bundle;
initGUI();
}
private void initGUI() {
//TODO tooltip text!!
Icon ic=new ImageIcon(getClass().getResource("AddWire.png"));
addWireState=new JToggleButton(ic);
addWireState.setActionCommand("ADDWIRE");
addWireState.setToolTipText("Add wire..");
addWireState.addActionListener(this);
ic=new ImageIcon(getClass().getResource("SelectMode.png"));
selactState=new JToggleButton(ic);
selactState.setActionCommand("SELECT");
selactState.setToolTipText("Edit...");
selactState.addActionListener(this);
ic=new ImageIcon(getClass().getResource("DeleteMode.png"));
deleteState=new JToggleButton(ic);
deleteState.setActionCommand("DELETE");
deleteState.setToolTipText("Delete wire...");
deleteState.addActionListener(this);
//TODO ovo maknuti kad se srede stvari:
final JToggleButton b = new JToggleButton("SNAP ON");
b.setSelected(true);
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(localController.isGridON()){
b.setText("SNAP OFF");
b.setSelected(false);
localController.setGridON(false);
}else{
b.setText("SNAP ON");
b.setSelected(true);
localController.setGridON(true);
}
}
});
final JToggleButton c = new JToggleButton("SMART CONNECT ON");
c.setSelected(true);
c.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(localController.isSmartConectON()){
c.setText("SMART CONNECT OFF");
c.setSelected(false);
localController.setSmartConectON(false);
}else{
c.setText("SMART CONNECT ON");
c.setSelected(true);
localController.setSmartConectON(true);
}
}
});
//############################
this.add(selactState);
this.add(addWireState);
this.add(deleteState);
//#####
this.add(b);
this.add(c);
//#####
}
public void registerController(ILocalGuiController controller){
this.localController = controller;
}
public void propertyChange(PropertyChangeEvent evt) {
ECanvasState state = localController.getState();
if(state.equals(ECanvasState.ADD_WIRE_STATE)){
addWireState.setSelected(true);
selactState.setSelected(false);
deleteState.setSelected(false);
}else if(state.equals(ECanvasState.MOVE_STATE)){
addWireState.setSelected(false);
selactState.setSelected(true);
deleteState.setSelected(false);
}else if(state.equals(ECanvasState.DELETE_STATE)){
addWireState.setSelected(false);
selactState.setSelected(false);
deleteState.setSelected(true);
}else {
addWireState.setSelected(false);
selactState.setSelected(false);
deleteState.setSelected(false);
}
}
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("ADDWIRE")){
localController.setState(ECanvasState.ADD_WIRE_STATE);
}
else if(e.getActionCommand().equals("SELECT")){
localController.setState(ECanvasState.MOVE_STATE);
}
else if(e.getActionCommand().equals("DELETE")){
localController.setState(ECanvasState.DELETE_STATE);
}
propertyChange(null);
}
@SuppressWarnings("unused")
private void dummyStateChanger() {
ECanvasState state = localController.getState();
if(state.equals(ECanvasState.ADD_COMPONENT_STATE))
localController.setState(ECanvasState.ADD_WIRE_STATE);
else if(state.equals(ECanvasState.ADD_WIRE_STATE))
localController.setState(ECanvasState.DELETE_STATE);
else if(state.equals(ECanvasState.DELETE_STATE))
localController.setState(ECanvasState.MOVE_STATE);
else if(state.equals(ECanvasState.MOVE_STATE))
localController.setState(ECanvasState.ADD_COMPONENT_STATE);
}
}