📄 modelcreationfactory.java
字号:
/*******************************************************************************
* $Header: /cvsroot/EOS6/work_dir/niegy/com.primeton.studio.gef.ui/src/com/primeton/studio/gef/ui/editor/ModelCreationFactory.java,v 1.5 2006/12/30 02:45:04 niegy Exp $
* $Revision: 1.5 $
* $Date: 2006/12/30 02:45:04 $
*
*==============================================================================
*
* Copyright (c) 2001-2006 Primeton Technologies, Ltd.
* All rights reserved.
*
* Created on 2006-11-15
*******************************************************************************/
package com.primeton.studio.gef.ui.editor;
import java.util.Iterator;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.gef.requests.CreationFactory;
import com.primeton.studio.gef.core.Connection;
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.Note;
import com.primeton.studio.gef.ui.parts.ExtenderReader;
/**
* TODO 此处填写 class 信息
*
* @author niegy (mailto:niegy@primeton.com)
*/
/*
* 修改历史
* $Log: ModelCreationFactory.java,v $
* Revision 1.5 2006/12/30 02:45:04 niegy
* 重构代码
*
* Revision 1.4 2006/12/29 09:07:22 niegy
* 重构代码
*
* Revision 1.3 2006/12/08 07:04:32 niegy
* 重构代码
*
* Revision 1.2 2006/12/05 05:18:59 niegy
* 修改模型,增加连线的扩展点
*
* Revision 1.1 2006/11/17 03:15:13 niegy
* create
*
*/
public abstract class ModelCreationFactory implements CreationFactory,Cloneable {
protected Object target;
protected String pluginId;
public ModelCreationFactory() {
}
public ModelCreationFactory(ModelCreationFactory factory) {
target = factory.getTarget();
pluginId = factory.getPluginId();
}
public void setTarget(Object obj){
target = obj;
}
public void setPluginId(String id){
pluginId = id;
}
public String getPluginId(){
return pluginId;
}
public Object getTarget(){
return target;
}
/* (non-Javadoc)
* @see org.eclipse.gef.requests.CreationFactory#getNewObject()
*/
public Object getNewObject() {
// TODO Auto-generated method stub
List nodeList = ExtenderReader.getInstance().getPaletteEntryList(pluginId);
List lineList = ExtenderReader.getInstance().getPaletteLineList(pluginId);
if(target instanceof Note ||
target instanceof GroupNode)
return EcoreUtil.copy((EObject)target);
else if(target instanceof NodeElement)
return getNewObject(nodeList,true);
else
return getNewObject(lineList,false);
}
private Object getNewObject(List list,boolean isNode){
for (Iterator iter = list.iterator(); iter.hasNext();) {
try{
List element = (List) iter.next();
String name = (String)element.get(1);
Object targetObj = element.get(2);
if(target.getClass().equals(targetObj.getClass())){
if(isNode){
Object newObj = EcoreUtil.copy((EObject)targetObj);
setNodeInfo(newObj,name);
return newObj;
}
else{
boolean equ = ((Connection)target).getLineType() == ((Connection)targetObj).getLineType();
if(equ){
Object newObj = EcoreUtil.copy((EObject)targetObj);
setNodeInfo(newObj,name);
return newObj;
}
}
}
}
catch(Exception e){
e.printStackTrace();
}
}
return target;
}
private void setNodeInfo(Object node,String name){
if(node instanceof Element){
((Element)node).setName(name);
((Element)node).setId(name);
}
}
/* (non-Javadoc)
* @see org.eclipse.gef.requests.CreationFactory#getObjectType()
*/
public Object getObjectType() {
// TODO Auto-generated method stub
return target.getClass();
}
abstract public Object clone() throws CloneNotSupportedException;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -