| /******************************************************************************* |
| * 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.command; |
| |
| import org.eclipse.gef.commands.Command; |
| import org.eclipse.jst.jsf.facesconfig.ui.pageflow.PageflowMessages; |
| 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.pageflow.synchronization.TransformUtil; |
| |
| /** |
| * This is the connection command for pageflow editpart |
| * |
| * @author Xiao-guang Zhang, hmeng |
| */ |
| public abstract class ConnectionCommand extends Command { |
| /** Old source pageflow node */ |
| protected PageflowNode oldSource; |
| |
| /** Old target pageflow node */ |
| protected PageflowNode oldTarget; |
| |
| /** New source pageflow node */ |
| protected PageflowNode source; |
| |
| /** New target pageflow node */ |
| protected PageflowNode target; |
| |
| /** pageflow link */ |
| protected PageflowLink link; |
| |
| /** |
| * Default constructor |
| */ |
| public ConnectionCommand() { |
| super(PageflowMessages.Pageflow_Commands_ConnectionCommand_Label); |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see Command#canExecute() |
| */ |
| public boolean canExecute() { |
| return TransformUtil.isValidPageflowElement(link); |
| } |
| |
| /** |
| * perform the main command execution. Sub-classes should override. |
| */ |
| protected void doExecute() { |
| // do nothing; sub-class can over-ride |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see Command#execute() |
| */ |
| public final void execute() { |
| if (canExecute()) { |
| doExecute(); |
| } else { |
| link = null; |
| } |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see Command#redo() |
| */ |
| public void redo() { |
| execute(); |
| } |
| |
| /* |
| * (non-Javadoc) |
| * |
| * @see ommand#undo() |
| */ |
| public void undo() { |
| // do nothing |
| } |
| |
| /** |
| * Get the source pageflow node |
| * |
| * @return - the source pageflow node |
| */ |
| public PageflowNode getSource() { |
| return source; |
| } |
| |
| /** |
| * Get the target pageflow node |
| * |
| * @return - the target pageflow node. |
| */ |
| public PageflowNode getTarget() { |
| return target; |
| } |
| |
| /** |
| * Get the pageflow link |
| * |
| * @return - the pageflow link. |
| */ |
| public PageflowLink getPFLink() { |
| return link; |
| } |
| |
| /** |
| * Set the source pageflow node |
| * |
| * @param newSource - |
| * new source pageflow node |
| */ |
| public void setSource(PageflowNode newSource) { |
| source = newSource; |
| } |
| |
| /** |
| * Set the target pageflow node |
| * |
| * @param newTarget - |
| * new target pageflow node |
| */ |
| public void setTarget(PageflowNode newTarget) { |
| target = newTarget; |
| } |
| |
| /** |
| * Set the pageflow link |
| * |
| * @param link - |
| * new pageflow link |
| */ |
| public void setPFLink(PageflowLink link) { |
| this.link = link; |
| oldSource = link.getSource(); |
| oldTarget = link.getTarget(); |
| } |
| } |