/// <summary>Create the pane.</summary>
        /// <param name="paneHost"></param>
        public PpsGenericWpfWindowPane(IPpsWindowPaneHost paneHost)
            : base(paneHost.PaneManager.Shell)
        {
            PaneHost = paneHost ?? throw new ArgumentNullException(nameof(paneHost));

            PaneManager.Shell.AddIdleAction(this);
        }         // ctor
示例#2
0
        public static IPpsWindowPane CreateEmptyPane(this IPpsWindowPaneManager paneManager, IPpsWindowPaneHost paneHost, Type paneType)
        {
            var ti                   = paneType.GetTypeInfo();
            var ctorBest             = (ConstructorInfo)null;
            var ctoreBestParamLength = -1;

            if (!typeof(IPpsWindowPane).IsAssignableFrom(paneType))
            {
                throw new ArgumentException($"{paneType.Name} does not implement {nameof(IPpsWindowPane)}.");
            }

            // search for the longest constructor
            foreach (var ci in ti.GetConstructors())
            {
                var pi = ci.GetParameters();
                if (ctoreBestParamLength < pi.Length)
                {
                    ctorBest             = ci;
                    ctoreBestParamLength = pi.Length;
                }
            }
            if (ctorBest == null)
            {
                throw new ArgumentException($"'{ti.Name}' has no constructor.");
            }

            // create the argument set
            var parameterInfo = ctorBest.GetParameters();
            var paneArguments = new object[parameterInfo.Length];

            for (var i = 0; i < paneArguments.Length; i++)
            {
                var pi      = parameterInfo[i];
                var tiParam = pi.ParameterType.GetTypeInfo();
                if (tiParam.IsAssignableFrom(paneManager.Shell.GetType()))
                {
                    paneArguments[i] = paneManager.Shell;
                }
                else if (tiParam.IsAssignableFrom(typeof(IPpsWindowPaneManager)))
                {
                    paneArguments[i] = paneManager;
                }
                else if (tiParam.IsAssignableFrom(typeof(IPpsWindowPaneHost)))
                {
                    paneArguments[i] = paneHost;
                }
                else if (pi.HasDefaultValue)
                {
                    paneArguments[i] = pi.DefaultValue;
                }
                else
                {
                    throw new ArgumentException($"Unsupported argument '{pi.Name}' for type '{ti.Name}'.");
                }
            }

            // activate the pane
            return((IPpsWindowPane)Activator.CreateInstance(paneType, paneArguments));
        }         // func CreateEmptyPane
示例#3
0
        /// <summary>Pane constructor, that gets called by the host.</summary>
        public PpsPdfViewerPane(IPpsWindowPaneHost paneHost)
            : base(paneHost)
        {
            InitializeComponent();

            // add commands
            Commands.AddButton("100;100", "print", new PpsAsyncCommand(ctx => PrintAsync(ctx), ctx => CanPrint(ctx)), "Drucken", "Druckt die Pdf-Datei.");
        }         // ctor
示例#4
0
        /// <summary></summary>
        /// <param name="pane"></param>
        /// <param name="text"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public static IPpsProgress DisableUI(this IPpsWindowPaneHost pane, string text = null, int value = -1)
        {
            var progress = pane.Progress.CreateProgress() ?? PpsShell.EmptyProgress;

            if (text != null)
            {
                progress.Text = text;
            }
            progress.Value = value;
            return(progress);
        }         // func DisableUI
示例#5
0
        public PpsHelpPagePane(IPpsWindowPaneHost paneHost)
            : base(paneHost)
        {
            Commands.AddButton("100;100", "save",
                               PublishCommand,
                               "Veröffentlichen", "Änderungen für alle freigeben"
                               );

            this.AddCommandBinding(Shell, PublishCommand,
                                   new PpsAsyncCommand(
                                       ctx => PublishHelpPageAsync(),
                                       ctx => IsLocalChanged
                                       )
                                   );
        }         // ctor
示例#6
0
        /// <summary>Trace pane constructor</summary>
        /// <param name="paneHost"></param>
        public PpsTracePane(IPpsWindowPaneHost paneHost)
            : base(paneHost)
        {
            traceEnvironment = new PpsTraceEnvironment(paneHost);

            InitializeComponent();

            this.AddCommandBinding(Environment, ApplicationCommands.SaveAs,
                                   new PpsCommand(
                                       ctx => SaveTrace()
                                       )
                                   );

            this.AddCommandBinding(Environment, ApplicationCommands.Copy,
                                   new PpsCommand(
                                       ctx => CopyToClipboard(ctx.Parameter),
                                       ctx => CanCopyToClipboard(ctx.Parameter)
                                       )
                                   );

            this.AddCommandBinding(
                Environment, ApplicationCommands.Open,
                new PpsAsyncCommand(
                    ctx => ExecuteCommandAsync(ConsoleCommandTextBox.Text),
                    ctx => !String.IsNullOrEmpty(ConsoleCommandTextBox.Text)
                    )
                );

            this.AddCommandBinding(Environment, AssignDebugTarget,
                                   new PpsAsyncCommand(
                                       ctx => UpdateDebugTargetAsync((PpsMasterDataRow)ctx.Parameter, false),
                                       ctx => ctx.Parameter is PpsMasterDataRow
                                       )
                                   );


            this.AddCommandBinding(Environment, ClearDebugTarget,
                                   new PpsAsyncCommand(
                                       ctx => UpdateDebugTargetAsync((PpsMasterDataRow)ctx.Parameter, true),
                                       ctx => ctx.Parameter is PpsMasterDataRow row && row.GetProperty("DebugPath", null) != null
                                       )
                                   );

            var collectionView = CollectionViewSource.GetDefaultView(Environment.Log);

            collectionView.SortDescriptions.Add(new SortDescription(nameof(PpsTraceItemBase.Stamp), ListSortDirection.Descending));
        }         // ctor
        private IPpsObjectDataAccess dataAccess; // access token to the data object

        #region -- Ctor/Dtor/Load/Unload ----------------------------------------------

        /// <summary></summary>
        /// <param name="paneHost"></param>
        public PpsGenericMaskWindowPane(IPpsWindowPaneHost paneHost)
            : base(paneHost)
        {
            idleActionToken = Shell.AddIdleAction(
                elapsed =>
            {
                if (elapsed > 3000)
                {
                    if (data != null && data.IsDirty)
                    {
                        CommitEditAsync().AwaitTask();
                    }
                    return(false);
                }
                else
                {
                    return(data != null && data.IsDirty);
                }
            }
                );
        }         // ctor
示例#8
0
 public PpsTraceEnvironment(IPpsWindowPaneHost paneHost)
 {
     this.paneHost = paneHost ?? throw new ArgumentNullException(nameof(paneHost));
 }             // ctor