/*******************************************************************************
* Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is 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:
* Exadel, Inc. and Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.jsf.ui.editor.edit;
import java.util.Properties;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.gef.Request;
import org.eclipse.gef.RequestConstants;
import org.eclipse.gef.commands.Command;
import org.eclipse.gef.editpolicies.RootComponentEditPolicy;
import org.eclipse.gef.requests.CreateRequest;
import org.jboss.tools.common.model.XModelObject;
import org.jboss.tools.jsf.model.JSFXModelUtil;
import org.jboss.tools.jsf.ui.editor.model.impl.JSFModel;
public class JSFDiagramEditPolicy extends RootComponentEditPolicy{
public JSFDiagramEditPolicy() {
super();
}
public JSFDiagramEditPart getDiagramEditPart(){
return (JSFDiagramEditPart)getHost();
}
public Command getCommand(Request request) {
if (RequestConstants.REQ_CREATE.equals(request.getType()))
return getCreateCommand((CreateRequest)request);
return super.getCommand(request);
}
public Command getCreateCommand(CreateRequest request){
if(!request.getNewObjectType().equals(String.class)) return null;
CreateViewCommand comm = new CreateViewCommand();
comm.setLocation(request.getLocation());
return comm;
}
class CreateViewCommand extends org.eclipse.gef.commands.Command{
Point location;
public void setLocation(Point point){
JSFDiagramEditPolicy.this.getDiagramEditPart().getFigure().translateToRelative(point);
location = point;
}
public CreateViewCommand(){
super("CreateViewCommand"); //$NON-NLS-1$
}
public boolean canExecute(){
return true;
}
public void execute(){
Properties properties = new Properties();
if(location != null){
properties.put("process.mouse.x","" + location.x); //$NON-NLS-1$ //$NON-NLS-2$
properties.put("process.mouse.y","" + location.y); //$NON-NLS-1$ //$NON-NLS-2$
}
JSFXModelUtil.addRule((XModelObject)((JSFModel)getDiagramEditPart().getModel()).getSource(), properties);
}
public boolean canUndo() {
return false;
}
}
}