📄 nodetreeeditpart.java
字号:
/*******************************************************************************
* $Header: /cvsroot/EOS6/work_dir/niegy/com.primeton.studio.gef.ui/src/com/primeton/studio/gef/ui/parts/NodeTreeEditPart.java,v 1.4 2006/12/30 02:45:04 niegy Exp $
* $Revision: 1.4 $
* $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 java.util.Iterator;
import java.util.List;
import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.Notifier;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.gef.EditPolicy;
import org.eclipse.gef.editparts.AbstractTreeEditPart;
import org.eclipse.swt.graphics.Image;
import com.primeton.studio.gef.core.NodeElement;
import com.primeton.studio.gef.ui.editor.AbstractGraphicalEditor;
import com.primeton.studio.gef.ui.ui.policy.NodeComponentEditPolicy;
/**
* TODO此处填写 class 信息
*
* @author niegy (mailto:niegy@primeton.com)
*/
/*
* 修改历史
* $Log: NodeTreeEditPart.java,v $
* Revision 1.4 2006/12/30 02:45:04 niegy
* 重构代码
*
* Revision 1.3 2006/12/20 02:57:07 niegy
* 重构代码
*
* Revision 1.2 2006/12/05 05:18:59 niegy
* 修改模型,增加连线的扩展点
*
* Revision 1.1 2006/11/17 03:15:13 niegy
* create
*
*/
public class NodeTreeEditPart extends AbstractTreeEditPart implements Adapter {
private AbstractGraphicalEditor graphicalEditor;
private Notifier target;
/**
* Create a new instance of this edit part using the given model element.
* @param model a non-null Shapes instance
*/
public NodeTreeEditPart(NodeElement model,AbstractGraphicalEditor graphicalEditor) {
super(model);
this.graphicalEditor = graphicalEditor;
}
private void hookIntoModel(EObject model) {
if(model != null) {
model.eAdapters().add(this);
}
}
private void unhookFromModel(EObject model) {
if(model != null) {
model.eAdapters().remove(this);
}
}
/**
* Upon activation, attach to the model element as a property change listener.
*/
public void activate() {
if (!isActive()) {
hookIntoModel(getCastedModel());
super.activate();
}
}
public Object getAdapter(Class key) {
// if (IPropertySource.class == key)
// return new DataFlowPropertySource(getModel());
return super.getAdapter(key);
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.AbstractTreeEditPart#createEditPolicies()
*/
protected void createEditPolicies() {
// allow removal of the associated model element
installEditPolicy(EditPolicy.COMPONENT_ROLE, new NodeComponentEditPolicy());
}
/**
* Upon deactivation, detach from the model element as a property change listener.
*/
public void deactivate() {
if (isActive()) {
unhookFromModel(getCastedModel());
super.deactivate();
}
}
private NodeElement getCastedModel() {
return (NodeElement) getModel();
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.AbstractTreeEditPart#getImage()
*/
protected Image getImage() {
return createImageForModel(getCastedModel());
}
protected Image createImageForModel(NodeElement nodeElement) {
List list = ExtenderReader.getInstance().getPaletteEntryList(graphicalEditor.getPluginId());
for (Iterator iter = list.iterator(); iter.hasNext();) {
try{
List element = (List) iter.next();
Object targetObj = element.get(2);
if(targetObj.getClass().equals(nodeElement.getClass())){
Image smallIcon = (Image)element.get(7);
return smallIcon;
}
}
catch(Exception e){
}
}
return null;
}
/* (non-Javadoc)
* @see org.eclipse.gef.editparts.AbstractTreeEditPart#getText()
*/
protected String getText() {
String name = getCastedModel().getName();
if(name==null)
return getCastedModel().toString();
else
return name;
}
public void notifyChanged(Notification notification) {
refreshVisuals(); // this will cause an invocation of getImage() and getText(), see below
}
public Notifier getTarget() {
return target;
}
public void setTarget(Notifier newTarget) {
target = newTarget;
}
public boolean isAdapterForType(Object type) {
return getModel() == type;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -