Пример #1
0
 public WatchedFile(String name, String path, ObservableCollection <Tag> tags, ObservableCollection <WatchedFile> subitems)
 {
     Subs = WatchedFile.Sort(subitems);
     Name = name;
     Path = path;
     Tags = tags;
 }
Пример #2
0
 internal static ViewModels.WatchedFile refeshFilesInView(ViewModels.WatchedFile fileSource)
 {
     ViewModels.WatchedFile wf = new ViewModels.WatchedFile(fileSource.Name, fileSource.Path, fileSource.Tags, new ObservableCollection <ViewModels.WatchedFile>());
     foreach (ViewModels.Tag t in wf.Tags)
     {
         if (!allTags.Contains(t))
         {
             allTags.Add(t);
         }
     }
     foreach (ViewModels.WatchedFile subs in fileSource.Subs)
     {
         wf.Subs.Add(refeshFilesInView(subs));
     }
     return(wf);
 }
Пример #3
0
        private void changeItem(ViewModels.WatchedFile item)
        {
            if (string.IsNullOrEmpty(selectedWF.Path) || string.IsNullOrWhiteSpace(selectedWF.Path))
            {
                selectedWF.Name = item.Name;
            }
            else
            {
                selectedWF.Path = item.Path;
                selectedWF.Name = item.Name;
                selectedWF.Tags.Clear();
                foreach (ViewModels.Tag tag in item.Tags)
                {
                    selectedWF.Tags.Add(tag);
                }
            }

            selectedWF   = null;
            TV.AllowDrop = true;
        }
Пример #4
0
 public ChangeFile(List <ViewModels.Tag> AllTags, ViewModels.WatchedFile file)
 {
     InitializeComponent();
     allTags = AllTags;
     if (file == null)
     {
         Title = "Select File";
         B_SelectFile.Content = "Select File";
         file = new ViewModels.WatchedFile("name not set", "no path selected", new System.Collections.ObjectModel.ObservableCollection <ViewModels.Tag>(), new System.Collections.ObjectModel.ObservableCollection <ViewModels.WatchedFile>());
     }
     else
     {
         Title = "Change File";
         B_SelectFile.Content = "Change File";
     }
     sourceFile   = file;
     Loaded      += ChangeFile_Loaded;
     TagsChanged += ChangeFile_TagsChanged;
     TagsChanged(this, new EventArgs());
 }
Пример #5
0
        internal static ViewModels.MainViewModel loadFiles()
        {
            allTags.Clear();
            BinaryFormatter formatter = new BinaryFormatter();

            ViewModels.MainViewModel mvm1 = new ViewModels.MainViewModel();
            if (File.Exists(@"testbin.xml"))
            {
                FileStream fs_open = new FileStream(@"testbin.xml", FileMode.Open);
                foreach (ViewModels.WatchedFile file in ((ViewModels.MainViewModel)formatter.Deserialize(fs_open)).WatchedFiles)
                {
                    ViewModels.WatchedFile wf = new ViewModels.WatchedFile(file.Name, file.Path, file.Tags, new ObservableCollection <ViewModels.WatchedFile>());
                    foreach (ViewModels.WatchedFile subs in file.Subs)
                    {
                        wf.Subs.Add(refeshFilesInView(subs));
                    }
                    mvm1.WatchedFiles.Add(wf);
                }
                fs_open.Close();
            }
            return(mvm1);
        }
Пример #6
0
        private void Mi_RemoveItem_Click(object sender, RoutedEventArgs e)
        {
            if (string.IsNullOrEmpty(selectedWF.Path) || string.IsNullOrWhiteSpace(selectedWF.Path))
            {
                if (MessageBox.Show("The chosen object is a folder. Deletion will remove all logical sub folders and files.", "Delete folder and sub items",
                                    MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel) != MessageBoxResult.OK)
                {
                    return;
                }
            }
            else
            {
                if (MessageBox.Show("Do you really want to remove the item?", "Delete item",
                                    MessageBoxButton.OKCancel, MessageBoxImage.Warning, MessageBoxResult.Cancel) != MessageBoxResult.OK)
                {
                    return;
                }
            }

            removeFolder(mvm.WatchedFiles, selectedWF);
            selectedWF = null;
        }
Пример #7
0
 private ViewModels.MainViewModel testPopulate()
 {
     ViewModels.MainViewModel mvm2 = new ViewModels.MainViewModel();
     for (int i = 1; i < 7; i++)
     {
         ViewModels.WatchedFile wf_level1 = new ViewModels.WatchedFile("lev1" + i.ToString(), "", new ObservableCollection <ViewModels.Tag>(), new ObservableCollection <ViewModels.WatchedFile>());
         if (i % 2 == 0)
         {
             ViewModels.WatchedFile wf_level2 = new ViewModels.WatchedFile("lev2" + i.ToString(), "", new ObservableCollection <ViewModels.Tag>(), new ObservableCollection <ViewModels.WatchedFile>());
             if (i % 4 == 0)
             {
                 for (int j = 1; j < 3; j++)
                 {
                     ViewModels.WatchedFile wf_level3 = new ViewModels.WatchedFile("lev3_" + i.ToString() + "_" + j.ToString(), "lev3_" + j.ToString(), new ObservableCollection <ViewModels.Tag>(), new ObservableCollection <ViewModels.WatchedFile>());
                     wf_level2.Subs.Add(wf_level3);
                 }
             }
             wf_level1.Subs.Add(wf_level2);
         }
         mvm2.WatchedFiles.Add(wf_level1);
     }
     return(mvm2);
 }
Пример #8
0
        private void StackPanel_MouseRightButtonUp(object sender, MouseButtonEventArgs e)
        {
            TV.AllowDrop = false;
            doDragDrop   = false;
            selectedWF   = (ViewModels.WatchedFile)(((StackPanel)sender).DataContext);
            ContextMenu cm_Stack = new ContextMenu();

            MenuItem mi_RemoveItem = new MenuItem();

            mi_RemoveItem.Header = "RemoveItem";
            mi_RemoveItem.Click += Mi_RemoveItem_Click;
            cm_Stack.Items.Add(mi_RemoveItem);

            if (string.IsNullOrEmpty(selectedWF.Path))
            {
                MenuItem mi_AddFolder = new MenuItem();
                mi_AddFolder.Header = "Add folder";
                mi_AddFolder.Click += Mi_AddFolder_Click;
                MenuItem mi_ChangeFolder = new MenuItem();
                mi_AddFolder.Header = "Change folder";
                mi_AddFolder.Click += Mi_ChangeFolder_Click;
                MenuItem mi_AddFile = new MenuItem();
                mi_AddFile.Header = "Add file";
                mi_AddFile.Click += Mi_AddFile_Click;
                cm_Stack.Items.Add(mi_AddFolder);
                cm_Stack.Items.Add(mi_AddFile);
            }
            if (!string.IsNullOrEmpty(selectedWF.Path))
            {
                MenuItem mi_ChangeFile = new MenuItem();
                mi_ChangeFile.Header = "Change file";
                mi_ChangeFile.Click += Mi_ChangeFile_Click;
                cm_Stack.Items.Add(mi_ChangeFile);
            }

            cm_Stack.IsOpen = true;
        }
Пример #9
0
        void TV_Drop(object sender, DragEventArgs e)
        {
            if (!doDragDrop)
            {
                return;
            }
            //DependencyObject uie = TV_Sort.InputHitTest(e.GetPosition(TV_Sort)) as DependencyObject;
            ViewModels.WatchedFile dragItem = e.Data.GetData(typeof(ViewModels.WatchedFile)) as ViewModels.WatchedFile;
            if (dragItem == null)
            {
                return;
            }
            ViewModels.WatchedFile dropOnItem = null;
            ObservableCollection <ViewModels.WatchedFile> dropOnList = null;

            switch (((DependencyObject)e.OriginalSource).DependencyObjectType.SystemType.Name)
            {
            case "TextBlock":
                dropOnItem = (e.OriginalSource as TextBlock).DataContext as ViewModels.WatchedFile;
                break;

            case "Image":
                dropOnItem = (e.OriginalSource as Image).DataContext as ViewModels.WatchedFile;
                break;

            case "Border":
                dropOnItem = (e.OriginalSource as Border).DataContext as ViewModels.WatchedFile;
                break;

            default:
                if (e.OriginalSource is Grid)
                {
                    dropOnList = (e.OriginalSource as Grid).DataContext as ObservableCollection <ViewModels.WatchedFile>;
                }
                else
                {
                    return;
                }
                break;
            }

            if (dropOnItem != null)
            {
                if (dropOnItem == dragItem)
                {
                    return;
                }
                if (!string.IsNullOrEmpty(dropOnItem.Path))
                {
                    MessageBox.Show("You cant drop something on another file, drop it on a folder instead.");
                    return;
                }
                FileHandling.removeFileFromWatchList(mvm.WatchedFiles, dragItem);
                doDragDrop = true;
                dropOnItem.Subs.Add(dragItem);
                foreach (ViewModels.WatchedFile file in mvm.WatchedFiles)
                {
                    FileHandling.refeshFilesInView(file);
                }
                e.Handled = true;
            }
            else //if (dropOnList == null)
            {
                FileHandling.removeFileFromWatchList(mvm.WatchedFiles, dragItem);
                doDragDrop = true;
                mvm.WatchedFiles.Add(dragItem);
                e.Handled = true;
            }
            doDragDrop = false;
        }
Пример #10
0
 private void _watchedFiles_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
 {
     WatchedFiles = WatchedFile.Sort(WatchedFiles);
 }
Пример #11
0
        private void TV_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs <object> e)
        {
            if (TV.SelectedItem != null)
            {
                ViewModels.WatchedFile selected = ((ViewModels.WatchedFile)TV.SelectedItem);
                B_Explorer.Visibility = Visibility.Collapsed;
                B_Open.Visibility     = Visibility.Collapsed;
                G_Show.Children.Clear();
                if (!string.IsNullOrEmpty(selected.Path))
                {
                    if (!File.Exists(selected.Path))
                    {
                        if (MessageBox.Show("Die Datei wurde gelöscht oder verschoben. Wollen sie die Datei aus der Liste entfernen?",
                                            "Datei nicht gefunden", MessageBoxButton.YesNo, MessageBoxImage.Exclamation) == MessageBoxResult.Yes)
                        {
                            FileHandling.removeFileFromWatchList(mvm.WatchedFiles, selected);
                            doDragDrop = true;
                        }
                        return;
                    }
                    if (selected.Path.EndsWith("txt") || selected.Path.EndsWith("xml") || selected.Path.EndsWith("xsd"))
                    {
                        B_Explorer.Visibility = Visibility.Visible;
                        B_Open.Visibility     = Visibility.Visible;
                        Rectangle r = new Rectangle();
                        r.Margin          = new Thickness(0);
                        r.Stroke          = new SolidColorBrush(Colors.Gray);
                        r.StrokeThickness = 1;

                        ScrollViewer sv = new ScrollViewer();
                        sv.Margin = new Thickness(1);
                        sv.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
                        sv.VerticalScrollBarVisibility   = ScrollBarVisibility.Auto;

                        TextBlock TB = new TextBlock();
                        TB.Margin = new Thickness(0);
                        TB.Text   = File.ReadAllText(selected.Path);

                        sv.Content = TB;
                        G_Show.Children.Add(sv);
                        G_Show.Children.Add(r);
                    }

                    else if (selected.Path.EndsWith("pdf"))
                    {
                        B_Explorer.Visibility = Visibility.Visible;
                        B_Open.Visibility     = Visibility.Visible;
                        Rectangle r = new Rectangle();
                        r.Margin          = new Thickness(0);
                        r.Stroke          = new SolidColorBrush(Colors.Gray);
                        r.StrokeThickness = 1;

                        ScrollViewer sv = new ScrollViewer();
                        sv.Margin = new Thickness(1);
                        sv.HorizontalScrollBarVisibility = ScrollBarVisibility.Auto;
                        sv.VerticalScrollBarVisibility   = ScrollBarVisibility.Auto;

                        WebBrowser WB = new WebBrowser();
                        WB.Margin = new Thickness(0);
                        WB.Navigate("file:///" + selected.Path);

                        sv.Content = WB;
                        G_Show.Children.Add(sv);
                        G_Show.Children.Add(r);
                    }
                }
            }
        }
Пример #12
0
 private void removeFolder(ObservableCollection <WatchedFile.ViewModels.WatchedFile> folderCollection, WatchedFile.ViewModels.WatchedFile folderToRemove)
 {
     folderCollection.Remove(folderToRemove);
     foreach (WatchedFile.ViewModels.WatchedFile folder in folderCollection)
     {
         removeFolder(folder.Subs, folderToRemove);
     }
     doDragDrop = true;
 }