diagramlayouteditpolicy.java

来自「GEF初学者可以用来对照的小例子」· Java 代码 · 共 44 行

JAVA
44
字号
package com.dss.moon.gef.editpolicies;

import org.eclipse.draw2d.geometry.Dimension;
import org.eclipse.draw2d.geometry.Rectangle;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.EditPolicy;
import org.eclipse.gef.Request;
import org.eclipse.gef.commands.Command;
import org.eclipse.gef.editpolicies.XYLayoutEditPolicy;
import org.eclipse.gef.requests.CreateRequest;

import com.dss.moon.gef.commands.CreateEllipseCommand;
import com.dss.moon.gef.commands.MoveCommand;
import com.dss.moon.gef.model.Diagram;
import com.dss.moon.gef.model.Ellipse;

public class DiagramLayoutEditPolicy extends XYLayoutEditPolicy  {

	@Override
	protected Command createChangeConstraintCommand(EditPart child, Object constraint) {
		// TODO Auto-generated method stub
		MoveCommand move = new MoveCommand();
		move.setNode((Ellipse)child.getModel());
		move.setConstraint((Rectangle) constraint);
		return move;
	}

	@Override
	protected Command getCreateCommand(CreateRequest request) {
		// TODO Auto-generated method stub
		if(request.getNewObject() instanceof Ellipse){
			CreateEllipseCommand cec = new CreateEllipseCommand();
			cec.setDiagram((Diagram)getHost().getModel());
			cec.setEllipse((Ellipse) request.getNewObject());
			//((Ellipse)request.getNewObject()).setSize(new Dimension(50,50));
			//request.setSize(new Dimension(50,50));
			Rectangle constaint = (Rectangle) getConstraintFor(request);
			cec.setContraint(constaint);
			return cec;
		}
		return null;
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?