129 lines
3.8 KiB
C#
129 lines
3.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Data;
|
|
using System.Windows.Documents;
|
|
using System.Windows.Input;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Imaging;
|
|
using System.Windows.Navigation;
|
|
using System.Windows.Shapes;
|
|
using System.IO;
|
|
using System.ComponentModel;
|
|
using System.Collections.ObjectModel;
|
|
using System.Windows.Media.Animation;
|
|
|
|
namespace CallStackViewerWPF
|
|
{
|
|
/// <summary>
|
|
/// Interaction logic for MainWindow.xaml
|
|
/// </summary>
|
|
public partial class MainWindow : Window, INotifyPropertyChanged
|
|
{
|
|
|
|
private ObservableCollection<TabItemViewModel> m_tabItemCollection = new ObservableCollection<TabItemViewModel>();
|
|
|
|
public ObservableCollection<TabItemViewModel> TabItemCollection
|
|
{
|
|
get { return m_tabItemCollection; }
|
|
set
|
|
{
|
|
m_tabItemCollection = value;
|
|
OnPropertyChanged("Collection");
|
|
}
|
|
}
|
|
|
|
private List<ViewModel> _viewModelToErase = new List<ViewModel>();
|
|
|
|
|
|
public MainWindow()
|
|
{
|
|
InitializeComponent();
|
|
DataContext = this;
|
|
|
|
TabItemCollection.Add(new TabItemViewModel());
|
|
tabControl1.SelectedItem = TabItemCollection[0];
|
|
}
|
|
|
|
private void Window_Drop(object sender, DragEventArgs e)
|
|
{
|
|
|
|
String[] Files = e.Data.GetData(DataFormats.FileDrop) as String[];
|
|
if (Files.Length > 0)
|
|
{
|
|
foreach (String textFile in Files)
|
|
{
|
|
ViewModel _viewModel = new ViewModel();
|
|
_viewModel.HandleFilesDropped(textFile);
|
|
|
|
TabItemViewModel tivm = (TabItemViewModel)tabControl1.SelectedItem;
|
|
|
|
tivm.AddViewModelToCollection(_viewModel);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private void cross_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
Button b = (Button)sender;
|
|
ViewModel vmToErase = (ViewModel)b.DataContext;
|
|
_viewModelToErase.Add(vmToErase);
|
|
|
|
TabItemViewModel tivm = (TabItemViewModel)tabControl1.SelectedItem;
|
|
tivm.HasReachFilesLimit = false;
|
|
if (vmToErase.TypeViewModel == ViewModel.TYPE.MAP)
|
|
{
|
|
tivm.MapFound = false;
|
|
}
|
|
}
|
|
|
|
private void animationCompleted(object sender, EventArgs e)
|
|
{
|
|
foreach (ViewModel vm in _viewModelToErase)
|
|
{
|
|
TabItemViewModel tivm = (TabItemViewModel)tabControl1.SelectedItem;
|
|
tivm.Collection.Remove(vm);
|
|
}
|
|
|
|
_viewModelToErase.Clear();
|
|
}
|
|
|
|
public void loadButton_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
TabItemViewModel tivm = (TabItemViewModel)tabControl1.SelectedItem;
|
|
|
|
String mapFile = "";
|
|
|
|
List<ViewModel> listTabItem = tivm.LoadFiles(out mapFile);
|
|
|
|
foreach (ViewModel vm in listTabItem)
|
|
{
|
|
TabItemViewModel tabItemViewModel = new TabItemViewModel(vm.PathFile, mapFile, true);
|
|
|
|
TabItemCollection.Add(tabItemViewModel);
|
|
}
|
|
|
|
TabItemCollection.Add(new TabItemViewModel());
|
|
}
|
|
|
|
public void closableTabButton_Click(object sender, RoutedEventArgs e)
|
|
{
|
|
TabItemViewModel tivm = (TabItemViewModel)tabControl1.SelectedItem;
|
|
|
|
TabItemCollection.Remove(tivm);
|
|
}
|
|
|
|
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
private void OnPropertyChanged(string property)
|
|
{
|
|
if (PropertyChanged != null)
|
|
PropertyChanged(this, new PropertyChangedEventArgs(property));
|
|
}
|
|
}
|
|
}
|