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

📄 extenderreader.java

📁 对eclipse gef进行封装,可以生成图形化编辑器
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
			getAttribute(element,EXT_ATTR_DESC,list);
			if(EXT_PALETTE_ELEMENT_NAME.equals(extendName)){
				 getAttribute(element,EXT_ATTR_GROUP,list);
			}
			if(smallIcon!=null)
				list.add(smallIcon.createImage());
			paletteList.add(list);
		} catch (Exception e) {
			e.printStackTrace();
			paletteList.add(list);
		}	


    }
    
    private void setNodeType(String type,NodeElement nodeElement){
    	if (type != null && type.length() > 0) {
    		if(type.equals(ExtenderReader.PARENT))
    			nodeElement.setNodeType(TNodeType.PARENT_LITERAL);
    		else if(type.equals(ExtenderReader.CHILD))
    			nodeElement.setNodeType(TNodeType.CHILD_LITERAL);
    		else if(type.equals(ExtenderReader.TABLE))
    			nodeElement.setNodeType(TNodeType.TABLE_LITERAL);
    		else if(type.equals(ExtenderReader.ATTRICOLUMN))
    			nodeElement.setNodeType(TNodeType.ATTRICOLUMN_LITERAL);
    		else if(type.equals(ExtenderReader.OPERATIONCOLUMN))
    			nodeElement.setNodeType(TNodeType.OPERATIONCOLUMN_LITERAL);
    		else if(type.equals(ExtenderReader.OTHERS))
    			nodeElement.setNodeType(TNodeType.OTHERS_LITERAL);
		}
    }
    
    private void setLineType(String type,Connection conn){
    	if (type != null && type.length() > 0) {
    		if(type.equals(ExtenderReader.REFERENCE))
    			conn.setLineType(TLineType.REFERENCE_LITERAL);
    		else if(type.equals(ExtenderReader.INHERITANCE))
    			conn.setLineType(TLineType.INHERITANCE_LITERAL);
    		else if(type.equals(ExtenderReader.NOTE))
    			conn.setLineType(TLineType.NOTE_LITERAL);
    		else if(type.equals(ExtenderReader.OTHERS))
    			conn.setLineType(TLineType.OTHERS_LITERAL);
		}
    }
    
    private String getAttribute(IConfigurationElement element,String attriId){
    	String extStr = element.getAttribute(attriId);
		if (extStr == null || extStr.length() <= 0) {
		    return "";
		}
		return extStr;
    }
    
    private void getAttribute(IConfigurationElement element,String attriId,List list){
    	String extStr = element.getAttribute(attriId);
		if (extStr == null || extStr.length() <= 0) {
			list.add("");
		    return;
		}
		list.add(extStr);
    }
    
    private String getPaletteKey(String obj1,String obj2) {
        if ( obj1 == null) return null;
        if ( obj2 == null) return null;
        return obj1 + obj2;
    }
    
    private String getKey(String pluginId) {
        if ( pluginId == null) return null;
        return pluginId;
    }
    

    /**
     * 根据相应gef编辑器的pluginid返回ModelCreationFactory
     * @param pluginId
     * @return
     */
    public ModelCreationFactory getModelCreateFactory(String pluginId) {
        if (pluginId != null) {
            String key = getKey(pluginId);
            Object modelCreateObj = modelCreateFactoryMap.get(key);
            if (modelCreateObj instanceof ModelCreationFactory) {
                return (ModelCreationFactory)modelCreateObj;
            }
        }
        return null;
    }
    
    
    /**
     * 返回创建指定扩展名的node的editpartFactory
     * 
     * @param pluginId gef编辑器的pluginid
     * @return 返回node的editpart
     */
    public DiagramEditPartFactory getEditPartFactory(String pluginId) {
        if (pluginId != null) {
            String key = getKey(pluginId);
            Object editPartObj = editPartFactoryMap.get(key);
            if (editPartObj instanceof DiagramEditPartFactory) {
                return (DiagramEditPartFactory)editPartObj;
            }
        }
        return null;
    }
    
    /**
     * 调用gef编辑器模型创建factory的createNodeEditPart函数
     * @param editor
     * @param element
     * @return
     */
    public  NodeEditPart createNodeEditPart(AbstractGraphicalEditor editor,Element element) {    
        ExtenderReader extender = ExtenderReader.getInstance();
        DiagramEditPartFactory factory = extender.getEditPartFactory(editor.getPluginId());
        if (factory != null) {
            return factory.createNodeEditPart(editor,element);
        }
        return null;
    }
    
    /**
     * 创建ModelCreationFactory
     * @param target 目标对象
     * @param pluginId
     * @return
     */
//    public  CreationFactory createPaletteCreationFactory(Object target ,String pluginId){
//    	  ExtenderReader extender = ExtenderReader.getInstance();
//    	  try{
//    		ModelCreationFactory factory = (ModelCreationFactory)extender.configElement.createExecutableExtension(EXT_ATTR_CLASS);
//  	  	  if (factory != null) {
//  	    	  factory.setTarget(target);
//  	    	  factory.setPluginId(pluginId);
//  	          return factory;
//  	      }
//    	  }
//    	  catch(Exception e){
//    		  e.printStackTrace();
//    	  }
//        return null;
//    }
    
    /**
     * 克隆CreationFactory
     * @param pluginId
     * @param target
     * @return
     */
    public CreationFactory cloneModelCreationFactory(String pluginId,Object target){
    	try{
	    	ModelCreationFactory factory = (ModelCreationFactory)createModelCreationFactory(pluginId,target);
	    	return (CreationFactory)factory.clone();
    	}
    	catch(CloneNotSupportedException e){
    		e.printStackTrace();
    		return null;
    	}
    }
  
   /**
    * 返回ModelCreationFactory
    * @param pluginId
    * @param target
    * @return
    */
    public  CreationFactory createModelCreationFactory(String pluginId,Object target){
    	  ExtenderReader extender = ExtenderReader.getInstance();
    	  ModelCreationFactory factory = extender.getModelCreateFactory(pluginId);   	  
          if (factory != null) {
        	  factory.setTarget(target);
        	  factory.setPluginId(pluginId);
              return factory;
          }
          return null;
    }
    

    /**
     * 返回对应编辑器的palette的节点列表
     * @param pluginId
     * @return
     */
	public  List getPaletteEntryList(String pluginId){
    	  ExtenderReader extender = ExtenderReader.getInstance();
    	  List entryList = new ArrayList();
    	  for (Iterator iter =  extender.paletteEntryList.iterator(); iter.hasNext();) {
    		  List element = (List) iter.next();
    		  String key = extender.getPaletteKey((String)element.get(0),(String)element.get(1));
    		  if(key.startsWith(pluginId)){
    			  entryList.add( element);
    		  }
    	  }
    	  return entryList;
    }
    
	/**
	 * 返回对应编辑器的palette的连线列表
	 * @param pluginId
	 * @return
	 */
    public  List getPaletteLineList(String pluginId){
  	  ExtenderReader extender = ExtenderReader.getInstance();
  	  List entryList = new ArrayList();
  	  for (Iterator iter =  extender.paletteLineList.iterator(); iter.hasNext();) {
  		  List element = (List) iter.next();
  		  String key = extender.getPaletteKey((String)element.get(0),(String)element.get(1));
  		  if(key.startsWith(pluginId)){
  			  entryList.add( element);
  		  }
  	  }
  	  return entryList;
  }
    
    /**
     * 返回编辑器图元属性xml的路径
     * @param pluginId
     * @return
     */
    public  String getFilePath(String pluginId){
 	   ExtenderReader extender = ExtenderReader.getInstance();
 	   String path = (String)extender.modelPropertyMap.get(pluginId);
       return path;
    }
    
    /**
     * 返回属性节点
     * @param pluginId 
     * @return
     */
    public NodeElement getAtriNode(String pluginId){
    	if(nodeAttriMap.containsKey(pluginId))
    		return (NodeElement)nodeAttriMap.get(pluginId);
    	else{  		
    		getAttriAndOperNode(pluginId);
    		if(nodeAttriMap.containsKey(pluginId))
        		return (NodeElement)nodeAttriMap.get(pluginId);
    		else
        		return null;
    	} 	
    }
    
    /**
     * 返回操作节点
     * @param pluginId 
     * @return
     */
    public NodeElement getOperNode(String pluginId){
    	if(nodeOperMap.containsKey(pluginId))
    		return (NodeElement)nodeOperMap.get(pluginId);
    	else{  		
    		getAttriAndOperNode(pluginId);
    		if(nodeOperMap.containsKey(pluginId))
        		return (NodeElement)nodeOperMap.get(pluginId);
    		else
        		return null;
    	} 	
    }
    
    public List<String> getLinkIdList(String pluginId){
    	 ExtenderReader extender = ExtenderReader.getInstance();
    	 if(extender.linkIdMap.get(pluginId)==null){
    		 List<String> list = new ArrayList<String>();
    		 extender.linkIdMap.put(pluginId, list);
    		 return list;
    	 }
    	 else{
    		 return (List<String>)extender.linkIdMap.get(pluginId);
    	 }
    	
    }
    
    private void getAttriAndOperNode(String pluginId){
    	List nodeList = ExtenderReader.getInstance().getPaletteEntryList(pluginId);
    	for (Iterator iter = nodeList.iterator(); iter.hasNext();) {
    		List list = (List) iter.next();
    		String name = (String)list.get(1);
			NodeElement element = (NodeElement)list.get(2);
			if(element.getNodeType()==TNodeType.ATTRICOLUMN_LITERAL){
				setNodeInfo(element,name);
				nodeAttriMap.put(pluginId, element);
			}
			else if(element.getNodeType()==TNodeType.OPERATIONCOLUMN_LITERAL){
				setNodeInfo(element,name);
				nodeOperMap.put(pluginId, element);
			}
		}
    }
    
    private void setNodeInfo(Object node,String name){
    	if(node instanceof Element){
	        ((Element)node).setName(name); 
	        ((Element)node).setId(name);
    	}
    }
}

⌨️ 快捷键说明

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