This class defines which data proxy to use for binding diagram object with application data object.
Data binding from diagram objects to application data uses proxies.
To enable binding, a developer must create sprite proxy classes implementing ISpriteProxy interface and link proxy classes implementing ILinkProxy interface.
Then he must create a XML configuration document that links spriteid, links and proxies.
Then he must create a DiagramModel with the XML configuration document and define it as the model of the DiagramView.
When this plumbery is done, everytime a sprite or a link is created, deleted or changed, the corresponding method of the corresponding proxy is called.
On the opposite it is the responsibility of the developer to implements application data manipulation so that application data reflects the states of the diagram.
Example
This sample show how to define a model.
MyFirstObjectProxy and
MySecondObjectProxy implements
ISpriteProxy,
MyLinkProxy implements
ILinkProxy,
MyLaneProxy and
MyPanelProxy implements
IObjectProxy.
<?xml version="1.0" encoding="utf-8"?>
<mx:Application ...
...
<mx:XML xmlns="" id="diagramMappings">
<mappings>
<sprite id="myfirstshapeid" width="40" height="40" proxyclass="MyFirstObjectProxy" />
<sprite id="mysecondshapeid" width="40" height="40" proxyclass="MySecondObjectProxy" />
<lane proxyclass="MyLaneProxy" />
<panel proxyclass="MyPanelProxy" />
<lanelink proxyclass="MyLinkProxy" />
<panellink proxyclass="MyLinkProxy" />
<viewlink proxyclass="MyLinkProxy" />
</mappings>
</mx:XML>
...
<mx:Script>
<![CDATA[
...
public function initDiagram():void
{
...
var model:DiagramModel=new DiagramModel(diagramMappings);
diagram.model=model;
...
}
...
]]>
</mx:Script>
...
<diagview:DiagramView id="diagram" creationComplete="initDiagram();" >
</diagview:DiagramView>
...
protected var _lanelinkmodel:DiagramLinkModelEntry
protected var _lanemodel:DiagramModelEntry
protected var _modelentries:Object
protected var _panellinkmodel:DiagramLinkModelEntry
protected var _panelmodel:DiagramModelEntry
protected var _view:DiagramView
view:DiagramView [read-write]
Implementation
public function get view():DiagramView
public function set view(value:DiagramView):void
protected var _viewlinkmodel:DiagramLinkModelEntry
public function DiagramModel(xml:XML)Parameters
public function acceptLinkSource(el:IDiagramElement, source:IDiagramElement):BooleanParameters
Returns
public function acceptLinkTarget(el:IDiagramElement, target:IDiagramElement):BooleanParameters
Returns
public function acceptPropertyModification(el:IDiagramElement, propname:String, propvalue:String, shapeid:*):BooleanParameters
Returns
public function acceptRemoveObject(el:IDiagramElement):BooleanParameters
Returns
public function allowLinkAction(el:IDiagramElement):BooleanParameters
Returns
protected function buildFromXML(xml:XML):voidParameters
public function columnChanged(el:IDiagramElement, column:DiagramColumn):voidParameters
public function createDataObject(el:IDiagramElement):StringParameters
Returns
public function dataObjectLoaded(el:IDiagramElement):voidParameters
public function getDefaultSize(spriteid:String):PointParameters
Returns
protected function getDiagramElementModel(el:IDiagramElement):DiagramModelEntryParameters
Returns
protected function getDiagramElementProxy(el:IDiagramElement):IObjectProxyParameters
Returns
public function getDiagramSpriteProxy(spriteid:String):ISpriteProxyParameters
Returns
public function getProxyClass(classname:String):ClassParameters
Returns
public function laneChanged(el:IDiagramElement, lane:DiagramLane):voidParameters
public function preAcceptLinkSource(spriteid:String, sourcespriteid:String, source:IDiagramElement):BooleanParameters
Returns
public function preAcceptLinkTarget(spriteid:String, targetspriteid:String, source:IDiagramElement):BooleanParameters
Returns
public function propertyModified(el:IDiagramElement, propname:String, propvalue:String, shapeid:*):voidParameters
public function removeDataObject(el:IDiagramElement):voidParameters
public function scopeChanged(link:DiagramLink, oldscope:String):voidParameters