#region License Information
/* HeuristicLab
* Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
*
* This file is part of HeuristicLab.
*
* HeuristicLab is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* HeuristicLab is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with HeuristicLab. If not, see .
*/
#endregion
using System;
using System.Windows.Forms;
using HeuristicLab.Common;
using HeuristicLab.Core;
using HeuristicLab.Core.Views;
using HeuristicLab.MainForm;
namespace HeuristicLab.DataPreprocessing.Views {
[View("DataPreprocessing View")]
[Content(typeof(PreprocessingContext), true)]
[Content(typeof(IPreprocessingContext), false)]
public partial class DataPreprocessingView : ItemView {
public DataPreprocessingView() {
InitializeComponent();
}
public new IPreprocessingContext Content {
get { return (IPreprocessingContext)base.Content; }
set { base.Content = value; }
}
protected override void OnContentChanged() {
base.OnContentChanged();
if (Content != null) {
var data = Content.Data;
var searchLogic = new SearchLogic(data);
var statisticsLogic = new StatisticsLogic(data, searchLogic);
var manipulationLogic = new ManipulationLogic(data, searchLogic, statisticsLogic);
var filterLogic = new FilterLogic(data);
var viewShortcuts = new ItemList {
new DataGridContent(data, manipulationLogic, filterLogic),
new StatisticsContent(statisticsLogic),
new LineChartContent(data),
new HistogramContent(data),
new ScatterPlotContent(data),
new CorrelationMatrixContent(Content),
new DataCompletenessChartContent(searchLogic),
new FilterContent(filterLogic),
new ManipulationContent(manipulationLogic, searchLogic, filterLogic),
new TransformationContent(data, filterLogic)
};
viewShortcutListView.Content = viewShortcuts.AsReadOnly();
viewShortcutListView.ItemsListView.Items[0].Selected = true;
viewShortcutListView.Select();
} else {
viewShortcutListView.Content = null;
}
}
protected override void RegisterContentEvents() {
base.RegisterContentEvents();
Content.Data.FilterChanged += Data_FilterChanged;
}
protected override void DeregisterContentEvents() {
base.DeregisterContentEvents();
Content.Data.FilterChanged -= Data_FilterChanged;
}
void Data_FilterChanged(object sender, EventArgs e) {
lblFilterActive.Visible = Content.Data.IsFiltered;
}
protected override void SetEnabledStateOfControls() {
base.SetEnabledStateOfControls();
viewShortcutListView.Enabled = Content != null;
applyInNewTabButton.Enabled = Content != null;
exportProblemButton.Enabled = Content != null && Content.Problem != null;
undoButton.Enabled = Content != null;
}
private void exportProblemButton_Click(object sender, EventArgs e) {
var problem = Content.ExportProblem();
var saveFileDialog = new SaveFileDialog {
Title = "Save Item",
DefaultExt = "hl",
Filter = "Uncompressed HeuristicLab Files|*.hl|HeuristicLab Files|*.hl|All Files|*.*",
FilterIndex = 2
};
var content = problem as IStorableContent;
if (saveFileDialog.ShowDialog() == DialogResult.OK) {
bool compressed = saveFileDialog.FilterIndex != 1;
ContentManager.Save(content, saveFileDialog.FileName, compressed);
}
}
private void applyInNewTabButton_Click(object sender, EventArgs e) {
var item = Content.Export();
MainFormManager.MainForm.ShowContent(item);
}
private void undoButton_Click(object sender, EventArgs e) {
Content.Data.Undo();
}
}
}