예제 #1
0
        public static IAbstractElementProxy <TInterface> ProxyFor <TInterface>(this IAbstractElement element)
            where TInterface : class
        {
            Guard.NotNull(() => element, element);

            return((element as IAbstractElementProxy <TInterface>) ?? new AbstractElementProxy <TInterface>(element));
        }
예제 #2
0
        /// <summary>
        /// Initializes the child element after it is created and added to the parent for the given item.
        /// </summary>
        protected override void InitializeCreatedElement(string itemId, IAbstractElement childElement)
        {
            Guard.NotNull(() => childElement, childElement);

            // Get the solution item for this imported file.
            var solutionItem = GetItemInSolution(itemId);

            if (solutionItem != null)
            {
                tracer.Info(
                    Resources.CreateElementFromFileCommand_TraceAddingReference, this.CurrentElement.InstanceName, childElement.InstanceName, solutionItem.GetLogicalPath());

                // Create artifact link
                var reference = SolutionArtifactLinkReference.AddReference(childElement, this.UriService.CreateUri(solutionItem));
                reference.AddTag(this.Tag);
                reference.AddTag(BindingSerializer.Serialize(new ReferenceTag
                {
                    SyncNames = this.SyncName
                }));
            }
            else
            {
                throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture,
                                                                  Resources.CreateElementFromFileCommand_ErrorNoSolutionItem, this.CurrentElement.InstanceName, childElement.InstanceName));
            }
        }
예제 #3
0
        /// <summary>
        /// Gets a strong typed interface layer for a collection or element.
        /// </summary>
        public static TInterface As <TInterface>(this IAbstractElement element)
            where TInterface : class, IToolkitInterface
        {
            Guard.NotNull(() => element, element);

            return(GetInterfaceLayer <TInterface, IAbstractElement>(element));
        }
예제 #4
0
        public ElementViewModel(IAbstractElement element, ISolutionBuilderContext context)
            : base(element, context)
        {
            // Initialize default value for icon path
            this.IconPath = string.Format(CultureInfo.InvariantCulture, IconPathFormat, element.GetType().Name);

            if (element.Info != null)
            {
                this.CreateAddMenuOptions();
            }
        }
예제 #5
0
        public ElementViewModel(IAbstractElement element, ISolutionBuilderContext context)
            : base(element, context)
        {
            // Initialize default value for icon path
            this.IconPath = string.Format(CultureInfo.InvariantCulture, IconPathFormat, element.GetType().Name);

            if (element.Info != null)
            {
                this.CreateAddMenuOptions();
            }
        }
예제 #6
0
 private string GetPluralizedElementPath(IAbstractElement element, int index)
 {
     if (element.Info.Cardinality == Cardinality.ZeroToMany ||
         element.Info.Cardinality == Cardinality.OneToMany)
     {
         return(string.Format(CultureInfo.CurrentCulture, ElementInstanceAddressFormat,
                              this.pluralization.Pluralize(element.Info.CodeIdentifier), index.ToString(CultureInfo.CurrentCulture)));
     }
     else
     {
         return(element.Info.CodeIdentifier);
     }
 }
예제 #7
0
            public void Initialize()
            {
                var child1 = Create <ICollection, ICollectionInfo>("Bar1", Cardinality.ZeroToMany);
                var child2 = Create <IElement, IElementInfo>("Bar2", Cardinality.OneToOne);

                this.element = Create <IElement, IElementInfo>("Foo1", Cardinality.ZeroToMany, child1, child2);

                var children = (List <IAbstractElementInfo>) this.element.Info.Elements;

                children.Add(Mocks.Of <IElementInfo>().First(e =>
                                                             e.Name == "Element 1" &&
                                                             e.DisplayName == "Element 1" &&
                                                             e.IsVisible == true &&
                                                             e.AllowAddNew == true &&
                                                             e.Cardinality == Cardinality.ZeroToMany));

                children.Add(Mocks.Of <ICollectionInfo>().First(e =>
                                                                e.Name == "Collection 1" &&
                                                                e.DisplayName == "Collection 1" &&
                                                                e.IsVisible == true &&
                                                                e.AllowAddNew == true &&
                                                                e.Cardinality == Cardinality.ZeroToMany));

                var newNodeDialog = new Mock <IDialogWindow>();

                newNodeDialog.Setup(x => x.ShowDialog()).Returns(true);

                var ctx = new SolutionBuilderContext
                {
                    PatternManager       = new Mock <IPatternManager>().Object,
                    UserMessageService   = Mock.Of <IUserMessageService>(ums => ums.PromptWarning(It.IsAny <string>()) == true),
                    ShowProperties       = () => { },
                    NewNodeDialogFactory = x => newNodeDialog.Object
                };

                var serviceProvider = Mocks.Of <IServiceProvider>()
                                      .First(x => x.GetService(typeof(ISolutionEvents)) == new Mock <ISolutionEvents>().Object);
                var explorer = new SolutionBuilderViewModel(ctx, serviceProvider);

                this.target = new ElementViewModel(this.element, ctx);

                this.target.RenderHierarchyRecursive();
            }
예제 #8
0
        private void SetOwner(IAbstractElement element)
        {
            var view            = this.owner as IView;
            var abstractElement = this.owner as IAbstractElement;

            if (view != null)
            {
                element.View = view;
            }
            else if (abstractElement != null)
            {
                element.Owner = abstractElement;
            }
            else
            {
                // Should never happen.
                throw new NotSupportedException();
            }
        }
예제 #9
0
            public void Initialize()
            {
                var patternManager = new Mock <IPatternManager>();

                patternManager.Setup(x => x.InstalledToolkits).Returns(Enumerable.Empty <IInstalledToolkitInfo>());

                this.element = Create <IElement, IElementInfo>("Foo", Cardinality.OneToOne);

                var extensions = (List <IExtensionPointInfo>) this.element.Info.ExtensionPoints;

                extensions.Add(Mocks.Of <IExtensionPointInfo>().First(x => x.DisplayName == "Foo"));
                extensions.Add(Mocks.Of <IExtensionPointInfo>().First(x => x.DisplayName == "Bar"));

                var ctx = new SolutionBuilderContext
                {
                    PatternManager = patternManager.Object,
                    ShowProperties = () => { }
                };

                this.target = new ElementViewModel(this.element, ctx);
            }
예제 #10
0
 // Methods
 public LabelElementViewModel(IAbstractElement element, ISolutionBuilderContext ctx)
 {
     this.Data        = element;
     this.Context     = ctx;
     this.MenuOptions = new ObservableCollection <IMenuOptionViewModel>();
 }
 public TestElementViewModel(IAbstractElement element, SolutionBuilderContext context)
     : base(element, context)
 {
 }
예제 #12
0
 internal void AddAbstractElement(IAbstractElement elm){
     Util.Log("ComplexSchemaType.AddAbstractElement ");               
     _abstractElms.Add(elm);
 }
 private string GetPluralizedElementPath(IAbstractElement element, int index)
 {
     if (element.Info.Cardinality == Cardinality.ZeroToMany ||
         element.Info.Cardinality == Cardinality.OneToMany)
     {
         return string.Format(CultureInfo.CurrentCulture, ElementInstanceAddressFormat,
             this.pluralization.Pluralize(element.Info.CodeIdentifier), index.ToString(CultureInfo.CurrentCulture));
     }
     else
     {
         return element.Info.CodeIdentifier;
     }
 }
예제 #14
0
 /// <summary>
 /// Initializes the child element after it is created and added to the parent for the given item.
 /// </summary>
 protected virtual void InitializeCreatedElement(string itemId, IAbstractElement childElement)
 {
 }
        /// <summary>
        /// Initializes the child element after it is created and added to the parent for the given item.
        /// </summary>
        protected override void InitializeCreatedElement(string itemId, IAbstractElement childElement)
        {
            Guard.NotNull(() => childElement, childElement);

            // Get the solution item for this imported file.
            var solutionItem = GetItemInSolution(itemId);
            if (solutionItem != null)
            {
                tracer.Info(
                    Resources.CreateElementFromFileCommand_TraceAddingReference, this.CurrentElement.InstanceName, childElement.InstanceName, solutionItem.GetLogicalPath());

                // Create artifact link
                var reference = SolutionArtifactLinkReference.AddReference(childElement, this.UriService.CreateUri(solutionItem));
                reference.AddTag(this.Tag);
                reference.AddTag(BindingSerializer.Serialize(new ReferenceTag
                {
                    SyncNames = this.SyncName
                }));
            }
            else
            {
                throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture,
                    Resources.CreateElementFromFileCommand_ErrorNoSolutionItem, this.CurrentElement.InstanceName, childElement.InstanceName));
            }
        }
 // Methods
 public LabelElementViewModel(IAbstractElement element, ISolutionBuilderContext ctx)
 {
     this.Data = element;
     this.Context = ctx;
     this.MenuOptions = new ObservableCollection<IMenuOptionViewModel>();
 }
예제 #17
0
 public AbstractElementProxy(IAbstractElement element)
     : base(element)
 {
     this.element = element;
 }
예제 #18
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Folder"/> class.
 /// </summary>
 public Folder(IAbstractElement target)
 {
     this.target = target;
     this.proxy  = target.ProxyFor <IFolder>();
 }
 /// <summary>
 /// Initializes the child element after it is created and added to the parent for the given item.
 /// </summary>
 protected virtual void InitializeCreatedElement(string itemId, IAbstractElement childElement)
 {
 }
예제 #20
0
 /// <summary>
 /// Initializes a new instance of the <see cref="DataContract"/> class.
 /// </summary>
 public DataContract(IAbstractElement target)
 {
     this.target = target;
     this.proxy  = target.ProxyFor <IDataContract>();
 }