Overview

System consists of graphical editor as client-side application and simulator on a server.

Client-side

Front-end application should be accessible directly from web browser.

Silverlight application is build using the following components:
  • Main GUI connects all visual components
  • Visual editor for diagrams
  • Controls: toolbar, menu, modal window, loading animation, etc.
  • Resource files: icons, library with elements, etc.
  • Local in-memory database

Application cycle:
  • Application first starts in App.xaml.cs in constructor
  • Application_Startup from App.xaml.cs loads parameters from hosting HTML page
  • Then the Page.xaml view is initialized and displayed as main GUI
  • Page then loads database, menu, toolbar, and library from local resources
  • When the Page view is loaded user can select a tool
  • Available tools:
    • HandTool - moves or selects an element
    • LineTool - draws a line, usually to connect nodes
    • NodeTool - creates a node
    • ElementTool - creates an element, must be specified from libary
  • To develop a new tool, create a class and implement IEditorTool
  • "Manager" classes provide specific functionality:
    • LayoutManager - handles element transitions, stack ordering, alignment, etc.
    • LogicManager - handles logical connections, implements "Breadth-first search" algorithm
    • SelectionManager - handles element selection, highlighting and groupping
    • UndoManager - stores history of changes and can restore to a specific state, not implement
  • "Tag" classes define logical meaning of visual element
    • ElementTag - visual component is element
    • NodeTag - visual component is node

Visual Tree vs Logical Tree:
  • Visual Tree defines visual appearance of elements, nodes, etc.
  • Logic Tree defines logical connections between visual elements
Each visual element is equiped with a Tag that defines attributes for Logic Tree

Server-side

(not implemented)

Connection

(not implemented)

Connection between client and server is planned to be using REST web service.

Last edited Apr 3, 2012 at 6:05 PM by papnkukn, version 1

Comments

No comments yet.