1
#region License Information
3 * Copyright (C) Heuristic and Evolutionary Algorithms Laboratory (HEAL)
5 * This file is part of HeuristicLab.
7 * HeuristicLab is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
12 * HeuristicLab is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
23 using System
.Collections
.Generic
;
25 using System
.Windows
.Forms
;
27 namespace HeuristicLab
.PluginInfrastructure
.Advanced
{
28 internal static class Util
{
29 internal static void ResizeColumn(ColumnHeader columnHeader
) {
30 columnHeader
.AutoResize(ColumnHeaderAutoResizeStyle
.HeaderSize
);
31 int headerSize
= columnHeader
.Width
;
32 columnHeader
.AutoResize(ColumnHeaderAutoResizeStyle
.ColumnContent
);
33 int contentSize
= columnHeader
.Width
;
34 columnHeader
.Width
= Math
.Max(headerSize
, contentSize
);
37 internal static void ResizeColumns(IEnumerable
<ColumnHeader
> columnHeaders
) {
38 foreach (var columnHeader
in columnHeaders
)
39 ResizeColumn(columnHeader
);
42 internal static IEnumerable
<IPluginDescription
> GetAllDependents(IPluginDescription plugin
, IEnumerable
<IPluginDescription
> availablePlugins
) {
43 return from p
in availablePlugins
44 let matchingEntries
= from dep
in GetAllDependencies(p
)
45 where dep
.Name
== plugin
.Name
46 where dep
.Version
== plugin
.Version
48 where matchingEntries
.Any()
49 select p
as IPluginDescription
;
52 internal static IEnumerable
<IPluginDescription
> GetAllDependencies(IPluginDescription plugin
) {
53 HashSet
<IPluginDescription
> yieldedPlugins
= new HashSet
<IPluginDescription
>();
54 foreach (var dep
in plugin
.Dependencies
) {
55 foreach (var recDep
in GetAllDependencies(dep
)) {
56 if (!yieldedPlugins
.Contains(recDep
)) {
57 yieldedPlugins
.Add(recDep
);
61 if (!yieldedPlugins
.Contains(dep
)) {
62 yieldedPlugins
.Add(dep
);
68 // compares for two plugins with same major and minor version if plugin1 is newer than plugin2
69 internal static bool IsNewerThan(IPluginDescription plugin1
, IPluginDescription plugin2
) {
70 // newer: build version is higher, or if build version is the same revision is higher
71 return plugin1
.Version
.Build
> plugin2
.Version
.Build
||
72 (plugin1
.Version
.Build
== plugin2
.Version
.Build
&& plugin1
.Version
.Revision
> plugin2
.Version
.Revision
);