📄 diagrameditpartfactory.java
字号:
/*******************************************************************************
* $Header: /cvsroot/EOS6/work_dir/niegy/com.primeton.studio.gef.ui/src/com/primeton/studio/gef/ui/parts/DiagramEditPartFactory.java,v 1.8 2006/12/30 02:45:04 niegy Exp $
* $Revision: 1.8 $
* $Date: 2006/12/30 02:45:04 $
*
*==============================================================================
*
* Copyright (c) 2001-2006 Primeton Technologies, Ltd.
* All rights reserved.
*
* Created on 2006-9-28
*******************************************************************************/
package com.primeton.studio.gef.ui.parts;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.EditPartFactory;
import org.eclipse.gef.NodeEditPart;
import com.primeton.studio.gef.core.Connection;
import com.primeton.studio.gef.core.Diagram;
import com.primeton.studio.gef.core.Element;
import com.primeton.studio.gef.core.GroupNode;
import com.primeton.studio.gef.core.NodeElement;
import com.primeton.studio.gef.core.NodeElementLabel;
import com.primeton.studio.gef.core.Note;
import com.primeton.studio.gef.core.TLineType;
import com.primeton.studio.gef.core.TNodeType;
import com.primeton.studio.gef.ui.editor.AbstractGraphicalEditor;
import com.primeton.studio.gef.ui.parts.TableEditPart.PlaceHolderModel;
/**
* editpart工厂类
*
* @author niegy (mailto:niegy@primeton.com)
*/
/*
* 修改历史
* $Log: DiagramEditPartFactory.java,v $
* Revision 1.8 2006/12/30 02:45:04 niegy
* 重构代码
*
* Revision 1.7 2006/12/16 09:04:42 niegy
* 重构代码
*
* Revision 1.6 2006/12/12 08:26:39 niegy
* 重构代码,实现一般图元的编辑框
*
* Revision 1.5 2006/12/08 07:04:32 niegy
* 重构代码
*
* Revision 1.4 2006/12/05 05:18:59 niegy
* 修改模型,增加连线的扩展点
*
* Revision 1.3 2006/11/22 07:07:38 niegy
* 增加table
*
* Revision 1.2 2006/11/18 12:13:53 niegy
* 增加容器模型
*
* Revision 1.1 2006/11/17 03:15:13 niegy
* create
*
*/
public class DiagramEditPartFactory implements EditPartFactory {
private Diagram diagram = null;
/**
* gef编辑器
*/
private AbstractGraphicalEditor graphicalEditor;
public DiagramEditPartFactory(){
}
public void setEditor(AbstractGraphicalEditor editor){
graphicalEditor = editor;
}
public AbstractGraphicalEditor getEditor(){
return graphicalEditor;
}
public Diagram getDiagram(){
return diagram;
}
/*
* (non-Javadoc)
* @see org.eclipse.gef.EditPartFactory#createEditPart(org.eclipse.gef.EditPart, java.lang.Object)
*/
public EditPart createEditPart(EditPart context, Object modelElement) {
// get EditPart for model element
EditPart part = getPartForElement(modelElement);
// store model element in EditPart
part.setModel(modelElement);
return part;
}
/**
* Maps an object to an EditPart.
* @throws RuntimeException if no match was found (programming error)
*/
protected EditPart getPartForElement(Object modelElement) {
if(modelElement instanceof Diagram) {
diagram = (Diagram)modelElement;
return new DiagramEditPart(graphicalEditor.getPluginId());
}
if(modelElement instanceof Note){
return new NoteEditPart(graphicalEditor);
}
if(modelElement instanceof GroupNode){
return new GroupNodeEditPart(graphicalEditor);
}
if(modelElement instanceof NodeElementLabel){
return new LabelEditPart(graphicalEditor);
}
if(modelElement instanceof NodeElement) {
return ExtenderReader.getInstance().createNodeEditPart(graphicalEditor,(NodeElement)modelElement);
}
if(modelElement instanceof PlaceHolderModel)
{
return new CompartmentEditPart(modelElement);
}
if (modelElement instanceof Connection) {
return createConnectionEditPart((Connection)modelElement);
}
throw new RuntimeException(
"Can't create part for model element: "
+ ((modelElement != null) ? modelElement.getClass().getName() : "null"));
}
/**
* 根据不同的连续创建相应的连线editpart
* @param conn
* @return
*/
protected ConnectionEditPart createConnectionEditPart(Connection conn){
int value = conn.getLineType().getValue();
switch(value){
case TLineType.COMMON:
return new ConnectionEditPart(graphicalEditor);
case TLineType.REFERENCE:
return new ReferenceConnectionEditPart(graphicalEditor);
case TLineType.INHERITANCE:
return new InheritanceConnectionEditPart(graphicalEditor);
case TLineType.NOTE:
return new NoteConnectionEditPart(graphicalEditor);
default:
return new ConnectionEditPart(graphicalEditor);
}
}
/**
* 根据不同的节点种类创建相应的节点editpart
* @param editor
* @param element
* @return
*/
public NodeEditPart createNodeEditPart(AbstractGraphicalEditor editor,Element element){
if(element instanceof NodeElement){
int value = ((NodeElement)element).getNodeType().getValue();
switch(value){
case TNodeType.COMMON:
return new NodeEditPartEx(editor);
case TNodeType.PARENT:
return new ContainertEditPart(editor);
case TNodeType.CHILD:
return new ChildEditPart(editor);
case TNodeType.TABLE:
return new TableEditPart(editor);
case TNodeType.ATTRICOLUMN:
return new AttributeEditPart(editor);
case TNodeType.OPERATIONCOLUMN:
return new OperationEditPart(editor);
}
}
return new NodeEditPartEx(editor);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -