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

📄 diagrameditpartfactory.java

📁 对eclipse gef进行封装,可以生成图形化编辑器
💻 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 + -