package org.vorthmann.zome.app.impl; import java.awt.event.ActionEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import org.vorthmann.ui.DefaultController; import com.vzome.core.editor.Tool; import com.vzome.core.editor.ToolFactory; public class ToolFactoryController extends DefaultController implements PropertyChangeListener { private final ToolFactory factory; private int nextIndex = 0; private ToolsController toolsController; public ToolFactoryController( ToolFactory factory, ToolsController toolsController ) { this .factory = factory; this.toolsController = toolsController; factory .addListener( this ); } @Override public void propertyChange( PropertyChangeEvent evt ) { switch ( evt .getPropertyName() ) { case "enabled": // forward to the UI this .properties() .firePropertyChange( evt ); break; default: break; } } @Override public String getProperty( String name ) { switch ( name ) { case "enabled": return Boolean .toString( this .factory .isEnabled() ); default: return super .getProperty( name ); } } @Override public void actionPerformed( ActionEvent e ) { switch ( e .getActionCommand() ) { case "createTool": Tool tool = factory .createTool( ++nextIndex ); toolsController .addTool( tool ); break; default: super .actionPerformed( e ); } } }