Exemplo n.º 1
0
        public static void Start()
        {
            if (Navigator.Manager.NotDefined(MethodInfo.GetCurrentMethod()))
            {
                TypeClient.Start();
                QueryClient.Start();
                Navigator.AddSetting(new EntitySettings <UserQueryEntity> {
                    View = _ => new UserQuery(), Icon = ExtensionsImageLoader.GetImageSortName("userQuery.png")
                });
                SearchControl.GetMenuItems += SearchControl_GetCustomMenuItems;
                UserAssetsClient.Start();
                UserAssetsClient.RegisterExportAssertLink <UserQueryEntity>();

                Constructor.Register <UserQueryEntity>(ctx =>
                {
                    MessageBox.Show(Window.GetWindow(ctx.Element),
                                    ChartMessage._0CanOnlyBeCreatedFromTheSearchWindow.NiceToString().FormatWith(typeof(UserQueryEntity).NicePluralName()),
                                    ChartMessage.CreateNew.NiceToString(),
                                    MessageBoxButton.OK, MessageBoxImage.Information);
                    return(null);
                });

                LinksClient.RegisterEntityLinks <Entity>((entity, ctrl) =>
                {
                    if (!UserQueryPermission.ViewUserQuery.IsAuthorized())
                    {
                        return(null);
                    }

                    return(Server.Return((IUserQueryServer us) => us.GetUserQueriesEntity(entity.EntityType))
                           .Select(cp => new UserQueryQuickLink(cp, entity)).ToArray());
                });
            }
        }
Exemplo n.º 2
0
        private StackPanel IconPair(string first, string second, bool equal)
        {
            var margin = new Thickness(3, 0, 3, 0);

            return(new StackPanel
            {
                Orientation = Orientation.Horizontal,
                Children =
                {
                    new Border
                    {
                        Child = new Image{
                            Source = ExtensionsImageLoader.GetImageSortName(first), Margin = margin
                        },
                        Background = equal ? lightRed : red,
                    },
                    new Border
                    {
                        Child = new Image{
                            Source = ExtensionsImageLoader.GetImageSortName(second), Margin = margin
                        },
                        Background = equal ? lightGreen : green,
                    },
                }
            });
        }
Exemplo n.º 3
0
        static MenuItem SearchControl_GetCustomMenuItems(SearchControl sc)
        {
            if (!ChartPermission.ViewCharting.IsAuthorized())
            {
                return(null);
            }

            var miResult = new MenuItem
            {
                Header = ChartMessage.Chart.NiceToString(),
                Icon   = ExtensionsImageLoader.GetImageSortName("chartIcon.png").ToSmallImage()
            };

            miResult.Click += delegate
            {
                var cr = new ChartRequest(sc.QueryName)
                {
                    Filters = sc.FilterOptions.Select(fo => fo.ToFilter()).ToList(),
                };

                ChartClient.OpenChartRequest(cr, null, null);
            };

            return(miResult);
        }
Exemplo n.º 4
0
 public UserQueryQuickLink(Lite <UserQueryEntity> userQuery, Lite <Entity> entity)
 {
     this.ToolTip   = userQuery.ToString();
     this.Label     = userQuery.ToString();
     this.userQuery = userQuery;
     this.entity    = entity;
     this.Icon      = ExtensionsImageLoader.GetImageSortName("userQuery.png");
     this.IsVisible = true;
 }
Exemplo n.º 5
0
 public UserChartQuickLink(Lite <UserChartEntity> userChart, Lite <Entity> entity)
 {
     this.ToolTip   = userChart.ToString();
     this.Label     = userChart.ToString();
     this.userChart = userChart;
     this.entity    = entity;
     this.IsVisible = true;
     this.Icon      = ExtensionsImageLoader.GetImageSortName("chartIcon.png");
 }
Exemplo n.º 6
0
 public DashboardQuickLink(Lite <DashboardEntity> dashboard, Lite <Entity> entity)
 {
     this.ToolTip   = dashboard.ToString();
     this.Label     = dashboard.ToString();
     this.dashboard = dashboard;
     this.entity    = entity;
     this.IsVisible = true;
     this.Icon      = ExtensionsImageLoader.GetImageSortName("dashboard.png");
 }
Exemplo n.º 7
0
        public static void Start()
        {
            if (Navigator.Manager.NotDefined(MethodInfo.GetCurrentMethod()))
            {
                Navigator.AddSettings(new List <EntitySettings>
                {
                    new EntitySettings <SMSMessageEntity> {
                        View = e => new SMSMessage(), Icon = ExtensionsImageLoader.GetImageSortName("sms.png")
                    },
                    new EntitySettings <SMSTemplateEntity> {
                        View = e => new SMSTemplate(), Icon = ExtensionsImageLoader.GetImageSortName("smstemplate.png")
                    },
                    new EmbeddedEntitySettings <SMSTemplateMessageEmbedded>()
                    {
                        View = e => new Signum.Windows.SMS.SMSTemplateMessage()
                    },
                    new EntitySettings <SMSSendPackageEntity> {
                        View = e => new SMSSendPackage(), Icon = ExtensionsImageLoader.GetImageSortName("package.png")
                    },
                    new EntitySettings <SMSUpdatePackageEntity> {
                        View = e => new SMSUpdatePackage(), Icon = ExtensionsImageLoader.GetImageSortName("package.png")
                    },
                    new ModelEntitySettings <MultipleSMSModel> {
                        View = e => new MultipleSMS(), Icon = ExtensionsImageLoader.GetImageSortName("package.png")
                    },
                });

                OperationClient.AddSetting(new EntityOperationSettings <Entity>(SMSMessageOperation.CreateSMSWithTemplateFromEntity)
                {
                    Click = FindAssociatedTemplates
                });

                OperationClient.AddSetting(new ContextualOperationSettings <Entity>(SMSMessageOperation.SendSMSMessages)
                {
                    Click = coc =>
                    {
                        MultipleSMSModel model = Navigator.View(new MultipleSMSModel());

                        if (model == null)
                        {
                            return;
                        }

                        var result = new ConstructorContext(coc.SearchControl, coc.OperationInfo).SurroundConstruct(ctx =>
                                                                                                                    Server.Return((IOperationServer s) => s.ConstructFromMany(coc.Entities, coc.Type, coc.OperationInfo.OperationSymbol, ctx.Args)));

                        if (result != null)
                        {
                            Navigator.Navigate(result);
                        }
                    }
                });
            }
        }
Exemplo n.º 8
0
        public void Initialize()
        {
            Items.Clear();

            this.AddHandler(MenuItem.ClickEvent, new RoutedEventHandler(MenuItem_Clicked));

            UserCharts = Server.Return((IChartServer s) => s.GetUserCharts(ChartRequest.QueryName));

            if (UserCharts.Count > 0)
            {
                foreach (Lite <UserChartEntity> uc in UserCharts.OrderBy(a => a.ToString()))
                {
                    MenuItem mi = new MenuItem()
                    {
                        IsCheckable = true,
                        Header      = uc.ToString(),
                        Tag         = uc,
                    };
                    Items.Add(mi);
                }
            }

            UpdateCurrent(CurrentUserChart);

            if (Navigator.IsNavigable(typeof(UserChartEntity), true))
            {
                Items.Add(new Separator());

                if (Navigator.IsCreable(typeof(UserChartEntity), true))
                {
                    Items.Add(new MenuItem()
                    {
                        Header = EntityControlMessage.Create.NiceToString(),
                        Icon   = ExtensionsImageLoader.GetImageSortName("add.png").ToSmallImage()
                    }.Handle(MenuItem.ClickEvent, New_Clicked));
                }

                Items.Add(new MenuItem()
                {
                    Header = UserQueryMessage.Edit.NiceToString(),
                    Icon   = ExtensionsImageLoader.GetImageSortName("edit.png").ToSmallImage()
                }.Handle(MenuItem.ClickEvent, Edit_Clicked)
                          .Bind(MenuItem.VisibilityProperty, this, "CurrentUserChart", notNullAndEditable));

                Items.Add(new MenuItem()
                {
                    Header = EntityControlMessage.Remove.NiceToString(),
                    Icon   = ExtensionsImageLoader.GetImageSortName("remove.png").ToSmallImage()
                }.Handle(MenuItem.ClickEvent, Remove_Clicked)
                          .Bind(MenuItem.VisibilityProperty, this, "CurrentUserChart", notNullAndEditable));
            }
        }
Exemplo n.º 9
0
        public static void Start()
        {
            if (Navigator.Manager.NotDefined(MethodInfo.GetCurrentMethod()))
            {
                TypeClient.Start();
                QueryClient.Start();

                Navigator.AddSettings(new List <EntitySettings>()
                {
                    new EntitySettings <UserChartEntity> {
                        View = e => new UserChart(), Icon = ExtensionsImageLoader.GetImageSortName("chartIcon.png")
                    },
                    new EntitySettings <ChartScriptEntity> {
                        View = e => new ChartScript(), Icon = ExtensionsImageLoader.GetImageSortName("chartScript.png")
                    },
                });

                UserAssetsClient.Start();
                UserAssetsClient.RegisterExportAssertLink <UserChartEntity>();

                SearchControl.GetMenuItems += SearchControl_GetCustomMenuItems;

                UserChartEntity.SetConverters(query => QueryClient.GetQueryName(query.Key), queryname => QueryClient.GetQuery(queryname));

                string processName = Path.GetFileName(Process.GetCurrentProcess().MainModule.FileName);

                var main = Registry.CurrentUser
                           .CreateSubKey("Software")
                           .CreateSubKey("Microsoft")
                           .CreateSubKey("Internet Explorer")
                           .CreateSubKey("Main")
                           .CreateSubKey("FeatureControl")
                           .CreateSubKey("FEATURE_BROWSER_EMULATION");

                main.SetValue(processName, 9999, RegistryValueKind.DWord);

                Constructor.Register <UserChartEntity>(ctx =>
                {
                    MessageBox.Show(Window.GetWindow(ctx.Element),
                                    ChartMessage._0CanOnlyBeCreatedFromTheChartWindow.NiceToString().FormatWith(typeof(UserChartEntity).NicePluralName()),
                                    ChartMessage.CreateNew.NiceToString(),
                                    MessageBoxButton.OK, MessageBoxImage.Information);
                    return(null);
                });

                LinksClient.RegisterEntityLinks <Entity>((entity, ctrl) =>
                                                         Server.Return((IChartServer us) => us.GetUserChartsEntity(entity.EntityType))
                                                         .Select(cp => new UserChartQuickLink(cp, entity)).ToArray());
            }
        }
Exemplo n.º 10
0
 public Login()
 {
     this.InitializeComponent();
     //the assignments are here becouse, at this point, the Uri schema has not been registered
     //for "pack", since this is done after app registration. One way to avoid it would be addding:
     //UriParser.Register(new GenericUriParser(GenericUriParserOptions.GenericAuthority), "pack", -1);
     //in the first line of Main method in Program.cs.
     _minimizeFocus     = ExtensionsImageLoader.GetImageSortName("bminimize-on.png");
     _minimizeNoFocus   = ExtensionsImageLoader.GetImageSortName("bminimize.png");
     _closeFocus        = ExtensionsImageLoader.GetImageSortName("bclose-on.png");
     _closeNoFocus      = ExtensionsImageLoader.GetImageSortName("bclose.png");
     SettingNewPassword = false;
     ReLogin            = false;
 }
Exemplo n.º 11
0
        public static MenuItem Construct(SearchControl sc)
        {
            MenuItem miResult = new MenuItem()
            {
                Header = ExcelMessage.ExcelReport.NiceToString(),
                Icon   = ExtensionsImageLoader.GetImageSortName("excelPlain.png").ToSmallImage(),
            };

            miResult.Click += (object sender, RoutedEventArgs e) =>
            {
                e.Handled = true;

                SaveFileDialog sfd = new SaveFileDialog()
                {
                    AddExtension    = true,
                    DefaultExt      = ".xlsx",
                    Filter          = ExcelMessage.Excel2007Spreadsheet.NiceToString(),
                    OverwritePrompt = true,
                    FileName        = "{0}.xlsx".FormatWith(QueryUtils.GetNiceName(sc.QueryName)),
                    Title           = ExcelMessage.FindLocationFoExcelReport.NiceToString()
                };

                if (sfd.ShowDialog(Window.GetWindow(sc)) == true)
                {
                    var request = sc.GetQueryRequest(true);

                    byte[] file = Server.Return((IExcelReportServer s) => s.ExecutePlainExcel(request));

                    File.WriteAllBytes(sfd.FileName, file);

                    System.Diagnostics.Process.Start(sfd.FileName);
                }
            };

            sc.ResultChanged += (object sender, ResultChangedEventArgs e) =>
            {
                ResultTable qr = sc.ResultTable;
                miResult.IsEnabled = (qr != null && qr.Rows.Length > 0);
            };

            return(miResult);
        }
Exemplo n.º 12
0
        public static void Start(params Type[] types)
        {
            if (Navigator.Manager.NotDefined(MethodInfo.GetCurrentMethod()))
            {
                if (types == null)
                {
                    throw new ArgumentNullException("types");
                }

                WidgetPanel.GetWidgets += (obj, mainControl) =>
                {
                    if (obj is Entity && types.Contains(obj.GetType()) && !((Entity)obj).IsNew && Finder.IsFindable(typeof(NoteEntity)))
                    {
                        return(new NotesWidget());
                    }

                    return(null);
                };

                Server.SetSemiSymbolIds <NoteTypeEntity>();

                OperationClient.AddSettings(new List <OperationSettings>
                {
                    new EntityOperationSettings <Entity>(NoteOperation.CreateNoteFromEntity)
                    {
                        IsVisible = _ => false
                    }
                });

                Navigator.AddSetting(new EntitySettings <NoteTypeEntity> {
                    View = e => new NoteType()
                });
                Navigator.AddSetting(new EntitySettings <NoteEntity>
                {
                    View      = e => new Note(),
                    IsCreable = EntityWhen.Never,
                    Icon      = ExtensionsImageLoader.GetImageSortName("note2.png")
                });
            }
        }
Exemplo n.º 13
0
        public static void Start(params Type[] types)
        {
            if (Navigator.Manager.NotDefined(MethodInfo.GetCurrentMethod()))
            {
                if (types == null)
                {
                    throw new ArgumentNullException("types");
                }

                Navigator.AddSettings(new List <EntitySettings>
                {
                    new EntitySettings <AlertTypeEntity> {
                        View = e => new AlertType()
                    },
                    new EntitySettings <AlertEntity>
                    {
                        View      = e => new Alert(),
                        IsCreable = EntityWhen.Never,
                        Icon      = ExtensionsImageLoader.GetImageSortName("alert.png"),
                    }
                });

                Server.SetSemiSymbolIds <AlertTypeEntity>();

                OperationClient.AddSettings(new List <OperationSettings>
                {
                    new EntityOperationSettings <Entity>(AlertOperation.CreateAlertFromEntity)
                    {
                        IsVisible = a => false
                    },
                });

                WidgetPanel.GetWidgets += (obj, mainControl) =>
                                          (obj is Entity && types.Contains(obj.GetType()) && !((Entity)obj).IsNew) &&
                                          Finder.IsFindable(typeof(AlertEntity)) ? new AlertsWidget() : null;
            }
        }
Exemplo n.º 14
0
        public static MenuItem Construct(SearchControl sc, MenuItem plainExcelMenuItem)
        {
            MenuItem miResult = new MenuItem
            {
                Header = ExcelMessage.Reports.NiceToString(),
                Icon   = ExtensionsImageLoader.GetImageSortName("excel.png").ToSmallImage()
            };

            miResult.AddHandler(MenuItem.ClickEvent, new RoutedEventHandler((object sender, RoutedEventArgs e) =>
            {
                e.Handled = true;

                if (e.OriginalSource is MenuItem b) //Not to capture the mouseDown of the scrollbar buttons
                {
                    Lite <ExcelReportEntity> reportLite = (Lite <ExcelReportEntity>)b.Tag;

                    SaveFileDialog sfd = new SaveFileDialog()
                    {
                        AddExtension    = true,
                        DefaultExt      = ".xlsx",
                        Filter          = ExcelMessage.Excel2007Spreadsheet.NiceToString(),
                        FileName        = reportLite.ToString() + " - " + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx",
                        OverwritePrompt = true,
                        Title           = ExcelMessage.FindLocationFoExcelReport.NiceToString()
                    };

                    if (sfd.ShowDialog(Window.GetWindow(sc)) == true)
                    {
                        byte[] result = Server.Return((IExcelReportServer r) => r.ExecuteExcelReport(reportLite, sc.GetQueryRequest(true)));

                        File.WriteAllBytes(sfd.FileName, result);

                        System.Diagnostics.Process.Start(sfd.FileName);
                    }
                }
            }));

            Action initialize = null;

            MenuItem miAdmin = new MenuItem()
            {
                Header = "Administrar",
                Icon   = ExtensionsImageLoader.GetImageSortName("folderedit.png").ToSmallImage()
            };

            miAdmin.Click += (object sender, RoutedEventArgs e) =>
            {
                var query = QueryClient.GetQuery(sc.QueryName);

                Finder.Explore(new ExploreOptions(typeof(ExcelReportEntity))
                {
                    ShowFilters      = false,
                    ShowFilterButton = false,
                    FilterOptions    = new List <FilterOption>
                    {
                        new FilterOption
                        {
                            ColumnName = "Query",
                            Operation  = FilterOperation.EqualTo,
                            Value      = query.ToLite(query.IsNew),
                            Frozen     = true
                        }
                    },
                    Closed = (_, __) => miAdmin.Dispatcher.Invoke(() => initialize()) //Refrescar lista de informes tras salir del administrador
                });

                e.Handled = true;
            };

            initialize = () =>
            {
                miResult.Items.Clear();

                List <Lite <ExcelReportEntity> > reports = Server.Return((IExcelReportServer s) => s.GetExcelReports(sc.QueryName));

                if (plainExcelMenuItem != null)
                {
                    miResult.Items.Add(plainExcelMenuItem);
                    miResult.Items.Add(new Separator());
                }

                miResult.Header = new TextBlock {
                    Inlines = { new Run(ExcelMessage.Reports.NiceToString()), reports.Count == 0? (Inline) new Run(): new Bold(new Run(" (" + reports.Count + ")")) }
                };

                if (reports.Count > 0)
                {
                    foreach (Lite <ExcelReportEntity> report in reports)
                    {
                        MenuItem mi = new MenuItem()
                        {
                            Header = report.ToString(),
                            Icon   = ExtensionsImageLoader.GetImageSortName("excelDoc.png").ToSmallImage(),
                            Tag    = report,
                        };
                        miResult.Items.Add(mi);
                    }
                }


                miResult.Items.Add(miAdmin);
            };

            initialize();

            return(miResult);
        }
Exemplo n.º 15
0
        public static void Start()
        {
            if (Navigator.Manager.NotDefined(MethodInfo.GetCurrentMethod()))
            {
                TypeClient.Start();

                UserAssetsClient.Start();
                UserAssetsClient.RegisterExportAssertLink <DashboardEntity>();

                Navigator.AddSettings(new List <EntitySettings>()
                {
                    new EntitySettings <DashboardEntity>()
                    {
                        View = e => new DashboardEdit(), Icon = ExtensionsImageLoader.GetImageSortName("dashboard.png")
                    },

                    new EntitySettings <ValueUserQueryListPartEntity>()
                    {
                        View = e => new ValueUserQueryListPartEntityEdit()
                    },
                    new EntitySettings <LinkListPartEntity>()
                    {
                        View = e => new LinkListPartEdit()
                    },
                    new EntitySettings <UserQueryPartEntity>()
                    {
                        View = e => new UserQueryPartEdit()
                    },
                    new EntitySettings <UserChartPartEntity>()
                    {
                        View = e => new UserChartPartEdit()
                    }
                });

                PartViews.Add(typeof(UserQueryPartEntity), new PartView
                {
                    ViewControl    = () => new UserQueryPartView(),
                    IsTitleEnabled = () => Navigator.IsNavigable(typeof(UserQueryEntity), true),
                    OnTitleClick   = part =>
                    {
                        Navigator.Navigate(((UserQueryPartEntity)part).UserQuery);
                    },
                    FullScreen = (elem, part) =>
                    {
                        UserQueryClient.Explore(((UserQueryPartEntity)part).UserQuery, UserAssetsClient.GetCurrentEntity(elem));
                    }
                });

                PartViews.Add(typeof(UserChartPartEntity), new PartView
                {
                    ViewControl    = () => new UserChartPartView(),
                    IsTitleEnabled = () => Navigator.IsNavigable(typeof(UserChartEntity), true),
                    OnTitleClick   = part =>
                    {
                        Navigator.Navigate(((UserChartPartEntity)part).UserChart);
                    },
                    FullScreen = (elem, part) =>
                    {
                        ChartClient.View(((UserChartPartEntity)part).UserChart, UserAssetsClient.GetCurrentEntity(elem));
                    }
                });

                PartViews.Add(typeof(ValueUserQueryListPartEntity), new PartView
                {
                    ViewControl = () => new CountSearchControlPartView()
                });

                PartViews.Add(typeof(LinkListPartEntity), new PartView
                {
                    ViewControl = () => new LinkListPartView()
                });

                LinksClient.RegisterEntityLinks <DashboardEntity>((cp, ctrl) => new[]
                {
                    new QuickLinkAction(DashboardMessage.Preview, () => Navigate(cp, null))
                    {
                        IsVisible = DashboardPermission.ViewDashboard.IsAuthorized()
                    }
                });

                LinksClient.RegisterEntityLinks <Entity>((entity, ctrl) =>
                {
                    if (!DashboardPermission.ViewDashboard.IsAuthorized())
                    {
                        return(null);
                    }

                    return(Server.Return((IDashboardServer us) => us.GetDashboardsEntity(entity.EntityType))
                           .Select(cp => new DashboardQuickLink(cp, entity)).ToArray());
                });

                Navigator.Manager.OnGetEmbeddedWigets += (e, ctx) =>
                {
                    if (!DashboardPermission.ViewDashboard.IsAuthorized() || !(e is Entity))
                    {
                        return(null);
                    }

                    var dashboard = Server.Return((IDashboardServer s) => s.GetEmbeddedDashboard(e.GetType()));
                    if (dashboard == null)
                    {
                        return(null);
                    }

                    var control = new DashboardView {
                        DataContext = dashboard
                    }.Set(UserAssetsClient.CurrentEntityProperty, e);

                    return(new EmbeddedWidget
                    {
                        Control = control,
                        Position = dashboard.EmbeddedInEntity.Value == DashboardEmbedededInEntity.Top ? EmbeddedWidgetPostion.Top:
                                   dashboard.EmbeddedInEntity.Value == DashboardEmbedededInEntity.Bottom ? EmbeddedWidgetPostion.Bottom:
                                   throw new InvalidOperationException("Unexpected")
                    });
                };
            }
Exemplo n.º 16
0
        internal static void OpenChartRequest(ChartRequest chartRequest, UserChartEntity uc, Entity currentEntity)
        {
            Navigator.OpenIndependentWindow(() =>
            {
                var crw = new ChartRequestWindow()
                {
                    DataContext = chartRequest,
                    Title       = ChartMessage.ChartOf0.NiceToString().FormatWith(QueryUtils.GetNiceName(chartRequest.QueryName)),
                    Icon        = Finder.Manager.GetFindIcon(chartRequest.QueryName, false) ?? ExtensionsImageLoader.GetImageSortName("chartIcon.png")
                };

                if (uc != null)
                {
                    SetUserChart(crw, uc);
                }

                if (currentEntity != null)
                {
                    UserAssetsClient.SetCurrentEntity(crw, currentEntity);
                }

                return(crw);
            });
        }
Exemplo n.º 17
0
        public static MenuItem Construct(SearchControl sc)
        {
            List <Lite <UserQueryEntity> > userQueries = null;
            UserQueryEntity current = null;

            MenuItem miResult = new MenuItem
            {
                Icon = ExtensionsImageLoader.GetImageSortName("favorite.png").ToSmallImage()
            };

            MenuItem edit   = null;
            MenuItem remove = null;

            Action updatecurrent = () =>
            {
                miResult.Header = new TextBlock
                {
                    Inlines =
                    {
                        new Run(
                            current == null ? UserQueryMessage.MyQueries.NiceToString() : current.DisplayName),
                        userQueries.IsNullOrEmpty() ? (Inline) new Run():  new Bold(new Run(" (" + userQueries.Count + ")"))
                    }
                };

                foreach (var item in miResult.Items.OfType <MenuItem>().Where(mi => mi.IsCheckable))
                {
                    item.IsChecked = ((Lite <UserQueryEntity>)item.Tag).RefersTo(current);
                }

                bool isEnabled = current != null && !Navigator.IsReadOnly(current);

                if (edit != null)
                {
                    edit.IsEnabled = isEnabled;
                }

                if (remove != null)
                {
                    remove.IsEnabled = isEnabled;
                }
            };

            Action initialize = null;

            RoutedEventHandler new_Clicked = (object sender, RoutedEventArgs e) =>
            {
                e.Handled = true;

                sc.FocusSearch(); //Commit RealValue bindings

                UserQueryEntity userQuery = UserQueryClient.FromSearchControl(sc);

                var disp = Dispatcher.CurrentDispatcher;
                Navigator.Navigate(userQuery, new NavigateOptions
                {
                    View = () => new UserQuery {
                        QueryDescription = sc.Description
                    },
                    Closed = (s, args) =>
                    {
                        disp.Invoke(() =>
                        {
                            initialize();

                            if (userQuery.IdOrNull != null)
                            {
                                current = userQuery;
                            }

                            updatecurrent();
                        });
                    }
                });
            };

            RoutedEventHandler edit_Clicked = (object sender, RoutedEventArgs e) =>
            {
                e.Handled = true;

                var d = Dispatcher.CurrentDispatcher;
                Navigator.Navigate(current.ToLite().Retrieve(), new NavigateOptions
                {
                    View = () => new UserQuery {
                        QueryDescription = sc.Description
                    },
                    Closed = (s, args) =>
                    {
                        d.Invoke(() =>
                        {
                            initialize();
                            updatecurrent();
                        });
                    }
                });
            };

            RoutedEventHandler remove_Clicked = (object sender, RoutedEventArgs e) =>
            {
                e.Handled = true;

                if (MessageBox.Show(UserQueryMessage.AreYouSureToRemove0.NiceToString().FormatWith(current), UserQueryMessage.RemoveUserQuery.NiceToString(),
                                    MessageBoxButton.YesNo, MessageBoxImage.Exclamation, MessageBoxResult.No) == MessageBoxResult.Yes)
                {
                    current.ToLite().DeleteLite(UserQueryOperation.Delete);

                    initialize();

                    updatecurrent();
                }
            };

            RoutedEventHandler menuItem_Clicked = (object sender, RoutedEventArgs e) =>
            {
                e.Handled = true;

                if (e.OriginalSource is MenuItem b)
                {
                    Lite <UserQueryEntity> userQuery = (Lite <UserQueryEntity>)b.Tag;

                    var uq = Server.Return((IUserQueryServer s) => s.RetrieveUserQuery(userQuery));

                    UserQueryClient.ToSearchControl(uq, sc);

                    current = uq;

                    updatecurrent();

                    sc.Search();
                }
            };

            initialize = () =>
            {
                miResult.Items.Clear();

                userQueries = Server.Return((IUserQueryServer s) => s.GetUserQueries(sc.QueryName));

                if (current != null && !userQueries.Contains(current.ToLite()))
                {
                    current = null;
                }

                if (userQueries.Count > 0)
                {
                    foreach (Lite <UserQueryEntity> report in userQueries.OrderBy(a => a.ToString()))
                    {
                        MenuItem mi = new MenuItem()
                        {
                            IsCheckable = true,
                            Header      = report.ToString(),
                            Tag         = report,
                        };
                        mi.Click += menuItem_Clicked;
                        miResult.Items.Add(mi);
                    }
                }

                if (Navigator.IsNavigable(typeof(UserQueryEntity), isSearch: true))
                {
                    miResult.Items.Add(new Separator());

                    if (Navigator.IsCreable(typeof(UserQueryEntity), true))
                    {
                        miResult.Items.Add(new MenuItem()
                        {
                            Header = EntityControlMessage.Create.NiceToString(),
                            Icon   = ExtensionsImageLoader.GetImageSortName("add.png").ToSmallImage()
                        }.Handle(MenuItem.ClickEvent, new_Clicked));
                    }

                    miResult.Items.Add(edit = new MenuItem()
                    {
                        Header = UserQueryMessage.Edit.NiceToString(),
                        Icon   = ExtensionsImageLoader.GetImageSortName("edit.png").ToSmallImage()
                    }.Handle(MenuItem.ClickEvent, edit_Clicked));

                    miResult.Items.Add(remove = new MenuItem()
                    {
                        Header = EntityControlMessage.Remove.NiceToString(),
                        Icon   = ExtensionsImageLoader.GetImageSortName("remove.png").ToSmallImage()
                    }.Handle(MenuItem.ClickEvent, remove_Clicked));
                }
            };

            initialize();

            var autoSet = UserQueryClient.GetUserQuery(sc);

            if (autoSet != null)
            {
                UserQueryClient.ToSearchControl(autoSet, sc);
                current = autoSet;

                updatecurrent();

                sc.Search();
            }
            else
            {
                updatecurrent();
            }

            return(miResult);
        }
Exemplo n.º 18
0
 protected override void OnInitialized(EventArgs e)
 {
     base.OnInitialized(e);
     Icon = ExtensionsImageLoader.GetImageSortName("favorite.png").ToSmallImage();
 }