Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
03/14/11 16:49:58 (14 years ago)
Author:
ascheibe
Message:

#1233 worked on Administration UI

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/Administration/ResourcesView.cs

    r5638 r5676  
    2121
    2222using System;
     23using System.Drawing;
    2324using System.Linq;
    2425using System.Windows.Forms;
     
    4142      treeSlaveGroup.ImageList.Images.Add(HiveImageLibrary.SlaveGroup);
    4243      updateScheduleControl.UpdateAction = new Action(UpdateSchedule);
    43     }
    44 
    45     private void UpdateSchedule() {
    46       Guid resourceId = scheduleView.ResourceId;
    47       if (resourceId != null) {
    48         ServiceLocator.Instance.CallHiveService(service => {
    49           var appointments = service.GetScheduleForResource(resourceId);
    50           ItemList<Appointment> ias = new ItemList<Appointment>();
    51           appointments.ForEach(a => ias.Add(a));
    52           scheduleView.Invoke(new Action(() => scheduleView.Content = ias));
    53         });
    54       }
     44      updateSlaveGroup.UpdateAction = new Action(UpdateSlaveGroups);
    5545    }
    5646
    5747    #region Register Content Events
    5848    protected override void DeregisterContentEvents() {
    59       // TODO: Deregister your event handlers on the Content here
     49      Content.ItemsAdded -= new Collections.CollectionItemsChangedEventHandler<Collections.IndexedItem<Resource>>(Content_ItemsAdded);
     50      Content.ItemsRemoved -= new Collections.CollectionItemsChangedEventHandler<Collections.IndexedItem<Resource>>(Content_ItemsRemoved);
    6051      base.DeregisterContentEvents();
    6152    }
    6253    protected override void RegisterContentEvents() {
    6354      base.RegisterContentEvents();
    64       // TODO: Register your event handlers on the Content here
     55      Content.ItemsAdded += new Collections.CollectionItemsChangedEventHandler<Collections.IndexedItem<Resource>>(Content_ItemsAdded);
     56      Content.ItemsRemoved += new Collections.CollectionItemsChangedEventHandler<Collections.IndexedItem<Resource>>(Content_ItemsRemoved);
    6557    }
    6658    #endregion
     
    7264        treeSlaveGroup.Nodes.Clear();
    7365      } else {
    74 
     66        treeSlaveGroup.Nodes.Clear();
     67
     68        //rebuild
    7569        TreeNode ungrp = new TreeNode("UNGROUPED");
    7670        ungrp.ImageIndex = treeSlaveGroup.ImageList.Images.Count - 1;
     
    9993            treeSlaveGroup.Nodes.Add(tn);
    10094
    101 
    10295          } else if (g.GetType() == typeof(Slave)) {
    10396            if (g.ParentResourceId == null) {
     
    120113
    121114    private void treeSlaveGroup_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) {
     115      if (slaveView.Content != null && slaveView.Content is SlaveGroup) {
     116        slaveView.Content.PropertyChanged -= new System.ComponentModel.PropertyChangedEventHandler(SlaveViewContent_PropertyChanged);
     117      }
     118
     119      slaveView.Content = (Resource)e.Node.Tag;
     120
    122121      if (e.Node.Tag.GetType() == typeof(Slave)) {
    123         slaveView.Content = (Slave)e.Node.Tag;
    124122        scheduleView.ResourceId = ((Slave)e.Node.Tag).Id;
    125       }
    126     }
    127 
    128     #region Event Handlers
    129     // TODO: Put event handlers here
    130     #endregion
     123      } else if (e.Node.Tag is SlaveGroup) {
     124        slaveView.Content.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(SlaveViewContent_PropertyChanged);
     125      }
     126    }
     127
     128    void SlaveViewContent_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) {
     129      OnContentChanged();
     130    }
     131
     132    private void btnAddGroup_Click(object sender, EventArgs e) {
     133      SlaveGroup newGroup = new SlaveGroup();
     134      newGroup.Name = "New Group";
     135      Content.Add(newGroup);
     136    }
     137
     138    void Content_ItemsRemoved(object sender, Collections.CollectionItemsChangedEventArgs<Collections.IndexedItem<Resource>> e) {
     139      OnContentChanged();
     140    }
     141
     142    void Content_ItemsAdded(object sender, Collections.CollectionItemsChangedEventArgs<Collections.IndexedItem<Resource>> e) {
     143      OnContentChanged();
     144    }
     145
     146    private void btnRemoveGroup_Click(object sender, EventArgs e) {
     147      if (treeSlaveGroup.SelectedNode != null && treeSlaveGroup.SelectedNode.Tag != null) {
     148        Content.Remove((Resource)treeSlaveGroup.SelectedNode.Tag);
     149      }
     150    }
     151
     152    private void btnSave_Click(object sender, EventArgs e) {
     153      foreach (Resource res in Content) {
     154        if (res is SlaveGroup && res.Id == Guid.Empty) {
     155          SlaveGroup slaveGroup = (SlaveGroup)res;
     156          ServiceLocator.Instance.CallHiveService(service => service.AddSlaveGroup(slaveGroup));
     157        }
     158        if (res.Id != Guid.Empty && res.Modified) {
     159          if (res is SlaveGroup) {
     160            ServiceLocator.Instance.CallHiveService(service => service.UpdateSlaveGroup((SlaveGroup)res));
     161          } else if (res is Slave) {
     162            ServiceLocator.Instance.CallHiveService(service => service.UpdateSlave((Slave)res));
     163          }
     164        }
     165      }
     166    }
     167
     168    private void treeSlaveGroup_DragDrop(object sender, DragEventArgs e) {
     169      if (e.Data.GetDataPresent("System.Windows.Forms.TreeNode", false)) {
     170        Point pt = ((TreeView)sender).PointToClient(new Point(e.X, e.Y));
     171        TreeNode destNode = ((TreeView)sender).GetNodeAt(pt);
     172        TreeNode newNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");
     173
     174        if (destNode.TreeView == newNode.TreeView) {
     175          SlaveGroup sgrp = null;
     176          if (destNode.Tag != null && destNode.Tag is SlaveGroup) {
     177            sgrp = (SlaveGroup)destNode.Tag;
     178          }
     179          if (destNode.Parent != null && destNode.Parent.Tag is SlaveGroup) {
     180            sgrp = (SlaveGroup)destNode.Parent.Tag;
     181          }
     182
     183          if (sgrp != null) {
     184            if (newNode.Tag != null && newNode.Tag is Slave) {
     185              Slave slave = (Slave)newNode.Tag;
     186              if (slave.ParentResourceId != sgrp.Id) {
     187                slave.ParentResourceId = sgrp.Id;
     188                OnContentChanged();
     189              }
     190            }
     191          }
     192        }
     193      }
     194    }
     195
     196    private void treeSlaveGroup_ItemDrag(object sender, ItemDragEventArgs e) {
     197      TreeNode sourceNode = (TreeNode)e.Item;
     198      DoDragDrop(sourceNode, DragDropEffects.All);
     199    }
     200
     201    private void treeSlaveGroup_DragEnter(object sender, DragEventArgs e) {
     202      e.Effect = DragDropEffects.Move;
     203    }
     204
     205    private void treeSlaveGroup_DragOver(object sender, DragEventArgs e) {
     206      e.Effect = DragDropEffects.Move;
     207    }
     208
     209    private void treeSlaveGroup_QueryContinueDrag(object sender, QueryContinueDragEventArgs e) {
     210      e.Action = DragAction.Continue;
     211    }
     212
     213    void ResetView() {
     214      treeSlaveGroup.Nodes.Clear();
     215      if (slaveView.Content != null && slaveView.Content is SlaveGroup) {
     216        slaveView.Content.PropertyChanged -= new System.ComponentModel.PropertyChangedEventHandler(SlaveViewContent_PropertyChanged);
     217      }
     218      slaveView.Content = null;
     219      scheduleView.ResourceId = Guid.Empty;
     220    }
     221
     222    private void UpdateSlaveGroups() {
     223      this.Invoke(new Action(ResetView));
     224      Content.Clear();
     225      IItemList<Resource> resources = new ItemList<Resource>();
     226
     227      ServiceLocator.Instance.CallHiveService(service => {
     228        service.GetSlaveGroups().ForEach(g => resources.Add(g));
     229        service.GetSlaves().ForEach(s => resources.Add(s));
     230      });
     231      Content = resources;
     232    }
     233
     234    private void UpdateSchedule() {
     235      Guid resourceId = scheduleView.ResourceId;
     236      if (resourceId != null) {
     237        ServiceLocator.Instance.CallHiveService(service => {
     238          var appointments = service.GetScheduleForResource(resourceId);
     239          ItemList<Appointment> ias = new ItemList<Appointment>();
     240          appointments.ForEach(a => ias.Add(a));
     241          scheduleView.Invoke(new Action(() => scheduleView.Content = ias));
     242        });
     243      }
     244    }
    131245  }
    132246}
Note: See TracChangeset for help on using the changeset viewer.