/// <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(Control control) { EventSequenceDocument document = control.Tag as EventSequenceDocument; if (document != null) { m_documentRegistry.ActiveDocument = document; EventSequenceContext context = document.As <EventSequenceContext>(); m_contextRegistry.ActiveContext = context; } }
private void contextRegistry_ContextAdded(object sender, ItemInsertedEventArgs <object> e) { EventSequenceContext context = Adapters.As <EventSequenceContext>(e.Item); if (context != null) { context.ListView.DragOver += new DragEventHandler(listView_DragOver); context.ListView.DragDrop += new DragEventHandler(listView_DragDrop); context.ListView.MouseUp += new MouseEventHandler(listView_MouseUp); context.ListViewAdapter.LabelEdited += new EventHandler <LabelEditedEventArgs <object> >(listViewAdapter_LabelEdited); } }
private void contextRegistry_ContextAdded(object sender, ItemInsertedEventArgs <object> e) { EventSequenceContext context = e.Item.As <EventSequenceContext>(); if (context != null) { context.ListView.DragOver += listView_DragOver; context.ListView.DragDrop += listView_DragDrop; context.ListView.MouseUp += listView_MouseUp; context.ListViewAdapter.LabelEdited += listViewAdapter_LabelEdited; } }
private void UpdateControlInfo() { string filePath = Uri.LocalPath; string fileName = Path.GetFileName(filePath); if (Dirty) { fileName += "*"; } EventSequenceContext context = this.As <EventSequenceContext>(); context.ControlInfo.Name = fileName; context.ControlInfo.Description = filePath; }
/// <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 a custom file reader using (FileStream stream = new FileStream(filePath, FileMode.Open, FileAccess.Read)) { node = EventSequenceDocument.Read(stream).DomNode; } } else { // create new document by creating a Dom node of the root type node = new DomNode(DomTypes.eventSequenceType.Type, DomTypes.eventSequenceRootElement); } EventSequenceDocument document = null; if (node != null) { // Initialize Dom extensions now that the data is complete node.InitializeExtensions(); EventSequenceContext context = node.As <EventSequenceContext>(); ControlInfo controlInfo = new ControlInfo(fileName, filePath, StandardControlGroup.Center); context.ControlInfo = controlInfo; // set document URI document = node.As <EventSequenceDocument>(); document.Uri = uri; context.ListView.Tag = document; // show the ListView control m_controlHostService.RegisterControl(context.ListView, controlInfo, this); } return(document); }
/// <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) { EventSequenceContext context = document.As <EventSequenceContext>(); m_controlHostService.UnregisterControl(context.ListView); context.ControlInfo = null; // 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); }
private void contextRegistry_ActiveContextChanged(object sender, EventArgs e) { // make sure we're always tracking the most recently active EventSequenceContext EventSequenceContext context = m_contextRegistry.GetMostRecentContext <EventSequenceContext>(); if (m_eventSequenceContext != context) { if (m_eventSequenceContext != null) { m_eventSequenceContext.SelectionChanged -= eventSequenceContext_SelectionChanged; } m_eventSequenceContext = context; if (m_eventSequenceContext != null) { // track the most recently active EventSequenceContext's selection to get the most recently // selected event. m_eventSequenceContext.SelectionChanged += eventSequenceContext_SelectionChanged; } UpdateEvent(); } }
/// <summary> /// Makes the document visible to the user</summary> /// <param name="document">Document to show</param> public void Show(IDocument document) { EventSequenceContext context = document.As <EventSequenceContext>(); m_controlHostService.Show(context.ListView); }