private void OnAddComponent( ComponentUiElement element, ComponentTypeUiElement addTypeElement ) { // TODO: AP: Switch to factory pattern object component = Activator.CreateInstance( addTypeElement.ComponentType ); m_Aggregator.Add( element.Component, component ); m_View.AddComponent( element, m_UiFactory.GetElement( element, component ) ); }
/// <summary> /// Adds all child components of the parent composite in a UI element, to the view /// </summary> private void AddComponents( ComponentUiElement parentElement ) { foreach ( object component in m_Aggregator.GetChildComponents( parentElement.Component ) ) { ComponentUiElement uiElement = m_UiFactory.GetElement( parentElement, component ); m_View.AddComponent( parentElement, uiElement ); AddComponents( uiElement ); } }
private void OnEditComponent( ComponentUiElement element ) { Type[] allowedComponentTypes = m_Dependencies.GetAllowedComponentTypes( element.Component.GetType( ) ); ComponentTypeUiElement[] allowedComponentTypeUiElements = new ComponentTypeUiElement[ allowedComponentTypes.Length ]; for ( int i = 0; i < allowedComponentTypes.Length; ++i ) { allowedComponentTypeUiElements[ i ] = m_UiFactory.GetTypeElement( allowedComponentTypes[ i ] ); } m_View.ShowEditOptions( element, allowedComponentTypeUiElements ); }
private void OnRemoveComponent( ComponentUiElement element ) { m_Aggregator.Remove( element.ParentUiElement.Component, element.Component ); m_View.RemoveComponent( element ); }
/// <summary> /// Creates a component UI element from the specified component /// </summary> /// <param name="parentUiElement">Parent UI element (null if new element is a root element)</param> /// <param name="component">Component requiring UI element</param> /// <returns>Returns a new component UI element for the component</returns> public ComponentUiElement GetElement( ComponentUiElement parentUiElement, object component ) { Arguments.CheckNotNull( component, "component" ); return new ComponentUiElement( component, component.ToString( ), parentUiElement, GetTypeElement( component.GetType( ) ) ); }
/// <summary> /// Raises a <see cref="ComponentSelectedEvent"/> in the envionment events service /// </summary> private void OnSelectionChanged( ComponentUiElement element ) { IEventService events = m_Environment.EnsureGetService<IEventService>( ); events.Raise( this, new ComponentSelectedEvent( element.Component, new object[] { element.Component } ) ); }
/// <summary> /// Adds a component to the view, adding it to the specified parent item /// </summary> /// <param name="parent">Parent item</param> /// <param name="component">Component item to add</param> public void AddComponent( ComponentUiElement parent, ComponentUiElement component ) { TreeNode parentNode = m_NodeMap[ parent ]; TreeNode node = CreateTreeNode( component ); parentNode.Nodes.Add( node ); m_NodeMap.Add( component, node ); }
/// <summary> /// Adds a component to the view /// </summary> /// <param name="component">Component to add</param> public void AddComponent( ComponentUiElement component ) { TreeNode node = CreateTreeNode( component ); compositeTreeView.Nodes.Add( node ); m_NodeMap.Add( component, node ); }
private static TreeNode CreateTreeNode( ComponentUiElement component ) { TreeNode node = new TreeNode( component.Text ); node.Tag = component; return node; }
/// <summary> /// Shows options for editing an element /// </summary> public void ShowEditOptions( ComponentUiElement component, ComponentTypeUiElement[] addTypes ) { ContextMenuStrip strip = new ContextMenuStrip( ); ToolStripMenuItem addSubMenu = ( ToolStripMenuItem )strip.Items.Add( "Add" ); foreach ( ComponentTypeUiElement typeElement in addTypes ) { ComponentTypeUiElement curTypeElement = typeElement; ToolStripItem addItem = addSubMenu.DropDownItems.Add( typeElement.Name, typeElement.Image ); addItem.Click += delegate { AddToComponent( component, curTypeElement ); }; } ToolStripItem removeItem = strip.Items.Add( "Remove" ); removeItem.Click += delegate { RemoveSelectedComponent( component ); }; strip.Show( this, m_LastClickLocation ); }
/// <summary> /// Removes the specified component from the view (and all child elements) /// </summary> /// <param name="component">Component to remove</param> public void RemoveComponent( ComponentUiElement component ) { TreeNode node = m_NodeMap[ component ]; node.Remove( ); m_NodeMap.Remove( component ); }