Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
09/20/10 15:08:50 (14 years ago)
Author:
mkommend
Message:

Refactored the Clipboard to handle IExecuteables and repositioned the label in the ViewHost (ticket #1155).

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Core.Views/3.3/Clipboard.cs

    r4447 r4453  
    178178
    179179      int i = 0;
    180       var query = from item in itemListViewItemTable.Keys
    181                   let views = MainFormManager.MainForm.Views.OfType<IContentView>().Where(v => v.Content == item)
    182                   where !views.Any(v => v.Locked)
    183                   select item;
    184       T[] items = query.ToArray();
     180      T[] items = GetStorableItems(itemListViewItemTable.Keys);
    185181
    186182      foreach (T item in items) {
     
    198194      OnAllItemsSaved();
    199195    }
     196
    200197    private void OnItemSaved(T item, int progress) {
    201198      if (item != null) {
     
    223220        views.ForEach(v => v.Enabled = enabled);
    224221      }
     222    }
     223
     224    private static T[] GetStorableItems(IEnumerable<T> items) {
     225      var query = from item in items
     226                  let executeable = item as IExecutable
     227                  let views = MainFormManager.MainForm.Views.OfType<IContentView>().Where(v => v.Content == item)
     228                  where executeable == null || executeable.ExecutionState != ExecutionState.Started
     229                  where !views.Any(v => v.Locked)
     230                  select item;
     231      T[] itemArray = query.ToArray();
     232      return itemArray;
    225233    }
    226234    #endregion
     
    321329    }
    322330    private void saveButton_Click(object sender, EventArgs e) {
    323       var query = (from item in itemListViewItemTable.Keys
    324                    let views = MainFormManager.MainForm.Views.OfType<IContentView>().Where(v => v.Content == item)
    325                    where views.Any(v => v.Locked)
    326                    select item.ToString()).ToArray();
    327       if (query.Length != 0) {
    328         string itemNames = string.Join(Environment.NewLine, query);
    329         MessageBox.Show("Could not save the following items, because they are locked (e.g. used in a running algorithm). All other items will be saved." + Environment.NewLine + itemNames);
     331      IEnumerable<T> items = itemListViewItemTable.Keys.Except(GetStorableItems(itemListViewItemTable.Keys));
     332      if (items.Any()) {
     333        string itemNames = string.Join(Environment.NewLine, items.Select(item => item.ToString()).ToArray());
     334        MessageBox.Show("The following items could not be saved, because they are locked (e.g. used in a running algorithm). All other items will be saved." +
     335          Environment.NewLine + itemNames, "Could not save all items", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    330336      }
    331337      Save();
Note: See TracChangeset for help on using the changeset viewer.