maxGraph/dotnet/aspnet/Backend.ashx

91 lines
2.3 KiB
Plaintext

<%@ WebHandler Language="C#" Class="Share" %>
using System;
using System.Text;
using System.Web;
using System.Web.SessionState;
using System.Threading;
using System.Collections.Generic;
using System.Xml;
using com.mxgraph;
public class Share : IHttpHandler
{
/// <summary>
/// Handles save request and prints XML.
/// </summary>
protected void DoPost(HttpContext context)
{
string id = context.Request.Params["id"];
string xml = context.Request.Params["xml"];
Console.WriteLine("Received id=" + id + " xml=" + xml);
}
/// <summary>
/// Handles open request and returns XML.
/// </summary>
protected void DoGet(HttpContext context)
{
HttpResponse res = context.Response;
res.AddHeader("Content-type", "text/xml;charset=UTF-8");
res.AddHeader("Pragma", "no-cache"); // HTTP 1.0
res.AddHeader("Cache-control", "private, no-cache, no-store");
res.AddHeader("Expires", "0");
res.Write(CreateGraph(context));
res.StatusCode = 200; /* OK */
}
/// <summary>
/// Creates a graph using the API and returns the XML.
/// </summary>
protected string CreateGraph(HttpContext context)
{
string id = context.Request.Params["id"];
Console.WriteLine("Requested id=" + id);
mxCodec codec = new mxCodec();
mxGraph graph = new mxGraph();
Object parent = graph.GetDefaultParent();
graph.Model.BeginUpdate();
try
{
Object v1 = graph.InsertVertex(parent, null, "Hello", 20,
20, 80, 30);
Object v2 = graph.InsertVertex(parent, null, "World", 200, 150, 80, 30);
graph.InsertEdge(parent, null, "", v1, v2);
}
finally
{
graph.Model.EndUpdate();
}
return mxUtils.GetXml(codec.Encode(graph.Model));
}
/// <summary>
/// Dispatches the GET and POST requests for open and save, respectively.
/// </summary>
public void ProcessRequest(HttpContext context)
{
if (context.Request.RequestType.Equals("POST"))
{
DoPost(context);
}
else
{
DoGet(context);
}
}
public bool IsReusable
{
get { return true; }
}
}