コード例 #1
0
        public ComplementCreationCommand(CompositionEngine TargetEngine, SimplePresentationElement ComplementKind)
            : base("Create Complement '" + ComplementKind.Name + "'.")
        {
            this.ContextEngine  = TargetEngine;
            this.ComplementKind = ComplementKind;

            this.Initialize();
        }
コード例 #2
0
        public static SimplePresentationElement VariantDefinitionCreate(Domain OwnerEntity, IList <SimplePresentationElement> EditedList)
        {
            if (!ProductDirector.ValidateEditionPermission(AppExec.LIC_EDITION_PROFESSIONAL, "create Link-Role Variant Definitions"))
            {
                return(null);
            }

            int    NewNumber = EditedList.Count + 1;
            string NewName   = "VariantDef" + NewNumber.ToString();
            var    Definitor = new SimplePresentationElement(NewName, NewName.TextToIdentifier());

            if (VariantDefinitionEdit(OwnerEntity, EditedList, Definitor))
            {
                return(Definitor);
            }

            return(null);
        }
コード例 #3
0
        /// <summary>
        /// Constructor.
        /// </summary>
        public VisualConnectorsFormat(SimplePresentationElement DefaultTailVariant, string DefaultTailPlug,
                                      SimplePresentationElement DefaultHeadVariant, string DefaultHeadPlug,
                                      Brush LineBrush, DashStyle LineDash = null,
                                      double LineThickness = DEFAULT_LINE_THICKNESS, double Opacity = 1.0, Brush BackgroundBrush = null,
                                      EPathStyle PathStyle = EPathStyle.SinglelineStraight, EPathCorner PathCorner = EPathCorner.Rounded,
                                      PenLineCap LineCap   = PenLineCap.Round, PenLineJoin LineJoin = PenLineJoin.Round)
            : base(BackgroundBrush, LineBrush, LineThickness, Opacity, LineDash, LineCap, LineJoin)
        {
            General.ContractRequiresNotNull(DefaultHeadVariant, DefaultTailVariant, LineBrush);
            General.ContractRequiresNotAbsent(DefaultHeadPlug, DefaultTailPlug);

            this.HeadPlugs = new EditableDictionary <SimplePresentationElement, string>(__HeadPlugs.TechName, this);
            this.HeadPlugs.Add(DefaultHeadVariant, DefaultHeadPlug);

            this.TailPlugs = new EditableDictionary <SimplePresentationElement, string>(__TailPlugs.TechName, this);
            this.TailPlugs.Add(DefaultTailVariant, DefaultTailPlug);

            this.PathStyle  = PathStyle;
            this.PathCorner = PathCorner;
        }
コード例 #4
0
        // ---------------------------------------------------------------------------------------------------------------------------------------------------------
        /// <summary>
        /// Indicates whether this Relationship Definition can link supplied origin and target Ideas,
        /// considering its linking roles associability, variants and multiconnectability.
        /// </summary>
        public OperationResult <bool> CanLink(IdeaDefinition OriginIdea, IdeaDefinition TargetIdea,
                                              SimplePresentationElement OriginVariant = null, SimplePresentationElement TargetVariant = null)
        {
            General.ContractRequiresNotNull(OriginIdea, TargetIdea);

            if (!ValidateAssociabililty(OriginIdea, TargetIdea))
            {
                return(OperationResult.Failure <bool>("Origin and Target Ideas are not linkable."));
            }

            if (!ValidateVariants(OriginIdea, OriginVariant, TargetIdea, TargetVariant))
            {
                return(OperationResult.Failure <bool>("Variants are invalid for the intended linking."));
            }

            if (!ValidateMultiConnectability(OriginIdea, TargetIdea))
            {
                return(OperationResult.Failure <bool>("Already exists one non-multiconnectable role used."));
            }

            return(OperationResult.Success(true));
        }
コード例 #5
0
        public void VariantsUpdater(SimplePresentationElement Variant, SimplePresentationElement Plug)
        {
            // IMPORTANT: Notice the use of this.ParentRelDef (the edited Agent) instead of
            //            this.TargetLinkRoleDef.OwnerRelationshipDef (the original Entity).
            var ConnFmt = this.ParentRelDef.DefaultConnectorsFormat;
            IDictionary <SimplePresentationElement, string> TargetCollection = null;

            if (this.TargetLinkRoleDef.RoleType == ERoleType.Target)
            {
                TargetCollection = ConnFmt.HeadPlugs;
            }
            else
            {
                TargetCollection = ConnFmt.TailPlugs;
            }

            TargetCollection.AddOrReplace(Variant, Plug.TechName);

            // PENDING: In the Editor update (at the whole Relationship Definition level),
            //          the unused Head and Tail Plugs per Variant should be deleted
            //          accordingly to the Link-Role-Def's Allowed Variants.
        }
コード例 #6
0
        private static void PasteCreateComplement(View TargetView, Point TargetPosition, object Content)
        {
            OperationResult <VisualComplement> Complement = null;
            SimplePresentationElement          Kind       = null;
            string Property = null;

            if (Content is BitmapSource)
            {
                Kind     = Domain.ComplementDefImage;
                Property = VisualComplement.PROP_FIELD_IMAGE;
            }
            else
            {
                if (Content is byte[])
                {
                    Content = ((byte[])Content).BytesToString();
                }
                else
                if (!(Content is string))
                {
                    Content = Content.ToStringAlways();
                }

                Kind     = Domain.ComplementDefText;
                Property = VisualComplement.PROP_FIELD_TEXT;
            }

            Complement = ComplementCreationCommand.CreateComplement(TargetView.OwnerCompositeContainer, Kind, TargetView, null, TargetPosition);

            if (Complement != null && Complement.WasSuccessful)
            {
                // IMPORTANT: The whole Content MUST be assigned in order to be undoable/readoable.
                Complement.Result.SetPropertyField(Property, Content);
                Complement.Result.Render();
            }
        }
コード例 #7
0
 protected bool ValidateVariants(IdeaDefinition OriginIdea, SimplePresentationElement OriginVariant,
                                 IdeaDefinition TargetIdea, SimplePresentationElement TargetVariant)
 {
     // PENDING
     return(true);
 }
コード例 #8
0
 /// <summary>
 /// Constructor
 /// </summary>
 public MarkerAssignment(EntityEditEngine Engine, MarkerDefinition Definitor, SimplePresentationElement Descriptor = null)
 {
     this.Definitor  = Definitor;
     this.Descriptor = Descriptor;
 }
コード例 #9
0
        // ---------------------------------------------------------------------------------------------------------------------------------------------------------
        public static OperationResult <VisualComplement> CreateComplement(Idea DestinationComposite, SimplePresentationElement Kind, View TargetView,
                                                                          VisualSymbol TargetSymbol, Point Position, double InitialWidth = 0.0)
        {
            General.ContractRequiresNotNull(DestinationComposite, Kind, TargetView);

            if (DestinationComposite.IdeaDefinitor.CompositeContentDomain == null)
            {
                return(OperationResult.Failure <VisualComplement>("Destination Container doest not accept Composite-Content.", DestinationComposite));
            }

            DestinationComposite.EditEngine.StartCommandVariation("Create Complement");

            VisualComplement NewComplement = null;

            var Owner = (Kind.TechName.IsOneOf(Domain.ComplementDefCallout.TechName, Domain.ComplementDefQuote.TechName,
                                               Domain.ComplementDefGroupRegion.TechName, Domain.ComplementDefGroupLine.TechName)
                         ? Ownership.Create <View, VisualSymbol>(TargetSymbol)
                         : Ownership.Create <View, VisualSymbol>(TargetView));

            NewComplement = new VisualComplement(Kind, Owner, Position, InitialWidth);

            if (!Owner.IsGlobal && TargetSymbol != null)
            {
                TargetSymbol.AddComplement(NewComplement);
            }

            TargetView.PutComplement(NewComplement);

            DestinationComposite.UpdateVersion();
            DestinationComposite.EditEngine.CompleteCommandVariation();

            return(OperationResult.Success(NewComplement));
        }
コード例 #10
0
        public static bool VariantDefinitionDelete(Domain OwnerEntity, IList <SimplePresentationElement> EditedList, SimplePresentationElement VariantDef)
        {
            var Result = Display.DialogMessage("Confirmation", "Are you sure you want to Delete the '" + VariantDef.Name + "' Variant Definition?",
                                               EMessageType.Question, System.Windows.MessageBoxButton.YesNo, System.Windows.MessageBoxResult.No);

            return(Result == MessageBoxResult.Yes);
        }
コード例 #11
0
        public static bool VariantDefinitionEdit(Domain OwnerEntity, IList <SimplePresentationElement> EditedList, SimplePresentationElement VariantDef)
        {
            /*- if (!ProductDirector.ConfirmImmediateApply("Variant Definition", "DomainEdit.VariantDefinition", "ApplyDialogChangesDirectly"))
             *  return false; */

            var InstanceController = EntityInstanceController.AssignInstanceController(VariantDef);

            InstanceController.StartEdit();

            var EditPanel = Display.CreateEditPanel(VariantDef, null, true, null, null, true, false, true /*, Expositor*/);

            return(InstanceController.Edit(EditPanel, "Edit Link-Role Variant Definition - " + VariantDef.ToString()).IsTrue());
        }
コード例 #12
0
        public static SimplePresentationElement VariantDefinitionClone(Domain OwnerEntity, IList <SimplePresentationElement> EditedList, SimplePresentationElement VariantDef)
        {
            var Result = VariantDef.CreateClone(ECloneOperationScope.Deep, null);

            var NamesWereEquivalent = (Result.TechName == Result.Name.TextToIdentifier());

            Result.Name = Result.Name + "(copy)";   // Auto-update of TechName when equivalents
            if (!NamesWereEquivalent)
            {
                Result.TechName = Result.TechName + "_copy";
            }

            return(Result);
        }
コード例 #13
0
        /// <summary>
        /// Constructor
        /// </summary>
        public RoleBasedLink(Relationship RelationshipOwner, Idea AssociatedIdea, LinkRoleDefinition RoleDefinitor, SimplePresentationElement RoleVariant)
            : base()
        {
            this.OwnerRelationship = RelationshipOwner;
            this.AssociatedIdea    = AssociatedIdea;
            this.RoleDefinitor     = RoleDefinitor;
            this.RoleVariant       = RoleVariant;

            this.AssociatedIdea.AssociatingLinks.Add(this);
        }