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));
}
}
}