| /******************************************************************************* |
| * Copyright (c) 2004, 2005 Sybase, Inc. and others. |
| * |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Sybase, Inc. - initial API and implementation |
| *******************************************************************************/ |
| |
| package org.eclipse.jst.jsf.facesconfig.ui.pageflow.editpolicy; |
| |
| import org.eclipse.draw2d.ColorConstants; |
| import org.eclipse.draw2d.Connection; |
| import org.eclipse.draw2d.PolylineConnection; |
| import org.eclipse.gef.GraphicalEditPart; |
| import org.eclipse.gef.Request; |
| import org.eclipse.gef.commands.Command; |
| import org.eclipse.gef.editpolicies.GraphicalNodeEditPolicy; |
| import org.eclipse.gef.requests.CreateConnectionRequest; |
| import org.eclipse.gef.requests.ReconnectRequest; |
| import org.eclipse.jface.preference.IPreferenceStore; |
| import org.eclipse.jst.jsf.facesconfig.ui.EditorPlugin; |
| import org.eclipse.jst.jsf.facesconfig.ui.pageflow.action.OpenEditorAction; |
| import org.eclipse.jst.jsf.facesconfig.ui.pageflow.command.ConnectionCommand; |
| import org.eclipse.jst.jsf.facesconfig.ui.pageflow.command.ConnectionCommandFactory; |
| import org.eclipse.jst.jsf.facesconfig.ui.pageflow.command.OpenEditorCommand; |
| import org.eclipse.jst.jsf.facesconfig.ui.pageflow.editpart.PageflowNodeEditPart; |
| import org.eclipse.jst.jsf.facesconfig.ui.pageflow.figure.PageflowNodeFigure; |
| import org.eclipse.jst.jsf.facesconfig.ui.pageflow.model.PageflowLink; |
| import org.eclipse.jst.jsf.facesconfig.ui.pageflow.model.PageflowNode; |
| import org.eclipse.jst.jsf.facesconfig.ui.preference.GEMPreferences; |
| |
| /** |
| * Customizes conntection policies |
| * |
| */ |
| public class PageflowNodeEditPolicy extends GraphicalNodeEditPolicy { |
| /* |
| * (non-Javadoc) |
| * |
| * @see GraphicalNodeEditPolicy#createDummyConnection() |
| */ |
| protected Connection createDummyConnection(Request req) { |
| PolylineConnection conn = new PolylineConnection(); |
| conn.setLineWidth(getLineWidth()); |
| conn.setForegroundColor(ColorConstants.black); |
| |
| return conn; |
| } |
| |
| /** |
| * get the connection line width from preference. |
| */ |
| private int getLineWidth() { |
| IPreferenceStore store = EditorPlugin.getDefault().getPreferenceStore(); |
| int lineWidth = store.getInt(GEMPreferences.LINE_WIDTH); |
| return lineWidth; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see GraphicalNodeEditPolicy#getConnectionCompleteCommand() |
| */ |
| protected Command getConnectionCompleteCommand( |
| CreateConnectionRequest request) { |
| ConnectionCommand command = (ConnectionCommand) request |
| .getStartCommand(); |
| // ConnectionAnchor anchor = |
| // getPageflowNodeEditPart().getTargetConnectionAnchor(request); |
| |
| command.setTarget(getPageflowNode()); |
| |
| return command; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see GraphicalNodeEditPolicy#getConnectionCreateCommand() |
| */ |
| protected Command getConnectionCreateCommand(CreateConnectionRequest request) { |
| ConnectionCommand command = ConnectionCommandFactory |
| .createCommand(request); |
| command.setPFLink((PageflowLink) request.getNewObject()); |
| PageflowNode flowObject = getPageflowNode(); |
| command.setSource(flowObject); |
| request.setStartCommand(command); |
| return command; |
| } |
| |
| /** |
| * get the edit part of pageflow node |
| * |
| * @return - the edit part of pageflow node |
| */ |
| protected PageflowNodeEditPart getPageflowNodeEditPart() { |
| return (PageflowNodeEditPart) getHost(); |
| } |
| |
| /** |
| * get the pageflow node |
| * |
| * @return - the pageflow node |
| */ |
| protected PageflowNode getPageflowNode() { |
| return (PageflowNode) getHost().getModel(); |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see GraphicalNodeEditPolicy#getReconnectTargetCommand() |
| */ |
| protected Command getReconnectTargetCommand(ReconnectRequest request) { |
| ConnectionCommand cmd = ConnectionCommandFactory.createCommand(request); |
| cmd |
| .setPFLink((PageflowLink) request.getConnectionEditPart() |
| .getModel()); |
| cmd.setTarget(getPageflowNode()); |
| return cmd; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see GraphicalNodeEditPolicy#getReconnectSourceCommand() |
| */ |
| protected Command getReconnectSourceCommand(ReconnectRequest request) { |
| ConnectionCommand cmd = ConnectionCommandFactory.createCommand(request); |
| cmd |
| .setPFLink((PageflowLink) request.getConnectionEditPart() |
| .getModel()); |
| cmd.setSource(getPageflowNode()); |
| return cmd; |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see GraphicalNodeEditPolicy#getCommand() |
| */ |
| public Command getCommand(Request request) { |
| if (OpenEditorAction.OPEN_EDITOR_REQUEST.equals(request.getType())) { |
| return new OpenEditorCommand(getHost()); |
| } |
| |
| return super.getCommand(request); |
| } |
| |
| /** |
| * return the pageflow node figure |
| * |
| * @return - the pageflow node's figure |
| */ |
| protected PageflowNodeFigure getPageflowNodeFigure() { |
| return (PageflowNodeFigure) ((GraphicalEditPart) getHost()).getFigure(); |
| } |
| } |