/// <summary> /// Attach secondary view contents to the view content. /// </summary> /// <param name="viewContent">The view content to attach to</param> /// <param name="isReattaching">This is a reattaching pass</param> public void AttachSubWindows(IViewContent viewContent, bool isReattaching) { SD.MainThread.VerifyAccess(); if (viewContent == null) { throw new ArgumentNullException("viewContent"); } foreach (DisplayBindingDescriptor binding in bindings) { if (binding.IsSecondary && binding.CanOpenFile(viewContent.PrimaryFileName)) { ISecondaryDisplayBinding displayBinding = binding.SecondaryBinding; if (displayBinding != null && (!isReattaching || displayBinding.ReattachWhenParserServiceIsReady) && displayBinding.CanAttachTo(viewContent)) { IViewContent[] subViewContents = binding.SecondaryBinding.CreateSecondaryViewContent(viewContent); if (subViewContents != null) { Array.ForEach(subViewContents, viewContent.SecondaryViewContents.Add); } else { MessageService.ShowError("Can't attach secondary view content. " + binding.SecondaryBinding + " returned null for " + viewContent + ".\n(should never happen)"); } } } } }
public DisplayBindingDescriptor(ISecondaryDisplayBinding binding) { if (binding == null) throw new ArgumentNullException("binding"); this.isSecondary = true; this.binding = binding; }
public DisplayBindingDescriptor(ISecondaryDisplayBinding binding) { if (binding == null) { throw new ArgumentNullException("binding"); } this.isSecondary = true; this.binding = binding; }
/// <summary> /// Creates an item with the specified sub items. And the current /// Condition status for this item. /// </summary> public override object BuildItem(object owner, ArrayList subItems, ConditionCollection conditions) { // if (subItems == null || subItems.Count > 0) { // throw new ApplicationException("Tried to buil a command with sub commands, please check the XML definition."); // } Debug.Assert(Class != null && Class.Length > 0); object o = AddIn.CreateObject(Class); displayBinding = o as IDisplayBinding; secondaryDisplayBinding = o as ISecondaryDisplayBinding; return this; }
public static void AttachSubWindows(IViewContent viewContent, bool isReattaching) { foreach (DisplayBindingDescriptor binding in bindings) { if (binding.IsSecondary && binding.CanAttachToFile(viewContent.FileName ?? viewContent.UntitledName)) { ISecondaryDisplayBinding displayBinding = binding.SecondaryBinding; if (displayBinding != null && (!isReattaching || displayBinding.ReattachWhenParserServiceIsReady) && displayBinding.CanAttachTo(viewContent)) { ISecondaryViewContent[] subViewContents = binding.SecondaryBinding.CreateSecondaryViewContent(viewContent); if (subViewContents != null) { viewContent.SecondaryViewContents.AddRange(subViewContents); } else { MessageService.ShowError("Can't attach secondary view content. " + binding.SecondaryBinding + " returned null for " + viewContent + ".\n(should never happen)"); } } } } }