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<String, Object> 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<String, Object> 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<mxGdEdge> encodeEdges(List<mxGdEdge> 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
|
*/
|