亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? graphencoder.java

?? JGraph擴展應用。自定義Renderer,自定義視圖View實現自定義工作流控件
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
package flow.graph.gui.graph.file;

//修改原JGRPAH的類,添加寫ICON屬性的方法...
//將流程圖解碼為GXL文件的主類和方法
//實際上要XPDL格式的文檔也是在這里實現

/**
* 名稱       : WORKFLOW_JGRAPHGXLCODEC
* 描述       : WWW.FANGFA.NET 工作流管理系統--生成流程拓撲圖GXL文件類
* 版權信息   : Copyright (c) 2004 COMSCI
* @作者      : COMSCI Sichuan Fangfa Digital
* @版本      : 0.9 builder 2004091910
* @日期      : 2004/09/19
*/



import javax.swing.*;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.geom.Rectangle2D;
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.beans.XMLEncoder;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Vector;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.jgraph.JGraph;
import org.jgraph.graph.ConnectionSet;
import org.jgraph.graph.DefaultEdge;
import org.jgraph.graph.DefaultGraphCell;
import org.jgraph.graph.DefaultGraphModel;
import org.jgraph.graph.DefaultPort;
import org.jgraph.graph.GraphCell;
import org.jgraph.graph.GraphConstants;
import org.jgraph.graph.GraphModel;
import org.w3c.dom.DOMException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import flow.graph.gui.graph.GPCellViewFactory;

/**
* @author Gaudenz Alder
*
* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Generation - Code and Comments
*/
public class GraphEncoder {

	static transient Hashtable encodeHash;
	static transient Hashtable decodeHash;

	/**
	 * Retrieves the encoding Hashtable with the node's Id.
	 *
	 * It may be usefull to sirialize the values of the nodes.
	 * @return Hastable with elements : ((key : node), (value : GXL id)).
	 */

	public static Hashtable getLastEncodingHashtable() {
		 return encodeHash;
		}

	/**
	* Retrieves the decoding Hashtable with the node's Id.
	*
	* It may be usefull to sirialize the values of the nodes.
	* @return Hastable with elements : ((key : node), (value : GXL id)).
	*/
	public static Hashtable getLastDecodingHashtable() {
	 return decodeHash;
	}

	/**
	* Create a GXL-representation for all the cells.
	*
	* @param graph JGraph to encode.
	* @return Encoded string.
	*/
	public static String encode(JGraph graph) {
		//Object[] cells = graph.getDescendants(graph.getRoots());
		Object[] cells = graph.getRoots();
		System.out.println("cells.length="+cells.length);
		Vector vec = new Vector();
		for(int i=0;i<cells.length;i++){
			vec.add(cells[i]);
		}

		ByteArrayOutputStream bout = new ByteArrayOutputStream();
		XMLEncoder enc = new XMLEncoder(bout);
		enc.writeObject(vec);
		enc.close();
		System.out.println(bout);
		/*
		try {
			XMLEncoder enc = new XMLEncoder(new BufferedOutputStream(new FileOutputStream("D:/tmp/kuangzyc.xml")));
			enc.writeObject(vec);
			enc.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		*/
		return encode(graph, cells);
	}

	/**
	* Create a GXL-representation for the specified cells.
	*
	* @param graph JGraph to encode.
	* @param cells Selected cells to be encoded.
	* @return Encoded string.
	*/
	public static String encode(JGraph graph, Object[] cells) {
	 int counter = 0;
	 encodeHash = new Hashtable();
	 String gxl = "<?xml version=\"1.0\"?>\n" +
	     "<!DOCTYPE gxl>\n" +
	     "<gxl xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n" +
	     "<graph id=\"jGraph\">\n";

	 // Create external keys for nodes
	 for (int i = 0; i < cells.length; i++) {
	   if (DefaultGraphModel.isVertex(graph.getModel(), cells[i])) {
	     encodeHash.put(cells[i], "node" + counter);
	     counter++;
	   }
	 }

	 // Convert Nodes
	 Iterator it = encodeHash.keySet().iterator();
	 while (it.hasNext()) {
	   Object node = it.next();
	   gxl += encodeVertex(graph, (String) encodeHash.get(node), node);
	 }

	 // Convert Edges
	 int edges = 0;
	 for (int i = 0; i < cells.length; i++) {
	   if (graph.getModel().isEdge(cells[i])) {
	     gxl += encodeEdge(graph, new Integer(edges++), cells[i]);
	     // Close main tags
	   }
	 }
	 gxl += "\n</graph>\n</gxl>";
	 return gxl;
	}

	
	public static Vector encoderVertex(JGraph graph, Object obj){
		Vector v = new Vector();
		String label = graph.convertValueToString(obj);
		LabelBean lb = new LabelBean();
		lb.setType("VERTEX");
		lb.setValue(label);
		Map attributes = ( (GraphCell) obj).getAttributes();
		v.add(lb);
		v.add(attributes);				
		return v;
	}

	public static Vector encoderEdge(JGraph graph, Object obj){
		Vector v = new Vector();
		String label = graph.convertValueToString(obj);
		LabelBean lb = new LabelBean();
		lb.setType("VERTEX");
		lb.setValue(label);
		Map attributes = ( (GraphCell) obj).getAttributes();
		v.add(lb);
		v.add(attributes);				
		return v;
	}

	/**
	* Create a string with tabs.
	*
	* @param level Tab level.
	* @return Tab string.
	*/
	private static String createTab(int level) {
	 String tab = "";
	 for (int i = 0; i < level; i++) {
	   tab += "\t";
	 }
	 return tab;
	}

	/**
	* Basic value encoding.
	*
	* @param type GXL Type of the value (int, bool, ...)
	* @param value Value to be encoded.
	* @param level Tab level.
	* @return Encoded string.
	*/
	protected static String encodeValue(String type, String value, int level) {
	 return createTab(level) + "<" + type + ">" + value + "</" + type + ">\n";
	}

	/**
	* Basic boolean encoding.
	*
	* @param value Value to be encoded.
	* @param level Tab level.
	* @return Encoded string.
	*/
	private static String encodeValue(boolean value, int level) {
	 return createTab(level) + "<bool>" + value + "</bool>\n";
	}

	/**
	* Basic integer encoding.
	*
	* @param value Value to be encoded.
	* @param level Tab level.
	* @return Encoded string.
	*/
	protected static String encodeValue(int value, int level) {
	 return createTab(level) + "<int>" + value + "</int>\n";
	}

	/**
	* Basic String encoding.
	*
	* @param value Value to be encoded.
	* @param level Tab level.
	* @return Encoded string.
	*/
	protected static String encodeValue(String value, int level) {
	 return createTab(level) + "<string>" + value + "</string>\n";
	}

	/**
	* Attribute encoding.
	*
	* @param values Values of the attribute.
	* @param attributeName name of the attribute.
	* @param level Tab level.
	* @return Encoded string.
	*/
	protected static String encodeAttribute(String values, String attributeName,
	                                       int level) {
	 String tab = createTab(level);
	 return tab + "<attr name=\"" + attributeName + "\">\n" + values + tab +
	     "</attr>\n";
	}

	/**
	* String encoding.
	*
	* @param value Value of the attribute.
	* @param attributeName name of the attribute.
	* @param level Tab level.
	* @return Encoded string.
	*/
	protected static String encodeString(String value, String attributeName,
	                                    int level) {
	 if (value != null) {
	   return encodeAttribute(encodeValue(value, level + 1), attributeName,
	                          level);
	 }
	 else {
	   return "";
	 }
	}

	/**
	* Integer encoding.
	*
	* @param value Value of the attribute.
	* @param attributeName name of the attribute.
	* @param level Tab level.
	* @return Encoded string.
	*/
	protected static String encodeInteger(int value, String attributeName,
	                                     int level) {
	 return encodeAttribute(encodeValue(value, level + 1), attributeName, level);
	}

	/**
	* Boolean encoding.
	*
	* @param value Value of the attribute.
	* @param attributeName name of the attribute.
	* @param level Tab level.
	* @return Encoded string.
	*/
	protected static String encodeBoolean(boolean value, String attributeName,
	                                     int level) {
	 return encodeAttribute(encodeValue(value, level + 1), attributeName, level);
	}

	/**
	* Color encoding.
	*
	* @param color Color of the attribute.
	* @param attributeName name of the attribute.
	* @param level Tab level.
	* @return Encoded string.
	*/
	protected static String encodeColor(Color color, String attributeName,
	                                   int level) {
	 if (color != null) {
	   String tab1 = createTab(level + 1);
	   int level2 = level + 2;
	   String values = tab1 + "<tup>\n" +
	       encodeValue(color.getRed(), level2) +
	       encodeValue(color.getGreen(), level2) +
	       encodeValue(color.getBlue(), level2) +
	       tab1 + "</tup>\n";
	   return encodeAttribute(values, attributeName, level);
	 }
	 else {
	   return "";
	 }
	}

	/**
	* Font encoding.
	*
	* @param font Font of the attribute.
	* @param attributeName name of the attribute.
	* @param level Tab level.
	* @return Encoded string.
	*/
	protected static String encodeFont(Font font, String attributeName, int level) {
	 if (font != null) {
	   String tab1 = createTab(level + 1);
	   int level2 = level + 2;
	   String values = tab1 + "<tup>\n" +
	       encodeValue(font.getFontName(), level2) +
	       encodeValue(font.getStyle(), level2) +
	       encodeValue(font.getSize(), level2) +
	       tab1 + "</tup>\n";
	   return encodeAttribute(values, attributeName, level);
	 }
	 else {
	   return "";
	 }
	}

	/**
	* Rectangle encoding.
	*
	* @param rec Rectangle to be encoded.
	* @param attributeName name of the attribute.
	* @param level Tab level.
	* @return Encoded string.
	*/
	protected static String encodeRectangle(Rectangle2D rec, String attributeName,
	                                       int level) {
	 if (rec != null) {
	   String tab1 = createTab(level + 1);
	   int level2 = level + 2;
	   String values = tab1 + "<tup>\n" +
	       encodeValue( (int) rec.getCenterX(), level2) +
	       encodeValue( (int) rec.getCenterY(), level2) +
	       encodeValue( (int) rec.getWidth(), level2) +
	       encodeValue( (int) rec.getHeight(), level2) +
	       tab1 + "</tup>\n";
	   return encodeAttribute(values, attributeName, level);
	 }
	 else {
	   return "";
	 }
	}

	/**
	* Bean encoding.
	* This is usefull to encode the userObject in the Vertex.
	* It must be a bean with a beanInfo class in order to inspect it.
	*
	* @param bean Bean to be encoded.
	* @param attributeName name of the attribute.
	* @param level Tab level.
	* @return Encoded string.
	*/
	protected static String encodeBean(Object bean, String attributeName,
	                                  int level) {
	 String encoded = "";
	 if (bean != null) {
	   try {
	     int level1 = level + 1;
	     String tab1 = createTab(level1);
	     int level2 = level + 2;
	     BeanInfo bi = null;
	     PropertyDescriptor tmpProperties[] = null;
	     PropertyDescriptor prop = null;

	     bi = Introspector.getBeanInfo(bean.getClass());
	     tmpProperties = bi.getPropertyDescriptors();
	     encoded += encodeString(bean.getClass().getName(), "ClassName", level1);
	     for (int i = 0; i < tmpProperties.length; i++) {
	       prop = tmpProperties[i];
	       encoded +=
	           encodeString(prop.getReadMethod().invoke(bean, null).toString(),
	                        prop.getDisplayName(), level1);
	     }
	     encoded = encodeAttribute(encoded, attributeName, level);
	   }
	   catch (Exception e) {
	     e.printStackTrace();
	   }
	 }
	 return encoded;
	}

	/**
	* Encode a Vertex of a graph
	* @param graph Graph containing the vertex.
	* @param id Id of the vertex.
	* @param vertex Vertex to be encoded.
	* @return Encoded string.
	*/
	protected static String encodeVertex(JGraph graph, String id, Object vertex) {
	 int level = 2;
	 String label = graph.convertValueToString(vertex);
	 Map attributes = ( (GraphCell) vertex).getAttributes();
	 String encoded = "\n\t<node id=\"" + id + "\">\n"
	     + encodeString(label, "Label", level)
	     + encodeRectangle(GraphConstants.getBounds(attributes), "Bounds", level)
	     + encodeColor(GraphConstants.getBorderColor(attributes), "BorderColor",level)
	     + encodeColor(GraphConstants.getForeground(attributes), "BorderColor",level)
	     + encodeColor(GraphConstants.getBackground(attributes), "BorderColor",level)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91网站最新网址| 一色屋精品亚洲香蕉网站| 久久蜜桃av一区精品变态类天堂 | 全部av―极品视觉盛宴亚洲| 国产精品99久| 7777精品伊人久久久大香线蕉完整版 | 婷婷丁香久久五月婷婷| 成人午夜视频网站| 欧美成人性战久久| 亚洲国产精品久久久久秋霞影院 | 久久精品国产第一区二区三区| 成年人午夜久久久| 久久精品亚洲麻豆av一区二区 | 国产成人av电影在线观看| 欧美精品久久久久久久多人混战| 国产精品网站在线观看| 国产一区二区不卡老阿姨| 这里只有精品免费| 亚洲国产乱码最新视频| 欧洲精品一区二区三区在线观看| 亚洲国产成人午夜在线一区| 狠狠色2019综合网| 欧美电视剧在线观看完整版| 丝袜脚交一区二区| 欧美性猛交xxxx黑人交 | 欧美激情在线一区二区| 国产激情精品久久久第一区二区| 日韩欧美中文字幕制服| 美女被吸乳得到大胸91| 日韩一区二区三区电影在线观看| 午夜精品久久久久久久| 欧美少妇xxx| 亚洲成av人片观看| 91精品欧美久久久久久动漫| 日韩电影在线一区| 7777精品伊人久久久大香线蕉最新版 | 三级在线观看一区二区| 欧美一区二区三区婷婷月色 | 欧美成人r级一区二区三区| 蜜桃视频在线观看一区| 26uuu国产在线精品一区二区| 精品综合免费视频观看| 久久婷婷久久一区二区三区| 国产乱国产乱300精品| 中文字幕精品—区二区四季| 不卡av在线免费观看| 亚洲视频小说图片| 欧洲国内综合视频| 日韩av电影天堂| 久久综合九色综合欧美98| 国产河南妇女毛片精品久久久| 国产午夜一区二区三区| 色综合天天综合网天天看片| 亚洲精品国产成人久久av盗摄| 在线视频亚洲一区| 美日韩一区二区三区| 国产亚洲一区二区在线观看| 福利电影一区二区| 亚洲香蕉伊在人在线观| 91精品国产手机| 粉嫩一区二区三区在线看| 国产精品护士白丝一区av| 欧美体内she精视频| 久久国产精品区| 亚洲欧美欧美一区二区三区| 欧美一区二区三区四区五区| 丰满少妇久久久久久久| 午夜av一区二区三区| 久久丝袜美腿综合| 欧亚一区二区三区| 国产美女精品在线| 亚洲高清免费视频| 久久久久久久久久看片| 精品1区2区3区| 波多野结衣中文字幕一区| 天天操天天综合网| 中文字幕亚洲一区二区va在线| 91超碰这里只有精品国产| 成人免费毛片app| 蜜桃视频第一区免费观看| 中文字幕中文在线不卡住| 日韩欧美在线网站| 欧美性大战久久久久久久蜜臀| 国产一区二区91| 免费在线欧美视频| 最新国产の精品合集bt伙计| 精品88久久久久88久久久| 欧美天堂亚洲电影院在线播放 | 免费成人av在线| 亚洲三级视频在线观看| 久久久久国色av免费看影院| 日韩午夜在线影院| 欧美美女网站色| 99riav一区二区三区| 国产精品香蕉一区二区三区| 日本亚洲一区二区| 夜夜夜精品看看| 亚洲少妇30p| 中文av字幕一区| 久久精子c满五个校花| 精品少妇一区二区三区免费观看| 欧美日韩一区高清| 色8久久精品久久久久久蜜| av日韩在线网站| 风间由美性色一区二区三区| 国产精品影视在线| 国产精品综合一区二区三区| 久久成人羞羞网站| 精品一二三四区| 久久精品国产**网站演员| 日韩激情中文字幕| 亚洲成人免费电影| 午夜激情久久久| 日韩在线a电影| 日本欧美一区二区三区乱码| 日本视频一区二区| 美女脱光内衣内裤视频久久影院| 天堂蜜桃一区二区三区| 午夜日韩在线观看| 蜜臀av性久久久久蜜臀av麻豆| 午夜精品福利视频网站| 丝瓜av网站精品一区二区| 日韩不卡一二三区| 麻豆一区二区三| 国产一区二区三区四区五区入口 | 国产欧美视频一区二区| 国产欧美日韩亚州综合| 国产精品视频一二| 国产精品久久福利| 亚洲一区二区成人在线观看| 亚洲午夜精品网| 久久精品国产亚洲a| 国产不卡免费视频| 欧洲av在线精品| 欧美www视频| 国产欧美精品一区二区三区四区| 国产精品网站在线播放| 亚洲综合成人在线视频| 美女视频一区二区| 成人性生交大片免费看视频在线 | 精品剧情v国产在线观看在线| 久久综合色综合88| 日韩美女精品在线| 午夜精品久久久久久久蜜桃app| 青青草国产精品97视觉盛宴| 国产精品主播直播| 色94色欧美sute亚洲线路一久| 678五月天丁香亚洲综合网| 久久日韩精品一区二区五区| 成人免费一区二区三区视频| 日韩1区2区3区| 成年人国产精品| 欧美一区二区三区啪啪| 国产精品私人自拍| 秋霞午夜鲁丝一区二区老狼| 99久久99久久综合| 欧美一区二区在线观看| 亚洲欧美综合另类在线卡通| 青青青爽久久午夜综合久久午夜| 岛国精品一区二区| 91精品午夜视频| 亚洲裸体xxx| 狠狠色丁香久久婷婷综| 欧美三级电影精品| 国产精品久久毛片av大全日韩| 日韩中文字幕1| 91在线观看视频| 久久久午夜精品| 免费的成人av| 欧美影片第一页| 国产精品丝袜黑色高跟| 黄网站免费久久| 91麻豆精品国产91久久久更新时间 | 国产高清一区日本| 91精品国产综合久久精品麻豆| 国产精品欧美综合在线| 蜜臀久久久久久久| 欧美视频一区在线| √…a在线天堂一区| 久久99精品国产麻豆不卡| 欧美日韩一区二区三区视频| 中文字幕一区在线观看视频| 国产麻豆日韩欧美久久| 欧美一卡二卡在线| 午夜视黄欧洲亚洲| 在线观看视频91| 亚洲精品中文在线观看| 91在线视频官网| 一区视频在线播放| 成人午夜av影视| 国产精品久久毛片a| 国产一区在线视频| 久久婷婷成人综合色| 精品亚洲国产成人av制服丝袜| 7777精品伊人久久久大香线蕉完整版| 亚洲精品欧美在线| 91成人网在线| 亚洲伊人伊色伊影伊综合网| 在线观看成人小视频| 亚洲国产精品麻豆|