Blame mono/Diagram/Diagram.cs

Ivan Mahonin 777717
/*
Ivan Mahonin 777717
    ......... 2015 Ivan Mahonin
Ivan Mahonin 777717
Ivan Mahonin 777717
    This program is free software: you can redistribute it and/or modify
Ivan Mahonin 777717
    it under the terms of the GNU General Public License as published by
Ivan Mahonin 777717
    the Free Software Foundation, either version 3 of the License, or
Ivan Mahonin 777717
    (at your option) any later version.
Ivan Mahonin 777717
Ivan Mahonin 777717
    This program is distributed in the hope that it will be useful,
Ivan Mahonin 777717
    but WITHOUT ANY WARRANTY; without even the implied warranty of
Ivan Mahonin 777717
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Ivan Mahonin 777717
    GNU General Public License for more details.
Ivan Mahonin 777717
Ivan Mahonin 777717
    You should have received a copy of the GNU General Public License
Ivan Mahonin 777717
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
Ivan Mahonin 777717
*/
Ivan Mahonin 777717
Ivan Mahonin 777717
using System;
Ivan Mahonin 8cb222
using System.Collections.Generic;
Ivan Mahonin 8cb222
using System.Drawing;
Ivan Mahonin 8cb222
Ivan Mahonin 8cb222
namespace Diagram {
Ivan Mahonin 8cb222
    public class Block {
Ivan Mahonin 8cb222
        public string id = "";
Ivan Mahonin 8cb222
        public string caption = "";
Ivan Mahonin 8cb222
        public string text = "";
Ivan Mahonin 8cb222
        public Color color = Color.Black;
Ivan Mahonin 8cb222
    }
Ivan Mahonin 8cb222
Ivan Mahonin 8cb222
    public class Link {
Ivan Mahonin 8cb222
        public string id = "";
Ivan Mahonin 8cb222
        public string srcId = "";
Ivan Mahonin 8cb222
        public string dstId = "";
Ivan Mahonin 8cb222
    }
Ivan Mahonin 8cb222
Ivan Mahonin 8cb222
    public class Diagram {
Ivan Mahonin 8cb222
        public readonly Dictionary<string, Block> blocks = new Dictionary<string, Block>();
Ivan Mahonin 8cb222
        public readonly Dictionary<string, Link> links = new Dictionary<string, Link>();
Ivan Mahonin 8cb222
Ivan Mahonin 8cb222
        public Diagram addBlock(Block block) {
Ivan Mahonin 8cb222
            blocks.Add(block.id, block);
Ivan Mahonin 8cb222
            return this;
Ivan Mahonin 8cb222
        }
Ivan Mahonin 8cb222
Ivan Mahonin 8cb222
        public Diagram addBlock(string id, string caption, string text, Color color, string[] links = null) {
Ivan Mahonin 8cb222
            addBlock(new Block() { id = id, caption = caption, text = text, color = color });
Ivan Mahonin 8cb222
            if (links != null)
Ivan Mahonin 8cb222
                foreach(string link in links)
Ivan Mahonin 8cb222
                    addLink(id, link);
Ivan Mahonin 8cb222
            return this;
Ivan Mahonin 8cb222
        }
Ivan Mahonin 8cb222
Ivan Mahonin 8cb222
        public Diagram addBlock(string id, string caption, string text, string[] links = null) {
Ivan Mahonin 8cb222
            addBlock(id, caption, text, Color.Black, links);
Ivan Mahonin 8cb222
            return this;
Ivan Mahonin 8cb222
        }
Ivan Mahonin 8cb222
Ivan Mahonin 8cb222
        public Diagram addLink(Link link, string srcId = "", string dstId = "") {
Ivan Mahonin 8cb222
            if (srcId != "")
Ivan Mahonin 8cb222
                link.srcId = srcId;
Ivan Mahonin 8cb222
            if (dstId != "")
Ivan Mahonin 8cb222
                link.dstId = dstId;
Ivan Mahonin 8cb222
            if (link.id == "")
Ivan Mahonin 8cb222
                link.id = link.srcId + link.dstId;
Ivan Mahonin 8cb222
            links.Add(link.id, link);
Ivan Mahonin 8cb222
            return this;
Ivan Mahonin 8cb222
        }
Ivan Mahonin 8cb222
Ivan Mahonin 8cb222
        public Diagram addLink(Link link) {
Ivan Mahonin 8cb222
            if (link.id == "")
Ivan Mahonin 8cb222
                link.id = link.srcId + link.dstId;
Ivan Mahonin 8cb222
            links.Add(link.id, link);
Ivan Mahonin 8cb222
            return this;
Ivan Mahonin 8cb222
        }
Ivan Mahonin 8cb222
Ivan Mahonin 8cb222
        public Diagram addLink(string srcId, string dstId) {
Ivan Mahonin 8cb222
            addLink(new Link(), srcId, dstId);
Ivan Mahonin 8cb222
            return this;
Ivan Mahonin 8cb222
        }
Ivan Mahonin 8cb222
    }
Ivan Mahonin 8cb222
}
Ivan Mahonin 8cb222