private void OpenGLControl_OpenGLInitialized(object sender, OpenGLEventArgs args) { BABYLON.Effect.ShadersStore["legacydefaultVertexShader"] = Defaults.LegacyVertexShader; BABYLON.Effect.ShadersStore["legacydefaultPixelShader"] = Defaults.LegacyPixelShader; //BABYLON.Effect.ShadersStore["legacydefaultVertexShader"] = Defaults.BasicVertexShader; //BABYLON.Effect.ShadersStore["legacydefaultPixelShader"] = Defaults.BasicPixelShader; BABYLON.Effect.ShadersStore["defaultVertexShader"] = Defaults.DefaultVertexShader; BABYLON.Effect.ShadersStore["defaultPixelShader"] = Defaults.DefaultPixelShader; BABYLON.Effect.ShadersStore["shadowMapVertexShader"] = Defaults.ShadowMapVertexShader; BABYLON.Effect.ShadersStore["shadowMapPixelShader"] = Defaults.ShadowMapPixelShader; BABYLON.Effect.ShadersStore["particlesVertexShader"] = Defaults.ParticlesVertexShader; BABYLON.Effect.ShadersStore["particlesPixelShader"] = Defaults.ParticlesPixelShader; BABYLON.Effect.ShadersStore["lensFlareVertexShader"] = Defaults.LensFlareVertexShader; BABYLON.Effect.ShadersStore["lensFlarePixelShader"] = Defaults.LensFlarePixelShader; BABYLON.Effect.ShadersStore["postprocessVertexShader"] = Defaults.PostProcessVertexShader; BABYLON.Effect.ShadersStore["passPixelShader"] = Defaults.PassPixelShader; BABYLON.Effect.ShadersStore["blurPixelShader"] = Defaults.BlurPixelShader; this.canvas = new CanvasAdapter((int)this.Width, (int)this.Height, (int)this.MaxWidth, (int)this.MaxHeight, args.OpenGL); this.engine = new Engine(canvas, true); this.scene = new BABYLON.Scene(this.engine); this.Scene20(); }
public MainWindow() { InitializeComponent(); // prompt user for name WelcomeWindow ww = new WelcomeWindow(); if (ww.ShowDialog() == true) { lPlayerName.Content = ww.PlayerName; } else { this.Close(); } // setup game field adapter = new CanvasAdapter(canvas); adapter.AddPlayer(); //get highscore string name = HighScoreManager.ReadAttribute("name"); float time = float.Parse(HighScoreManager.ReadAttribute("time")); lHighscoreName.Content = name; lHighscoreTime.Content = time.ToString(); // start timers gameTimer = new DispatcherTimer(); gameTimer.Tick += GameTimer_Tick; gameTimer.Interval = new TimeSpan(0, 0, 0, 0, 2); gameTimer.Start(); playedTimer = new DispatcherTimer(); playedTimer.Tick += PlayedTimer_Tick; playedTimer.Interval = new TimeSpan(0, 0, 0, 0, 100); playedTimer.Start(); }
public static void CreateUIViewTemplate() { GameObject uiRoot = GameObject.Find("ui_root"); GameObject uiViewTemplateGameObject = new GameObject("template_view"); RectTransform uiViewTemplateRectTransform = uiViewTemplateGameObject.AddComponent <RectTransform>(); uiViewTemplateRectTransform.SetParent(uiRoot.transform, false); uiViewTemplateRectTransform.localScale = Vector3.one; uiViewTemplateRectTransform.localPosition = Vector3.zero; uiViewTemplateRectTransform.localRotation = Quaternion.identity; BoxCollider boxCollider = uiViewTemplateGameObject.AddComponent <BoxCollider>(); boxCollider.size = new Vector3(1136, 640, 1); Canvas canvas = uiViewTemplateGameObject.AddComponent <Canvas>(); canvas.renderMode = RenderMode.ScreenSpaceCamera; canvas.overrideSorting = true; uiViewTemplateGameObject.AddComponent <GraphicRaycaster>(); CanvasScaler canvasScaler = uiViewTemplateGameObject.AddComponent <CanvasScaler>(); canvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize; canvasScaler.referenceResolution = new Vector2(960, 640); CanvasAdapter canvasAdapter = uiViewTemplateGameObject.AddComponent <CanvasAdapter>(); GameObject bgCoreGameObject = new GameObject("bg_core"); RectTransform bgCoreRectTransform = bgCoreGameObject.AddComponent <RectTransform>(); bgCoreRectTransform.SetParent(uiViewTemplateGameObject.transform, false); bgCoreRectTransform.localScale = Vector3.one; bgCoreRectTransform.localPosition = Vector3.zero; bgCoreRectTransform.localRotation = Quaternion.identity; bgCoreRectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 0); bgCoreRectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 640); bgCoreRectTransform.anchorMin = new Vector2(0, 0.5f); bgCoreRectTransform.anchorMax = new Vector2(1, 0.5f); GameObject coreGameObject = new GameObject("core"); RectTransform coreRectTransform = coreGameObject.AddComponent <RectTransform>(); coreRectTransform.SetParent(uiViewTemplateGameObject.transform, false); coreRectTransform.localScale = Vector3.one; coreRectTransform.localPosition = Vector3.zero; coreRectTransform.localRotation = Quaternion.identity; coreRectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 0); coreRectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 640); coreRectTransform.anchorMin = new Vector2(0, 0.5f); coreRectTransform.anchorMax = new Vector2(1, 0.5f); Common.Util.TransformUtil.SwitchLayer(uiViewTemplateRectTransform, (int)LayerType.UI); }
internal override SymbolStyle buildSymbol <T1>(SymbolStyle.SymbolBuilder <T1> b, string src, Bitmap bitmap) { // we need to hash with the width/height included as the same symbol could be required // in a different size and must be cached with a size-specific hash string absoluteName = CanvasAdapter.getAbsoluteFile(mTheme.RelativePathPrefix, src).AbsolutePath; int hash = (new StringBuilder()).Append(absoluteName).Append(b.symbolWidth).Append(b.symbolHeight).Append(b.symbolPercent).ToString().GetHashCode(); bitmapMap[hash] = bitmap; return(b.hash(hash).build()); }
internal D2dAdaptableControl CreateCircuitControl(DomNode circuitNode) { var control = new D2dAdaptableControl(); control.SuspendLayout(); control.BackColor = SystemColors.ControlLight; control.AllowDrop = true; var transformAdapter = new TransformAdapter(); transformAdapter.EnforceConstraints = false; //to allow the canvas to be panned to view negative coordinates transformAdapter.UniformScale = true; transformAdapter.MinScale = new PointF(0.01f, 0.01f); transformAdapter.MaxScale = new PointF(4, 4); var viewingAdapter = new ViewingAdapter(transformAdapter); viewingAdapter.MarginSize = new Size(25, 25); var canvasAdapter = new CanvasAdapter(); ((ILayoutConstraint)canvasAdapter).Enabled = false; //to allow negative coordinates for circuit elements within groups var autoTranslateAdapter = new AutoTranslateAdapter(transformAdapter); var mouseTransformManipulator = new MouseTransformManipulator(transformAdapter); var mouseWheelManipulator = new MouseWheelManipulator(transformAdapter); var scrollbarAdapter = new ScrollbarAdapter(transformAdapter, canvasAdapter); var hoverAdapter = new HoverAdapter(); hoverAdapter.HoverStarted += control_HoverStarted; hoverAdapter.HoverStopped += control_HoverStopped; var annotationAdaptor = new D2dAnnotationAdapter(Theme); // display annotations under diagram var d2dRectangleDragSelector = new D2dRectangleDragSelector(); var d2dRectangleDragRenderer = new D2dRectangleDragRenderer(d2dRectangleDragSelector); var gridAdapter = new D2dGridAdapter(); gridAdapter.ConstraintEnabled = SnapToGridEnabled; //gridAdapter.Enabled = false; //gridAdapter.Visible = true; if (circuitNode.Is <Circuit>()) { var circuitAdapter = new D2dGraphAdapter <Module, Connection, ICircuitPin>(CircuitRenderer, transformAdapter); // The "AllFirst" policy will try to draw edges (wires) before nodes, as much as possible. //circuitAdapter.EdgeRenderPolicy = D2dGraphAdapter<Module, Connection, ICircuitPin>.DrawEdgePolicy.AllFirst; var circuitModuleEditAdapter = new D2dGraphNodeEditAdapter <Module, Connection, ICircuitPin>( CircuitRenderer, circuitAdapter, transformAdapter); circuitModuleEditAdapter.DraggingSubNodes = false; var circuitConnectionEditAdapter = new D2dGraphEdgeEditAdapter <Module, Connection, ICircuitPin>(CircuitRenderer, circuitAdapter, transformAdapter); circuitConnectionEditAdapter.EdgeRouteTraverser = CircuitUtil.EdgeRouteTraverser; control.Adapt( // This end of the list is drawn first and receives mouse events last. hoverAdapter, scrollbarAdapter, autoTranslateAdapter, d2dRectangleDragSelector, //Needs to be before annotationAdaptor, so that drag-and-selecting text works. transformAdapter, viewingAdapter, canvasAdapter, mouseTransformManipulator, mouseWheelManipulator, new KeyboardIOGraphNavigator <Module, Connection, ICircuitPin>(), gridAdapter, annotationAdaptor, //Needs to be before circuitAdapter so that comments appear under elements. circuitAdapter, circuitModuleEditAdapter, //lets user move circuit elements on canvas circuitConnectionEditAdapter, new LabelEditAdapter(), d2dRectangleDragRenderer, new SelectionAdapter(), new DragDropAdapter(m_statusService), new ContextMenuAdapter(m_commandService, m_contextMenuCommandProviders) // This end of the list is drawn last and receives mouse events first. ); } else if (circuitNode.Is <Group>()) { var circuitAdapter = new D2dSubgraphAdapter <Module, Connection, ICircuitPin>(SubCircuitRenderer, transformAdapter); var circuitModuleEditAdapter = new D2dGraphNodeEditAdapter <Module, Connection, ICircuitPin>( SubCircuitRenderer, circuitAdapter, transformAdapter); circuitModuleEditAdapter.DraggingSubNodes = false; var circuitConnectionEditAdapter = new D2dGraphEdgeEditAdapter <Module, Connection, ICircuitPin>(SubCircuitRenderer, circuitAdapter, transformAdapter); circuitConnectionEditAdapter.EdgeRouteTraverser = CircuitUtil.EdgeRouteTraverser; var groupPinEditor = new GroupPinEditor(transformAdapter); groupPinEditor.GetPinOffset = SubCircuitRenderer.GetPinOffset; canvasAdapter.UpdateTranslateMinMax = groupPinEditor.UpdateTranslateMinMax; control.Adapt( // This end of the list is drawn first and receives mouse events last. hoverAdapter, scrollbarAdapter, autoTranslateAdapter, d2dRectangleDragSelector, transformAdapter, viewingAdapter, canvasAdapter, mouseTransformManipulator, mouseWheelManipulator, new KeyboardIOGraphNavigator <Module, Connection, ICircuitPin>(), gridAdapter, annotationAdaptor, circuitAdapter, circuitModuleEditAdapter, circuitConnectionEditAdapter, new LabelEditAdapter(), groupPinEditor, d2dRectangleDragRenderer, new SelectionAdapter(), new DragDropAdapter(m_statusService), new ContextMenuAdapter(m_commandService, m_contextMenuCommandProviders) // This end of the list is drawn last and receives mouse events first. ); } else { throw new NotImplementedException( "graph node type is not supported!"); } control.ResumeLayout(); control.DoubleClick += control_DoubleClick; control.MouseDown += control_MouseDown; return(control); }
internal D2dAdaptableControl CreateCircuitControl(DomNode circuitNode) { var control = new D2dAdaptableControl(); control.SuspendLayout(); control.BackColor = SystemColors.ControlLight; control.AllowDrop = true; var transformAdapter = new TransformAdapter(); transformAdapter.EnforceConstraints = false; //to allow the canvas to be panned to view negative coordinates transformAdapter.UniformScale = true; transformAdapter.MinScale = new PointF(0.25f, 0.25f); transformAdapter.MaxScale = new PointF(4, 4); var viewingAdapter = new ViewingAdapter(transformAdapter); viewingAdapter.MarginSize = new Size(25, 25); var canvasAdapter = new CanvasAdapter(); ((ILayoutConstraint)canvasAdapter).Enabled = false; //to allow negative coordinates for circuit elements within groups var autoTranslateAdapter = new AutoTranslateAdapter(transformAdapter); var mouseTransformManipulator = new MouseTransformManipulator(transformAdapter); var mouseWheelManipulator = new MouseWheelManipulator(transformAdapter); var scrollbarAdapter = new ScrollbarAdapter(transformAdapter, canvasAdapter); var hoverAdapter = new HoverAdapter(); hoverAdapter.HoverStarted += control_HoverStarted; hoverAdapter.HoverStopped += control_HoverStopped; var annotationAdaptor = new D2dAnnotationAdapter(m_theme); // display annotations under diagram if (circuitNode.Is <Circuit>()) { var circuitAdapter = new D2dGraphAdapter <Module, Connection, ICircuitPin>(m_circuitRenderer, transformAdapter); var circuitModuleEditAdapter = new D2dGraphNodeEditAdapter <Module, Connection, ICircuitPin>( m_circuitRenderer, circuitAdapter, transformAdapter); circuitModuleEditAdapter.DraggingSubNodes = false; var circuitConnectionEditAdapter = new D2dGraphEdgeEditAdapter <Module, Connection, ICircuitPin>(m_circuitRenderer, circuitAdapter, transformAdapter); circuitConnectionEditAdapter.EdgeRouteTraverser = CircuitUtil.EdgeRouteTraverser; control.Adapt( hoverAdapter, scrollbarAdapter, autoTranslateAdapter, new RectangleDragSelector(), transformAdapter, viewingAdapter, canvasAdapter, mouseTransformManipulator, mouseWheelManipulator, new KeyboardIOGraphNavigator <Module, Connection, ICircuitPin>(), new D2dGridAdapter(), annotationAdaptor, circuitAdapter, circuitModuleEditAdapter, circuitConnectionEditAdapter, new LabelEditAdapter(), new SelectionAdapter(), new DragDropAdapter(m_statusService), new ContextMenuAdapter(m_commandService, m_contextMenuCommandProviders) ); } else if (circuitNode.Is <Group>()) { var circuitAdapter = new D2dSubgraphAdapter <Module, Connection, ICircuitPin>(m_subGraphRenderer, transformAdapter); var circuitModuleEditAdapter = new D2dGraphNodeEditAdapter <Module, Connection, ICircuitPin>( m_subGraphRenderer, circuitAdapter, transformAdapter); circuitModuleEditAdapter.DraggingSubNodes = false; var circuitConnectionEditAdapter = new D2dGraphEdgeEditAdapter <Module, Connection, ICircuitPin>(m_subGraphRenderer, circuitAdapter, transformAdapter); circuitConnectionEditAdapter.EdgeRouteTraverser = CircuitUtil.EdgeRouteTraverser; var groupPinEditor = new GroupPinEditor(transformAdapter); groupPinEditor.GetPinOffset = m_subGraphRenderer.GetPinOffset; canvasAdapter.UpdateTranslateMinMax = groupPinEditor.UpdateTranslateMinMax; control.Adapt( hoverAdapter, scrollbarAdapter, autoTranslateAdapter, new RectangleDragSelector(), transformAdapter, viewingAdapter, canvasAdapter, mouseTransformManipulator, mouseWheelManipulator, new KeyboardIOGraphNavigator <Module, Connection, ICircuitPin>(), new D2dGridAdapter(), annotationAdaptor, circuitAdapter, circuitModuleEditAdapter, circuitConnectionEditAdapter, new LabelEditAdapter(), groupPinEditor, new SelectionAdapter(), new DragDropAdapter(m_statusService), new ContextMenuAdapter(m_commandService, m_contextMenuCommandProviders) ); } else { throw new NotImplementedException( "graph node type is not supported!"); } control.ResumeLayout(); control.DoubleClick += new EventHandler(control_DoubleClick); control.MouseDown += new MouseEventHandler(control_MouseDown); return(control); }
void Awake() { instance = this; }
/// <summary> /// Custom update min/max translation of the transformAdapter associated with the canvas</summary> /// <param name="canvasAdapter">Canvas adapter</param> public void UpdateTranslateMinMax(CanvasAdapter canvasAdapter) { // do nothing( no need to limit translation range of the transformAdapter assoicated with canvasAdapter) }
/// <summary> /// Opens or creates a document at the given URI. /// It creates a D2dAdaptableControl with control adapters for the document. /// It registers this control with the hosting service so that the control appears /// in the Windows docking framework.</summary> /// <param name="uri">Document URI</param> /// <returns>Document, or null if the document couldn't be opened or created</returns> public IDocument Open(Uri uri) { DomNode node = null; string filePath = uri.LocalPath; if (File.Exists(filePath)) { // read existing document using standard XML reader using (FileStream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { DomXmlReader reader = new DomXmlReader(m_schemaLoader); node = reader.Read(stream, uri); } } else { // create new document by creating a Dom node of the root type defined by the schema node = new DomNode(Schema.statechartDocumentType.Type, Schema.statechartRootElement); // create an empty root prototype folder node.SetChild( Schema.statechartDocumentType.prototypeFolderChild, new DomNode(Schema.prototypeFolderType.Type)); } Document statechartDocument = null; if (node != null) { // AdaptableControl was registered as an extension by the schema loader var control = new D2dAdaptableControl(); control.SuspendLayout(); control.BackColor = SystemColors.ControlLight; control.AllowDrop = true; var transformAdapter = new TransformAdapter(); transformAdapter.UniformScale = true; transformAdapter.MinScale = new PointF(0.25f, 0.25f); transformAdapter.MaxScale = new PointF(4, 4); var viewingAdapter = new ViewingAdapter(transformAdapter); var canvasAdapter = new CanvasAdapter(new Rectangle(0, 0, 1000, 1000)); var autoTranslateAdapter = new AutoTranslateAdapter(transformAdapter); var mouseTransformManipulator = new MouseTransformManipulator(transformAdapter); var mouseWheelManipulator = new MouseWheelManipulator(transformAdapter); var gridAdapter = new D2dGridAdapter(); gridAdapter.Enabled = false; gridAdapter.Visible = true; var scrollbarAdapter = new ScrollbarAdapter(transformAdapter, canvasAdapter); var hoverAdapter = new HoverAdapter(); hoverAdapter.HoverStarted += control_HoverStarted; hoverAdapter.HoverStopped += control_HoverStopped; var annotationAdaptor = // display annotations under diagram new D2dAnnotationAdapter(m_diagramTheme); var statechartAdapter = new StatechartGraphAdapter(m_statechartRenderer, transformAdapter); var statechartStateEditAdapter = new D2dGraphNodeEditAdapter <StateBase, Transition, BoundaryRoute>(m_statechartRenderer, statechartAdapter, transformAdapter); var statechartTransitionEditAdapter = new D2dGraphEdgeEditAdapter <StateBase, Transition, BoundaryRoute>(m_statechartRenderer, statechartAdapter, transformAdapter); var mouseLayoutManipulator = new MouseLayoutManipulator(transformAdapter); control.Adapt( hoverAdapter, scrollbarAdapter, autoTranslateAdapter, new RectangleDragSelector(), transformAdapter, viewingAdapter, canvasAdapter, mouseTransformManipulator, mouseWheelManipulator, new KeyboardGraphNavigator <StateBase, Transition, BoundaryRoute>(), gridAdapter, annotationAdaptor, statechartAdapter, statechartStateEditAdapter, statechartTransitionEditAdapter, new SelectionAdapter(), mouseLayoutManipulator, new LabelEditAdapter(), new DragDropAdapter(m_statusService), new ContextMenuAdapter(m_commandService, m_contextMenuCommandProviders) ); control.ResumeLayout(); // associate the control with the data; several of the adapters need the // control for viewing, layout and calculating bounds. var viewingContext = node.Cast <ViewingContext>(); viewingContext.Control = control; var boundsValidator = node.Cast <BoundsValidator>(); boundsValidator.StatechartRenderer = m_statechartRenderer; statechartDocument = node.Cast <Document>(); string fileName = Path.GetFileName(filePath); var controlInfo = new ControlInfo(fileName, filePath, StandardControlGroup.Center); //Set IsDocument to true to prevent exception in command service if two files with the // same name, but in different directories, are opened. controlInfo.IsDocument = true; statechartDocument.ControlInfo = controlInfo; statechartDocument.Uri = uri; // now that the data is complete, initialize the rest of the extensions to the Dom data; // this is needed for adapters such as validators, which may not be referenced anywhere // but still need to be instantiated. node.InitializeExtensions(); // set control's context to main editing context var context = node.Cast <EditingContext>(); control.Context = context; m_controlHostService.RegisterControl(control, controlInfo, this); } return(statechartDocument); }
/// <summary> /// Opens or creates a document at the given URI. Create an AdaptableControl with control adapters for viewing state machine. /// Handles application data persistence.</summary> /// <param name="uri">Document URI</param> /// <returns>Document, or null if the document couldn't be opened or created</returns> public IDocument Open(Uri uri) { DomNode node = null; string filePath = uri.LocalPath; string fileName = Path.GetFileName(filePath); if (File.Exists(filePath)) { // read existing document using standard XML reader using (FileStream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { DomXmlReader reader = new DomXmlReader(m_schemaLoader); node = reader.Read(stream, uri); } } else { // create new document by creating a Dom node of the root type defined by the schema node = new DomNode(Schema.fsmType.Type, Schema.fsmRootElement); // create an empty root prototype folder node.SetChild( Schema.fsmType.prototypeFolderChild, new DomNode(Schema.prototypeFolderType.Type)); } Document document = null; if (node != null) { // set up the AdaptableControl for editing FSMs var control = new D2dAdaptableControl(); control.SuspendLayout(); control.BackColor = SystemColors.ControlLight; control.AllowDrop = true; var transformAdapter = new TransformAdapter(); // required by several of the other adapters transformAdapter.UniformScale = true; transformAdapter.MinScale = new PointF(0.25f, 0.25f); transformAdapter.MaxScale = new PointF(4, 4); var viewingAdapter = new ViewingAdapter(transformAdapter); // implements IViewingContext for framing or ensuring that items are visible var canvasAdapter = new CanvasAdapter(); // implements a bounded canvas to limit scrolling var autoTranslateAdapter = // implements auto translate when the user drags out of control's client area new AutoTranslateAdapter(transformAdapter); var mouseTransformManipulator = // implements mouse drag translate and scale new MouseTransformManipulator(transformAdapter); var mouseWheelManipulator = // implements mouse wheel scale new MouseWheelManipulator(transformAdapter); var scrollbarAdapter = // adds scroll bars to control, driven by canvas and transform new ScrollbarAdapter(transformAdapter, canvasAdapter); var hoverAdapter = new HoverAdapter(); // add hover events over pickable items hoverAdapter.HoverStarted += control_HoverStarted; hoverAdapter.HoverStopped += control_HoverStopped; var annotationAdaptor = new D2dAnnotationAdapter(m_theme); // display annotations under diagram var fsmAdapter = // adapt control to allow binding to graph data new D2dGraphAdapter <State, Transition, NumberedRoute>(m_fsmRenderer, transformAdapter); var fsmStateEditAdapter = // adapt control to allow state editing new D2dGraphNodeEditAdapter <State, Transition, NumberedRoute>(m_fsmRenderer, fsmAdapter, transformAdapter); var fsmTransitionEditAdapter = // adapt control to allow transition new D2dGraphEdgeEditAdapter <State, Transition, NumberedRoute>(m_fsmRenderer, fsmAdapter, transformAdapter); var mouseLayoutManipulator = new MouseLayoutManipulator(transformAdapter); // apply adapters to control; ordering is from back to front, that is, the first adapter // will be conceptually underneath all the others. Mouse and keyboard events are fed to // the adapters in the reverse order, so it all makes sense to the user. control.Adapt( hoverAdapter, scrollbarAdapter, autoTranslateAdapter, new RectangleDragSelector(), transformAdapter, viewingAdapter, canvasAdapter, mouseTransformManipulator, mouseWheelManipulator, new KeyboardGraphNavigator <State, Transition, NumberedRoute>(), //new GridAdapter(), annotationAdaptor, fsmAdapter, fsmStateEditAdapter, fsmTransitionEditAdapter, new LabelEditAdapter(), new SelectionAdapter(), mouseLayoutManipulator, new DragDropAdapter(m_statusService), new ContextMenuAdapter(m_commandService, m_contextMenuCommandProviders) ); control.ResumeLayout(); // associate the control with the viewing context; other adapters use this // adapter for viewing, layout and calculating bounds. ViewingContext viewingContext = node.Cast <ViewingContext>(); viewingContext.Control = control; // set document URI document = node.As <Document>(); ControlInfo controlInfo = new ControlInfo(fileName, filePath, StandardControlGroup.Center); //Set IsDocument to true to prevent exception in command service if two files with the // same name, but in different directories, are opened. controlInfo.IsDocument = true; document.ControlInfo = controlInfo; document.Uri = uri; // now that the data is complete, initialize the rest of the extensions to the Dom data; // this is needed for adapters such as validators, which may not be referenced anywhere // but still need to be initialized. node.InitializeExtensions(); // set control's context to main editing context EditingContext editingContext = node.Cast <EditingContext>(); control.Context = editingContext; // show the FSM control m_controlHostService.RegisterControl(control, controlInfo, this); } return(document); }