package com.mxgraph.io;
|
|
import com.mxgraph.model.mxCell;
|
import com.mxgraph.model.mxCellPath;
|
import com.mxgraph.model.mxICell;
|
import com.mxgraph.util.mxUtils;
|
import java.io.PrintStream;
|
import java.util.Hashtable;
|
import java.util.Map;
|
import org.w3c.dom.Document;
|
import org.w3c.dom.Element;
|
import org.w3c.dom.Node;
|
|
public class mxCodec
|
{
|
protected Document document;
|
protected Map<String, Object> objects;
|
protected boolean encodeDefaults;
|
|
public mxCodec()
|
{
|
this(mxUtils.createDocument());
|
}
|
|
public mxCodec(Document paramDocument)
|
{
|
this.objects = new Hashtable();
|
this.encodeDefaults = false;
|
if (paramDocument == null)
|
paramDocument = mxUtils.createDocument();
|
this.document = paramDocument;
|
}
|
|
public Document getDocument()
|
{
|
return this.document;
|
}
|
|
public void setDocument(Document paramDocument)
|
{
|
this.document = paramDocument;
|
}
|
|
public boolean isEncodeDefaults()
|
{
|
return this.encodeDefaults;
|
}
|
|
public void setEncodeDefaults(boolean paramBoolean)
|
{
|
this.encodeDefaults = paramBoolean;
|
}
|
|
public Map<String, Object> getObjects()
|
{
|
return this.objects;
|
}
|
|
public Object putObject(String paramString, Object paramObject)
|
{
|
return this.objects.put(paramString, paramObject);
|
}
|
|
public Object getObject(String paramString)
|
{
|
Object localObject = null;
|
if (paramString != null)
|
{
|
localObject = this.objects.get(paramString);
|
if (localObject == null)
|
{
|
localObject = lookup(paramString);
|
if (localObject == null)
|
{
|
Node localNode = getElementById(paramString);
|
if (localNode != null)
|
localObject = decode(localNode);
|
}
|
}
|
}
|
return localObject;
|
}
|
|
public Object lookup(String paramString)
|
{
|
return null;
|
}
|
|
public Node getElementById(String paramString)
|
{
|
return getElementById(paramString, null);
|
}
|
|
public Node getElementById(String paramString1, String paramString2)
|
{
|
if (paramString2 == null)
|
paramString2 = "id";
|
String str = "//*[@" + paramString2 + "='" + paramString1 + "']";
|
return mxUtils.selectSingleNode(this.document, str);
|
}
|
|
public String getId(Object paramObject)
|
{
|
String str = null;
|
if (paramObject != null)
|
{
|
str = reference(paramObject);
|
if ((str == null) && (paramObject instanceof mxICell))
|
{
|
str = ((mxICell)paramObject).getId();
|
if (str == null)
|
{
|
str = mxCellPath.create((mxICell)paramObject);
|
if (str.length() == 0)
|
str = "root";
|
}
|
}
|
}
|
return str;
|
}
|
|
public String reference(Object paramObject)
|
{
|
return null;
|
}
|
|
public Node encode(Object paramObject)
|
{
|
Node localNode = null;
|
if (paramObject != null)
|
{
|
String str = mxCodecRegistry.getName(paramObject);
|
mxObjectCodec localmxObjectCodec = mxCodecRegistry.getCodec(str);
|
if (localmxObjectCodec != null)
|
localNode = localmxObjectCodec.encode(this, paramObject);
|
else if (paramObject instanceof Node)
|
localNode = ((Node)paramObject).cloneNode(true);
|
else
|
System.err.println("No codec for " + str);
|
}
|
return localNode;
|
}
|
|
public Object decode(Node paramNode)
|
{
|
return decode(paramNode, null);
|
}
|
|
public Object decode(Node paramNode, Object paramObject)
|
{
|
Object localObject = null;
|
if ((paramNode != null) && (paramNode.getNodeType() == 1))
|
{
|
mxObjectCodec localmxObjectCodec = mxCodecRegistry.getCodec(paramNode.getNodeName());
|
try
|
{
|
if (localmxObjectCodec != null)
|
{
|
localObject = localmxObjectCodec.decode(this, paramNode, paramObject);
|
}
|
else
|
{
|
localObject = paramNode.cloneNode(true);
|
((Element)localObject).removeAttribute("as");
|
}
|
}
|
catch (Exception localException)
|
{
|
System.err.println("Cannot decode " + paramNode.getNodeName() + ": " + localException.getMessage());
|
localException.printStackTrace();
|
}
|
}
|
return localObject;
|
}
|
|
public void encodeCell(mxICell parammxICell, Node paramNode, boolean paramBoolean)
|
{
|
paramNode.appendChild(encode(parammxICell));
|
if (!(paramBoolean))
|
return;
|
int i = parammxICell.getChildCount();
|
for (int j = 0; j < i; ++j)
|
encodeCell(parammxICell.getChildAt(j), paramNode, paramBoolean);
|
}
|
|
public mxICell decodeCell(Node paramNode, boolean paramBoolean)
|
{
|
mxICell localmxICell = null;
|
if ((paramNode != null) && (paramNode.getNodeType() == 1))
|
{
|
mxObjectCodec localmxObjectCodec = mxCodecRegistry.getCodec(paramNode.getNodeName());
|
Object localObject;
|
if (!(localmxObjectCodec instanceof mxCellCodec))
|
{
|
for (localObject = paramNode.getFirstChild(); (localObject != null) && (!(localmxObjectCodec instanceof mxCellCodec)); localObject = ((Node)localObject).getNextSibling())
|
localmxObjectCodec = mxCodecRegistry.getCodec(((Node)localObject).getNodeName());
|
String str = mxCell.class.getSimpleName();
|
localmxObjectCodec = mxCodecRegistry.getCodec(str);
|
}
|
if (!(localmxObjectCodec instanceof mxCellCodec))
|
{
|
localObject = mxCell.class.getSimpleName();
|
localmxObjectCodec = mxCodecRegistry.getCodec((String)localObject);
|
}
|
localmxICell = (mxICell)localmxObjectCodec.decode(this, paramNode);
|
if (paramBoolean)
|
insertIntoGraph(localmxICell);
|
}
|
return ((mxICell)localmxICell);
|
}
|
|
public void insertIntoGraph(mxICell parammxICell)
|
{
|
mxICell localmxICell1 = parammxICell.getParent();
|
mxICell localmxICell2 = parammxICell.getTerminal(true);
|
mxICell localmxICell3 = parammxICell.getTerminal(false);
|
parammxICell.setTerminal(null, false);
|
parammxICell.setTerminal(null, true);
|
parammxICell.setParent(null);
|
if (localmxICell1 != null)
|
localmxICell1.insert(parammxICell);
|
if (localmxICell2 != null)
|
localmxICell2.insertEdge(parammxICell, true);
|
if (localmxICell3 == null)
|
return;
|
localmxICell3.insertEdge(parammxICell, false);
|
}
|
|
public static void setAttribute(Node paramNode, String paramString, Object paramObject)
|
{
|
if ((paramNode.getNodeType() != 1) || (paramString == null) || (paramObject == null))
|
return;
|
((Element)paramNode).setAttribute(paramString, String.valueOf(paramObject));
|
}
|
}
|
|
/* Location: C:\Users\platform-001\Desktop\新建文件夹 (2)\jgraphx.jar
|
* Qualified Name: com.mxgraph.io.mxCodec
|
* JD-Core Version: 0.5.3
|
*/
|