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 { /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window, INotifyPropertyChanged { private ObservableCollection m_tabItemCollection = new ObservableCollection(); public ObservableCollection TabItemCollection { get { return m_tabItemCollection; } set { m_tabItemCollection = value; OnPropertyChanged("Collection"); } } private List _viewModelToErase = new List(); 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 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)); } } }