package com.mxgraph.io; import com.mxgraph.io.gd.mxGdDocument; import com.mxgraph.io.gd.mxGdEdge; import com.mxgraph.io.gd.mxGdNode; import com.mxgraph.model.mxCell; import com.mxgraph.model.mxGeometry; import com.mxgraph.model.mxIGraphModel; import com.mxgraph.util.mxConstants; import com.mxgraph.util.mxPoint; import com.mxgraph.view.mxGraph; import java.util.Collection; import java.util.HashMap; import java.util.Hashtable; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; public class mxGdCodec { private static HashMap cellsMap = new HashMap(); private static mxPoint getOriginPoint(mxGdNode parammxGdNode) { mxPoint localmxPoint1 = parammxGdNode.getCoordinates(); mxPoint localmxPoint2 = parammxGdNode.getDimentions(); double d1 = localmxPoint1.getX() - (localmxPoint2.getX() / 2.0D); double d2 = localmxPoint1.getY() - (localmxPoint2.getY() / 2.0D); return new mxPoint(d1, d2); } private static mxCell addNode(mxGraph parammxGraph, Object paramObject, mxGdNode parammxGdNode) { mxPoint localmxPoint1 = getOriginPoint(parammxGdNode); mxPoint localmxPoint2 = parammxGdNode.getDimentions(); String str1 = parammxGdNode.getName(); String str2 = parammxGdNode.getName(); mxCell localmxCell = (mxCell)parammxGraph.insertVertex(paramObject, str2, str1, localmxPoint1.getX(), localmxPoint1.getY(), localmxPoint2.getX(), localmxPoint2.getY()); cellsMap.put(parammxGdNode.getName(), localmxCell); return localmxCell; } private static String getStyleString(Map paramMap, String paramString) { String str1 = ""; Iterator localIterator1 = paramMap.values().iterator(); Iterator localIterator2 = paramMap.keySet().iterator(); while (localIterator2.hasNext()) { String str2 = (String)localIterator2.next(); Object localObject = localIterator1.next(); str1 = str1 + str2 + paramString + localObject + ";"; } return str1; } private static String getEdgeStyle() { Hashtable localHashtable = new Hashtable(); localHashtable.put(mxConstants.STYLE_ROUNDED, Boolean.valueOf(false)); return getStyleString(localHashtable, "="); } private static mxCell addEdge(mxGraph parammxGraph, Object paramObject, mxGdEdge parammxGdEdge) { Object localObject1 = cellsMap.get(parammxGdEdge.getSourceName()); Object localObject2 = cellsMap.get(parammxGdEdge.getTargetName()); String str = getEdgeStyle(); mxCell localmxCell = (mxCell)parammxGraph.insertEdge(paramObject, null, "", localObject1, localObject2, str); return localmxCell; } public static void decode(mxGdDocument parammxGdDocument, mxGraph parammxGraph) { Object localObject1 = parammxGraph.getDefaultParent(); parammxGraph.getModel().beginUpdate(); List localList = parammxGdDocument.getNodes(); Object localObject2 = localList.iterator(); while (((Iterator)localObject2).hasNext()) { localObject3 = (mxGdNode)((Iterator)localObject2).next(); addNode(parammxGraph, localObject1, (mxGdNode)localObject3); } localObject2 = parammxGdDocument.getEdges(); Object localObject3 = ((List)localObject2).iterator(); while (((Iterator)localObject3).hasNext()) { mxGdEdge localmxGdEdge = (mxGdEdge)((Iterator)localObject3).next(); addEdge(parammxGraph, localObject1, localmxGdEdge); } parammxGraph.getModel().endUpdate(); } private static mxGdDocument encodeNodesAndEdges(mxGdDocument parammxGdDocument, Object paramObject, mxGraph parammxGraph, mxPoint parammxPoint) { Object[] arrayOfObject1 = parammxGraph.getChildVertices(paramObject); List localList1 = parammxGdDocument.getEdges(); localList1 = encodeEdges(localList1, paramObject, parammxGraph); parammxGdDocument.setEdges(localList1); for (Object localObject : arrayOfObject1) { List localList2 = parammxGdDocument.getNodes(); mxCell localmxCell = (mxCell)localObject; mxGeometry localmxGeometry = localmxCell.getGeometry(); String str = localmxCell.getId(); mxPoint localmxPoint1 = new mxPoint(parammxPoint.getX() + localmxGeometry.getCenterX(), parammxPoint.getY() + localmxGeometry.getCenterY()); mxPoint localmxPoint2 = new mxPoint(localmxGeometry.getWidth(), localmxGeometry.getHeight()); mxPoint localmxPoint3 = new mxPoint(parammxPoint.getX() + localmxGeometry.getX(), parammxPoint.getY() + localmxGeometry.getY()); mxGdNode localmxGdNode = new mxGdNode(str, localmxPoint1, localmxPoint2); localList2.add(localmxGdNode); parammxGdDocument.setNodes(localList2); parammxGdDocument = encodeNodesAndEdges(parammxGdDocument, localObject, parammxGraph, localmxPoint3); } return parammxGdDocument; } private static List encodeEdges(List paramList, Object paramObject, mxGraph parammxGraph) { Object[] arrayOfObject1 = parammxGraph.getChildEdges(paramObject); for (Object localObject : arrayOfObject1) { mxCell localmxCell1 = (mxCell)localObject; mxCell localmxCell2 = (mxCell)localmxCell1.getSource(); mxCell localmxCell3 = (mxCell)localmxCell1.getTarget(); String str1 = ""; String str2 = ""; str1 = localmxCell2.getId(); str2 = localmxCell3.getId(); mxGdEdge localmxGdEdge = new mxGdEdge(str1, str2); paramList.add(localmxGdEdge); } return paramList; } public static mxGdDocument encode(mxGraph parammxGraph) { Object localObject = parammxGraph.getDefaultParent(); mxGdDocument localmxGdDocument = new mxGdDocument(); localmxGdDocument = encodeNodesAndEdges(localmxGdDocument, localObject, parammxGraph, new mxPoint(0.0D, 0.0D)); return localmxGdDocument; } } /* Location: C:\Users\platform-001\Desktop\新建文件夹 (2)\jgraphx.jar * Qualified Name: com.mxgraph.io.mxGdCodec * JD-Core Version: 0.5.3 */