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

📄 nodetreeeditpart.java

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