📄 diagrameditor.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 + -