Ignore:
Timestamp:
09/13/13 13:49:03 (8 years ago)
Author:
mkommend
Message:

#2081: Merged path data types into stable.

Location:
stable
Files:
3 edited
1 copied

Legend:

Unmodified
Added
Removed
  • stable

  • stable/HeuristicLab.Data.Views/3.3

    • Property svn:mergeinfo set to (toggle deleted branches)
      /trunk/sources/HeuristicLab.Data.Views/3.3mergedeligible
      /branches/Algorithms.GradientDescent/HeuristicLab.Data.Views/3.35516-5520
      /branches/Benchmarking/sources/HeuristicLab.Data.Views/3.36917-7005
      /branches/CloningRefactoring/HeuristicLab.Data.Views/3.34656-4721
      /branches/DataAnalysis Refactoring/HeuristicLab.Data.Views/3.35471-5808
      /branches/DataAnalysis SolutionEnsembles/HeuristicLab.Data.Views/3.35815-6180
      /branches/DataAnalysis/HeuristicLab.Data.Views/3.34458-4459,​4462,​4464
      /branches/GP.Grammar.Editor/HeuristicLab.Data.Views/3.36284-6795
      /branches/GP.Symbols (TimeLag, Diff, Integral)/HeuristicLab.Data.Views/3.35060
      /branches/HeuristicLab.Data Path DataTypes/HeuristicLab.Data.Views/3.39669-9706
      /branches/NET40/sources/HeuristicLab.Data.Views/3.35138-5162
      /branches/ParallelEngine/HeuristicLab.Data.Views/3.35175-5192
      /branches/ProblemInstancesRegressionAndClassification/HeuristicLab.Data.Views/3.37568-7810
      /branches/QAPAlgorithms/HeuristicLab.Data.Views/3.36350-6627
      /branches/Restructure trunk solution/HeuristicLab.Data.Views/3.36828
      /branches/RuntimeOptimizer/HeuristicLab.Data.Views/3.38943-9078
      /branches/ScatterSearch (trunk integration)/HeuristicLab.Data.Views/3.37787-8333
      /branches/SlaveShutdown/HeuristicLab.Data.Views/3.38944-8956
      /branches/SuccessProgressAnalysis/HeuristicLab.Data.Views/3.35370-5682
      /branches/Trunk/HeuristicLab.Data.Views/3.36829-6865
      /branches/UnloadJobs/HeuristicLab.Data.Views/3.39168-9215
      /branches/VNS/HeuristicLab.Data.Views/3.35594-5752
      /branches/histogram/HeuristicLab.Data.Views/3.35959-6341
  • stable/HeuristicLab.Data.Views/3.3/Path Views/TextFileView.cs

    r9714 r9961  
    2424using System.IO;
    2525using System.Windows.Forms;
    26 using HeuristicLab.Core.Views;
    2726using HeuristicLab.MainForm;
     27using HeuristicLab.PluginInfrastructure;
    2828
    2929namespace HeuristicLab.Data.Views {
    3030  [View("TextFileView")]
    3131  [Content(typeof(TextFileValue), true)]
    32   public sealed partial class TextFileView : ItemView {
    33     private bool changedFileContent;
    34     private bool ChangedFileContent {
    35       get { return changedFileContent; }
     32  public sealed partial class TextFileView : FileValueView {
     33    private bool fileContentChanged;
     34    private bool FileContentChanged {
     35      get { return fileContentChanged; }
    3636      set {
    37         if (changedFileContent != value) {
    38           changedFileContent = value;
    39           OnChangedFileContent();
     37        if (fileContentChanged != value) {
     38          fileContentChanged = value;
     39          OnFileContentChanged();
    4040        }
    4141      }
     
    4949    public TextFileView() {
    5050      InitializeComponent();
    51       changedFileContent = false;
     51      fileContentChanged = false;
    5252    }
    5353
    5454    protected override void RegisterContentEvents() {
    5555      base.RegisterContentEvents();
    56       Content.ValueChanged += Content_FilePathChanged;
    57       Content.FileOpenDialogFilterChanged += Content_FileDialogFilterChanged;
     56      Content.StringValue.ValueChanged += Content_FilePathChanged;
    5857    }
    5958    protected override void DeregisterContentEvents() {
    60       Content.ValueChanged -= Content_FilePathChanged;
    61       Content.FileOpenDialogFilterChanged -= Content_FileDialogFilterChanged;
     59      Content.StringValue.ValueChanged -= Content_FilePathChanged;
    6260      fileSystemWatcher.EnableRaisingEvents = false;
    6361      base.DeregisterContentEvents();
     
    6664      base.SetEnabledStateOfControls();
    6765      textBox.ReadOnly = Locked || ReadOnly || Content == null;
    68       saveButton.Enabled = !Locked && !ReadOnly && Content != null && ChangedFileContent;
     66      saveButton.Enabled = !Locked && !ReadOnly && Content != null && FileContentChanged;
    6967
    7068      if (Content != null && Content.Exists()) {
     
    8381    protected override void OnContentChanged() {
    8482      base.OnContentChanged();
    85       ChangedFileContent = false;
     83      FileContentChanged = false;
    8684      if (Content == null) {
    87         fileValueView.Content = null;
    8885        textBox.Text = string.Empty;
    8986        //mkommend: other properties of the file system watcher cannot be cleared (e.g., path) as this leads to an ArgumentException
     
    9188        return;
    9289      }
    93 
    94       fileValueView.Content = Content;
    9590      saveFileDialog.Filter = Content.FileDialogFilter;
    9691      UpdateTextBox();
     
    10196      SetEnabledStateOfControls();
    10297    }
    103     private void Content_FileDialogFilterChanged(object sender, EventArgs e) {
    104       saveFileDialog.Filter = Content.FileDialogFilter;
    105     }
    10698
    10799    private void textBox_TextChanged(object sender, EventArgs e) {
    108       ChangedFileContent = fileText != textBox.Text;
    109     }
    110 
    111     private void OnChangedFileContent() {
     100      FileContentChanged = fileText != textBox.Text;
     101    }
     102
     103    private void OnFileContentChanged() {
    112104      SetEnabledStateOfControls();
    113       if (ChangedFileContent) {
    114         textBox.ForeColor = Color.Red;
    115       } else {
    116         textBox.ForeColor = Color.Black;
    117       }
     105      textBox.ForeColor = FileContentChanged ? Color.Red : Color.Black;
    118106    }
    119107
     
    146134        } else {
    147135          fileText = newContent;
    148           ChangedFileContent = true;
     136          FileContentChanged = true;
    149137        }
    150138      }
     
    185173      WriteFile(path, textBox.Text);
    186174      Content.Value = path;
    187       ChangedFileContent = false;
     175      FileContentChanged = false;
    188176      fileSystemWatcher.EnableRaisingEvents = true;
    189177    }
     
    212200    }
    213201    private void textBox_Validated(object sender, EventArgs e) {
    214       if (!ChangedFileContent) return;
     202      if (!FileContentChanged) return;
    215203      string msg = string.Format("You have not saved the changes in the file \"{0}\" yet. Do you want to save the changes?", Content.Value);
    216204      var result = MessageBox.Show(this, msg, "Save changes?", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
     
    229217      if (!File.Exists(path)) return null;
    230218      string fileContent = string.Empty;
    231       using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read)) {
    232         using (StreamReader streamReader = new StreamReader(fileStream)) {
    233           fileContent = streamReader.ReadToEnd();
    234         }
     219      try {
     220        using (FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) {
     221          using (StreamReader streamReader = new StreamReader(fileStream)) {
     222            fileContent = streamReader.ReadToEnd();
     223          }
     224        }
     225      }
     226      catch (Exception e) {
     227        ErrorHandling.ShowErrorDialog(e);
    235228      }
    236229      return fileContent;
     
    238231
    239232    private static void WriteFile(string path, string fileContent) {
    240       using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Write)) {
    241         using (StreamWriter streamWriter = new StreamWriter(fileStream)) {
    242           streamWriter.Write(fileContent);
    243         }
     233      try {
     234        using (FileStream fileStream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None)) {
     235          using (StreamWriter streamWriter = new StreamWriter(fileStream)) {
     236            streamWriter.Write(fileContent);
     237          }
     238        }
     239      }
     240      catch (Exception e) {
     241        ErrorHandling.ShowErrorDialog(e);
    244242      }
    245243    }
Note: See TracChangeset for help on using the changeset viewer.