public override void Undo(TreemapGenerator oTreemapGenerator) { this.AssertValid(); base.Undo(oTreemapGenerator); oTreemapGenerator.Clear(); oTreemapGenerator.Nodes.Add(this.m_oInnerNode); }
/// <summary> /// Undoes this zoom action. /// </summary> /// /// <param name="oTreemapGenerator"> /// TreemapGenerator owned by the TreemapControl. /// </param> public override void Undo(TreemapGenerator oTreemapGenerator) { AssertValid(); base.Undo(oTreemapGenerator); oTreemapGenerator.Clear(); oTreemapGenerator.Nodes.Add(m_oOriginalTopLevelNode); }
//************************************************************************* // Methods //************************************************************************* public TreemapPanel(Form parent) { //set parent for callback m_ParentForm = parent; // Create the treemap drawing engine. m_TreemapGenerator = new TreemapGenerator(); // We want to do owner drawing, so handle the DrawItem event. m_TreemapGenerator.DrawItem += new TreemapGenerator.TreemapDrawItemEventHandler(DrawItem); m_Graphics = null; m_nodes = new ArrayList(); // Setup the treemap InitTree(); // Avoid flicker while drawing. According to "Windows Forms // Programming in C#," the following three styles are all required. this.SetStyle(ControlStyles.DoubleBuffer, true); this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); this.SetStyle(ControlStyles.UserPaint, true); // Force the panel to be redrawn when it's resized. this.ResizeRedraw = true; }
/// <summary> /// Undoes this zoom action. /// </summary> /// /// <param name="oTreemapGenerator"> /// TreemapGenerator owned by the TreemapControl. /// </param> /// /// <remarks> /// This must be overridden in the derived class, which should call this /// base method first and then repopulate the treemap to complete the undo. /// </remarks> public virtual void Undo(TreemapGenerator oTreemapGenerator) { AssertValid(); if (m_oParentOfZoomedNode != null) { Debug.Assert(oTreemapGenerator.Nodes.Count == 1); oTreemapGenerator.Nodes[0].PrivateSetParent(m_oParentOfZoomedNode); } }
/// <summary> /// Redoes this zoom action. /// </summary> /// /// <param name="oTreemapGenerator"> /// TreemapGenerator owned by the TreemapControl. /// </param> /// /// <remarks> /// This must be overridden in the derived class, which should call this /// base method first and then repopulate the treemap to complete the /// reversal. /// </remarks> public void Redo(TreemapGenerator oTreemapGenerator) { AssertValid(); Nodes nodes = oTreemapGenerator.Nodes; if (m_oZoomedNode == null) { m_oZoomActionHistoryList.RedoOriginalTopLevel(oTreemapGenerator); return; } oTreemapGenerator.Clear(); nodes.Add(m_oZoomedNode); }
public void Redo(TreemapGenerator oTreemapGenerator) { this.AssertValid(); Nodes nodes = oTreemapGenerator.Nodes; if (this.m_oZoomedNode == null) { this.m_oZoomActionHistoryList.RedoOriginalTopLevel(oTreemapGenerator); } else { oTreemapGenerator.Clear(); nodes.Add(this.m_oZoomedNode); } }
/// <summary> /// Repopulates the treemap with its original top-level nodes. /// </summary> /// /// <param name="oTreemapGenerator"> /// TreemapGenerator owned by the TreemapControl. /// </param> /// /// <remarks> /// Do not call this if <see cref="M:Microsoft.Research.CommunityTechnologies.TreemapNoDoc.ZoomActionHistoryList.SetOriginalTopLevelInfo(Microsoft.Research.CommunityTechnologies.Treemap.Node[],System.Single)" /> has not been /// called. /// </remarks> public void RedoOriginalTopLevel(TreemapGenerator oTreemapGenerator) { Debug.Assert(oTreemapGenerator != null); AssertValid(); oTreemapGenerator.Clear(); Nodes nodes = oTreemapGenerator.Nodes; Debug.Assert(m_aoOriginalTopLevelNodes != null); Debug.Assert(m_aoOriginalTopLevelNodes.Length > 0); Debug.Assert(m_fOriginalTopLevelEmptySpaceSizeMetric != float.MinValue); oTreemapGenerator.BeginUpdate(); Node[] aoOriginalTopLevelNodes = m_aoOriginalTopLevelNodes; foreach (Node node in aoOriginalTopLevelNodes) { nodes.Add(node); } nodes.EmptySpace.SizeMetric = m_fOriginalTopLevelEmptySpaceSizeMetric; oTreemapGenerator.EndUpdate(); }
public void RedoOriginalTopLevel(TreemapGenerator oTreemapGenerator) { Debug.Assert(oTreemapGenerator != null); this.AssertValid(); oTreemapGenerator.Clear(); Nodes nodes = oTreemapGenerator.Nodes; Debug.Assert(this.m_aoOriginalTopLevelNodes != null); Debug.Assert(this.m_aoOriginalTopLevelNodes.Length > 0); Debug.Assert(this.m_fOriginalTopLevelEmptySpaceSizeMetric != -3.40282347E+38f); oTreemapGenerator.BeginUpdate(); Node[] aoOriginalTopLevelNodes = this.m_aoOriginalTopLevelNodes; for (int i = 0; i < aoOriginalTopLevelNodes.Length; i++) { Node node = aoOriginalTopLevelNodes[i]; nodes.Add(node); } nodes.EmptySpace.SizeMetric = this.m_fOriginalTopLevelEmptySpaceSizeMetric; oTreemapGenerator.EndUpdate(); }
public override void Undo(TreemapGenerator oTreemapGenerator) { this.AssertValid(); base.Undo(oTreemapGenerator); this.m_oZoomActionHistoryList.RedoOriginalTopLevel(oTreemapGenerator); }