Exemple #1
0
 private void ContextSelectionChanged(object sender, EventArgs e)
 {
     // Display the properties of the most recently selected event in the currently active document.
     if ((m_documentRegistry != null) && (m_documentRegistry.ActiveDocument != null))
     {
         WinGuiWpfDataContext dataContext = m_documentRegistry.ActiveDocument.As <WinGuiWpfDataContext>();
         m_eventViewModel.Event = dataContext.Selection.LastSelected.As <WinGuiCommon.Event>();
     }
 }
Exemple #2
0
        /// <summary>
        /// Notifies the client that its Control has been activated. Activation occurs when
        /// the Control gets focus, or a parent "host" Control gets focus.</summary>
        /// <param name="control">Client Control that was activated</param>
        /// <remarks>This method is only called by IControlHostService if the Control was previously
        /// registered for this IControlHostClient.</remarks>
        void IControlHostClient.Activate(object control)
        {
            WinGuiWpfDataDocument document = null;

            if (control is System.Windows.Forms.Control)
            {
                document = ((System.Windows.Forms.Control)control).Tag as WinGuiWpfDataDocument;
            }

            if (document != null)
            {
                m_documentRegistry.ActiveDocument = document;

                WinGuiWpfDataContext context = document.As <WinGuiWpfDataContext>();
                m_contextRegistry.ActiveContext = context;
            }
        }
Exemple #3
0
        /// <summary>
        /// Closes the document and removes any views of it from the UI</summary>
        /// <param name="document">Document to close</param>
        public void Close(IDocument document)
        {
            WinGuiWpfDataContext context = Adapters.As <WinGuiWpfDataContext>(document);

            m_controlHostService.UnregisterContent(context.ListView);
            context.ControlInfo       = null;
            context.SelectionChanged -= ContextSelectionChanged;

            // close all active EditingContexts in the document
            foreach (DomNode node in context.DomNode.Subtree)
            {
                foreach (EditingContext editingContext in node.AsAll <EditingContext>())
                {
                    m_contextRegistry.RemoveContext(editingContext);
                }
            }

            // close the document
            m_documentRegistry.Remove(document);
        }
Exemple #4
0
        /// <summary>
        /// Makes the document visible to the user</summary>
        /// <param name="document">Document to show</param>
        public void Show(IDocument document)
        {
            WinGuiWpfDataContext context = Adapters.As <WinGuiWpfDataContext>(document);

            m_controlHostService.Show(context.ListView);
        }
Exemple #5
0
        /// <summary>
        /// Opens or creates a document at the given URI</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.winGuiCommonDataType.Type, Schema.winGuiCommonDataRootElement);
            }

            WinGuiWpfDataDocument document = null;

            if (node != null)
            {
                // Initialize Dom extensions now that the data is complete
                node.InitializeExtensions();

                WinGuiWpfDataContext context = node.As <WinGuiWpfDataContext>();
                context.SelectionChanged += ContextSelectionChanged;

                ControlInfo controlInfo = new ControlInfo(Path.Combine(filePath, fileName), StandardControlGroup.Center, new Sce.Atf.Wpf.Docking.DockContent(null, null), this);
                context.ControlInfo = controlInfo;

                // set document URI
                document     = node.As <WinGuiWpfDataDocument>();
                document.Uri = uri;

                context.ListView.Tag = document;

                // If the document is empty, add some data so there's something to look at
                if (!context.Items.Any(typeof(object)))
                {
                    DomNode domNode = new DomNode(Schema.eventType.Type);
                    domNode.SetAttribute(Schema.eventType.nameAttribute, "First Event");
                    domNode.SetAttribute(Schema.eventType.durationAttribute, 100);
                    var dataObject = new System.Windows.DataObject(new object[] { domNode });
                    context.Insert(dataObject);

                    domNode = new DomNode(Schema.eventType.Type);
                    domNode.SetAttribute(Schema.eventType.nameAttribute, "Second Event");
                    domNode.SetAttribute(Schema.eventType.durationAttribute, 200);
                    var dataObject2 = new System.Windows.DataObject(new object[] { domNode });
                    context.Insert(dataObject2);
                }

                // show the ListView control
                ControlInfo registeredControlInfo = (ControlInfo)m_controlHostService.RegisterControl(context.ListView,
                                                                                                      fileName,
                                                                                                      "WPF Sample file",
                                                                                                      controlInfo.Group,
                                                                                                      fileName,
                                                                                                      this);

                if (registeredControlInfo.DockContent != null)
                {
                    registeredControlInfo.DockContent.Closing += DockContent_Closing;
                }
            }

            return(document);
        }