예제 #1
0
        private async void Lists_Loaded(object sender, RoutedEventArgs e)
        {
            if (!isLoaded)
            {
                TabsViewerControls.Visibility = Visibility.Collapsed;

                foreach (int id in TabsAccessManager.GetTabsListID())
                {
                    var list = TabsAccessManager.GetTabsListViaID(id);
                    Lists.Items.Add(new ListItem {
                        ListID = list.ID, ListName = list.name, ListIcon = await ModulesAccessManager.GetModuleIconViaIDAsync(list.TabsListProjectTypeID, true)
                    });

                    if (AppSettings.Values.ContainsKey("Tabs_list-selected-index"))
                    {
                        if ((int)AppSettings.Values["Tabs_list-selected-index"] == id)
                        {
                            Lists.SelectedIndex = Lists.Items.Count - 1;
                        }
                    }
                }

                if (Lists.Items.Count == 0)
                {
                    await TabsWriteManager.CreateTabsListAsync("Default list");
                }
                else
                {
                    if (!AppSettings.Values.ContainsKey("Tabs_list-selected-index"))
                    {
                        Lists.SelectedIndex = 0;
                    }
                }


                isLoaded = true;
            }
        }
        private void SetMessenger()
        {
            Messenger.Default.Register <EditorViewNotification>(this, async(notification_ui) =>
            {
                await DispatcherHelper.ExecuteOnUIThreadAsync(() =>
                {
                    try
                    {
                        SetTheme();
                    }
                    catch { }
                });
            });

            Messenger.Default.Register <SheetViewMode>(this, async(notification_sheetview) =>
            {
                await DispatcherHelper.ExecuteOnUIThreadAsync(() =>
                {
                    try
                    {
                        switch (notification_sheetview)
                        {
                        case SheetViewMode.Deployed:
                            TabsViewerControls.Visibility = Visibility.Visible;
                            break;

                        case SheetViewMode.Minimized:
                            TabsViewerControls.Visibility = Visibility.Collapsed;
                            ShowCreatorGrid(false);

                            if (!string.IsNullOrWhiteSpace(Box_Search.Text))
                            {
                                Tabs.Visibility = Visibility.Collapsed;
                            }
                            break;
                        }
                    }
                    catch { }
                });
            });

            Messenger.Default.Register <STSNotification>(this, async(notification) =>
            {
                await DispatcherHelper.ExecuteOnUIThreadAsync(async() =>
                {
                    try
                    {
                        if (CurrentSelectedIDs.ID_TabsList == notification.ID.ID_TabsList)
                        {
                            switch (notification.Type)
                            {
                            case TypeUpdateTab.RefreshCurrentList:
                                ChangeSelectedList(CurrentSelectedIDs.ID_TabsList);
                                break;

                            case TypeUpdateTab.NewTab:
                                if (!TabsAccessManager.GetTabViaID(notification.ID).TabInvisibleByDefault)
                                {
                                    Tabs.Items.Add(notification.ID);

                                    //Auto selection
                                    Tabs.SelectedIndex = Tabs.Items.Count - 1;
                                }
                                break;

                            case TypeUpdateTab.SelectTab:
                                int Position = 0;
                                foreach (TabID CurrId in Tabs.Items)
                                {
                                    if (CurrId.ID_Tab == notification.ID.ID_Tab && CurrId.ID_TabsList == notification.ID.ID_TabsList)
                                    {
                                        Tabs.SelectedIndex = Position;
                                        break;
                                    }

                                    Position++;
                                }
                                break;

                            case TypeUpdateTab.SelectTabViaNumber:
                                if (Tabs.Items.Count >= notification.TabNumber)
                                {
                                    Tabs.SelectedIndex = (notification.TabNumber - 1);
                                }
                                break;

                            case TypeUpdateTab.TabDeleted:
                                if (await TabsWriteManager.DeleteTabAsync(notification.ID))
                                {
                                    object FindItem = Tabs.Items.SingleOrDefault(o => o.Equals(notification.ID));

                                    if (FindItem != null)
                                    {
                                        Tabs.Items.Remove(FindItem);

                                        //Auto selection
                                        if (CurrentSelectedIDs.ID_Tab == notification.ID.ID_Tab && Tabs.Items.Count - 1 >= 0)
                                        {
                                            Tabs.SelectedIndex = Tabs.Items.Count - 1;
                                        }
                                    }

                                    if (Tabs.Items.Count == 0)
                                    {
                                        CreateDefaultTab();
                                    }
                                }

                                break;

                            case TypeUpdateTab.NewList:
                                var list = TabsAccessManager.GetTabsListViaID(notification.ID.ID_TabsList);
                                Lists.Items.Add(new ListItem {
                                    ListID = list.ID, ListName = list.name, ListIcon = await ModulesAccessManager.GetModuleIconViaIDAsync(list.TabsListProjectTypeID, true)
                                });
                                Lists.SelectedIndex = Lists.Items.Count - 1;
                                break;

                            case TypeUpdateTab.ListDeleted:
                                Lists.Items.RemoveAt(Lists.SelectedIndex);
                                break;

                            case TypeUpdateTab.OpenTabsCreator:
                                ShowCreatorGrid(true);
                                break;

                            case TypeUpdateTab.OpenNewFiles:
                                OpenFiles();
                                break;
                            }
                        }
                        else
                        {
                            switch (notification.Type)
                            {
                            case TypeUpdateTab.NewList:
                                var list = TabsAccessManager.GetTabsListViaID(notification.ID.ID_TabsList);
                                Lists.Items.Add(new ListItem {
                                    ListID = list.ID, ListName = list.name, ListIcon = await ModulesAccessManager.GetModuleIconViaIDAsync(list.TabsListProjectTypeID, true)
                                });
                                Lists.SelectedIndex = Lists.Items.Count - 1;
                                break;

                            case TypeUpdateTab.ListDeleted:
                                Lists.Items.RemoveAt(Lists.SelectedIndex);
                                break;

                            case TypeUpdateTab.OpenTabsCreator:
                                ShowCreatorGrid(true);
                                break;

                            case TypeUpdateTab.OpenNewFiles:
                                OpenFiles();
                                break;
                            }
                        }
                    }
                    catch { }
                });
            });
        }