package com.jtauber.river.ui;
import java.io.InputStream;
import java.util.EventObject;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.gef.DefaultEditDomain;
import org.eclipse.gef.KeyHandler;
import org.eclipse.gef.KeyStroke;
import org.eclipse.gef.dnd.TemplateTransferDragSourceListener;
import org.eclipse.gef.editparts.ScalableFreeformRootEditPart;
import org.eclipse.gef.palette.PaletteRoot;
import org.eclipse.gef.ui.actions.ActionRegistry;
import org.eclipse.gef.ui.actions.GEFActionConstants;
import org.eclipse.gef.ui.parts.ContentOutlinePage;
import org.eclipse.gef.ui.parts.GraphicalEditorWithPalette;
import org.eclipse.gef.ui.parts.GraphicalViewerKeyHandler;
import org.eclipse.gef.ui.parts.TreeViewer;
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.IWorkbenchActionConstants;
import org.eclipse.ui.actions.WorkspaceModifyOperation;
import org.eclipse.ui.dialogs.SaveAsDialog;
import org.eclipse.ui.part.FileEditorInput;
import org.eclipse.ui.part.IPageSite;
import org.eclipse.ui.part.PageBook;
import org.eclipse.ui.views.contentoutline.IContentOutlinePage;
import com.jtauber.river.dnd.DiagramTemplateTransferDropTargetListener;
import com.jtauber.river.model.Diagram;
import com.jtauber.river.parts.PartFactory;
import com.jtauber.river.parts.TreePartFactory;
public class DiagramEditor extends GraphicalEditorWithPalette {
private PaletteRoot paletteRoot;
private KeyHandler sharedKeyHandler;
private boolean savePreviouslyNeeded;
private Diagram diagram = new Diagram();
public DiagramEditor() {
// an EditDomain is a "session" of editing which contains things
// like the CommandStack
setEditDomain(new DefaultEditDomain(this));
}
public Diagram getDiagram() {
return this.diagram;
}
protected KeyHandler getCommonKeyHandler(){
if (sharedKeyHandler == null){
sharedKeyHandler = new KeyHandler();
sharedKeyHandler.put(
KeyStroke.getPressed(SWT.DEL, 127, 0),
getActionRegistry().getAction(GEFActionConstants.DELETE));
}
return sharedKeyHandler;
}
//------------------------------------------------------------------------
// Overridden from GraphicalEditor
protected void configureGraphicalViewer() {
super.configureGraphicalViewer();
getGraphicalViewer().setRootEditPart(new ScalableFreeformRootEditPart());
// set the factory to use for creating EditParts for elements in the model
getGraphicalViewer().setEditPartFactory(new PartFactory());
getGraphicalViewer().setKeyHandler(new GraphicalViewerKeyHandler(getGraphicalViewer()).setParent(getCommonKeyHandler()));
}
public void commandStackChanged(EventObject event) {
if (isDirty()) {
if (!this.savePreviouslyNeeded) {
this.savePreviouslyNeeded = true;
firePropertyChange(IEditorPart.PROP_DIRTY);
}
}
else {
savePreviouslyNeeded = false;
firePropertyChange(IEditorPart.PROP_DIRTY);
}
super.commandStackChanged(event);
}
public Object getAdapter(Class type){
if (type == IContentOutlinePage.class)
return new OutlinePage();
return super.getAdapter(type);
}
//------------------------------------------------------------------------
// Overridden from EditorPart
protected void setInput(IEditorInput input) {
super.setInput(input);
IFile file = ((IFileEditorInput) input).getFile();
try { // attempt to read from a file
InputStream istream = file.getContents(false);
diagram = Diagram.makeFromStream(istream);
}
catch (Exception e) { // but if there's an error, create a new diagram
e.printStackTrace();
diagram = new Diagram();
}
}
//------------------------------------------------------------------------
// Abstract methods from GraphicalEditor
protected void initializeGraphicalViewer() {
// this uses the PartFactory set in configureGraphicalViewer
// to create an EditPart for the diagram and sets it as the
// content for the viewer
getGraphicalViewer().setContents(this.diagram);
getGraphicalViewer().addDropTargetListener(new DiagramTemplateTransferDropTargetListener(getGraphicalViewer()));
}
//------------------------------------------------------------------------
// Overridden methods from GraphicalEditorWithPalette
protected void initializePaletteViewer() {
super.initializePaletteViewer();
getPaletteViewer().addDragSourceListener(
new TemplateTransferDragSourceListener(getPaletteViewer()));
}
//------------------------------------------------------------------------
// Abstract methods from EditorPart
public void doSave(IProgressMonitor monitor) {
try {
IFile file = ((IFileEditorInput) getEditorInput()).getFile();
file.setContents(this.diagram.getAsStream(), true, false, monitor);
getCommandStack().markSaveLocation();
}
catch (Exception e) {
e.printStackTrace();
}
}
public void doSaveAs() {
SaveAsDialog dialog = new SaveAsDialog(getSite().getWorkbenchWindow().getShell());
dialog.setOriginalFile(((IFileEditorInput) getEditorInput()).getFile());
dialog.open();
IPath path = dialog.getResult();
if (path == null)
return;
IWorkspace workspace = ResourcesPlugin.getWorkspace();
final IFile file = workspace.getRoot().getFile(path);
WorkspaceModifyOperation op = new WorkspaceModifyOperation() {
public void execute(final IProgressMonitor monitor) throws CoreException {
try {
file.create(diagram.getAsStream(), true, monitor);
}
catch (Exception e) {
e.printStackTrace();
}
}
};
try {
new ProgressMonitorDialog(getSite().getWorkbenchWindow().getShell()).run(false, true, op);
setInput(new FileEditorInput((IFile) file));
getCommandStack().markSaveLocation();
}
catch (Exception e) {
e.printStackTrace();
}
}
public void gotoMarker(IMarker marker) {
}
public boolean isDirty() {
// rely on the command stack to determine dirty flag
return getCommandStack().isDirty();
}
public boolean isSaveAsAllowed() {
// allow Save As
return true;
}
//------------------------------------------------------------------------
// Abstract methods from GraphicalEditorWithPalette
protected PaletteRoot getPaletteRoot() {
if (this.paletteRoot == null) {
this.paletteRoot = PaletteFactory.createPalette();
}
return this.paletteRoot;
}
//========================================================================
// Inner Classes
public class OutlinePage extends ContentOutlinePage {
private PageBook pageBook;
private Control outline;
public OutlinePage() {
super(new TreeViewer());
}
public void init(IPageSite pageSite) {
super.init(pageSite);
ActionRegistry registry = getActionRegistry();
IActionBars bars = pageSite.getActionBars();
String id = IWorkbenchActionConstants.UNDO;
bars.setGlobalActionHandler(id, registry.getAction(id));
id = IWorkbenchActionConstants.REDO;
没有合适的资源?快使用搜索试试~ 我知道了~
GEF 几个简单例子
共156个文件
java:126个
project:6个
properties:6个
4星 · 超过85%的资源 需积分: 31 30 下载量 74 浏览量
2008-11-19
17:20:32
上传
评论 1
收藏 114KB ZIP 举报
温馨提示
比较经典的!! 展开后是六个项目(pt1,pt2,…,pt6),每一个是在前面一个的基础上增加一些功能得到的,pt1是最简单的一个,这样你就可以看到那些典型的功能(例如DirectEdit、Palette等等)在GEF里应该怎样实现了。
资源推荐
资源详情
资源评论
收起资源包目录
GEF 几个简单例子 (156个子文件)
.classpath 313B
.classpath 313B
.classpath 313B
.classpath 313B
.classpath 313B
.classpath 313B
river.gif 864B
river.gif 864B
river.gif 864B
river.gif 864B
river.gif 864B
river.gif 864B
DiagramEditor.java 9KB
DiagramEditor.java 9KB
DiagramEditor.java 7KB
DiagramEditor.java 6KB
NodePart.java 5KB
DiagramEditor.java 5KB
DiagramEditor.java 5KB
NodePart.java 4KB
NodePart.java 3KB
DiagramCreationWizard.java 3KB
DiagramCreationWizard.java 3KB
DiagramCreationWizard.java 3KB
DiagramCreationWizard.java 3KB
NodePart.java 3KB
NodePart.java 3KB
DiagramCreationWizard.java 3KB
DiagramCreationWizard.java 3KB
Node.java 3KB
NodeDirectEditManager.java 3KB
NodeDirectEditManager.java 3KB
NodeDirectEditManager.java 3KB
NodeDirectEditManager.java 3KB
NodeDirectEditManager.java 3KB
NodePart.java 2KB
DiagramPart.java 2KB
DiagramPart.java 2KB
DiagramPart.java 2KB
DiagramLayoutEditPolicy.java 2KB
PaletteFactory.java 2KB
Node.java 2KB
Node.java 2KB
Node.java 2KB
DiagramLayoutEditPolicy.java 2KB
DiagramLayoutEditPolicy.java 2KB
DiagramPart.java 2KB
DiagramPart.java 2KB
DiagramPart.java 2KB
PaletteFactory.java 2KB
PaletteFactory.java 2KB
CustomXYLayoutEditPolicy.java 2KB
CustomXYLayoutEditPolicy.java 2KB
CustomXYLayoutEditPolicy.java 2KB
Diagram.java 1KB
Diagram.java 1KB
Diagram.java 1KB
ConnectionCreateCommand.java 1KB
Diagram.java 1KB
Diagram.java 1KB
Diagram.java 1KB
Element.java 1KB
Element.java 1KB
Element.java 1KB
Element.java 1KB
Element.java 1KB
Element.java 1KB
NodeGraphicalNodeEditPolicy.java 1KB
DiagramActionBarContributor.java 1KB
DiagramActionBarContributor.java 1KB
NodeTreeEditPart.java 1KB
NodeTreeEditPart.java 1KB
NodeFigure.java 1KB
NodeFigure.java 1KB
NodeFigure.java 1KB
NodeFigure.java 1KB
NodeFigure.java 1KB
PartFactory.java 1KB
CreateNodeCommand.java 1KB
CreateNodeCommand.java 1KB
CreateNodeCommand.java 1KB
NodeDirectEditPolicy.java 962B
NodeDirectEditPolicy.java 962B
NodeDirectEditPolicy.java 962B
NodeDirectEditPolicy.java 962B
NodeDirectEditPolicy.java 962B
NodeCellEditorLocator.java 945B
NodeCellEditorLocator.java 945B
NodeCellEditorLocator.java 945B
NodeCellEditorLocator.java 938B
NodeCellEditorLocator.java 938B
NodeTreeEditPart.java 936B
NodeTreeEditPart.java 936B
Node.java 876B
DeleteNodeCommand.java 869B
DeleteNodeCommand.java 869B
PartFactory.java 866B
PartFactory.java 866B
PartFactory.java 866B
PartFactory.java 866B
共 156 条
- 1
- 2
资源评论
- 夜晚醉殇情2014-04-08帮朋友下的,不知道好不好
- fatezero123452015-07-08有一些错误,不知道怎么改……
zs_aoi
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功