void OnGEMSProjectDataChanged(object sender, GEMSProject.DataChangedEventArgs e) { switch (e.changedType) { case GEMSProject.DataChangedEventArgs.DataChangeType.Initialized: CreateSingleRenders( ); CreateGridRender( ); CreateParallelRender( ); isFit = true; break; default: UpdateSingleRenders(e); break; } }
private void UpdateSingleRenders(GEMSProject.DataChangedEventArgs e) { if (e.changedSingle is GEMSSingle) { GEMSSingle changedSingle = e.changedSingle as GEMSSingle; switch (e.changedType) { case GEMSProject.DataChangedEventArgs.DataChangeType.SingleCutted: case GEMSProject.DataChangedEventArgs.DataChangeType.SingleDeleted: { //Delete one single painter GEMSSingleRender targetSingleRender = null; foreach (GEMSSingleRender singleRender in singleRenders) { if (singleRender.Source == changedSingle) { targetSingleRender = singleRender; } } this.singleRenders.Remove(targetSingleRender); targetSingleRender.Dispose( ); } break; case GEMSProject.DataChangedEventArgs.DataChangeType.SinglePasted: case GEMSProject.DataChangedEventArgs.DataChangeType.SingleCreated: //Create one single painter { GEMSSingleRender newSingleRender = new GEMSSingleRender(d3d, changedSingle, this); newSingleRender.Initialize( ); this.singleRenders.Add(newSingleRender); } break; } } //Re-generate bounding box GenerateBoundingBox( ); if (currentMode == SceneMode.Preview) { isFit = true; } }
/// <summary> /// Update the tree view controls based the new information of project /// </summary> void OnGEMSProjectDataChanged(object sender, GEMSProject.DataChangedEventArgs e) { if (sender is GEMSProject) { switch (e.changedType) { case GEMSProject.DataChangedEventArgs.DataChangeType.SingleEdited: { if ((tvObjects.SelectedNode.Tag is GEMSSingle) && (tvObjects.SelectedNode.Tag == e.changedSingle)) { tvObjects.SelectedNode.Text = e.changedSingle.Name; break; } } break; case GEMSProject.DataChangedEventArgs.DataChangeType.SingleCutted: case GEMSProject.DataChangedEventArgs.DataChangeType.SingleDeleted: { //Find the corresponding tree node TreeNode removedNode = null; int index = 0; foreach (TreeNode node in singleNodes.Nodes) { if (node.Tag == e.changedSingle) { removedNode = node; break; } index++; } if (removedNode != null) { singleNodes.Nodes.Remove(removedNode); if (index == singleNodes.Nodes.Count && index > 0) { index = singleNodes.Nodes.Count - 1; tvObjects.SelectedNode = singleNodes.Nodes[index]; } else { tvObjects.SelectedNode = root; } } break; } case GEMSProject.DataChangedEventArgs.DataChangeType.SinglePasted: case GEMSProject.DataChangedEventArgs.DataChangeType.SingleCreated: { if (e != null && e.changedSingle != null) { //Create a new node TreeNode newSingleNode = new TreeNode(e.changedSingle.Name); newSingleNode.Tag = e.changedSingle; foreach (GeometryOperation operation in e.changedSingle.Operations) { TreeNode operationNode = new TreeNode(operation.Name.ToString()); operationNode.Tag = operation; newSingleNode.Nodes.Add(operationNode); } //Add the single node at the tree tail this.singleNodes.Nodes.Add(newSingleNode); //Select and expand it newSingleNode.Expand(); tvObjects.SelectedNode = newSingleNode; } break; } case GEMSProject.DataChangedEventArgs.DataChangeType.Initialized: { //Clear all the old nodes singleNodes.Nodes.Clear(); root.Tag = m_project.Environment; //Add the single nodes to the tree foreach (GEMSSingle single in m_project.Singles) { TreeNode singleNode = new TreeNode(single.Name); singleNode.Tag = single; foreach (GeometryOperation operation in single.Operations) { TreeNode operationNode = new TreeNode(operation.Name.ToString()); operationNode.Tag = operation; singleNode.Nodes.Add(operationNode); } singleNodes.Nodes.Add(singleNode); } singleNodes.Expand(); this.tvObjects.SelectedNode = root; m_project.CurrentSelectedObject = root.Tag; } break; } } }