Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
06/26/19 08:13:50 (5 years ago)
Author:
gkronber
Message:

#2925: merged r17007:17033 from trunk to branch

Location:
branches/2925_AutoDiffForDynamicalModels
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • branches/2925_AutoDiffForDynamicalModels

  • branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views

  • branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/CheckedItemCollectionView.cs

    r16662 r17035  
    3434  [Content(typeof(ReadOnlyCheckedItemCollection<>), true)]
    3535  public partial class CheckedItemCollectionView<T> : ItemCollectionView<T> where T : class, IItem {
     36    private bool suppressCheckedEvents;
     37
    3638    public new ICheckedItemCollection<T> Content {
    3739      get { return (ICheckedItemCollection<T>)base.Content; }
     
    8486        doubleClick = false;
    8587      } else {
     88        bool check = e.NewValue == CheckState.Checked;
    8689        var checkedItem = (T)itemsListView.Items[e.Index].Tag;
    87         bool check = e.NewValue == CheckState.Checked;
    88         if (Content.ItemChecked(checkedItem) != check) {
    89           if (!ReadOnly && !Locked) Content.SetItemCheckedState(checkedItem, check);
    90           else e.NewValue = e.CurrentValue;
    91         }
     90        if (Content.ItemChecked(checkedItem) == check) return;
     91
     92        suppressCheckedEvents = true;
     93        try {
     94          if (itemsListView.SelectedIndices.Count > 1
     95            && itemsListView.SelectedIndices.Contains(e.Index)) {
     96            if (!ReadOnly && !Locked) Content.SetItemCheckedState(itemsListView.SelectedItems.Cast<ListViewItem>().Select(x => (T)x.Tag), check);
     97            else e.NewValue = e.CurrentValue;
     98          } else {
     99            if (!ReadOnly && !Locked) Content.SetItemCheckedState(checkedItem, check);
     100            else e.NewValue = e.CurrentValue;
     101          }
     102        } finally { suppressCheckedEvents = false; }
    92103      }
    93104    }
    94     protected void itemsListView_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) {
     105    protected void itemsListView_MouseDown(object sender, MouseEventArgs e) {
    95106      if (e.Clicks > 1)
    96107        doubleClick = true;
     
    103114        Invoke(new CollectionItemsChangedEventHandler<T>(Content_CheckedItemsChanged), sender, e);
    104115      else {
    105         UpdateCheckedItemState(e.Items);
     116        if (!suppressCheckedEvents) UpdateCheckedItemState(e.Items);
    106117        SetNumberOfCheckItems();
    107118      }
     
    130141
    131142    private void UpdateCheckedItemState(IEnumerable<T> items) {
    132       foreach (T item in items) {
    133         foreach (ListViewItem listViewItem in GetListViewItemsForItem(item)) {
    134           var isChecked = Content.ItemChecked(item);
    135           if (listViewItem.Checked != isChecked)
    136             listViewItem.Checked = isChecked;
     143      itemsListView.BeginUpdate();
     144      try {
     145        foreach (T item in items) {
     146          foreach (ListViewItem listViewItem in GetListViewItemsForItem(item)) {
     147            var isChecked = Content.ItemChecked(item);
     148            if (listViewItem.Checked != isChecked)
     149              listViewItem.Checked = isChecked;
     150          }
    137151        }
    138       }
     152      } finally { itemsListView.EndUpdate(); itemsListView.Refresh(); }
    139153    }
    140154  }
  • branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/CheckedItemListView.cs

    r16662 r17035  
    3737  [Content(typeof(ReadOnlyCheckedItemList<>), true)]
    3838  public partial class CheckedItemListView<T> : ItemListView<T> where T : class, IItem {
     39    private bool suppressCheckedEvents;
     40
    3941    public new ICheckedItemList<T> Content {
    4042      get { return (ICheckedItemList<T>)base.Content; }
     
    8688        doubleClick = false;
    8789      } else {
    88         var checkedItem = (T)itemsListView.Items[e.Index].Tag;
    8990        bool check = e.NewValue == CheckState.Checked;
    90         if (Content.ItemChecked(checkedItem) != check) {
    91           if (!ReadOnly && !Locked) Content.SetItemCheckedState(checkedItem, check);
    92           else e.NewValue = e.CurrentValue;
    93         }
     91        if (Content.ItemChecked(e.Index) == check) return;
     92
     93        suppressCheckedEvents = true;
     94        try {
     95          if (itemsListView.SelectedIndices.Count > 1
     96            && itemsListView.SelectedIndices.Contains(e.Index)) {
     97            if (!ReadOnly && !Locked) Content.SetItemCheckedState(itemsListView.SelectedIndices.Cast<int>(), check);
     98            else e.NewValue = e.CurrentValue;
     99          } else {
     100            var checkedItem = (T)itemsListView.Items[e.Index].Tag;
     101            if (!ReadOnly && !Locked) Content.SetItemCheckedState(checkedItem, check);
     102            else e.NewValue = e.CurrentValue;
     103          }
     104        } finally { suppressCheckedEvents = false; }
    94105      }
    95106    }
     
    139150        Invoke(new CollectionItemsChangedEventHandler<IndexedItem<T>>(Content_CheckedItemsChanged), sender, e);
    140151      else {
    141         UpdateCheckedItemState(e.Items);
     152        if (!suppressCheckedEvents) UpdateCheckedItemState(e.Items);
    142153        SetNumberOfCheckItems();
    143154      }
     
    175186
    176187    private void UpdateCheckedItemState(IEnumerable<IndexedItem<T>> items) {
    177       foreach (var item in items) {
    178         var isChecked = Content.ItemChecked(item.Value);
    179         if (itemsListView.Items[item.Index].Checked != isChecked)
    180           itemsListView.Items[item.Index].Checked = isChecked;
    181       }
     188      itemsListView.BeginUpdate();
     189      try {
     190        foreach (var item in items) {
     191          var isChecked = Content.ItemChecked(item.Value);
     192          if (itemsListView.Items[item.Index].Checked != isChecked)
     193            itemsListView.Items[item.Index].Checked = isChecked;
     194        }
     195      } finally { itemsListView.EndUpdate(); itemsListView.Refresh(); }
    182196    }
    183197  }
  • branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/Clipboard.cs

    r17000 r17035  
    155155      foreach (string filename in items) {
    156156        try {
    157           T item = (T)ContentManager.Load(filename);
     157          T item = null;
     158          if (HeuristicLab.Persistence.Default.Xml.XmlParser.CanOpen(filename)) {
     159            item = HeuristicLab.Persistence.Default.Xml.XmlParser.Deserialize<T>(filename);
     160          } else {
     161            item = (T)new ProtoBufSerializer().Deserialize(filename);
     162          }
    158163          OnItemLoaded(item, progressBar.Maximum / items.Length);
    159         } catch(Exception) {
     164        } catch (Exception) {
    160165          // ignore if loading a clipboad item fails.
    161166        }
  • branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/HeuristicLab.Core.Views-3.3.csproj

    r17000 r17035  
    375375      <Private>False</Private>
    376376    </ProjectReference>
     377    <ProjectReference Include="..\..\HeuristicLab.Persistence\3.3\HeuristicLab.Persistence-3.3.csproj">
     378      <Project>{102bc7d3-0ef9-439c-8f6d-96ff0fdb8e1b}</Project>
     379      <Name>HeuristicLab.Persistence-3.3</Name>
     380      <Private>False</Private>
     381    </ProjectReference>
    377382    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\3.3\HeuristicLab.PluginInfrastructure-3.3.csproj">
    378383      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
  • branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/ItemArrayView.Designer.cs

    r16662 r17035  
    2020#endregion
    2121
    22 using System.Security.AccessControl;
    2322using System.Windows.Forms;
    2423
     
    154153      this.itemsListView.DoubleClick += new System.EventHandler(this.itemsListView_DoubleClick);
    155154      this.itemsListView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.itemsListView_KeyDown);
     155      this.itemsListView.Layout += new System.Windows.Forms.LayoutEventHandler(this.itemsListView_Layout);
     156      //
     157      // listViewColumnHeader
     158      //
     159      this.listViewColumnHeader.Width = 190;
    156160      //
    157161      // imageList
  • branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/ItemArrayView.cs

    r16662 r17035  
    237237                               (Content != null) && !Content.IsReadOnly && !ReadOnly;
    238238      removeButton.Enabled = itemsListView.SelectedItems.Count > 0 && (Content != null) && !Content.IsReadOnly && !ReadOnly;
    239       AdjustListViewColumnSizes();
    240239
    241240      if (showDetailsCheckBox.Checked) {
     
    330329      }
    331330    }
     331    protected virtual void itemsListView_Layout(object sender, LayoutEventArgs e) {
     332      if (itemsListView.Columns.Count == 1)
     333        AdjustListViewColumnSizes();
     334    }
    332335    #endregion
    333336
     
    453456        foreach (ListViewItem listViewItem in GetListViewItemsForItem(item))
    454457          UpdateListViewItemText(listViewItem);
    455         AdjustListViewColumnSizes();
     458        if (itemsListView.Columns.Count > 1)
     459          AdjustListViewColumnSizes();
    456460      }
    457461    }
     
    460464    #region Helpers
    461465    protected virtual void AdjustListViewColumnSizes() {
    462       if (itemsListView.Items.Count > 0) {
    463         for (int i = 0; i < itemsListView.Columns.Count; i++)
    464           itemsListView.Columns[i].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);
     466      if (itemsListView.Columns.Count == 1) {
     467        if (itemsListView.Columns[0].Width != itemsListView.ClientSize.Width)
     468          itemsListView.Columns[0].Width = itemsListView.ClientSize.Width;
     469      } else {
     470        if (itemsListView.Items.Count > 0) {
     471          for (int i = 0; i < itemsListView.Columns.Count; i++)
     472            itemsListView.Columns[i].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);
     473        }
    465474      }
    466475    }
  • branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/ItemCollectionView.Designer.cs

    r16662 r17035  
    2020#endregion
    2121
    22 using System.Security.AccessControl;
    2322using System.Windows.Forms;
    2423
     
    107106      this.itemsListView.DoubleClick += new System.EventHandler(this.itemsListView_DoubleClick);
    108107      this.itemsListView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.itemsListView_KeyDown);
     108      this.itemsListView.Layout += new System.Windows.Forms.LayoutEventHandler(this.itemsListView_Layout);
     109      //
     110      // columnHeader1
     111      //
     112      this.columnHeader1.Width = 240;
    109113      //
    110114      // imageList
  • branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/ItemCollectionView.cs

    r16662 r17035  
    221221    protected virtual void itemsListView_SelectedIndexChanged(object sender, EventArgs e) {
    222222      removeButton.Enabled = (Content != null) && !Content.IsReadOnly && !ReadOnly && itemsListView.SelectedItems.Count > 0;
    223       AdjustListViewColumnSizes();
    224223      if (showDetailsCheckBox.Checked) {
    225224        if (itemsListView.SelectedItems.Count == 1) {
     
    327326      }
    328327    }
     328    protected virtual void itemsListView_Layout(object sender, LayoutEventArgs e) {
     329      if (itemsListView.Columns.Count == 1)
     330        AdjustListViewColumnSizes();
     331    }
    329332    #endregion
    330333
     
    423426        foreach (ListViewItem listViewItem in GetListViewItemsForItem(item))
    424427          UpdateListViewItemText(listViewItem);
    425         AdjustListViewColumnSizes();
     428        if (itemsListView.Columns.Count > 1)
     429          AdjustListViewColumnSizes();
    426430      }
    427431    }
     
    435439    }
    436440    protected virtual void AdjustListViewColumnSizes() {
    437       if (itemsListView.Items.Count > 0) {
    438         for (int i = 0; i < itemsListView.Columns.Count; i++)
    439           itemsListView.Columns[i].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);
     441      if (itemsListView.Columns.Count == 1) {
     442        if (itemsListView.Columns[0].Width != itemsListView.ClientSize.Width)
     443          itemsListView.Columns[0].Width = itemsListView.ClientSize.Width;
     444      } else {
     445        if (itemsListView.Items.Count > 0) {
     446          for (int i = 0; i < itemsListView.Columns.Count; i++)
     447            itemsListView.Columns[i].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);
     448        }
    440449      }
    441450    }
  • branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/ItemListView.Designer.cs

    r16662 r17035  
    155155      this.itemsListView.DoubleClick += new System.EventHandler(this.itemsListView_DoubleClick);
    156156      this.itemsListView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.itemsListView_KeyDown);
     157      this.itemsListView.Layout += new System.Windows.Forms.LayoutEventHandler(this.itemsListView_Layout);
     158      //
     159      // listViewColumnHeader
     160      //
     161      this.listViewColumnHeader.Width = 190;
    157162      //
    158163      // imageList
  • branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/ItemListView.cs

    r16662 r17035  
    242242      removeButton.Enabled = itemsListView.SelectedItems.Count > 0 &&
    243243                             (Content != null) && !Content.IsReadOnly && !ReadOnly;
    244       AdjustListViewColumnSizes();
    245 
     244     
    246245      if (showDetailsCheckBox.Checked) {
    247246        if (itemsListView.SelectedItems.Count == 1) {
     
    354353      }
    355354    }
     355    protected virtual void itemsListView_Layout(object sender, LayoutEventArgs e) {
     356      if (itemsListView.Columns.Count == 1)
     357        AdjustListViewColumnSizes();
     358    }
    356359    #endregion
    357360
     
    494497        foreach (ListViewItem listViewItem in GetListViewItemsForItem(item))
    495498          UpdateListViewItemText(listViewItem);
    496         AdjustListViewColumnSizes();
     499        if (itemsListView.Columns.Count > 1)
     500          AdjustListViewColumnSizes();
    497501      }
    498502    }
     
    501505    #region Helpers
    502506    protected virtual void AdjustListViewColumnSizes() {
    503       if (itemsListView.Items.Count > 0) {
    504         for (int i = 0; i < itemsListView.Columns.Count; i++)
    505           itemsListView.Columns[i].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);
     507      if (itemsListView.Columns.Count == 1) {
     508        if (itemsListView.Columns[0].Width != itemsListView.ClientSize.Width)
     509          itemsListView.Columns[0].Width = itemsListView.ClientSize.Width;
     510      } else {
     511        if (itemsListView.Items.Count > 0) {
     512          for (int i = 0; i < itemsListView.Columns.Count; i++)
     513            itemsListView.Columns[i].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);
     514        }
    506515      }
    507516    }
  • branches/2925_AutoDiffForDynamicalModels/HeuristicLab.Core.Views/3.3/Plugin.cs.frame

    r17000 r17035  
    3535  [PluginDependency("HeuristicLab.MainForm", "3.3")]
    3636  [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
     37  [PluginDependency("HeuristicLab.Persistence", "3.3")]
    3738  public class HeuristicLabCoreViewsPlugin : PluginBase {
    3839  }
Note: See TracChangeset for help on using the changeset viewer.