/* * (c) Copyright 2010-2011 AgileBirds * * This file is part of OpenFlexo. * * OpenFlexo is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * OpenFlexo is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with OpenFlexo. If not, see <http://www.gnu.org/licenses/>. * */ package org.openflexo.foundation.wkf.action; import java.awt.Color; import java.util.Vector; import java.util.logging.Logger; import org.openflexo.foundation.FlexoEditor; import org.openflexo.foundation.FlexoModelObject; import org.openflexo.foundation.RepresentableFlexoModelObject; import org.openflexo.foundation.action.FlexoAction; import org.openflexo.foundation.action.FlexoActionType; import org.openflexo.foundation.wkf.DuplicateRoleException; import org.openflexo.foundation.wkf.FlexoWorkflow; import org.openflexo.foundation.wkf.Role; import org.openflexo.foundation.wkf.RoleList; import org.openflexo.foundation.wkf.WorkflowModelObject; public class AddRole extends FlexoAction<AddRole, WorkflowModelObject, WorkflowModelObject> { private static final Logger logger = Logger.getLogger(AddRole.class.getPackage().getName()); public static FlexoActionType<AddRole, WorkflowModelObject, WorkflowModelObject> actionType = new FlexoActionType<AddRole, WorkflowModelObject, WorkflowModelObject>( "add_new_role", FlexoActionType.newMenu, FlexoActionType.newMenuGroup1, FlexoActionType.ADD_ACTION_TYPE) { /** * Factory method */ @Override public AddRole makeNewAction(WorkflowModelObject focusedObject, Vector<WorkflowModelObject> globalSelection, FlexoEditor editor) { return new AddRole(focusedObject, globalSelection, editor); } @Override public boolean isVisibleForSelection(WorkflowModelObject object, Vector<WorkflowModelObject> globalSelection) { return object instanceof RoleList && !((RoleList) object).isImportedRoleList() || object instanceof Role && !((Role) object).isImported(); } @Override public boolean isEnabledForSelection(WorkflowModelObject object, Vector<WorkflowModelObject> globalSelection) { return isVisibleForSelection(object, globalSelection) || object instanceof FlexoWorkflow; } }; private String _newRoleName; private Color _newColor; private String _newDescription; private boolean _isSystemRole = false; private double x = -1; private double y = -1; private boolean automaticallyCreateRole = false; private Role _newRole; private Role roleToClone; static { FlexoModelObject.addActionForClass(actionType, FlexoWorkflow.class); FlexoModelObject.addActionForClass(actionType, RoleList.class); FlexoModelObject.addActionForClass(actionType, Role.class); } AddRole(WorkflowModelObject focusedObject, Vector<WorkflowModelObject> globalSelection, FlexoEditor editor) { super(actionType, focusedObject, globalSelection, editor); } public FlexoWorkflow getWorkflow() { if (getFocusedObject() != null) { return getFocusedObject().getWorkflow(); } return null; } public String getNewRoleName() { return _newRoleName; } public void setNewRoleName(String newRoleName) { _newRoleName = newRoleName; } @Override protected void doAction(Object context) throws DuplicateRoleException { logger.info("Add role"); if (getWorkflow() != null) { RoleList roleList = getWorkflow().getRoleList(); if (roleToClone != null) { _newRole = (Role) roleToClone.cloneUsingXMLMapping(); _newRole.setName(getNewRoleName()); } else { _newRole = new Role(getWorkflow(), getNewRoleName()); } roleList.addToRoles(_newRole); if (x != -1 && y != -1) { _newRole.setX(x, RepresentableFlexoModelObject.DEFAULT); _newRole.setY(y, RepresentableFlexoModelObject.DEFAULT); } if (getNewColor() != null) { _newRole.setColor(getNewColor()); } if (getNewDescription() != null) { _newRole.setDescription(getNewDescription()); } _newRole.setIsSystemRole(isSystemRole()); } else { logger.warning("Cannot access workflow !"); } } public Role getNewRole() { return _newRole; } public Color getNewColor() { return _newColor; } public void setNewColor(Color newColor) { _newColor = newColor; } public String getNewDescription() { return _newDescription; } public void setNewDescription(String newDescription) { _newDescription = newDescription; } public void setLocation(double x, double y) { this.x = x; this.y = y; } public boolean getRoleAutomaticallyCreated() { return automaticallyCreateRole; } public void setRoleAutomaticallyCreated(boolean automaticallyCreateRole) { this.automaticallyCreateRole = automaticallyCreateRole; } public boolean isSystemRole() { return _isSystemRole; } public void setIsSystemRole(boolean isSystemRole) { _isSystemRole = isSystemRole; } public void setRoleToClone(Role roleToClone) { this.roleToClone = roleToClone; } }