Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
01/31/12 15:25:18 (12 years ago)
Author:
spimming
Message:

#1680:

  • If CloudManagerClient contains hostedservice, merge them in add-method
  • Merge methods added deployment and hostedservice
  • Update/merge treeview in CloudResourceView
  • Indicate a change of the trackbar (DeploymentView)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.Hive.Azure/HeuristicLab.Clients.Hive.CloudManager/3.3/Views/CloudResourcesView.cs

    r7403 r7433  
    101101        viewHost.Content = null;
    102102        treeCloudResources.Nodes.Clear();
    103       } else {
     103      } else if (treeCloudResources.Nodes.Count == 0) {
    104104        treeCloudResources.BeginUpdate();
    105         treeCloudResources.Nodes.Clear();
     105        //treeCloudResources.Nodes.Clear();
    106106        foreach (Subscription sub in Content) {
    107           TreeNode nodeSub = new TreeNode();
    108           nodeSub.Tag = sub;
    109           nodeSub.Text = sub.SubscriptionName;
    110           nodeSub.ImageIndex = subscriptionImageIndex;
    111           nodeSub.SelectedImageIndex = nodeSub.ImageIndex;
    112 
     107          TreeNode nodeSub = GetTreeNode(sub, sub.SubscriptionName, subscriptionImageIndex);
    113108          foreach (HostedService s in HostedServices) {
    114109            if (s.Subscription.SubscriptionID == sub.SubscriptionID) {
    115               TreeNode nodeServ = new TreeNode();
    116               nodeServ.Tag = s;
    117               nodeServ.Text = s.HostedServiceProperties.Label;
    118               nodeServ.ImageIndex = serviceImageIndex;
    119               nodeServ.SelectedImageIndex = nodeServ.ImageIndex;
    120 
     110              TreeNode nodeServ = GetTreeNode(s, s.HostedServiceProperties.Label, serviceImageIndex);
    121111              foreach (Deployment d in s.Deployments) {
    122                 TreeNode nodeDepl = new TreeNode();
    123                 nodeDepl.Tag = d;
    124                 nodeDepl.Text = d.Label + " (" + d.DeploymentSlot + ")";
    125                 nodeDepl.ImageIndex = deploymentImageIndex;
    126                 nodeDepl.SelectedImageIndex = nodeDepl.ImageIndex;
     112                TreeNode nodeDepl = GetTreeNode(d, d.Label + " (" + d.DeploymentSlot + ")", deploymentImageIndex);
    127113                nodeServ.Nodes.Add(nodeDepl);
    128114              }
     
    133119        }
    134120        treeCloudResources.EndUpdate();
    135       }
     121      } else {
     122        treeCloudResources.BeginUpdate();
     123        TreeNodeCollection tncSubs = treeCloudResources.Nodes;
     124
     125        // Delete treenodes that have no corresponding data in Content and HosteServices
     126        foreach (TreeNode tnSub in tncSubs) {
     127          Subscription s = (Subscription)tnSub.Tag;
     128          int idx = Content.IndexOf(s);
     129          if (idx == -1) {
     130            tncSubs.Remove(tnSub);
     131          } else {
     132            TreeNodeCollection tncHS = tnSub.Nodes;
     133            foreach (TreeNode tnHS in tncHS) {
     134              HostedService hs = (HostedService)tnHS.Tag;
     135              int idxHS = HostedServices.IndexOf(hs);
     136              if (idxHS == -1) {
     137                tncHS.Remove(tnHS);
     138              } else {
     139                TreeNodeCollection tncDep = tnHS.Nodes;
     140                foreach (TreeNode tnDep in tncDep) {
     141                  Deployment dep = (Deployment)tnDep.Tag;
     142                  HostedService hsDep = HostedServices[idxHS];
     143                  int idxDep = hsDep.Deployments.IndexOf(dep);
     144                  if (idxDep == -1) {
     145                    tncDep.Remove(tnDep);
     146                  }
     147                }
     148              }
     149            }
     150          }
     151        }
     152
     153        // Add missing treenodes
     154        foreach (Subscription sub in Content) {
     155          bool foundSub = false;
     156          TreeNode foundSubNode = null;
     157          foreach (TreeNode tnSub in treeCloudResources.Nodes) {
     158            if (((Subscription)tnSub.Tag).Equals(sub)) {
     159              foundSub = true;
     160              foundSubNode = tnSub;
     161            }
     162          }
     163          TreeNode nodeSub;
     164          if (!foundSub) {
     165            nodeSub = GetTreeNode(sub, sub.SubscriptionName, subscriptionImageIndex);
     166            treeCloudResources.Nodes.Add(nodeSub);
     167          } else {
     168            nodeSub = foundSubNode;
     169          }
     170          foreach (HostedService s in HostedServices) {
     171            if (s.Subscription.SubscriptionID == sub.SubscriptionID) {
     172              bool foundHS = false;
     173              TreeNode foundHSNode = null;
     174              foreach (TreeNode tnHS in nodeSub.Nodes) {
     175                if (((HostedService)tnHS.Tag).Equals(s)) {
     176                  foundHS = true;
     177                  foundHSNode = tnHS;
     178                }
     179              }
     180              TreeNode nodeServ;
     181              if (!foundHS) {
     182                nodeServ = GetTreeNode(s, s.HostedServiceProperties.Label, serviceImageIndex);
     183                nodeSub.Nodes.Add(nodeServ);
     184              } else {
     185                nodeServ = foundHSNode;
     186              }
     187              foreach (Deployment d in s.Deployments) {
     188                bool foundDep = false;
     189                TreeNode foundDepNode;
     190                foreach (TreeNode tnDep in nodeServ.Nodes) {
     191                  if (((Deployment)tnDep.Tag).Equals(d)) {
     192                    foundDep = true;
     193                    foundDepNode = tnDep;
     194                  }
     195                }
     196                TreeNode nodeDepl;
     197                if (!foundDep) {
     198                  nodeDepl = GetTreeNode(d, d.Label + " (" + d.DeploymentSlot + ")", deploymentImageIndex);
     199                  nodeServ.Nodes.Add(nodeDepl);
     200                } else {
     201                  // nothing to do
     202                }
     203              }
     204            }
     205          }
     206        }
     207        // ----------------------------
     208        treeCloudResources.EndUpdate();
     209      }
     210    }
     211
     212    private TreeNode GetTreeNode(Object tag, string text, int imageIndex) {
     213      TreeNode node = new TreeNode();
     214      node.Tag = tag;
     215      node.Text = text;
     216      node.ImageIndex = imageIndex;
     217      node.SelectedImageIndex = node.ImageIndex;
     218      return node;
    136219    }
    137220
Note: See TracChangeset for help on using the changeset viewer.