⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 diagrameditor.java

📁 GEF基础源码
💻 JAVA
字号:
package com.jixy.study.gef.control;

import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.draw2d.geometry.Point;
import org.eclipse.gef.ContextMenuProvider;
import org.eclipse.gef.DefaultEditDomain;
import org.eclipse.gef.GraphicalViewer;
import org.eclipse.gef.editparts.ScalableFreeformRootEditPart;
import org.eclipse.gef.ui.actions.GEFActionConstants;
import org.eclipse.gef.ui.parts.GraphicalEditor;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.ui.actions.ActionFactory;

import com.jixy.study.gef.model.Diagram;
import com.jixy.study.gef.model.Ellipse;

//现在来看看这个DiagramEditor,在其构造函数中要设置EditDomain
//(这是一个由一个PaletteViewer,一个CommandStack和一个或多个
//EditPartViewers所组成的类)。最重要的两个方法是
//configureGraphicalViewer()和initializeGraphicalViewer(),
//分别用来配置和初始化 EditPartViewer。
public class DiagramEditor extends GraphicalEditor {

	public DiagramEditor() {

		setEditDomain(new DefaultEditDomain(this));

	}

	// initializeGraphicalViewer()设置了编辑器的初始Contents为新创建的一个Diagram,
	// 因为需求是在一个Diagram上显示一个Ellipse,所以在其构造函数中,
	// 我们初始化了一个Ellipse变量,并且把它加入Diagram的列表中。
	protected void initializeGraphicalViewer() {

		Diagram diagram = new Diagram();

		Ellipse ellipse1 = new Ellipse();

		Ellipse ellipse2 = new Ellipse();

		ellipse1.setLocation(new Point(150, 50));

		ellipse2.setLocation(new Point(250, 150));

		diagram.addChild(ellipse1);
		diagram.addChild(ellipse2);

		getGraphicalViewer().setContents(diagram);

	}

	// configureGraphicalViewer()配置了RootEditPart、用于创建 EditPart的EditPartFactory。
	protected void configureGraphicalViewer() {

		super.configureGraphicalViewer();

		GraphicalViewer viewer = getGraphicalViewer();

		viewer.setRootEditPart(new ScalableFreeformRootEditPart());

		viewer.setEditPartFactory(new PartFactory());

		ContextMenuProvider context = new ContextMenuProvider(
				getGraphicalViewer()) {
			public void buildContextMenu(IMenuManager menu) {
				GEFActionConstants.addStandardActionGroups(menu);
				IAction action = getActionRegistry().getAction(
						ActionFactory.UNDO.getId());
				menu.appendToGroup(GEFActionConstants.GROUP_UNDO, action);
				action = getActionRegistry().getAction(
						ActionFactory.REDO.getId());
				menu.appendToGroup(GEFActionConstants.GROUP_UNDO, action);
			}
		};
		getGraphicalViewer().setContextMenu(context);

	}

	public void doSave(IProgressMonitor monitor) {

	}

	public void doSaveAs() {

	}

	public boolean isSaveAsAllowed() {

		return false;

	}

}

⌨️ 快捷键说明

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