Beispiel #1
0
        private void ListBox_Tab_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            ItemInfoUpdate(EditMode.EditTab);
            TabItemModel selectedItem = (TabItemModel)this.ListBox_Tab.SelectedItem;

            if (selectedItem != null)
            {
                TabStrRefresh(selectedItem.Data.StrList);
                //selectedItem.Checked = true;
            }
        }
Beispiel #2
0
        private void ButtonEditConfirm_Click(object sender, RoutedEventArgs e)
        {
            if (editMode == EditMode.EditString || editMode == EditMode.EditTab)
            {
                if (editMode == EditMode.EditTab)
                {
                    Object tab = ListBox_Tab.SelectedItem;
                    if (tab != null)
                    {
                        TabItemModel item = (TabItemModel)tab;

                        item.Data.Name        = TextBox_Name.Text;
                        item.Data.Description = TextBox_Description.Text;
                        item.SetPropertyChanged("Data");
                    }
                }
                else
                {
                    Object str = ListBox_Str.SelectedItem;
                    if (str != null)
                    {
                        StrItemModel item = (StrItemModel)str;
                        item.Data.Name        = TextBox_Name.Text;
                        item.Data.Description = TextBox_Description.Text;
                        item.Data.Text        = TextBox_Command.Text;
                        item.SetPropertyChanged("Data");
                    }
                }
            }
            else
            {
                if (editMode == EditMode.AddTab)
                {
                    CustomStrTab newTab = new CustomStrTab(TextBox_Name.Text);
                    newTab.Description = TextBox_Description.Text;
                    TabList.Add(newTab);
                    TabItemModel newModel = new TabItemModel(newTab);
                    tabListBoxViewModel.ModelCollection.Add(newModel);
                    ListBox_Tab.SelectedItem = newModel;
                }
                else
                {
                    CustomStrData newStr = new CustomStrData(TextBox_Name.Text, TextBox_Description.Text, TextBox_Command.Text);
                    Object        tab    = ListBox_Tab.SelectedItem;
                    if (tab != null)
                    {
                        TabItemModel item = (TabItemModel)tab;
                        item.Data.StrList.Add(newStr);
                        TabStrRefresh(item.Data.StrList);
                        ListBox_Str.SelectedIndex = item.Data.StrList.Count - 1;
                    }
                }
            }
        }
Beispiel #3
0
 private void MoveItemToTab(TabItemModel sourceTab, TabItemModel targetTab, List <StrItemModel> strItems)
 {
     if (sourceTab is null || targetTab is null || strItems is null)
     {
         return;
     }
     foreach (StrItemModel item in strItems)
     {
         sourceTab.Data.StrList.Remove(item.Data);
         targetTab.Data.StrList.Add(item.Data);
     }
 }
Beispiel #4
0
        public void TabListRefresh()
        {
            ObservableCollection <TabItemModel> TabModelCollection = tabListBoxViewModel.ModelCollection;
            TabItemModel selectionItem = ListBox_Tab.SelectedItem as TabItemModel;

            TabModelCollection.Clear();
            foreach (CustomStrTab tab in TabList)
            {
                TabModelCollection.Add(new TabItemModel(tab));
            }
            if (TabModelCollection.IndexOf(selectionItem) != -1)
            {
                ListBox_Tab.SelectedItem = selectionItem;
            }
            else
            {
                ListBox_Tab.SelectedIndex = 0;
            }
        }
Beispiel #5
0
        private void ListBox_Drop <TItem>(Object sender, DragEventArgs e) where TItem : DragableListModelBase
        {
            ListBox listbox = (ListBox)sender;

            Point         pos    = e.GetPosition(listbox);
            HitTestResult result = VisualTreeHelper.HitTest(listbox, pos);

            if (result == null)
            {
                return;
            }

            //查詢目標資料
            var listBoxItem = FindVisualParent <ListBoxItem>(result.VisualHit);

            if (listBoxItem == null)
            {
                return;
            }

            //查詢後設資料

            object target = listBoxItem.Content;

            DragableListModelBase source = null;

            if (Type.GetType(e.Data.GetFormats()[0]).BaseType == typeof(DragableListModelBase))
            {
                source = e.Data.GetData(e.Data.GetFormats()[0]) as DragableListModelBase;
            }
            else
            {
                return;
            }

            ListBoxViewModel <TItem> viewModel = (ListBoxViewModel <TItem>)listbox.DataContext;

            if (source.GetType() == target.GetType())
            {
                viewModel.LastSelectModel?.ClearIndicator();
                MoveItem <ObservableCollection <TItem>, TItem>(viewModel.ModelCollection, source, target);
            }
            //command move to other tab
            else if (source.GetType() == typeof(StrItemModel) && target.GetType() == typeof(TabItemModel))
            {
                if (tabListBoxViewModel.LastSelectModel != null)
                {
                    tabListBoxViewModel.LastSelectModel.MoveInIndicator = false;
                }
                List <StrItemModel> moveCommandsList = new List <StrItemModel>();
                moveCommandsList.Add((StrItemModel)ListBox_Str.SelectedItem);
                MoveItemToTab((TabItemModel)ListBox_Tab.SelectedItem, (TabItemModel)target, moveCommandsList);

                TabItemModel selectedItem = (TabItemModel)this.ListBox_Tab.SelectedItem;
                if (selectedItem != null)
                {
                    TabStrRefresh(selectedItem.Data.StrList);
                    //selectedItem.Checked = true;
                }
            }
            //tab move to other string (x)
            else
            {
            }
        }
Beispiel #6
0
        private void ItemInfoUpdate(EditMode mode)
        {
            bool addItem = false;
            bool isNull  = false;

            switch (mode)
            {
            case EditMode.EditTab:
                TabItemModel tab = (TabItemModel)this.ListBox_Tab.SelectedItem;
                if (tab != null)
                {
                    this.TextBox_Command.Text       = null;
                    this.TextBox_Command.Visibility = Visibility.Hidden;
                    this.TextBox_Name.Text          = tab.Data.Name;
                    this.TextBox_Description.Text   = tab.Data.Description;
                }
                else
                {
                    isNull = true;
                }
                break;

            case EditMode.EditString:
                StrItemModel str = (StrItemModel)this.ListBox_Str.SelectedItem;
                if (str != null)
                {
                    this.TextBox_Command.Text       = str.Data.Text;
                    this.TextBox_Command.Visibility = Visibility.Visible;
                    this.TextBox_Name.Text          = str.Data.Name;
                    this.TextBox_Description.Text   = str.Data.Description;
                }
                else
                {
                    isNull = true;
                }
                break;

            case EditMode.AddTab:
                addItem = true;

                this.TextBox_Command.Text       = "";
                this.TextBox_Command.Visibility = Visibility.Hidden;
                this.TextBox_Name.Text          = "New Tab";
                this.TextBox_Description.Text   = "無";
                break;

            case EditMode.AddString:
                addItem = true;
                this.TextBox_Command.Text       = "";
                this.TextBox_Command.Visibility = Visibility.Visible;
                this.TextBox_Name.Text          = "New String";
                this.TextBox_Description.Text   = "無";
                break;
            }
            if (addItem)
            {
                TextBox_Name.Focus();
                EditApplyIcon.Kind  = MaterialDesignThemes.Wpf.PackIconKind.AddThick;
                EditCancelIcon.Kind = MaterialDesignThemes.Wpf.PackIconKind.CloseThick;
            }
            else
            {
                EditApplyIcon.Kind  = MaterialDesignThemes.Wpf.PackIconKind.CheckBold;
                EditCancelIcon.Kind = MaterialDesignThemes.Wpf.PackIconKind.ArrowRotateLeft;
            }
            if (!isNull)
            {
                editMode = mode;
            }

            InfoChangeCheck();
        }
Beispiel #7
0
        //FIXME: When command drag to tab and drag back,tab indicator not recovered;
        private void ListBox_DragOver <TItem>(object sender, DragEventArgs e) where TItem : DragableListModelBase
        {
            ListBox listbox = (ListBox)sender;
            ListBoxViewModel <TItem> viewModel = (ListBoxViewModel <TItem>)listbox.DataContext;

            Point pos = e.GetPosition(listbox);

            if (listbox.ActualHeight - pos.Y <= autoScrollThreshold)
            {
                //下捲
                Border       border       = (Border)VisualTreeHelper.GetChild(listbox, 0);
                ScrollViewer scrollViewer = (ScrollViewer)VisualTreeHelper.GetChild(border, 0);
                scrollViewer.ScrollToVerticalOffset(scrollViewer.VerticalOffset + 1);
            }
            else if (pos.Y <= autoScrollThreshold)
            {
                //上捲
                Border       border       = (Border)VisualTreeHelper.GetChild(listbox, 0);
                ScrollViewer scrollViewer = (ScrollViewer)VisualTreeHelper.GetChild(border, 0);
                scrollViewer.ScrollToVerticalOffset(scrollViewer.VerticalOffset - 1);
            }

            HitTestResult result = VisualTreeHelper.HitTest(listbox, pos);
            ListBoxItem   listBoxItem;

            if (result != null)
            {
                listBoxItem = FindVisualParent <ListBoxItem>(result.VisualHit);
            }
            else
            {
                Console.WriteLine("Clear Indi");
                viewModel.LastSelectModel?.ClearIndicator();
                viewModel.LastSelectModel = null;
                return;
            }

            if (listBoxItem == null)
            {
                Console.WriteLine("Clear Indi2");
                viewModel.LastSelectModel?.ClearIndicator();
                //viewModel.LastSelectModel = null;
                return;
            }

            TItem target = (TItem)listBoxItem.Content;
            DragableListModelBase source; //  = e.Data.GetData(typeof(TItem)) as TItem

            if (Type.GetType(e.Data.GetFormats()[0]).BaseType == typeof(DragableListModelBase))
            {
                source = e.Data.GetData(e.Data.GetFormats()[0]) as DragableListModelBase;
            }
            else
            {
                return;
            }

            if (target == source)
            {
                viewModel.LastSelectModel?.ClearIndicator();
                viewModel.LastSelectModel = null;
                if (source.GetType() == typeof(StrItemModel))
                {
                    if (tabListBoxViewModel.LastSelectModel != null)
                    {
                        tabListBoxViewModel.LastSelectModel.MoveInIndicator = false;
                    }
                }
                return;
            }
            else
            {
                if (source.GetType() == target.GetType())
                {
                    if (target != viewModel.LastSelectModel)
                    {
                        viewModel.LastSelectModel?.ClearIndicator();
                        if (source.GetType() == typeof(StrItemModel))
                        {
                            Console.WriteLine("trig");
                            TabItemModel lastModel = tabListBoxViewModel.LastSelectModel;
                            Console.WriteLine(lastModel);
                            if (lastModel != null)
                            {
                                lastModel.MoveInIndicator = false;
                            }
                        }
                    }
                    viewModel.LastSelectModel = target;

                    int targetIndex = viewModel.ModelCollection.IndexOf(target);
                    int sourceIndex = viewModel.ModelCollection.IndexOf((TItem)source);

                    if (targetIndex > sourceIndex)
                    {
                        target.DragIndicatorDown = true;
                    }
                    else
                    {
                        target.DragIndicatorUp = true;
                    }

                    //if (source.GetType() == typeof(StrItemModel))
                    //{
                    //    if (tabListBoxViewModel.LastSelectModel != null)
                    //    {
                    //        tabListBoxViewModel.LastSelectModel.MoveInIndicator = false;
                    //    }
                    //}
                }
                //command move to other tab
                else if (source.GetType() == typeof(StrItemModel) && target.GetType() == typeof(TabItemModel))
                {
                    strListBoxViewModel.LastSelectModel?.ClearIndicator();
                    strListBoxViewModel.LastSelectModel = (StrItemModel)source;

                    if (tabListBoxViewModel.LastSelectModel != null)
                    {
                        tabListBoxViewModel.LastSelectModel.MoveInIndicator = false;
                    }

                    tabListBoxViewModel.LastSelectModel = (TabItemModel)(DragableListModelBase)target;
                    Console.WriteLine("Move to other tab" + tabListBoxViewModel.LastSelectModel.Data.Name);
                    tabListBoxViewModel.LastSelectModel.MoveInIndicator = true;
                }
                //tab move to other string (x)
                else
                {
                    Console.WriteLine("X");
                    tabListBoxViewModel.LastSelectModel?.ClearIndicator();
                    tabListBoxViewModel.LastSelectModel = (TabItemModel)source;
                    e.Effects = DragDropEffects.None;
                }
            }
        }