package com.horstmann.violet.workspace.editorpart; import java.awt.event.MouseEvent; import java.awt.event.MouseWheelEvent; import java.awt.geom.Point2D; import java.beans.PropertyChangeEvent; import java.util.ArrayList; import java.util.List; import com.horstmann.violet.product.diagram.abstracts.IColorable; import com.horstmann.violet.product.diagram.abstracts.edge.IEdge; import com.horstmann.violet.product.diagram.abstracts.node.INode; import com.horstmann.violet.workspace.editorpart.behavior.IEditorPartBehavior; public class EditorPartBehaviorManager implements IEditorPartBehaviorManager { private List<IEditorPartBehavior> behaviors = new ArrayList<IEditorPartBehavior>(); public void addBehavior(IEditorPartBehavior newBehavior) { this.behaviors.add(newBehavior); } public List<IEditorPartBehavior> getBehaviors() { return this.behaviors; } @Override public <T extends IEditorPartBehavior> List<T> getBehaviors(Class<T> type) { List<T> result = new ArrayList<T>(); for (IEditorPartBehavior aBehavior : this.behaviors) { if (aBehavior.getClass().isAssignableFrom(type)) { result.add((T) aBehavior); } } return result; } @Override public void fireOnMousePressed(MouseEvent event) { for (IEditorPartBehavior aBehavior : this.behaviors) aBehavior.onMousePressed(event); } @Override public void fireOnMouseDragged(MouseEvent event) { for (IEditorPartBehavior aBehavior : this.behaviors) aBehavior.onMouseDragged(event); } @Override public void fireOnMouseReleased(MouseEvent event) { for (IEditorPartBehavior aBehavior : this.behaviors) aBehavior.onMouseReleased(event); } @Override public void fireOnMouseClicked(MouseEvent event) { for (IEditorPartBehavior aBehavior : this.behaviors) aBehavior.onMouseClicked(event); } @Override public void fireOnMouseMoved(MouseEvent event) { for (IEditorPartBehavior aBehavior : this.behaviors) aBehavior.onMouseMoved(event); } @Override public void fireOnMouseWheelMoved(MouseWheelEvent event) { for (IEditorPartBehavior aBehavior : this.behaviors) aBehavior.onMouseWheelMoved(event); } @Override public void fireBeforeEditingNode(INode node) { for (IEditorPartBehavior aBehavior : this.behaviors) aBehavior.beforeEditingNode(node); } @Override public void fireWhileEditingNode(INode node, PropertyChangeEvent event) { for (IEditorPartBehavior aBehavior : this.behaviors) aBehavior.whileEditingNode(node, event); } @Override public void fireAfterEditingNode(INode node) { for (IEditorPartBehavior aBehavior : this.behaviors) aBehavior.afterEditingNode(node); } @Override public void fireBeforeEditingEdge(IEdge edge) { for (IEditorPartBehavior aBehavior : this.behaviors) aBehavior.beforeEditingEdge(edge); } @Override public void fireWhileEditingEdge(IEdge edge, PropertyChangeEvent event) { for (IEditorPartBehavior aBehavior : this.behaviors) aBehavior.whileEditingEdge(edge, event); } @Override public void fireAfterEditingEdge(IEdge edge) { for (IEditorPartBehavior aBehavior : this.behaviors) aBehavior.afterEditingEdge(edge); } @Override public void fireBeforeRemovingSelectedElements() { for (IEditorPartBehavior aBehavior : this.behaviors) aBehavior.beforeRemovingSelectedElements(); } @Override public void fireAfterRemovingSelectedElements() { for (IEditorPartBehavior aBehavior : this.behaviors) aBehavior.afterRemovingSelectedElements(); } @Override public void fireBeforeAddingNodeAtPoint(INode node, Point2D location) { for (IEditorPartBehavior aBehavior : this.behaviors) aBehavior.beforeAddingNodeAtPoint(node, location); } @Override public void fireAfterAddingNodeAtPoint(INode node, Point2D location) { for (IEditorPartBehavior aBehavior : this.behaviors) aBehavior.afterAddingNodeAtPoint(node, location); } @Override public void fireBeforeAddingEdgeAtPoints(IEdge edge, Point2D startPoint, Point2D endPoint) { for (IEditorPartBehavior aBehavior : this.behaviors) aBehavior.beforeAddingEdgeAtPoints(edge, startPoint, endPoint); } @Override public void fireAfterAddingEdgeAtPoints(IEdge edge, Point2D startPoint, Point2D endPoint) { for (IEditorPartBehavior aBehavior : this.behaviors) aBehavior.afterAddingEdgeAtPoints(edge, startPoint, endPoint); } @Override public void fireOnEdgeSelected(IEdge edge) { for (IEditorPartBehavior aBehavior : this.behaviors) aBehavior.onEdgeSelected(edge); } @Override public void fireOnNodeSelected(INode node) { for (IEditorPartBehavior aBehavior : this.behaviors) aBehavior.onNodeSelected(node); } @Override public void fireBeforeChangingTransitionPointsOnEdge(IEdge edge) { for (IEditorPartBehavior aBehavior : this.behaviors) aBehavior.beforeChangingTransitionPointsOnEdge(edge); } @Override public void fireAfterChangingTransitionPointsOnEdge(IEdge edge) { for (IEditorPartBehavior aBehavior : this.behaviors) aBehavior.afterChangingTransitionPointsOnEdge(edge); } @Override public void fireBeforeChangingColorOnElement(IColorable element) { for (IEditorPartBehavior aBehavior : this.behaviors) aBehavior.beforeChangingColorOnElement(element); } @Override public void fireAfterChangingColorOnElement(IColorable element) { for (IEditorPartBehavior aBehavior : this.behaviors) aBehavior.afterChangingColorOnElement(element); } }