Example #1
0
        public static RelationshipDefinition RelationshipDefinitionCreate(Domain OwnerEntity, IList <RelationshipDefinition> EditedList)
        {
            if (!ProductDirector.ValidateEditionPermission(AppExec.LIC_EDITION_FREE, "create Relationship Definitions"))
            {
                return(null);
            }

            var ItemsCount = OwnerEntity.ConceptDefinitions.Count + EditedList.Count;
            var MaxQuota   = AppExec.CurrentLicenseEdition.TechName.SelectCorresponding(LicensingConfig.IdeaDefinitionsCreationQuotas);

            if (!ProductDirector.ValidateEditionLimit(ItemsCount + 1, MaxQuota, "create", "Idea Definitions (Concept Defs. + Relationship Defs.)"))
            {
                return(null);
            }

            int    NewNumber = EditedList.Count + 1;
            string NewName   = "RelationshipDef" + NewNumber.ToString();
            var    Definitor = new RelationshipDefinition(OwnerEntity, Domain.GenericRelationshipDefinition,
                                                          NewName, NewName.TextToIdentifier(), Shapes.Ellipse);

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

            return(null);
        }
Example #2
0
        public void CommandAbout_Executed(object sender, ExecutedRoutedEventArgs args)
        {
            string CommandName = ((RoutedCommand)args.Command).Name;

            //T AppExec.LogMessage("The '" + CommandName + "' command has been invoked");

            ProductDirector.ShowAbout();
        }
        public Product ReadProduct(ProductType productType)
        {
            ProductDirector productDirector = new ProductDirector();
            IBuildProduct   buildProduct    = new BuildProduct(productType);

            productDirector.Construct(buildProduct);
            Product product = buildProduct.GetProduct();

            return(product);
        }
Example #4
0
        private void DetailsToolPanel_AddClicked(object arg1, RoutedEventArgs arg2)
        {
            /*- if (!ProductDirector.ConfirmImmediateApply("IdeaEditing.DetailAdd", "ApplyDialogChangesDirectly"))
             *      return; */

            var DetailOptions = new List <IRecognizableElement>();

            DetailOptions.Add(new SimplePresentationElement(AttachmentDetailDesignator.KindTitle, AttachmentDetailDesignator.KindName, AttachmentDetailDesignator.KindSummary, AttachmentDetailDesignator.KindPictogram));
            DetailOptions.Add(new SimplePresentationElement(LinkDetailDesignator.KindTitle, LinkDetailDesignator.KindName, LinkDetailDesignator.KindSummary, LinkDetailDesignator.KindPictogram));

            if (ProductDirector.ValidateEditionPermission(AppExec.LIC_EDITION_LITE, "designate Table detail", false))
            {
                DetailOptions.Add(new SimplePresentationElement(TableDetailDesignator.KindTitle, TableDetailDesignator.KindName, TableDetailDesignator.KindSummary, TableDetailDesignator.KindPictogram));
            }

            var DetailToCreate = Display.DialogMultiOption("Designation of Detail", "Select the type of detail to be designated...", "",
                                                           null, true, TableDetailDesignator.KindName, DetailOptions.ToArray());

            if (DetailToCreate == null)
            {
                return;
            }

            var SelectedDetailOption         = DetailOptions.FirstOrDefault(det => det.TechName == DetailToCreate);
            var DesignationName              = SelectedDetailOption.Name + " - Detail Definition " + (this.DetailsSource.Count + 1).ToString();
            DetailDefinitionCard NewEditCard = null;
            var Owner = Ownership.Create <IdeaDefinition, Idea>(this.SourceDefinitor);

            DetailDesignator CreatedDesignation = null;

            if (DetailToCreate == TableDetailDesignator.KindName)
            {
                CreatedDesignation = DomainServices.CreateTableDesignation(this.SourceEngine, Owner, DesignationName);
            }
            else
            if (DetailToCreate == AttachmentDetailDesignator.KindName)
            {
                CreatedDesignation = DomainServices.CreateAttachmentDesignation(Owner, DesignationName);
            }
            else
            if (DetailToCreate == LinkDetailDesignator.KindName)
            {
                CreatedDesignation = DomainServices.CreateLinkDesignation(Owner, DesignationName);
            }

            if (CreatedDesignation == null)
            {
                return;
            }

            NewEditCard = new DetailDefinitionCard(false, new Assignment <DetailDesignator>(CreatedDesignation, this.DetailsSourceIsGlobal));

            this.DetailsSource.Add(NewEditCard);
            this.DetailsListBox.SelectedItem = NewEditCard;
        }
        /// <summary>
        /// Constructor
        /// </summary>
        public MainWindow()
        {
            InitializeComponent();

            this.InitializeUI();

            ProductDirector.Initialize(this);

            // Redirects catched unhandled exceptions to the application product
            Application.Current.DispatcherUnhandledException +=
                new System.Windows.Threading.DispatcherUnhandledExceptionEventHandler(ProductDirector.ApplicationUnhandledExceptionHandler);
        }
Example #6
0
        public static void ShowGenerationFilePreview(Idea Source)
        {
            if (Source == null || Source.EditEngine == null)
            {
                return;
            }

            if (!ProductDirector.ValidateEditionPermission(AppExec.LIC_EDITION_PROFESSIONAL, "Generate Files", false, new DateTime(2013, 6, 22)))
            {
                return;
            }

            try
            {
                EntityEditEngine.ActiveEntityEditor.ReadTechNamesAsProgramIdentifiers =
                    Source.OwnerComposition.CompositeContentDomain.GenerationConfiguration.UseTechNamesAsProgramIdentifiers;;

                var Language = Source.IdeaDefinitor.OwnerDomain.ExternalLanguages.FirstOrDefault()
                               .NullDefault(Source.IdeaDefinitor.OwnerDomain.CurrentExternalLanguage);

                if (Source.IdeaDefinitor.OwnerDomain.ExternalLanguages.Count > 1)
                {
                    var LangTechName = Display.DialogMultiOption("Language selection", "Select the Language used to generate the preview", null, null, true,
                                                                 Source.IdeaDefinitor.OwnerDomain.CurrentExternalLanguage.TechName,
                                                                 Source.IdeaDefinitor.OwnerDomain.ExternalLanguages.ToArray());
                    if (LangTechName.IsAbsent())
                    {
                        return;
                    }

                    Language = Source.IdeaDefinitor.OwnerDomain.ExternalLanguages.First(lang => lang.TechName == LangTechName);
                    Source.IdeaDefinitor.OwnerDomain.CurrentExternalLanguage = Language;
                }

                var Preview = FileGenerator.GenerateFilePreview(Source, Language);

                DialogOptionsWindow GenDialog = null;
                var Previewer = new FileGenerationPreviewer(Preview.FileName, Preview.GeneratedText);
                Display.OpenContentDialogWindow(ref GenDialog, "Generate from: " + Source.Name,
                                                Previewer, 600, 700);
            }
            catch (Exception Problem)
            {
                Display.DialogMessage("Error!", "Cannot generate preview from the supplied Template and source object.\n\nProblem: " +
                                      Problem.Message, EMessageType.Warning);
                return;
            }
            finally
            {
                EntityEditEngine.ActiveEntityEditor.ReadTechNamesAsProgramIdentifiers = false;
            }
        }
Example #7
0
        public static void GenerateGlobalFiles(Composition Source)
        {
            if (Source == null || Source.EditEngine == null)
            {
                return;
            }

            if (!ProductDirector.ValidateEditionPermission(AppExec.LIC_EDITION_PROFESSIONAL, "Generate Files", false, new DateTime(2013, 6, 22)))
            {
                return;
            }

            if (!GenerationManager.ConfigureAndStartGeneration(Source.OwnerComposition))
            {
                return;
            }

            var Title = "File Generation from " + Source.Name;

            var Generator = new FileGenerator(Source.OwnerComposition, Source.OwnerComposition.CompositeContentDomain.CurrentExternalLanguage,
                                              Source.IdeaDefinitor.OwnerDomain.GenerationConfiguration);

            EntityEditEngine.ActiveEntityEditor.ReadTechNamesAsProgramIdentifiers =
                Source.CompositeContentDomain.GenerationConfiguration.UseTechNamesAsProgramIdentifiers;;

            var Started = ProgressiveThreadedExecutor <int> .Execute(Title, Generator.Generate,
                                                                     (opresult) =>
            {
                EntityEditEngine.ActiveEntityEditor.ReadTechNamesAsProgramIdentifiers = false;

                if (!opresult.WasSuccessful)
                {
                    Display.DialogMessage("Generation not completed!", opresult.Message, EMessageType.Warning);
                    return;
                }

                if (opresult.Message != null)
                {
                    Console.WriteLine(opresult.Message);
                }

                Display.DialogMessage("Generation completed", opresult.Message.AbsentDefault("File Generation successfully executed."));
            });

            if (!Started)
            {
                EntityEditEngine.ActiveEntityEditor.ReadTechNamesAsProgramIdentifiers = false;
            }
        }
        /// <summary>
        /// Window loaded event handler.
        /// </summary>
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            AppExec.SetSourceOfDispatcherForUI(this.WinHeader);

            // Finish visual adjustments
            this.Width  = this.Width.EnforceMaximum(SystemParameters.WorkArea.Width);
            this.Height = this.Height.EnforceMaximum(SystemParameters.WorkArea.Height);

            if (this.Left < 0)
            {
                this.Left = 0;
            }

            if (this.Top < 0)
            {
                this.Top = 0;
            }

            var InitialPaletteSupraContainerHeight = this.WinHeader.PaletteSupraContainer.ActualHeight;
            var Delta = double.NaN;

            this.WinHeader.PaletteSupraContainer.AtCanCollapseChanged =
                ((CanCollapse) =>
            {
                Delta = Delta.NaNDefault(97.0);     // Previous = 75
                var Offset = (Delta * (CanCollapse ? -1 : 1));

                this.WorkingAreaBorder.Margin = new Thickness(this.WorkingAreaBorder.Margin.Left,
                                                              this.WorkingAreaBorder.Margin.Top + Offset,
                                                              this.WorkingAreaBorder.Margin.Right,
                                                              this.WorkingAreaBorder.Margin.Bottom);

                var Engine = ProductDirector.WorkspaceDirector.ActiveDocumentEngine as CompositionEngine;
                if (Engine == null || Engine.CurrentView == null)
                {
                    return;
                }

                // Adjust visualization to not "jump"
                Engine.CurrentView.Pan(double.NaN, Offset, false);
            });

            // Starts the application product
            ProductDirector.Start();
        }
        public static TableDefinition TableDefinitionCreate(Domain OwnerEntity, IList <TableDefinition> EditedList)
        {
            if (!ProductDirector.ValidateEditionPermission(AppExec.LIC_EDITION_PROFESSIONAL, "create Table-Structure Definitions"))
            {
                return(null);
            }

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

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

            return(null);
        }
Example #10
0
        public static MarkerDefinition MarkerDefinitionCreate(Domain OwnerEntity, IList <MarkerDefinition> EditedList)
        {
            if (!ProductDirector.ValidateEditionPermission(AppExec.LIC_EDITION_LITE, "create Marker Definitions"))
            {
                return(null);
            }

            int    NewNumber = EditedList.Count + 1;
            string NewName   = "MarkerDef" + NewNumber.ToString();
            var    Definitor = new MarkerDefinition(NewName, NewName.TextToIdentifier(), "", Display.GetAppImage("rosette.png"));

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

            return(null);
        }
Example #11
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);
        }
Example #12
0
        public static ExternalLanguageDeclaration ExternalLanguageCreate(Domain OwnerEntity, IList <ExternalLanguageDeclaration> EditedList)
        {
            if (!ProductDirector.ValidateEditionPermission(AppExec.LIC_EDITION_PROFESSIONAL, "create External Languages declarations"))
            {
                return(null);
            }

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

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

            return(null);
        }
Example #13
0
        /// <summary>
        /// Saves the Document into the underlying package, optionally with a new Uri.
        /// If the underlying package does not exists, then it is created with the supplied Uri.
        /// If the document is not already stored, then the Uri must be supplied.
        /// Returns an error message if problems were detected.
        /// </summary>
        /// <param name="DocumentLocation">New location for the Composition, Optional if the document is already stored.</param>
        /// <param name="UpdateLocation">Indicates to update the Composition location.</param>
        /// <param name="ResetExistenceStatus">Indicates to reset the existence status to Not-Modified.</param>
        /// <param name="RegisterAsRecentDoc">Indicates to register the document in the recent-documents list.</param>
        /// <returns>Possible problem error message.</returns>
        public string Store(Uri DocumentLocation = null, bool UpdateLocation = true, bool ResetExistenceStatus = true, bool RegisterAsRecentDoc = true)
        {
            var MaxQuota = AppExec.CurrentLicenseEdition.TechName.SelectCorresponding(LicensingConfig.IdeasCreationQuotas);

            if (!ProductDirector.ValidateEditionLimit(this.TargetComposition.DeclaredIdeas.Count(), MaxQuota, "save", "Ideas (Concepts + Relationships)"))
            {
                return("This product edition cannot save a Composition with more than " + MaxQuota.ToString() + " Ideas.");
            }

            MaxQuota = AppExec.CurrentLicenseEdition.TechName.SelectCorresponding(LicensingConfig.ComposabilityLevelsQuotas);

            var CompoLevels = this.TargetComposition.GetCompositeSubLevelsCount();

            if (!ProductDirector.ValidateEditionLimit(CompoLevels, MaxQuota, "save", "Composability Depth Levels"))
            {
                return("This product edition cannot save a Composition with more than " + MaxQuota.ToString() + " composability depth levels.");
            }

            if (DocumentLocation == null)
            {
                DocumentLocation = this.Location;
            }
            else
            if (UpdateLocation)
            {
                this.Location = DocumentLocation;
            }

            var Snapshot = (this.TargetComposition.ActiveView == null
                            ? null
                            : this.TargetComposition.ActiveView.ToVisualSnapshot(PART_SNAPSHOT_WIDTH, PART_SNAPSHOT_HEIGHT));

            var Result = StoreToLocation <ISphereModel>(this.TargetComposition, Composition.__ClassDefinitor.Name,
                                                        this.TargetComposition.Classification.ContentTypeCode, DocumentLocation,
                                                        CompositionDocumentUri, RegisterAsRecentDoc, false,
                                                        this.TargetComposition, Snapshot);

            if (Result.IsAbsent() && ResetExistenceStatus)
            {
                this.ExistenceStatus = EExistenceStatus.NotModified;
            }

            return(Result);
        }
Example #14
0
        // ---------------------------------------------------------------------------------------------------------------------------------------------------------
        public static OperationResult <Relationship> CreateRelationship(Idea DestinationComposite, RelationshipDefinition Definitor, View TargetView,
                                                                        VisualRepresentation OriginRepresentation, Point OriginPosition,
                                                                        VisualRepresentation TargetRepresentation, Point TargetPosition,
                                                                        bool ExtendFromOriginRelationship = true, // (Shift not pressed) Applicable only when origin and target are both relationships. Else (Shift pressed) create Rel. from Target to Origin.
                                                                        bool ExtendExistingRelationship   = true) // (Right-Alt not pressed) Applicable only when origin is a not (simple and hiding-central-symbol) relationship. Else (Right-Alt pressed) created Rel. from Rel.
        {
            bool EditInPlace = false;

            General.ContractRequiresNotNull(DestinationComposite, Definitor, TargetView, OriginRepresentation);

            var MaxQuota = AppExec.CurrentLicenseEdition.TechName.SelectCorresponding(LicensingConfig.IdeasCreationQuotas);

            if (!ProductDirector.ValidateEditionLimit(DestinationComposite.OwnerComposition.DeclaredIdeas.Count() + 1, MaxQuota, "create", "Ideas (Concepts + Relationships)"))
            {
                return(OperationResult.Failure <Relationship>("This product edition cannot create more than " + MaxQuota + " Ideas."));
            }

            if (!ExtendFromOriginRelationship && (TargetRepresentation == null || !(TargetRepresentation.RepresentedIdea is Relationship)))
            {
                ExtendFromOriginRelationship = true;
            }

            var  PotentialOriginRelationship = OriginRepresentation.RepresentedIdea as Relationship;
            var  PotentialTargetRelationship = (TargetRepresentation == null ? (Relationship)null : TargetRepresentation.RepresentedIdea as Relationship);
            bool CreatingNewRelationship     = (/*?*/ !ExtendExistingRelationship || /*?*/ !((PotentialOriginRelationship != null && PotentialOriginRelationship.RelationshipDefinitor.Value == Definitor) ||
                                                                                             (PotentialTargetRelationship != null && PotentialTargetRelationship.RelationshipDefinitor.Value == Definitor)));
            bool?ExtensionFromOriginRelationship = (CreatingNewRelationship ? (bool?)null : (PotentialOriginRelationship != null && ExtendFromOriginRelationship));

            if (!CreatingNewRelationship && TargetRepresentation == null)
            {
                if (OriginRepresentation is RelationshipVisualRepresentation)
                {
                    return(OperationResult.Success(((RelationshipVisualRepresentation)OriginRepresentation).RepresentedRelationship, "Creating new Relationship."));
                }
                else
                {
                    return(OperationResult.Failure <Relationship>("There is no targeted Idea to relate."));
                }
            }

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

            if (DestinationComposite.CompositeContentDomain.GlobalId != Definitor.OwnerDomain.GlobalId)
            {
                return(OperationResult.Failure <Relationship>("The destination container only accepts content of the '" + DestinationComposite.CompositeContentDomain.Name + "' Domain."));
            }

            Relationship       WorkingRelationship = null;
            LinkRoleDefinition OriginLinkRoleDef   = null;
            RoleBasedLink      OriginLink          = null;

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

            if (CreatingNewRelationship)
            {
                if (TargetRepresentation != null)
                {
                    var CanLink = Definitor.CanLink(OriginRepresentation.RepresentedIdea.IdeaDefinitor, TargetRepresentation.RepresentedIdea.IdeaDefinitor);

                    if (!CanLink.Result)
                    {
                        DestinationComposite.EditEngine.DiscardCommandVariation();
                        return(OperationResult.Failure <Relationship>(CanLink.Message));
                    }
                }

                string NewName = Definitor.Name;

                var AppendNumToName = AppExec.GetConfiguration <bool>("IdeaEditing", "Relationship.OnCreationAppendDefNameAndNumber", true);
                if (AppendNumToName)
                {
                    NewName = NewName + " (Idea " + (DestinationComposite.CompositeIdeas.Count + 1).ToString() + ")";
                }

                WorkingRelationship = new Relationship(DestinationComposite.OwnerComposition, Definitor, NewName, NewName.TextToIdentifier());

                if (Definitor.IsVersionable)
                {
                    WorkingRelationship.Version = new VersionCard();
                }

                WorkingRelationship.AddToComposite(DestinationComposite);

                OriginLinkRoleDef = Definitor.GetLinkForRole(ERoleType.Origin);
                OriginLink        = new RoleBasedLink(WorkingRelationship, OriginRepresentation.RepresentedIdea, OriginLinkRoleDef, OriginLinkRoleDef.AllowedVariants[0]);
                WorkingRelationship.AddLink(OriginLink);

                PotentialOriginRelationship = WorkingRelationship;
                EditInPlace = true;
            }
            else
            {
                OperationResult <bool> CanLink = OperationResult.Success(true);

                if (ExtensionFromOriginRelationship.IsTrue())
                {
                    WorkingRelationship = PotentialOriginRelationship;
                }
                else
                {
                    WorkingRelationship = (PotentialTargetRelationship != null ? PotentialTargetRelationship : PotentialOriginRelationship);
                }

                if (TargetRepresentation != null)
                {
                    CanLink = EvaluateLinkability(Definitor, OriginRepresentation, TargetRepresentation,
                                                  PotentialOriginRelationship, PotentialTargetRelationship, WorkingRelationship);

                    if (!CanLink.Result)
                    {
                        DestinationComposite.EditEngine.DiscardCommandVariation();
                        return(OperationResult.Failure <Relationship>("Cannot create/extend Relationship. Cause: " + CanLink.Message));
                    }
                }
            }

            LinkRoleDefinition WorkingLinkRoleDef = null;
            RoleBasedLink      WorkingLink        = null;

            if (TargetRepresentation != null && (CreatingNewRelationship || (WorkingRelationship == PotentialOriginRelationship &&
                                                                             ExtensionFromOriginRelationship.IsTrue())))
            {
                WorkingLinkRoleDef = Definitor.GetLinkForRole(ERoleType.Target);
                if (WorkingRelationship.Links.Where(link => link.RoleDefinitor == WorkingLinkRoleDef &&
                                                    link.AssociatedIdea == TargetRepresentation.RepresentedIdea).Any())
                {
                    DestinationComposite.EditEngine.DiscardCommandVariation();
                    return(OperationResult.Failure <Relationship>("Cannot create Target Link. Cause: Already exists one of the same role-type associating the same Idea."));
                }

                WorkingLink = new RoleBasedLink(WorkingRelationship, TargetRepresentation.RepresentedIdea, WorkingLinkRoleDef, WorkingLinkRoleDef.AllowedVariants[0]);
                WorkingRelationship.AddLink(WorkingLink);
            }

            if (OriginRepresentation != null && !CreatingNewRelationship &&
                WorkingRelationship == PotentialTargetRelationship && !ExtensionFromOriginRelationship.IsTrue())
            {
                WorkingLinkRoleDef = Definitor.GetLinkForRole(ERoleType.Origin);
                if (WorkingRelationship.Links.Where(link => link.RoleDefinitor == WorkingLinkRoleDef &&
                                                    link.AssociatedIdea == OriginRepresentation.RepresentedIdea).Any())
                {
                    DestinationComposite.EditEngine.DiscardCommandVariation();
                    return(OperationResult.Failure <Relationship>("Cannot create Origin Link. Cause: Already exists one of the same role-type associating the same Idea."));
                }

                WorkingLink = new RoleBasedLink(WorkingRelationship, OriginRepresentation.RepresentedIdea, WorkingLinkRoleDef, WorkingLinkRoleDef.AllowedVariants[0]);
                WorkingRelationship.AddLink(WorkingLink);
            }

            RelationshipVisualRepresentation Representator = null;
            VisualSymbol CentralSymbol = null;

            if (TargetPosition != Display.NULL_POINT &&
                OriginPosition != Display.NULL_POINT)
            {
                VisualConnector OriginConnector = null;

                var InitialPosition    = OriginPosition;
                var EdgeOriginPosition = OriginPosition;
                var EdgeTargetPosition = TargetPosition;

                if (CreatingNewRelationship)
                {
                    // Force connect from Symbols' centers.
                    if (OriginRepresentation != null)
                    {
                        EdgeOriginPosition = OriginPosition.DetermineNearestIntersectingPoint(TargetPosition, TargetView.Presenter,
                                                                                              OriginRepresentation.MainSymbol.Graphic,
                                                                                              TargetView.VisualHitTestFilter);
                    }

                    if (TargetRepresentation == null)
                    {
                        InitialPosition = TargetPosition;
                    }
                    else
                    {
                        EdgeTargetPosition = TargetPosition.DetermineNearestIntersectingPoint(OriginPosition, TargetView.Presenter,
                                                                                              TargetRepresentation.MainSymbol.Graphic,
                                                                                              TargetView.VisualHitTestFilter);
                        InitialPosition = EdgeOriginPosition.DetermineCenterRespect(EdgeTargetPosition);
                    }

                    // Create representation
                    Representator = CreateRelationshipVisualRepresentation(WorkingRelationship, TargetView, InitialPosition);
                    CentralSymbol = Representator.MainSymbol;

                    // Notice that here the Origin connector is being drawn, so the Target plug is empty/none (because is connected to the Relationship Central/Main Symbol).
                    OriginConnector = new VisualConnector(Representator, OriginLink, OriginRepresentation.MainSymbol, CentralSymbol, OriginPosition, CentralSymbol.BaseCenter);
                }
                else
                {
                    if (WorkingRelationship == PotentialOriginRelationship)
                    {
                        Representator = (RelationshipVisualRepresentation)OriginRepresentation;
                    }
                    else
                    {
                        Representator = (RelationshipVisualRepresentation)TargetRepresentation;
                    }

                    CentralSymbol   = OriginRepresentation.MainSymbol;
                    InitialPosition = CentralSymbol.BaseCenter;
                }

                VisualConnector TargetConnector        = null;
                VisualConnector OriginAutoRefConnector = null;

                if (TargetRepresentation != null)
                {
                    TargetConnector = new VisualConnector(Representator, WorkingLink, CentralSymbol, TargetRepresentation.MainSymbol, InitialPosition, TargetPosition);

                    if (WorkingRelationship == PotentialOriginRelationship)
                    {
                        OriginAutoRefConnector = CentralSymbol.OriginConnections.FirstOrDefault(conn => conn.OriginSymbol == TargetRepresentation.MainSymbol);
                    }
                }

                if (CreatingNewRelationship)
                {
                    Representator.AddVisualPart(OriginConnector);
                }

                if (TargetConnector != null)
                {
                    Representator.AddVisualPart(TargetConnector);
                }

                if (OriginAutoRefConnector != null)
                {
                    Representator.BendAutoRefConnectors(OriginAutoRefConnector, TargetConnector);
                }

                Representator.Render();
            }

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

            var InformedRelationship = WorkingRelationship;

            if (WorkingRelationship == PotentialTargetRelationship &&
                PotentialOriginRelationship != null)
            {
                InformedRelationship = PotentialOriginRelationship;
            }

            return(OperationResult.Success(InformedRelationship, null, null, CentralSymbol.OwnerRepresentation, EditInPlace));
        }
Example #15
0
        /// <summary>
        /// Tries to close the supplied document engine and returns indication of action executed or cancelled by user.
        /// </summary>
        public bool CloseComposition(CompositionEngine Engine)
        {
            if (Engine.ExistenceStatus == EExistenceStatus.Modified)
            {
                var Result = Display.DialogMessage("Confirmation",
                                                   "The Composition \"" + Engine.TargetComposition.Name + "\" has been modified.\n" +
                                                   (Engine.FullLocation != null ? "\nLocation: " + Engine.FullLocation.LocalPath : "") + "\n\n" +
                                                   "Do you want to save changes?",
                                                   EMessageType.Question,
                                                   System.Windows.MessageBoxButton.YesNoCancel, System.Windows.MessageBoxResult.Yes);

                if (Result == System.Windows.MessageBoxResult.Cancel)
                {
                    return(false);
                }

                if (Result == System.Windows.MessageBoxResult.Yes)
                {
                    if (!CloseRelatedResources(Engine))
                    {
                        return(false);
                    }

                    var Location = Engine.FullLocation;

                    if (Location != null)
                    {
                        var StoreResult = Engine.Store();
                        if (!StoreResult.IsAbsent())
                        {
                            Display.DialogMessage("Error!", "Cannot save Composition.\n\nProblem: " + StoreResult, EMessageType.Warning);
                            return(false);
                        }
                    }
                    else
                    {
                        Location = Display.DialogGetSaveFile("Save Composition",
                                                             FileDataType.FileTypeComposition.Extension,
                                                             FileDataType.FileTypeComposition.FilterForSave,
                                                             Engine.TargetComposition.TechName);
                        if (Location == null)
                        {
                            return(false);
                        }

                        var StoreResult = Engine.Store(Location);
                        if (!StoreResult.IsAbsent())
                        {
                            Display.DialogMessage("Error!", "Cannot save Composition.\n\nProblem: " + StoreResult, EMessageType.Warning);
                            return(false);
                        }
                    }
                }
            }

            Engine.Stop();

            // Show the new activated engine
            this.WorkspaceDirector.RemoveDocument(Engine.TargetComposition);

            // Finally, clears the palettes if no document remains.
            Application.Current.MainWindow
            .PostCall(win =>
            {
                if (this.WorkspaceDirector.Documents.Count < 1)
                {
                    ProductDirector.UpdatePalettes(null);
                }
            }, true);

            return(true);
        }
        public void PresenterControl_MouseMove(object sender, MouseEventArgs e)
        {
            CurrentMousePosition = e.GetPosition(CurrentView.PresenterControl);
            //T Console.WriteLine("At: " + e.GetPosition(null));

            var VisObject = GetPointedVisualObject(CurrentMousePosition);

            if ((Mouse.LeftButton == MouseButtonState.Pressed || Mouse.RightButton != MouseButtonState.Pressed) &&
                this.RunningMouseCommand == this.PanCommand && this.PanCommand != null)
            {
                this.DoCancelOperation(true, null);
            }

            if (this.RunningMouseCommand == null)
            {
                var Manipulator = CurrentView.Manipulator;

                if (this.MouseLeftButtonDownOutsideControl != null && this.MouseLeftButtonDownOutsideControl.Value)
                {
                    if (Manipulator.WorkingAdorner != null)
                    {
                        Manipulator.WorkingAdorner.CancelledByMouseLeftButtonDownOutsideControl = true;
                    }

                    Manipulator.IsManipulating = false;
                    Manipulator.UnpointObject();
                    Manipulator.Finish();
                    this.MouseLeftButtonDownOutsideControl = null;
                    return;
                }
                else
                if (Manipulator.IsManipulating)
                {
                    Manipulator.Continue();
                }
                else
                if (!Manipulator.PointObject(VisObject))
                {
                    ProductDirector.ShowPointingTo();
                    ProductDirector.ShowAssistance();
                    // Cancelled: Too much to explain... ProductDirector.ShowAssistance("To Select: Move pressing [Mouse-Button]. To Pan: Move pressing [Mouse-Alternate-Button]. To Zoom in/out: Roll [Mouse-Wheel]+[Ctrl].");
                }
            }
            else
            {
                if (!this.RunningMouseCommand.Continue(e, false))
                {
                    this.RunningMouseCommand = null;
                }

                PreviousMousePosition = CurrentMousePosition;
                return;
            }

            if (!VisObject.IsEqual(PointedObject))
            {
                PointedObject = VisObject;

                /*T Console.WriteLine("Pointing Representator of Idea: [{0}] at [{1}]. Element is at [{2}].",
                 *                (Element == null ? "<NONE>" : Element.OwnerRepresentation.RepresentedIdea.Name),
                 *                CurrentMousePosition,
                 *                (Element == null ? Rect.Empty : Element.Graphic.ContentBounds )); */
            }

            // When [Dragging] and Selecting-by-Rectangle
            if (IsSelectingByRectangle && Mouse.LeftButton == MouseButtonState.Pressed)
            {
                if (this.SelectByRectangleCommand == null)
                {
                    this.SelectByRectangleCommand = new WorkCommandInteractive <MouseEventArgs>("SelectByRectangle",
                                                                                                (mevargs, definitive) =>
                    {
                        var MousePos = mevargs.GetPosition(this.CurrentView.Presenter);

                        if (mevargs.LeftButton == MouseButtonState.Pressed &&
                            !this.CurrentView.Manipulator.IsManipulating)
                        {
                            //T Console.WriteLine("FinishedSelByRect ONE. Breaked.");
                            this.CurrentView.SelectByRectangle(MousePos);
                            return(true);
                        }

                        /*T Console.WriteLine("FinishedSelByRect ONE. IsMan={0}, MALB={1}",
                         *                this.CurrentView.Manipulator.IsManipulating, mevargs.LeftButton); */
                        if (!this.CurrentView.Manipulator.IsManipulating)
                        {
                            this.CurrentView.FinishSelectByRectangle(true, MousePos);
                        }

                        return(false);
                    },
                                                                                                (normal, mevargs) =>
                    {
                        //T Console.WriteLine("FinishedSelByRect TWO. ");
                        this.CurrentView.FinishSelectByRectangle(false);
                    });
                }

                this.RunningMouseCommand = this.SelectByRectangleCommand;  // To avoid Pointing of elements
            }
            else
            if (this.RunningMouseCommand == this.SelectByRectangleCommand && this.SelectByRectangleCommand != null)
            {
                this.DoCancelOperation(true, null);
            }

            // When [Dragging]
            // then Update cursor depending on pointed target

            // When ([Dragging] and [Going out of view scope]) or [Mouse Right-Button down]
            // then [Pan]
            if (Mouse.RightButton == MouseButtonState.Pressed)
            {
                if (this.RunningMouseCommand == null)
                {
                    if (this.PanCommand == null)
                    {
                        this.PanCommand = new WorkCommandInteractive <MouseEventArgs>("Pan",
                                                                                      (mevargs, definitive) => { this.CurrentView.Pan(); return(true); },
                                                                                      (normal, mevargs) => { this.CurrentView.PreviousPanPosition = default(Point); });
                    }

                    this.RunningMouseCommand = this.PanCommand;  // To avoid Pointing of elements
                }
            }
            else
            if (this.RunningMouseCommand == this.PanCommand && this.PanCommand != null)
            {
                this.DoCancelOperation(true, null);
            }

            PreviousMousePosition = CurrentMousePosition;
        }
 /// <summary>
 /// Manages unhandled exceptions
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void Current_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
 {
     ProductDirector.ApplicationUnhandledExceptionHandler(sender, e);
 }
 /// <summary>
 /// Window closed event handler.
 /// </summary>
 private void Window_Closed(object sender, EventArgs e)
 {
     ProductDirector.Terminate();
 }
Example #19
0
        //------------------------------------------------------------------------------------------------------------------------
        public override Visual DeterminePointedVisual(Point Position)
        {
            PreviousPosition = CurrentPosition;
            CurrentPosition  = Position;

            if (CurrentPosition == PreviousPosition || IsManipulating)
            {
                return(CurrentPointedVisual);
            }

            var NewPointed = GetPointedVisual(Position);

            IsManipulatingHeading = !NewPointed.IsOneOf(FrmPointingDetailsPanel, IndDetailsBottom, IndDetailsBottomLeft, IndDetailsBottomRight, IndDetailsLeft, IndDetailsRight);

            if (NewPointed != CurrentPointedVisual)
            {
                CurrentPointedVisual = NewPointed;

                bool IsPointingToIndicator = true;

                if (NewPointed.IsOneOf(IndHeadingTop, IndHeadingBottom, IndDetailsBottom))
                {
                    ResizingDirection = (NewPointed == IndHeadingTop ? EManipulationDirection.Top : EManipulationDirection.Bottom);
                    TentativeAction   = ESymbolManipulationAction.Resize;
                    Cursor            = Cursors.SizeNS;
                }
                else if (NewPointed.IsOneOf(IndHeadingLeft, IndHeadingRight, IndDetailsLeft, IndDetailsRight))
                {
                    ResizingDirection = (NewPointed.IsOneOf(IndHeadingLeft, IndDetailsLeft) ? EManipulationDirection.Left : EManipulationDirection.Right);
                    TentativeAction   = ESymbolManipulationAction.Resize;
                    Cursor            = Cursors.SizeWE;
                }
                else if (NewPointed.IsOneOf(IndHeadingTopLeft, IndHeadingBottomRight, IndDetailsBottomRight))
                {
                    ResizingDirection = (NewPointed == IndHeadingTopLeft ? EManipulationDirection.TopLeft : EManipulationDirection.BottomRight);
                    TentativeAction   = ESymbolManipulationAction.Resize;
                    Cursor            = Cursors.SizeNWSE;
                }
                else if (NewPointed.IsOneOf(IndHeadingBottomLeft, IndHeadingTopRight, IndDetailsBottomLeft))
                {
                    ResizingDirection = (NewPointed == IndHeadingTopRight ? EManipulationDirection.TopRight : EManipulationDirection.BottomLeft);
                    TentativeAction   = ESymbolManipulationAction.Resize;
                    Cursor            = Cursors.SizeNESW;
                }
                else if (NewPointed.IsOneOf(FrmPointingHeadingPanel, FrmPointingDetailsPanel))
                {
                    TentativeAction = ESymbolManipulationAction.Move;
                    Cursor          = Cursors.ScrollAll;
                }
                else if (NewPointed == FrmEditZone || NewPointed == null)
                {
                    if (ManipulatedSymbol.OwnerRepresentation.IsShortcut)
                    {
                        TentativeAction = ESymbolManipulationAction.GoToShortcutTarget;
                        Cursor          = Cursors.UpArrow;
                    }
                    else
                    {
                        // Do not Edit In-Place if multiselecting...
                        if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl) ||
                            Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift))
                        {
                            TentativeAction = ESymbolManipulationAction.Move;
                            Cursor          = Cursors.ScrollAll;
                        }
                        else
                        {
                            TentativeAction = ESymbolManipulationAction.EditInPlace;
                            Cursor          = Cursors.Pen;
                        }
                    }
                }
                else if (NewPointed.IsIn(FrmMarkingZones.Keys))
                {
                    LastPointedMarkerAssignment = FrmMarkingZones[NewPointed];
                    TentativeAction             = ESymbolManipulationAction.MarkerEdit;
                    Cursor = Cursors.Pen;
                }
                else if (NewPointed.IsIn(FrmDetailContentAssignZones.Keys))
                {
                    LastPointedDetailDesignator = FrmDetailContentAssignZones[NewPointed];
                    TentativeAction             = ESymbolManipulationAction.IndividualDetailChange;
                    Cursor = Cursors.Hand;
                }
                else if (NewPointed.IsIn(FrmDetailContentEditZones.Keys))
                {
                    LastPointedDetailDesignator = FrmDetailContentEditZones[NewPointed];
                    TentativeAction             = ESymbolManipulationAction.IndividualDetailAccess;
                    Cursor = Cursors.Pen;
                }
                else if (NewPointed.IsIn(FrmDetailTitleExpandZones.Keys))
                {
                    LastPointedDetailDesignator = FrmDetailTitleExpandZones[NewPointed];
                    TentativeAction             = ESymbolManipulationAction.SwitchIndividualDetail;
                    Cursor = Cursors.UpArrow;
                }
                else if (NewPointed.IsIn(FrmDetailTitleDesignateZones.Keys))
                {
                    LastPointedDetailDesignator = FrmDetailTitleDesignateZones[NewPointed];
                    TentativeAction             = ESymbolManipulationAction.IndividualDetailDesignation;
                    Cursor = Cursors.Arrow;
                }
                else
                {
                    Cursor = Cursors.Hand;

                    if (NewPointed == ActSwitchDetails)
                    {
                        TentativeAction = ESymbolManipulationAction.ActionSwitchDetails;
                    }
                    else if (NewPointed == ActSwitchRelated)
                    {
                        TentativeAction = ESymbolManipulationAction.ActionSwitchRelated;
                    }
                    else if (NewPointed == ActShowComposite)
                    {
                        TentativeAction = ESymbolManipulationAction.ActionShowCompositeAsView;
                    }
                    else if (NewPointed == DefaultActionIndicator)
                    {
                        TentativeAction = ESymbolManipulationAction.ActionEditProperties;
                    }
                    else if (NewPointed == ActSwitchCompositeView)
                    {
                        TentativeAction = ESymbolManipulationAction.ActionShowCompositeAsDetail;
                    }
                    else if (NewPointed == ActAddDetail)
                    {
                        TentativeAction = ESymbolManipulationAction.ActionAddDetail;
                    }
                    else
                    {
                        IsPointingToIndicator = false;
                    }
                }

                if (IsPointingToIndicator)
                {
                    var IndDescription = TentativeAction.GetDescription();

                    if (TentativeAction == ESymbolManipulationAction.EditInPlace &&
                        ManipulatedSymbol.OwnerRepresentation is RelationshipVisualRepresentation representation)
                    {
                        var RepRel = representation.RepresentedRelationship;

                        if (!RepRel.RelationshipDefinitor.Value.IsSimple || RepRel.Links.Count <= 1)
                        {
                            IndDescription += " Drag to extend the pointed Relationship with a new Link/Connector.";
                        }
                    }

                    ProductDirector.ShowAssistance(IndDescription);

                    /* Problem: This tooltip stops the adorner working
                     * var Tip = this.ToolTip as ToolTip;
                     *
                     * if (Tip == null || (Tip.Content as string).IsAbsent())
                     * {
                     *  Tip = (Tip == null ? new ToolTip() : Tip);
                     *  this.ToolTip = Tip;
                     *
                     *  Tip.Content = IndDescription;
                     *  Tip.IsOpen = true;
                     *  Tip.StaysOpen = false;
                     * } */
                }
                else
                {
                    ProductDirector.ShowAssistance();
                }

                ProductDirector.ShowPointingTo(ManipulatedSymbol);
            }

            return(NewPointed);
        }
        //------------------------------------------------------------------------------------------------------------------------
        public override Visual DeterminePointedVisual(Point Position)
        {
            this.PreviousPosition = this.CurrentPosition;
            this.CurrentPosition  = Position;

            if (this.CurrentPosition == this.PreviousPosition || this.IsManipulating)
            {
                return(this.CurrentPointedVisual);
            }

            var NewPointed = GetPointedVisual(Position);

            if (NewPointed != this.CurrentPointedVisual)
            {
                this.CurrentPointedVisual = NewPointed;

                /* POSTPONED: Displace connecting points
                 * if (NewPointed.IsOneOf(IndOriginPoint, IndTargetPoint))
                 * {
                 *  this.TentativeAction = EConnectorManipulationAction.Displace;
                 *  this.Cursor = Cursors.Cross;
                 * } */

                if (NewPointed != null /* && !NewPointed.IsOneOf(IndOriginPoint, IndTargetPoint)*/)
                {
                    if (NewPointed == this.DefaultActionIndicator || NewPointed.IsIn(AlternateActions))
                    {
                        this.TentativeAction = this.CurrentManipulationAction;
                    }
                    else
                    if (NewPointed == this.RelinkActionTargetIndicator || NewPointed == this.RelinkActionOriginIndicator)
                    {
                        this.TentativeAction = EConnectorManipulationAction.ReLink;
                    }

                    if (this.TentativeAction == EConnectorManipulationAction.Displace)
                    {
                        this.Cursor = Cursors.ScrollAll;
                    }
                    else
                    if (this.TentativeAction == EConnectorManipulationAction.ReLink)
                    {
                        this.Cursor = Cursors.Cross;
                    }
                    else
                    {
                        this.Cursor = Cursors.Hand;
                    }
                }

                var IndDescription = this.TentativeAction.GetDescription();

                if (this.TentativeAction == EConnectorManipulationAction.Displace)
                {
                    IndDescription = IndDescription + " Double-click for Edit. " +
                                     "Action icons: [Ctrl]=Straighten line, [Shift]=Delete connector, [Alt]=Cycle variant plugs.";
                }

                ProductDirector.ShowAssistance(IndDescription);

                /* DANGER: This tooltip stops the adorner working
                 * var Tip = this.ToolTip as ToolTip;
                 *
                 * if (Tip == null || (Tip.Content as string).IsAbsent())
                 * {
                 *  Tip = (Tip == null ? new ToolTip() : Tip);
                 *  Tip.Content = IndDescription;
                 *  Tip.IsOpen = true;
                 *  Tip.StaysOpen = false;
                 *  this.ToolTip = Tip;
                 * } */
                //- }

                ProductDirector.ShowPointingTo(this.ManipulatedConnector);
            }

            return(NewPointed);
        }
        public static void GenerateHtmlReport(CompositionEngine Engine)
        {
            if (Engine == null)
            {
                return;
            }

            if (!ProductDirector.ValidateEditionPermission(AppExec.LIC_EDITION_STANDARD, "Generate HTML Report", false, new DateTime(2013, 1, 1)))
            {
                return;
            }

            if (Engine.TargetComposition.CompositeContentDomain.ReportingConfiguration == null)
            {
                Engine.TargetComposition.CompositeContentDomain.ReportingConfiguration = new ReportConfiguration();
            }

            if (!ReportingManager.EditReportConfiguration("HTML", Engine.TargetComposition.CompositeContentDomain.ReportingConfiguration))
            {
                return;
            }

            var FilePath       = Path.Combine(AppExec.UserDataDirectory, (Engine.TargetComposition.TechName + ".html").TextToUrlIdentifier());
            var DialogResponse = Display.DialogGetSaveFile("Select HTML file to create", ".html", "HTML document (*.html)|*.html", FilePath);

            if (DialogResponse == null)
            {
                return;
            }

            // Enforce url-identifier to avoid file-names with space in between.
            var Location = Path.Combine(Path.GetDirectoryName(DialogResponse.LocalPath),
                                        Path.GetFileName(DialogResponse.LocalPath).TextToUrlIdentifier());

            var WarnResponse = Display.DialogPersistableMultiOption("Note", "Your HTML Document is generated along with a '" + ReportHtmlGenerator.CONTENT_FOLDER_SUFFIX + "' directory.\n" +
                                                                    "Please don't forget to manage (copy/move/erase) them together to keep consistency." +
                                                                    (Location == DialogResponse.LocalPath ? ""
                                                                             : "\n\nThe file will be saved as '" + Path.GetFileName(Location) + "'."),
                                                                    null, "Reporting", "InformHTMLContentDir", null,
                                                                    new SimplePresentationElement("OK", "Ok", "", Display.GetAppImage("accept.png")));

            if (WarnResponse == null)
            {
                return;
            }

            var Title = "HTML Report of " + Engine.TargetComposition.Name;

            var Generator = new ReportHtmlGenerator(Engine.TargetComposition, Location,
                                                    Engine.TargetComposition.CompositeContentDomain.ReportingConfiguration);

            ProgressiveThreadedExecutor <int> .Execute("Generating " + Title, Generator.Generate,
                                                       (opresult) =>
            {
                if (opresult.WasSuccessful && !File.Exists(Generator.GeneratedTempWorkingDocumentFile))
                {
                    opresult = OperationResult.Failure <int>("Cannot write temporal report file at: " + Generator.GeneratedTempWorkingDocumentFile);
                }

                if (!opresult.WasSuccessful)
                {
                    Display.DialogMessage("Report not completed!", opresult.Message, EMessageType.Warning);
                    return;
                }

                try
                {
                    var TargetFolder = Path.GetDirectoryName(Location);
                    General.CopyDirectory(Generator.GeneratedTempWorkingDocumentDir, TargetFolder);

                    AppExec.CallExternalProcess(Location);

                    if (File.Exists(Generator.GeneratedTempWorkingDocumentFile))
                    {
                        File.Delete(Generator.GeneratedTempWorkingDocumentFile);
                    }

                    if (Directory.Exists(Generator.GeneratedTempWorkingDocumentDir))
                    {
                        Directory.Delete(Generator.GeneratedTempWorkingDocumentDir, true);
                    }
                }
                catch (Exception Problem)
                {
                    Display.DialogMessage("Attention!", "Cannot show generated Report.\n"
                                          + (!Generator.GeneratedTempWorkingDocumentFile.IsAbsent() && File.Exists(Generator.GeneratedTempWorkingDocumentFile)
                                                 ? "It can be still found at: " + Generator.GeneratedTempWorkingDocumentFile : "")
                                          + "\nProblem: " + Problem.Message);
                }
            });
        }
        public static void GeneratePdfXpsReport(CompositionEngine Engine)
        {
            if (Engine == null)
            {
                return;
            }

            if (!ProductDirector.ValidateEditionPermission(AppExec.LIC_EDITION_STANDARD, "Generate PDF/XPS Report"))
            {
                return;
            }

            if (Engine.TargetComposition.CompositeContentDomain.ReportingConfiguration == null)
            {
                Engine.TargetComposition.CompositeContentDomain.ReportingConfiguration = new ReportConfiguration();
            }

            if (!ReportingManager.EditReportConfiguration("PDF/XPS", Engine.TargetComposition.CompositeContentDomain.ReportingConfiguration))
            {
                return;
            }

            var Generator = new ReportStandardGenerator(Engine.TargetComposition, Engine.TargetComposition.CompositeContentDomain.ReportingConfiguration);

            var Title = "Report of " + Engine.TargetComposition.Name;

            ProgressiveThreadedExecutor <int> .Execute("Generating " + Title, Generator.Generate,
                                                       (opresult) =>
            {
                if (opresult.WasSuccessful && !File.Exists(Generator.GeneratedDocumentTempFilePath))
                {
                    opresult = OperationResult.Failure <int>("Cannot write temporal report file at: " + Generator.GeneratedDocumentTempFilePath);
                }

                if (!opresult.WasSuccessful)
                {
                    Display.DialogMessage("Report not completed!", opresult.Message, EMessageType.Warning);
                    return;
                }

                try
                {
                    var GeneratedDocument = Display.LoadDocumentFromXPS(Generator.GeneratedDocumentTempFilePath);
                    var Location          = new Uri(Generator.GeneratedDocumentTempFilePath, UriKind.Absolute);
                    var Package           = System.IO.Packaging.PackageStore.GetPackage(Location);

                    DocViewerControl = new PrintPreviewer(GeneratedDocument, Generator.GeneratedDocumentTempFilePath,
                                                          Engine.TargetComposition.Name);

                    Display.OpenContentDialogWindow(ref WinFlowDocViewer, Title, DocViewerControl);

                    Package.Close();        // Package remains open, so must closed!
                    //if you don't remove the package from the PackageStore, you won't be able to
                    //re-open the same file again later (due to System.IO.Packaging's Package store/caching
                    //rather than because of any file locks)
                    System.IO.Packaging.PackageStore.RemovePackage(Location);

                    if (File.Exists(Generator.GeneratedDocumentTempFilePath))
                    {
                        File.Delete(Generator.GeneratedDocumentTempFilePath);
                    }
                }
                catch (Exception Problem)
                {
                    Display.DialogMessage("Attention!", "Cannot show generated Report.\n"
                                          + (!Generator.GeneratedDocumentTempFilePath.IsAbsent() && File.Exists(Generator.GeneratedDocumentTempFilePath)
                                                 ? "It can still be found at: " + Generator.GeneratedDocumentTempFilePath : "")
                                          + "\nProblem: " + Problem.Message);
                }
            });
        }
Example #23
0
        //------------------------------------------------------------------------------------------------------------------------
        public override Visual DeterminePointedVisual(Point Position)
        {
            this.PreviousPosition = this.CurrentPosition;
            this.CurrentPosition  = Position;

            if (this.CurrentPosition == this.PreviousPosition || this.IsManipulating)
            {
                return(this.CurrentPointedVisual);
            }

            var NewPointed = GetPointedVisual(Position);

            if (NewPointed != this.CurrentPointedVisual)
            {
                this.CurrentPointedVisual = NewPointed;
                bool IsPointingToIndicator = true;

                if (NewPointed.IsOneOf(IndHeadingTop, IndHeadingBottom))
                {
                    this.ResizingDirection = (NewPointed == IndHeadingTop ? EManipulationDirection.Top : EManipulationDirection.Bottom);
                    this.TentativeAction   = EComplementManipulationAction.Resize;
                    this.Cursor            = Cursors.SizeNS;
                }
                else
                if (NewPointed.IsOneOf(IndHeadingLeft, IndHeadingRight))
                {
                    this.ResizingDirection = (NewPointed == IndHeadingLeft ? EManipulationDirection.Left : EManipulationDirection.Right);
                    this.TentativeAction   = EComplementManipulationAction.Resize;
                    this.Cursor            = Cursors.SizeWE;
                }
                else
                if (NewPointed.IsOneOf(IndHeadingTopLeft, IndHeadingBottomRight))
                {
                    this.ResizingDirection = (NewPointed == IndHeadingTopLeft ? EManipulationDirection.TopLeft : EManipulationDirection.BottomRight);
                    this.TentativeAction   = EComplementManipulationAction.Resize;
                    this.Cursor            = Cursors.SizeNWSE;
                }
                else
                if (NewPointed.IsOneOf(IndHeadingBottomLeft, IndHeadingTopRight))
                {
                    this.ResizingDirection = (NewPointed == IndHeadingTopRight ? EManipulationDirection.TopRight : EManipulationDirection.BottomLeft);
                    this.TentativeAction   = EComplementManipulationAction.Resize;
                    this.Cursor            = Cursors.SizeNESW;
                }
                else
                if (NewPointed == FrmPointingHeadingPanel)
                {
                    this.TentativeAction = EComplementManipulationAction.Move;
                    this.Cursor          = Cursors.ScrollAll;
                }
                else
                if (NewPointed == FrmEditZone || NewPointed == null)
                {
                    this.TentativeAction = EComplementManipulationAction.Edit;
                    this.Cursor          = Cursors.Pen;
                }
                else
                {
                    this.Cursor = Cursors.Hand;

                    if (NewPointed == DefaultActionIndicator)
                    {
                        this.TentativeAction = EComplementManipulationAction.Edit;
                    }
                    else
                    {
                        IsPointingToIndicator = false;
                    }
                }

                if (IsPointingToIndicator)
                {
                    var IndDescription = this.TentativeAction.GetDescription();
                    ProductDirector.ShowAssistance(IndDescription);
                }
                else
                {
                    ProductDirector.ShowAssistance();
                }

                ProductDirector.ShowPointingTo(this.ManipulatedComplement);
            }

            return(NewPointed);
        }