Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
10/02/13 20:11:14 (11 years ago)
Author:
abeham
Message:

#2110: merged to stable

Location:
stable
Files:
4 deleted
5 edited

Legend:

Unmodified
Added
Removed
  • stable

  • stable/HeuristicLab.Problems.Instances.Views/3.3/HeuristicLab.Problems.Instances.Views-3.3.csproj

    r8600 r10021  
    113113  </ItemGroup>
    114114  <ItemGroup>
    115     <Compile Include="ProblemInstanceConsumerViewGeneric.cs">
    116       <SubType>UserControl</SubType>
    117     </Compile>
    118     <Compile Include="ProblemInstanceConsumerViewGeneric.Designer.cs">
    119       <DependentUpon>ProblemInstanceConsumerViewGeneric.cs</DependentUpon>
    120     </Compile>
    121115    <Compile Include="Plugin.cs" />
    122     <Compile Include="ProblemInstanceConsumerView.cs">
    123       <SubType>UserControl</SubType>
    124     </Compile>
    125     <Compile Include="ProblemInstanceConsumerView.Designer.cs">
    126       <DependentUpon>ProblemInstanceConsumerView.cs</DependentUpon>
    127     </Compile>
    128116    <Compile Include="ProblemInstanceProviderView.cs">
    129117      <SubType>UserControl</SubType>
     
    199187  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
    200188  <PropertyGroup>
    201    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
     189    <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
    202190set ProjectDir=$(ProjectDir)
    203191set SolutionDir=$(SolutionDir)
     
    206194call PreBuildEvent.cmd
    207195</PreBuildEvent>
    208 <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
     196    <PreBuildEvent Condition=" '$(OS)' != 'Windows_NT' ">
    209197export ProjectDir=$(ProjectDir)
    210198export SolutionDir=$(SolutionDir)
  • stable/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceProviderView.cs

    r9456 r10021  
    2121
    2222using System.Windows.Forms;
     23using HeuristicLab.Core;
    2324using HeuristicLab.MainForm;
    2425using HeuristicLab.MainForm.WindowsForms;
     
    3536
    3637    public abstract IProblemInstanceConsumer Consumer { get; set; }
     38    public abstract IProblemInstanceExporter Exporter { get; set; }
    3739
    38     public ProblemInstanceProviderView() {
     40    protected ProblemInstanceProviderView() {
    3941      InitializeComponent();
    4042    }
     43
     44    protected string GetProblemType() {
     45      var item = Consumer as IItem;
     46      return item != null ? item.ItemName : "problem";
     47    }
     48
     49    protected string GetProviderFormatInfo() {
     50      return Content != null ? Content.Name : string.Empty;
     51    }
     52
     53    protected abstract void SetTooltip();
    4154  }
    4255}
  • stable/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceProviderViewGeneric.Designer.cs

    r9456 r10021  
    2020#endregion
    2121
     22
    2223namespace HeuristicLab.Problems.Instances.Views {
    23   partial class ProblemInstanceProviderViewGeneric<T> {
     24  partial class ProblemInstanceProviderView<T> {
    2425    /// <summary>
    2526    /// Required designer variable.
     
    4546    /// </summary>
    4647    private void InitializeComponent() {
    47       this.components = new System.ComponentModel.Container();
    48       this.instanceLabel = new System.Windows.Forms.Label();
    4948      this.instancesComboBox = new System.Windows.Forms.ComboBox();
    5049      this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
    5150      this.saveFileDialog = new System.Windows.Forms.SaveFileDialog();
     51      this.instanceLabel = new System.Windows.Forms.Label();
     52      this.splitContainer2 = new System.Windows.Forms.SplitContainer();
     53      this.exportButton = new System.Windows.Forms.Button();
     54      this.splitContainer1 = new System.Windows.Forms.SplitContainer();
     55      this.importButton = new System.Windows.Forms.Button();
     56      this.libraryInfoButton = new System.Windows.Forms.Button();
     57      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
     58      this.splitContainer2.Panel1.SuspendLayout();
     59      this.splitContainer2.Panel2.SuspendLayout();
     60      this.splitContainer2.SuspendLayout();
     61      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
     62      this.splitContainer1.Panel1.SuspendLayout();
     63      this.splitContainer1.Panel2.SuspendLayout();
     64      this.splitContainer1.SuspendLayout();
    5265      this.SuspendLayout();
    53       //
    54       // instanceLabel
    55       //
    56       this.instanceLabel.AutoSize = true;
    57       this.instanceLabel.Location = new System.Drawing.Point(3, 4);
    58       this.instanceLabel.Name = "instanceLabel";
    59       this.instanceLabel.Size = new System.Drawing.Size(51, 13);
    60       this.instanceLabel.TabIndex = 4;
    61       this.instanceLabel.Text = "Instance:";
    6266      //
    6367      // instancesComboBox
     
    6771      this.instancesComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
    6872      this.instancesComboBox.FormattingEnabled = true;
    69       this.instancesComboBox.Location = new System.Drawing.Point(60, 1);
     73      this.instancesComboBox.Location = new System.Drawing.Point(60, 2);
    7074      this.instancesComboBox.Name = "instancesComboBox";
    71       this.instancesComboBox.Size = new System.Drawing.Size(632, 21);
     75      this.instancesComboBox.Size = new System.Drawing.Size(540, 21);
    7276      this.instancesComboBox.TabIndex = 7;
     77      this.instancesComboBox.SelectionChangeCommitted += new System.EventHandler(this.instancesComboBox_SelectionChangeCommitted);
    7378      this.instancesComboBox.DataSourceChanged += new System.EventHandler(this.instancesComboBox_DataSourceChanged);
    74       this.instancesComboBox.SelectionChangeCommitted += new System.EventHandler(instancesComboBox_SelectionChangeCommitted);
    7579      //
    7680      // openFileDialog
     
    8387      this.saveFileDialog.Title = "Save RegressionInstance...";
    8488      //
     89      // instanceLabel
     90      //
     91      this.instanceLabel.AutoSize = true;
     92      this.instanceLabel.Location = new System.Drawing.Point(3, 5);
     93      this.instanceLabel.Name = "instanceLabel";
     94      this.instanceLabel.Size = new System.Drawing.Size(51, 13);
     95      this.instanceLabel.TabIndex = 4;
     96      this.instanceLabel.Text = "Instance:";
     97      //
     98      // splitContainer2
     99      //
     100      this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
     101      this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
     102      this.splitContainer2.IsSplitterFixed = true;
     103      this.splitContainer2.Location = new System.Drawing.Point(0, 0);
     104      this.splitContainer2.Name = "splitContainer2";
     105      //
     106      // splitContainer2.Panel1
     107      //
     108      this.splitContainer2.Panel1.Controls.Add(this.exportButton);
     109      //
     110      // splitContainer2.Panel2
     111      //
     112      this.splitContainer2.Panel2.Controls.Add(this.instanceLabel);
     113      this.splitContainer2.Panel2.Controls.Add(this.instancesComboBox);
     114      this.splitContainer2.Size = new System.Drawing.Size(632, 23);
     115      this.splitContainer2.SplitterDistance = 25;
     116      this.splitContainer2.TabIndex = 21;
     117      //
     118      // exportButton
     119      //
     120      this.exportButton.Location = new System.Drawing.Point(1, 0);
     121      this.exportButton.Name = "exportButton";
     122      this.exportButton.Size = new System.Drawing.Size(24, 24);
     123      this.exportButton.TabIndex = 20;
     124      this.exportButton.Text = "Export";
     125      this.exportButton.UseVisualStyleBackColor = true;
     126      this.exportButton.Click += new System.EventHandler(exportButton_Click);
     127      //
     128      // splitContainer1
     129      //
     130      this.splitContainer1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
     131            | System.Windows.Forms.AnchorStyles.Right)));
     132      this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
     133      this.splitContainer1.IsSplitterFixed = true;
     134      this.splitContainer1.Location = new System.Drawing.Point(33, -1);
     135      this.splitContainer1.Name = "splitContainer1";
     136      //
     137      // splitContainer1.Panel1
     138      //
     139      this.splitContainer1.Panel1.Controls.Add(this.importButton);
     140      //
     141      // splitContainer1.Panel2
     142      //
     143      this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
     144      this.splitContainer1.Size = new System.Drawing.Size(661, 23);
     145      this.splitContainer1.SplitterDistance = 25;
     146      this.splitContainer1.TabIndex = 21;
     147      //
     148      // importButton
     149      //
     150      this.importButton.Location = new System.Drawing.Point(0, 0);
     151      this.importButton.Name = "importButton";
     152      this.importButton.Size = new System.Drawing.Size(24, 24);
     153      this.importButton.TabIndex = 19;
     154      this.importButton.Text = "Import";
     155      this.importButton.UseVisualStyleBackColor = true;
     156      this.importButton.Click += new System.EventHandler(importButton_Click);
     157      //
     158      // libraryInfoButton
     159      //
     160      this.libraryInfoButton.Location = new System.Drawing.Point(3, -1);
     161      this.libraryInfoButton.Name = "libraryInfoButton";
     162      this.libraryInfoButton.Size = new System.Drawing.Size(24, 24);
     163      this.libraryInfoButton.TabIndex = 22;
     164      this.libraryInfoButton.Text = "Info";
     165      this.libraryInfoButton.UseVisualStyleBackColor = true;
     166      this.libraryInfoButton.Click += new System.EventHandler(this.libraryInfoButton_Click);
     167      //
    85168      // ProblemInstanceProviderViewGeneric
    86169      //
    87       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    88170      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
    89       this.Controls.Add(this.instanceLabel);
    90       this.Controls.Add(this.instancesComboBox);
     171      this.Controls.Add(this.libraryInfoButton);
     172      this.Controls.Add(this.splitContainer1);
    91173      this.Name = "ProblemInstanceProviderViewGeneric";
    92       this.Size = new System.Drawing.Size(694, 21);
     174      this.splitContainer2.Panel1.ResumeLayout(false);
     175      this.splitContainer2.Panel2.ResumeLayout(false);
     176      this.splitContainer2.Panel2.PerformLayout();
     177      ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
     178      this.splitContainer2.ResumeLayout(false);
     179      this.splitContainer1.Panel1.ResumeLayout(false);
     180      this.splitContainer1.Panel2.ResumeLayout(false);
     181      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
     182      this.splitContainer1.ResumeLayout(false);
    93183      this.ResumeLayout(false);
    94       this.PerformLayout();
    95184
    96185    }
     
    98187
    99188    protected System.Windows.Forms.OpenFileDialog openFileDialog;
    100     protected System.Windows.Forms.Label instanceLabel;
    101189    protected System.Windows.Forms.ComboBox instancesComboBox;
    102190    protected System.Windows.Forms.SaveFileDialog saveFileDialog;
     191    protected System.Windows.Forms.Label instanceLabel;
     192    protected System.Windows.Forms.SplitContainer splitContainer2;
     193    protected System.Windows.Forms.SplitContainer splitContainer1;
     194    protected System.Windows.Forms.Button libraryInfoButton;
     195    protected System.Windows.Forms.Button importButton;
     196    protected System.Windows.Forms.Button exportButton;
    103197  }
    104198}
  • stable/HeuristicLab.Problems.Instances.Views/3.3/ProblemInstanceProviderViewGeneric.cs

    r10020 r10021  
    2121
    2222using System;
    23 using System.ComponentModel;
     23using System.Diagnostics;
     24using System.IO;
    2425using System.Linq;
    2526using System.Threading.Tasks;
    2627using System.Windows.Forms;
     28using HeuristicLab.Common.Resources;
    2729using HeuristicLab.MainForm;
    2830using HeuristicLab.MainForm.WindowsForms;
     
    3234  [View("ProblemInstanceProviderViewGeneric")]
    3335  [Content(typeof(IProblemInstanceProvider<>), IsDefaultView = true)]
    34   public partial class ProblemInstanceProviderViewGeneric<T> : ProblemInstanceProviderView {
     36  public partial class ProblemInstanceProviderView<T> : ProblemInstanceProviderView {
    3537
    3638    public new IProblemInstanceProvider<T> Content {
     
    3941    }
    4042
    41     private IProblemInstanceConsumer<T> GenericConsumer { get { return Consumer as IProblemInstanceConsumer<T>; } }
    42 
    43     private IProblemInstanceConsumer consumer;
     43    #region Importer & Exporter
     44    protected IProblemInstanceConsumer<T> GenericConsumer { get { return Consumer as IProblemInstanceConsumer<T>; } }
     45    protected IProblemInstanceConsumer consumer;
    4446    public override IProblemInstanceConsumer Consumer {
    4547      get { return consumer; }
     
    4749        consumer = value;
    4850        SetEnabledStateOfControls();
     51        SetTooltip();
    4952      }
    5053    }
    5154
    52     public ProblemInstanceProviderViewGeneric() {
     55    protected IProblemInstanceExporter<T> GenericExporter { get { return Exporter as IProblemInstanceExporter<T>; } }
     56    protected IProblemInstanceExporter exporter;
     57    public override IProblemInstanceExporter Exporter {
     58      get { return exporter; }
     59      set {
     60        exporter = value;
     61        SetEnabledStateOfControls();
     62      }
     63    }
     64    #endregion
     65
     66    public ProblemInstanceProviderView() {
    5367      InitializeComponent();
     68      importButton.Text = String.Empty;
     69      importButton.Image = VSImageLibrary.Open;
     70      exportButton.Text = String.Empty;
     71      exportButton.Image = VSImageLibrary.SaveAs;
     72      libraryInfoButton.Text = String.Empty;
     73      libraryInfoButton.Image = VSImageLibrary.Help;
    5474    }
    5575
     
    6585        instancesComboBox.SelectedIndex = -1;
    6686      }
     87      SetTooltip();
    6788    }
    6889
     
    80101      base.SetEnabledStateOfControls();
    81102      instancesComboBox.Enabled = !ReadOnly && !Locked && Content != null && GenericConsumer != null;
     103      libraryInfoButton.Enabled = Content != null && Content.WebLink != null;
     104      importButton.Enabled = !ReadOnly && !Locked && Content != null && GenericConsumer != null && Content.CanImportData;
     105      splitContainer1.Panel1Collapsed = !importButton.Enabled;
     106      exportButton.Enabled = !ReadOnly && !Locked && Content != null && GenericExporter != null && Content.CanExportData;
     107      splitContainer2.Panel1Collapsed = !exportButton.Enabled;
    82108    }
    83109
     
    89115    }
    90116
    91     private void instancesComboBox_SelectionChangeCommitted(object sender, System.EventArgs e) {
     117    protected virtual void instancesComboBox_SelectionChangeCommitted(object sender, EventArgs e) {
    92118      toolTip.SetToolTip(instancesComboBox, String.Empty);
    93119      if (instancesComboBox.SelectedIndex >= 0) {
     
    98124        // lock active view and show progress bar
    99125        mainForm.AddOperationProgressToContent(activeView.Content, "Loading problem instance.");
    100         // continuation for removing the progess bar from the active view
    101         Action<Task> removeProgressFromContent = (_) => mainForm.RemoveOperationProgressFromContent(activeView.Content);
    102126
    103         // task structure:
    104         // loadFromProvider
    105         // |
    106         // +-> on fault -> show error dialog -> remove progress bar
    107         // |
    108         // `-> success  -> loadToProblem
    109         //                 |
    110         //                 +-> on fault -> show error dialog -> remove progress bar
    111         //                 |
    112         //                 `-> success -> set tool tip -> remove progress bar
    113         var loadFromProvider = new Task<T>(() => Content.LoadData(descriptor));
     127        Task.Factory.StartNew(() => {
     128          T data;
     129          try {
     130            data = Content.LoadData(descriptor);
     131          } catch (Exception ex) {
     132            ErrorHandling.ShowErrorDialog(String.Format("Could not load the problem instance {0}", descriptor.Name), ex);
     133            mainForm.RemoveOperationProgressFromContent(activeView.Content);
     134            return;
     135          }
     136          try {
     137            GenericConsumer.Load(data);
     138          } catch (Exception ex) {
     139            ErrorHandling.ShowErrorDialog(String.Format("This problem does not support loading the instance {0}", descriptor.Name), ex);
     140          } finally {
     141            mainForm.RemoveOperationProgressFromContent(activeView.Content);
     142          }
     143        });
     144      }
     145    }
    114146
    115         // success
    116         var loadToProblem = loadFromProvider
    117           .ContinueWith(task => GenericConsumer.Load(task.Result), TaskContinuationOptions.OnlyOnRanToCompletion);
    118         // on error
    119         loadFromProvider
    120           .ContinueWith(task => { ErrorHandling.ShowErrorDialog(String.Format("Could not load the problem instance {0}", descriptor.Name), task.Exception); }, TaskContinuationOptions.OnlyOnFaulted)
    121           .ContinueWith(removeProgressFromContent);
     147    private void libraryInfoButton_Click(object sender, EventArgs e) {
     148      Process.Start(Content.WebLink.ToString());
     149    }
    122150
    123         // success
    124         loadToProblem
    125           .ContinueWith(task => toolTip.SetToolTip(instancesComboBox, descriptor.Description), TaskContinuationOptions.OnlyOnRanToCompletion)
    126           .ContinueWith(removeProgressFromContent);
    127         // on error
    128         loadToProblem.ContinueWith(task => { ErrorHandling.ShowErrorDialog(String.Format("This problem does not support loading the instance {0}", descriptor.Name), task.Exception); }, TaskContinuationOptions.OnlyOnFaulted)
    129         .ContinueWith(removeProgressFromContent);
     151    protected virtual void importButton_Click(object sender, EventArgs e) {
     152      openFileDialog.FileName = Content.Name + " instance";
     153      if (openFileDialog.ShowDialog() == DialogResult.OK) {
     154        T instance = default(T);
     155        try {
     156          instance = Content.ImportData(openFileDialog.FileName);
     157        } catch (Exception ex) {
     158          MessageBox.Show(String.Format("There was an error parsing the file: {0}", Environment.NewLine + ex.Message), "Error while parsing", MessageBoxButtons.OK, MessageBoxIcon.Error);
     159          return;
     160        }
     161        try {
     162          GenericConsumer.Load(instance);
     163          instancesComboBox.SelectedIndex = -1;
     164        } catch (Exception ex) {
     165          MessageBox.Show(String.Format("This problem does not support loading the instance {0}: {1}", Path.GetFileName(openFileDialog.FileName), Environment.NewLine + ex.Message), "Cannot load instance");
     166        }
     167      }
     168    }
    130169
    131         // start async loading task
    132         loadFromProvider.Start();
     170    protected virtual void exportButton_Click(object sender, EventArgs e) {
     171      if (saveFileDialog.ShowDialog(this) == DialogResult.OK) {
     172        try {
     173          Content.ExportData(GenericExporter.Export(), saveFileDialog.FileName);
     174        } catch (Exception ex) {
     175          ErrorHandling.ShowErrorDialog(this, ex);
     176        }
    133177      }
     178    }
     179
     180    protected override void SetTooltip() {
     181      toolTip.SetToolTip(importButton, "Import a " + GetProblemType() + " from a file in the " + GetProviderFormatInfo() + " format.");
     182      toolTip.SetToolTip(exportButton, "Export currently loaded " + GetProblemType() + " to a file in the " + GetProviderFormatInfo() + " format.");
     183      if (Content != null && Content.WebLink != null)
     184        toolTip.SetToolTip(libraryInfoButton, "Browse to " + Content.WebLink);
     185      else toolTip.SetToolTip(libraryInfoButton, "Library does not have a web reference.");
    134186    }
    135187  }
Note: See TracChangeset for help on using the changeset viewer.