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

📄 geftoolsutil.java

📁 对eclipse gef进行封装,可以生成图形化编辑器
💻 JAVA
字号:
/*******************************************************************************
 * $Header: /cvsroot/EOS6/work_dir/niegy/com.primeton.studio.gef.ui/src/com/primeton/studio/gef/ui/GefToolsUtil.java,v 1.3 2006/12/30 02:45:04 niegy Exp $
 * $Revision: 1.3 $
 * $Date: 2006/12/30 02:45:04 $
 *
 *==============================================================================
 *
 * Copyright (c) 2001-2006 Primeton Technologies, Ltd.
 * All rights reserved.
 * 
 * Created on 2006-12-19
 *******************************************************************************/


package com.primeton.studio.gef.ui;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.eclipse.gef.palette.CombinedTemplateCreationEntry;
import org.eclipse.gef.palette.ConnectionCreationToolEntry;
import org.eclipse.gef.palette.MarqueeToolEntry;
import org.eclipse.gef.palette.PaletteContainer;
import org.eclipse.gef.palette.PaletteDrawer;
import org.eclipse.gef.palette.PaletteGroup;
import org.eclipse.gef.palette.PaletteRoot;
import org.eclipse.gef.palette.PaletteSeparator;
import org.eclipse.gef.palette.PanningSelectionToolEntry;
import org.eclipse.gef.palette.ToolEntry;
import org.eclipse.gef.requests.CreationFactory;
import org.eclipse.jface.resource.ImageDescriptor;

import com.primeton.studio.gef.core.Connection;
import com.primeton.studio.gef.core.CoreFactory;
import com.primeton.studio.gef.core.Diagram;
import com.primeton.studio.gef.core.NodeElement;
import com.primeton.studio.gef.core.Note;
import com.primeton.studio.gef.core.TNodeType;
import com.primeton.studio.gef.ui.parts.ExtenderReader;

/**
 * get工具类
 *
 * @author niegy (mailto:niegy@primeton.com)
 */
/*
 * 修改历史
 * $Log: GefToolsUtil.java,v $
 * Revision 1.3  2006/12/30 02:45:04  niegy
 * 重构代码
 *
 * Revision 1.2  2006/12/29 08:13:41  niegy
 * ?修改拖图元到编辑器中出现异常的bug
 *
 * Revision 1.1  2006/12/20 02:57:07  niegy
 * 重构代码
 * 
 */
public class GefToolsUtil {

	public static PaletteContainer createToolPaletteContainer(PaletteRoot palette,String pluginid) {
        PaletteGroup toolGroup = new PaletteGroup("tools"); //$NON-NLS-1$

        // Add a selection tool to the group
        ToolEntry tool = new PanningSelectionToolEntry();
        toolGroup.add(tool);
        palette.setDefaultEntry(tool);
        
        // Add a marquee tool to the group
        toolGroup.add(new MarqueeToolEntry());

        // Add a (unnamed) separator to the group
        toolGroup.add(new PaletteSeparator());
   
        List list = ExtenderReader.getInstance().getPaletteLineList(pluginid);
        for (Iterator iter = list.iterator(); iter.hasNext();) {
        	try{
				List element = (List) iter.next();
				String name = (String)element.get(1);
				Object targetObj = element.get(2);
				ImageDescriptor smallIcon = GefUiPluginImages.GEF_CONNECTION_16;//(ImageDescriptor)element.get(3);
				ImageDescriptor largeIcon = GefUiPluginImages.GEF_CONNECTION_32;//(ImageDescriptor)element.get(4);
				if(element.get(3) instanceof ImageDescriptor) 
					smallIcon = (ImageDescriptor)element.get(3);
				if(element.get(4) instanceof ImageDescriptor) 
					largeIcon = (ImageDescriptor)element.get(4);	
				String desc = (String)element.get(5);
				createEntryLine(toolGroup,name,desc,targetObj,smallIcon,largeIcon,pluginid);
        	}
        	catch(Exception e){
        		e.printStackTrace();
        	}
		}
        
        return toolGroup;
    }
	
	public static List<PaletteDrawer> createNodesPaletteContainer(String pluginid,boolean isExistNote) {
		Map<String, PaletteDrawer> map = new HashMap<String, PaletteDrawer>(); 
//        PaletteDrawer paletteDrawer = new PaletteDrawer("nodes");
//        map.put("nodes", paletteDrawer);
        List list = ExtenderReader.getInstance().getPaletteEntryList(pluginid);
        for (Iterator iter = list.iterator(); iter.hasNext();) {
        	try{
				List element = (List) iter.next();
				String name = (String)element.get(1);
				Object targetObj = element.get(2);
//				String methodName = (String)element.get(3);
//				Method method = factory.getClass().getMethod(methodName, null);
//				Object targetObj = method.invoke(factory, null);
				ImageDescriptor smallIcon =  null;
				ImageDescriptor largeIcon = null;
				if(element.get(3) instanceof ImageDescriptor)
					smallIcon = (ImageDescriptor)element.get(3);
				if(element.get(4) instanceof ImageDescriptor)
					largeIcon = (ImageDescriptor)element.get(4);
				String desc = (String)element.get(5);
				String group = (String)element.get(6);
				PaletteDrawer paletteDrawer = getPaletteDrawer(map,group);
				createEntry(paletteDrawer,name,desc,targetObj,smallIcon,largeIcon,pluginid);
        	}
        	catch(Exception e){
        		e.printStackTrace();
        	}
		}
        if(isExistNote){
        	Note note = CoreFactory.eINSTANCE.createNote();
        	note.setNodeType(TNodeType.NOTE_LITERAL);
        	PaletteDrawer paletteDrawer = getPaletteDrawer(map,"nodes");
        	createNoteEntry(paletteDrawer,"note","note",note,GefUiPluginImages.GEF_NOTE_16
        			,GefUiPluginImages.GEF_NOTE_32,pluginid);
        }
        List<PaletteDrawer> paletteDrawerList = new ArrayList<PaletteDrawer>();
        for (Iterator iter = map.values().iterator(); iter.hasNext();) {
        	PaletteDrawer element = (PaletteDrawer) iter.next();
        	paletteDrawerList.add(element);
		}
        return paletteDrawerList;
    }
    
	private static PaletteDrawer getPaletteDrawer(Map<String, PaletteDrawer> map,String key){
		if(map.get(key) != null){
			return map.get(key);
		}
		else{
			 PaletteDrawer paletteDrawer = new PaletteDrawer(key);
			 map.put(key, paletteDrawer);
			 return paletteDrawer;
		}
	}
	
    protected static void createNoteEntry(PaletteDrawer paletteDrawer,String name,String comment,Object target ,ImageDescriptor smallIcon,
            ImageDescriptor largeIcon,String pluginid){
    	createEntry(paletteDrawer,name,comment,target,smallIcon
    			,largeIcon,pluginid);
    }
    
    
    private static void createEntry(PaletteDrawer paletteDrawer,
            String name,String comment,Object target ,ImageDescriptor smallIcon,
            ImageDescriptor largeIcon,String pluginid){
    	CreationFactory factory = ExtenderReader.getInstance().cloneModelCreationFactory(pluginid,target);
    	CombinedTemplateCreationEntry creationEntry = new CombinedTemplateCreationEntry(
                name, 
                comment,  
                target,//.getClass(),
                factory,
                smallIcon, //$NON-NLS-1$
                largeIcon); //$NON-NLS-1$
        paletteDrawer.add(creationEntry);
        
    }
    
    private static void createEntryLine(PaletteGroup toolGroup,
            String name,String comment ,Object target ,ImageDescriptor smallIcon,
            ImageDescriptor largeIcon,String pluginid){
    	CreationFactory factory = ExtenderReader.getInstance().cloneModelCreationFactory(pluginid,target);
    	ConnectionCreationToolEntry creationEntry = new ConnectionCreationToolEntry(
                name, 
                comment,  
                factory,
                smallIcon, //$NON-NLS-1$
                largeIcon); //$NON-NLS-1$
    	toolGroup.add(creationEntry);
        
    }
    
    public static void iniLinkId(Diagram diagram,String key){
    	 List<String> list =  ExtenderReader.getInstance().getLinkIdList(key);
    	 list.clear();
    	 for (Iterator iter =  diagram.getNodes().iterator(); iter.hasNext();) {
			NodeElement element = (NodeElement) iter.next();
			for (Iterator iterator = element.getSourceConnections().iterator(); iterator.hasNext();) {
				Connection conn = (Connection) iterator.next();
				list.add(conn.getId());
			}
		}
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -