From: <mar...@us...> - 2006-08-11 16:22:53
|
Revision: 847 Author: marisademeglio Date: 2006-08-11 09:22:35 -0700 (Fri, 11 Aug 2006) ViewCVS: http://svn.sourceforge.net/urakawa/?rev=847&view=rev Log Message: ----------- Split TOC panel into several files Renamed section node functions as such. Modified Paths: -------------- trunk/urakawa/application/Obi/Obi/Commands/TOC/AddSection.cs trunk/urakawa/application/Obi/Obi/Commands/TOC/ChangeSectionNodeLevel.cs trunk/urakawa/application/Obi/Obi/Commands/TOC/MoveSectionNode.cs trunk/urakawa/application/Obi/Obi/Commands/TOC/Rename.cs trunk/urakawa/application/Obi/Obi/Commands/TOC/SectionNodeClipboard.cs trunk/urakawa/application/Obi/Obi/Obi.csproj trunk/urakawa/application/Obi/Obi/Project.TOC.cs trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs trunk/urakawa/application/Obi/Obi/Visitors/UndeleteSubtree.cs Added Paths: ----------- trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.ContextMenu.cs trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.SyncCallbacks.cs Modified: trunk/urakawa/application/Obi/Obi/Commands/TOC/AddSection.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/TOC/AddSection.cs 2006-08-11 16:04:03 UTC (rev 846) +++ trunk/urakawa/application/Obi/Obi/Commands/TOC/AddSection.cs 2006-08-11 16:22:35 UTC (rev 847) @@ -39,7 +39,7 @@ /// </summary> public override void Do() { - mProject.AddExistingSection(mNode, mParent, mIndex, mPosition, mOriginalLabel); + mProject.AddExistingSectionNode(mNode, mParent, mIndex, mPosition, mOriginalLabel); } /// <summary> Modified: trunk/urakawa/application/Obi/Obi/Commands/TOC/ChangeSectionNodeLevel.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/TOC/ChangeSectionNodeLevel.cs 2006-08-11 16:04:03 UTC (rev 846) +++ trunk/urakawa/application/Obi/Obi/Commands/TOC/ChangeSectionNodeLevel.cs 2006-08-11 16:22:35 UTC (rev 847) @@ -38,7 +38,7 @@ /// </summary> public override void Do() { - mProject.DecreaseNodeLevel(mProject, mNode); + mProject.DecreaseSectionNodeLevel(mProject, mNode); } /// <summary> @@ -46,7 +46,7 @@ /// </summary> public override void Undo() { - mProject.UndoDecreaseSectionLevel(mNode, mParent, mIndex, mPosition, mChildCount); + mProject.UndoDecreaseSectionNodeLevel(mNode, mParent, mIndex, mPosition, mChildCount); } } @@ -80,7 +80,7 @@ /// </summary> public override void Do() { - mProject.IncreaseNodeLevel(mProject, mNode); + mProject.IncreaseSectionNodeLevel(mProject, mNode); } /// <summary> @@ -88,7 +88,7 @@ /// </summary> public override void Undo() { - mProject.UndoIncreaseNodeLevel(mNode, mParent, mIndex, mPosition); + mProject.UndoIncreaseSectionNodeLevel(mNode, mParent, mIndex, mPosition); } } } Modified: trunk/urakawa/application/Obi/Obi/Commands/TOC/MoveSectionNode.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/TOC/MoveSectionNode.cs 2006-08-11 16:04:03 UTC (rev 846) +++ trunk/urakawa/application/Obi/Obi/Commands/TOC/MoveSectionNode.cs 2006-08-11 16:22:35 UTC (rev 847) @@ -36,7 +36,7 @@ /// </summary> public override void Do() { - mProject.MoveNodeDown(mProject, mNode); + mProject.MoveSectionNodeDown(mProject, mNode); } /// <summary> @@ -44,7 +44,7 @@ /// </summary> public override void Undo() { - mProject.UndoMoveNode(mNode, mParent, mIndex, mPosition); + mProject.UndoMoveSectionNode(mNode, mParent, mIndex, mPosition); } } @@ -78,7 +78,7 @@ /// </summary> public override void Do() { - mProject.MoveNodeUp(mProject, mNode); + mProject.MoveSectionNodeUp(mProject, mNode); } /// <summary> @@ -86,7 +86,7 @@ /// </summary> public override void Undo() { - mProject.UndoMoveNode(mNode, mParent, mIndex, mPosition); + mProject.UndoMoveSectionNode(mNode, mParent, mIndex, mPosition); } } } Modified: trunk/urakawa/application/Obi/Obi/Commands/TOC/Rename.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/TOC/Rename.cs 2006-08-11 16:04:03 UTC (rev 846) +++ trunk/urakawa/application/Obi/Obi/Commands/TOC/Rename.cs 2006-08-11 16:22:35 UTC (rev 847) @@ -31,12 +31,12 @@ public override void Do() { - mProject.RenameNode(mProject, mNode, mNewName); + mProject.RenameSectionNode(mProject, mNode, mNewName); } public override void Undo() { - mProject.RenameNode(mProject, mNode, mOldName); + mProject.RenameSectionNode(mProject, mNode, mOldName); } } } Modified: trunk/urakawa/application/Obi/Obi/Commands/TOC/SectionNodeClipboard.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Commands/TOC/SectionNodeClipboard.cs 2006-08-11 16:04:03 UTC (rev 846) +++ trunk/urakawa/application/Obi/Obi/Commands/TOC/SectionNodeClipboard.cs 2006-08-11 16:22:35 UTC (rev 847) @@ -36,7 +36,7 @@ /// </summary> public override void Do() { - mProject.DoCutTOCNode(mProject, mNode); + mProject.DoCutSectionNode(mProject, mNode); } /// <summary> @@ -44,7 +44,7 @@ /// </summary> public override void Undo() { - mProject.UndoCutNode(mNode, mParent, mIndex, mPosition); + mProject.UndoCutSectionNode(mNode, mParent, mIndex, mPosition); } } @@ -72,7 +72,7 @@ /// </summary> public override void Do() { - mProject.CopyTOCNode(mProject, mNode); + mProject.CopySectionNode(mProject, mNode); } /// <summary> @@ -80,7 +80,7 @@ /// </summary> public override void Undo() { - mProject.UndoCopyTOCNode(mNode); + mProject.UndoCopySectionNode(mNode); } } class PasteSectionNode : Command @@ -107,7 +107,7 @@ public override void Do() { - mProject.PasteTOCNode(mProject, mParent); + mProject.PasteSectionNode(mProject, mParent); } public override void Undo() Modified: trunk/urakawa/application/Obi/Obi/Obi.csproj =================================================================== --- trunk/urakawa/application/Obi/Obi/Obi.csproj 2006-08-11 16:04:03 UTC (rev 846) +++ trunk/urakawa/application/Obi/Obi/Obi.csproj 2006-08-11 16:22:35 UTC (rev 847) @@ -301,12 +301,18 @@ <Compile Include="UserControls\StripManagerPanel.Designer.cs"> <DependentUpon>StripManagerPanel.cs</DependentUpon> </Compile> + <Compile Include="UserControls\TOCPanel.ContextMenu.cs"> + <SubType>UserControl</SubType> + </Compile> <Compile Include="UserControls\TOCPanel.cs"> <SubType>UserControl</SubType> </Compile> <Compile Include="UserControls\TOCPanel.Designer.cs"> <DependentUpon>TOCPanel.cs</DependentUpon> </Compile> + <Compile Include="UserControls\TOCPanel.SyncCallbacks.cs"> + <SubType>UserControl</SubType> + </Compile> <Compile Include="UserProfile.cs" /> <Compile Include="Visitors\AssetCreator.cs" /> <Compile Include="Visitors\DescendantsVisitor.cs" /> Modified: trunk/urakawa/application/Obi/Obi/Project.TOC.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/Project.TOC.cs 2006-08-11 16:04:03 UTC (rev 846) +++ trunk/urakawa/application/Obi/Obi/Project.TOC.cs 2006-08-11 16:22:35 UTC (rev 847) @@ -13,16 +13,16 @@ public event Events.Node.AddedSectionNodeHandler AddedSectionNode; // a section node was added to the TOC public event Events.Node.RenamedNodeHandler RenamedNode; // a node was renamed in the presentation public event Events.Node.MovedNodeHandler MovedNode; // a node was moved in the presentation - public event Events.Node.DecreasedSectionNodeLevelHandler DecreasedNodeLevel; // a node's level was decreased in the presentation + public event Events.Node.DecreasedSectionNodeLevelHandler DecreasedSectionNodeLevel; // a node's level was decreased in the presentation public event Events.Node.MovedNodeHandler UndidMoveNode; // a node was restored to its previous location public event Events.Node.DeletedNodeHandler DeletedNode; // a node was deleted from the presentation //md: toc clipboard stuff - public event Events.Node.CutSectionNodeHandler CutTOCNode; - public event Events.Node.MovedNodeHandler UndidCutTOCNode; - public event Events.Node.CopiedSectionNodeHandler CopiedTOCNode; - public event Events.Node.CopiedSectionNodeHandler UndidCopyTOCNode; - public event Events.Node.PastedSectionNodeHandler PastedTOCNode; - public event Events.Node.UndidPasteSectionNodeHandler UndidPasteTOCNode; + public event Events.Node.CutSectionNodeHandler CutSectionNode; + public event Events.Node.MovedNodeHandler UndidCutSectionNode; + public event Events.Node.CopiedSectionNodeHandler CopiedSectionNode; + public event Events.Node.CopiedSectionNodeHandler UndidCopySectionNode; + public event Events.Node.PastedSectionNodeHandler PastedSectionNode; + public event Events.Node.UndidPasteSectionNodeHandler UndidPasteSectionNode; private CoreNode mClipboard; //clipboard for cut-copy-paste @@ -59,7 +59,7 @@ /// The context node may be null if this is the first node that is added, in which case /// we add a new child to the root (and not a sibling.) /// </summary> - public void CreateSiblingSection(object origin, CoreNode contextNode) + public void CreateSiblingSectionNode(object origin, CoreNode contextNode) { CoreNode parent = (CoreNode)(contextNode == null ? getPresentation().getRootNode() : contextNode.getParent()); CoreNode sibling = CreateSectionNode(); @@ -82,15 +82,15 @@ CommandCreated(this, new Events.Project.CommandCreatedEventArgs(command)); } - public void CreateSiblingSectionRequested(object sender, Events.Node.NodeEventArgs e) + public void CreateSiblingSectionNodeRequested(object sender, Events.Node.NodeEventArgs e) { - CreateSiblingSection(sender, e.Node); + CreateSiblingSectionNode(sender, e.Node); } /// <summary> /// Create a new child section for a given section. If the context node is null, add to the root of the tree. /// </summary> - public void CreateChildSection(object origin, CoreNode parent) + public void CreateChildSectionNode(object origin, CoreNode parent) { CoreNode child = CreateSectionNode(); if (parent == null) parent = getPresentation().getRootNode(); @@ -105,9 +105,9 @@ CommandCreated(this, new Events.Project.CommandCreatedEventArgs(command)); } - public void CreateChildSectionRequested(object sender, Events.Node.NodeEventArgs e) + public void CreateChildSectionNodeRequested(object sender, Events.Node.NodeEventArgs e) { - CreateChildSection(sender, e.Node); + CreateChildSectionNode(sender, e.Node); } /// <summary> @@ -118,7 +118,7 @@ /// <param name="index"></param> /// <param name="position"></param> /// <param name="originalLabel"></param> - public void AddExistingSection(CoreNode node, CoreNode parent, int index, int position, string originalLabel) + public void AddExistingSectionNode(CoreNode node, CoreNode parent, int index, int position, string originalLabel) { if (node.getParent() == null) parent.insert(node, index); if (originalLabel != null) Project.GetTextMedia(node).setText(originalLabel); @@ -171,7 +171,7 @@ /// <summary> /// Move a node up in the TOC. /// </summary> - public void MoveNodeUp(object origin, CoreNode node) + public void MoveSectionNodeUp(object origin, CoreNode node) { Commands.TOC.MoveSectionNodeUp command = null; @@ -185,7 +185,7 @@ (this, node, parent, parent.indexOf(node), visitor.Position); } - bool succeeded = ExecuteMoveNodeUp(node); + bool succeeded = ExecuteMoveSectionNodeUp(node); if (succeeded) { @@ -208,7 +208,7 @@ /// <param name="node"></param> /// <returns></returns> /// <remarks>a facade API function could do this for us</remarks> - private bool ExecuteMoveNodeUp(CoreNode node) + private bool ExecuteMoveSectionNodeUp(CoreNode node) { CoreNode newParent = null; int newIndex = 0; @@ -247,9 +247,9 @@ } } - public void MoveNodeUpRequested(object sender, Events.Node.NodeEventArgs e) + public void MoveSectionNodeUpRequested(object sender, Events.Node.NodeEventArgs e) { - MoveNodeUp(sender, e.Node); + MoveSectionNodeUp(sender, e.Node); } /// <summary> @@ -259,7 +259,7 @@ /// <param name="parent"></param> /// <param name="index"></param> /// <param name="position"></param> - public void UndoMoveNode(CoreNode node, CoreNode parent, int index, int position) + public void UndoMoveSectionNode(CoreNode node, CoreNode parent, int index, int position) { if (node.getParent() != null) node.detach(); parent.insert(node, index); @@ -275,12 +275,12 @@ /// <param name="origin"></param> /// <param name="node"></param> //added by marisa 01 aug 06 - public void UndoIncreaseNodeLevel(CoreNode node, CoreNode parent, int index, int position) + public void UndoIncreaseSectionNodeLevel(CoreNode node, CoreNode parent, int index, int position) { - UndoMoveNode(node, parent, index, position); + UndoMoveSectionNode(node, parent, index, position); } - public void MoveNodeDown(object origin, CoreNode node) + public void MoveSectionNodeDown(object origin, CoreNode node) { Commands.TOC.MoveSectionNodeDown command = null; @@ -294,7 +294,7 @@ (this, node, parent, parent.indexOf(node), visitor.Position); } - bool succeeded = ExecuteMoveNodeDown(node); + bool succeeded = ExecuteMoveSectionNodeDown(node); if (succeeded) { CoreNode newParent = (CoreNode)node.getParent(); @@ -318,7 +318,7 @@ /// <param name="node"></param> /// <returns></returns> ///<remarks>a facade API function could do this for us</remarks> - private bool ExecuteMoveNodeDown(CoreNode node) + private bool ExecuteMoveSectionNodeDown(CoreNode node) { CoreNode newParent = null; int newIndex = 0; @@ -355,12 +355,12 @@ } } - public void MoveNodeDownRequested(object sender, Events.Node.NodeEventArgs e) + public void MoveSectionNodeDownRequested(object sender, Events.Node.NodeEventArgs e) { - MoveNodeDown(sender, e.Node); + MoveSectionNodeDown(sender, e.Node); } - public void IncreaseNodeLevel(object origin, CoreNode node) + public void IncreaseSectionNodeLevel(object origin, CoreNode node) { Commands.TOC.IncreaseSectionNodeLevel command = null; @@ -374,7 +374,7 @@ (this, node, parent, parent.indexOf(node), visitor.Position); } - bool succeeded = ExecuteIncreaseNodeLevel(node); + bool succeeded = ExecuteIncreaseSectionNodeLevel(node); if (succeeded) { CoreNode newParent = (CoreNode)node.getParent(); @@ -399,7 +399,7 @@ /// <param name="node"></param> /// <returns></returns> /// <remarks>a facade API function could do this for us</remarks> - private bool ExecuteIncreaseNodeLevel(CoreNode node) + private bool ExecuteIncreaseSectionNodeLevel(CoreNode node) { int nodeIndex = ((CoreNode)node.getParent()).indexOf(node); @@ -423,12 +423,12 @@ } } - public void IncreaseNodeLevelRequested(object sender, Events.Node.NodeEventArgs e) + public void IncreaseSectionNodeLevelRequested(object sender, Events.Node.NodeEventArgs e) { - IncreaseNodeLevel(sender, e.Node); + IncreaseSectionNodeLevel(sender, e.Node); } - public void DecreaseNodeLevel(object origin, CoreNode node) + public void DecreaseSectionNodeLevel(object origin, CoreNode node) { Commands.TOC.DecreaseSectionNodeLevel command = null; @@ -442,7 +442,7 @@ (this, node, parent, parent.indexOf(node), visitor.Position, node.getChildCount()); } - bool succeeded = ExecuteDecreaseNodeLevel(node); + bool succeeded = ExecuteDecreaseSectionNodeLevel(node); if (succeeded) { CoreNode newParent = (CoreNode)node.getParent(); @@ -450,7 +450,7 @@ Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(node); getPresentation().getRootNode().acceptDepthFirst(visitor); - DecreasedNodeLevel(this, new Events.Node.NodeEventArgs(origin, node)); + DecreasedSectionNodeLevel(this, new Events.Node.NodeEventArgs(origin, node)); mUnsaved = true; StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); @@ -464,7 +464,7 @@ /// <param name="node"></param> /// <returns></returns> ///<remarks>a facade API function could do this for us</remarks> - private bool ExecuteDecreaseNodeLevel(CoreNode node) + private bool ExecuteDecreaseSectionNodeLevel(CoreNode node) { //the only reason we can't decrease the level is if the node is already //at the outermost level @@ -503,9 +503,9 @@ } - public void DecreaseNodeLevelRequested(object sender, Events.Node.NodeEventArgs e) + public void DecreaseSectionNodeLevelRequested(object sender, Events.Node.NodeEventArgs e) { - DecreaseNodeLevel(sender, e.Node); + DecreaseSectionNodeLevel(sender, e.Node); } /// <summary> @@ -518,7 +518,7 @@ /// <param name="position"></param> /// <param name="childCount">number of children this node used to have before the decrease level action happened</param> //added by marisa - public void UndoDecreaseSectionLevel(CoreNode node, CoreNode parent, int index, int position, int originalChildCount) + public void UndoDecreaseSectionNodeLevel(CoreNode node, CoreNode parent, int index, int position, int originalChildCount) { //error-checking if (node.getChildCount() < originalChildCount) @@ -573,7 +573,7 @@ /// <summary> /// Change the text label of a node. /// </summary> - public void RenameNode(object origin, CoreNode node, string label) + public void RenameSectionNode(object origin, CoreNode node, string label) { TextMedia text = GetTextMedia(node); Commands.TOC.Rename command = origin == this ? null : new Commands.TOC.Rename(this, node, text.getText(), label); @@ -584,19 +584,19 @@ if (command != null) CommandCreated(this, new Events.Project.CommandCreatedEventArgs(command)); } - public void RenameNodeRequested(object sender, Events.Node.RenameNodeEventArgs e) + public void RenameSectionNodeRequested(object sender, Events.Node.RenameNodeEventArgs e) { - RenameNode(sender, e.Node, e.Label); + RenameSectionNode(sender, e.Node, e.Label); } //md 20060810 - public void CutTOCNodeRequested(object sender, Events.Node.NodeEventArgs e) + public void CutSectionNodeRequested(object sender, Events.Node.NodeEventArgs e) { - DoCutTOCNode(sender, e.Node); + DoCutSectionNode(sender, e.Node); } //md 20060810 - public void DoCutTOCNode(object origin, CoreNode node) + public void DoCutSectionNode(object origin, CoreNode node) { if (node == null) return; @@ -615,7 +615,7 @@ mClipboard = node; node.detach(); - CutTOCNode(this, new Events.Node.NodeEventArgs(origin, node)); + CutSectionNode(this, new Events.Node.NodeEventArgs(origin, node)); mUnsaved = true; StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); @@ -623,24 +623,24 @@ } //md 20060810 - public void UndoCutNode(CoreNode node, CoreNode parent, int index, int position) + public void UndoCutSectionNode(CoreNode node, CoreNode parent, int index, int position) { if (node.getParent() != null) node.detach(); parent.insert(node, index); - UndidCutTOCNode(this, new Events.Node.MovedNodeEventArgs(this, node, parent, index, position)); + UndidCutSectionNode(this, new Events.Node.MovedNodeEventArgs(this, node, parent, index, position)); mUnsaved = true; StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); } //md 20060810 - public void CopyTOCNodeRequested(object sender, Events.Node.NodeEventArgs e) + public void CopySectionNodeRequested(object sender, Events.Node.NodeEventArgs e) { - CopyTOCNode(sender, e.Node); + CopySectionNode(sender, e.Node); } //md 20060810 - public void CopyTOCNode(object origin, CoreNode node) + public void CopySectionNode(object origin, CoreNode node) { if (node == null) return; @@ -654,7 +654,7 @@ //the actual copy operation mClipboard = node.copy(true); - CopiedTOCNode(this, new Events.Node.NodeEventArgs(origin, node)); + CopiedSectionNode(this, new Events.Node.NodeEventArgs(origin, node)); mUnsaved = true; StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); @@ -662,25 +662,25 @@ } //md 20060810 - public void UndoCopyTOCNode(CoreNode node) + public void UndoCopySectionNode(CoreNode node) { mClipboard = null; - UndidCopyTOCNode(this, new Events.Node.NodeEventArgs(this, node)); + UndidCopySectionNode(this, new Events.Node.NodeEventArgs(this, node)); mUnsaved = true; StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); } //md 20060810 - public void PasteTOCNodeRequested(object sender, Events.Node.NodeEventArgs e) + public void PasteSectionNodeRequested(object sender, Events.Node.NodeEventArgs e) { - PasteTOCNode(sender, e.Node); + PasteSectionNode(sender, e.Node); } //md 20060810 //"paste" will paste the clipboard contents as the first child of the given node - public void PasteTOCNode(object origin, CoreNode parent) + public void PasteSectionNode(object origin, CoreNode parent) { if (parent == null) return; @@ -701,7 +701,7 @@ Visitors.SectionNodePosition visitor = new Visitors.SectionNodePosition(pastedSection); getPresentation().getRootNode().acceptDepthFirst(visitor); - PastedTOCNode(this, new Events.Node.AddedSectionNodeEventArgs + PastedSectionNode(this, new Events.Node.AddedSectionNodeEventArgs (origin, pastedSection, parent.indexOf(pastedSection), visitor.Position)); mUnsaved = true; @@ -710,13 +710,13 @@ } //md 20060810 - public void UndoPasteTOCNode(CoreNode node) + public void UndoPasteSectionNode(CoreNode node) { mClipboard = node.copy(true); node.detach(); - UndidPasteTOCNode(this, new Events.Node.NodeEventArgs(this, mClipboard)); + UndidPasteSectionNode(this, new Events.Node.NodeEventArgs(this, mClipboard)); mUnsaved = true; StateChanged(this, new Events.Project.StateChangedEventArgs(Events.Project.StateChange.Modified)); Modified: trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs 2006-08-11 16:04:03 UTC (rev 846) +++ trunk/urakawa/application/Obi/Obi/UserControls/ProjectPanel.cs 2006-08-11 16:22:35 UTC (rev 847) @@ -28,36 +28,36 @@ // Reset the handlers from the previous project if (mProject != null) { - mTOCPanel.RequestToAddSiblingSection -= new Events.Node.RequestToAddSiblingNodeHandler(mProject.CreateSiblingSectionRequested); + mTOCPanel.RequestToAddSiblingSection -= new Events.Node.RequestToAddSiblingNodeHandler(mProject.CreateSiblingSectionNodeRequested); mStripManagerPanel.AddSiblingSection -= - new Events.Node.RequestToAddSiblingNodeHandler(mProject.CreateSiblingSectionRequested); + new Events.Node.RequestToAddSiblingNodeHandler(mProject.CreateSiblingSectionNodeRequested); mProject.AddedSectionNode -= new Events.Node.AddedSectionNodeHandler(mTOCPanel.SyncAddedSectionNode); mProject.AddedSectionNode -= new Events.Node.AddedSectionNodeHandler(mStripManagerPanel.SyncAddedSectionNode); - mTOCPanel.RequestToAddChildSection -= new Events.Node.RequestToAddChildSectionNodeHandler(mProject.CreateChildSectionRequested); + mTOCPanel.RequestToAddChildSectionNode -= new Events.Node.RequestToAddChildSectionNodeHandler(mProject.CreateChildSectionNodeRequested); //these are all events related to moving nodes up and down - mTOCPanel.RequestToMoveSectionUp -= new Events.Node.RequestToMoveSectionNodeUpHandler(mProject.MoveNodeUpRequested); - mTOCPanel.RequestToMoveSectionDown -= new Events.Node.RequestToMoveSectionNodeDownHandler(mProject.MoveNodeDownRequested); - mProject.MovedNode -= new Events.Node.MovedNodeHandler(mTOCPanel.SyncMovedNode); + mTOCPanel.RequestToMoveSectionNodeUp -= new Events.Node.RequestToMoveSectionNodeUpHandler(mProject.MoveSectionNodeUpRequested); + mTOCPanel.RequestToMoveSectionNodeDown -= new Events.Node.RequestToMoveSectionNodeDownHandler(mProject.MoveSectionNodeDownRequested); + mProject.MovedNode -= new Events.Node.MovedNodeHandler(mTOCPanel.SyncMovedSectionNode); mProject.MovedNode -= new Events.Node.MovedNodeHandler(mStripManagerPanel.SyncMovedNode); - mProject.UndidMoveNode -= new Events.Node.MovedNodeHandler(mTOCPanel.SyncMovedNode); + mProject.UndidMoveNode -= new Events.Node.MovedNodeHandler(mTOCPanel.SyncMovedSectionNode); mProject.UndidMoveNode -= new Events.Node.MovedNodeHandler(mStripManagerPanel.SyncMovedNode); - mTOCPanel.RequestToIncreaseSectionLevel -= new Events.Node.RequestToIncreaseSectionNodeLevelHandler(mProject.IncreaseNodeLevelRequested); + mTOCPanel.RequestToIncreaseSectionNodeLevel -= new Events.Node.RequestToIncreaseSectionNodeLevelHandler(mProject.IncreaseSectionNodeLevelRequested); //marisa: the former "mProject.IncreasedSectionLevel" event is now handled by MovedNode - mTOCPanel.RequestToDecreaseSectionLevel -= new Events.Node.RequestToDecreaseSectionNodeLevelHandler(mProject.DecreaseNodeLevelRequested); - mProject.DecreasedNodeLevel -= new Events.Node.DecreasedSectionNodeLevelHandler(mTOCPanel.SyncDecreasedNodeLevel); + mTOCPanel.RequestToDecreaseSectionNodeLevel -= new Events.Node.RequestToDecreaseSectionNodeLevelHandler(mProject.DecreaseSectionNodeLevelRequested); + mProject.DecreasedSectionNodeLevel -= new Events.Node.DecreasedSectionNodeLevelHandler(mTOCPanel.SyncDecreasedSectionNodeLevel); - mTOCPanel.RequestToRenameSection -= new Events.Node.RequestToRenameNodeHandler(mProject.RenameNodeRequested); - mStripManagerPanel.RenameSection -= new Events.Node.RequestToRenameNodeHandler(mProject.RenameNodeRequested); - mProject.RenamedNode -= new Events.Node.RenamedNodeHandler(mTOCPanel.SyncRenamedNode); + mTOCPanel.RequestToRenameSectionNode -= new Events.Node.RequestToRenameNodeHandler(mProject.RenameSectionNodeRequested); + mStripManagerPanel.RenameSection -= new Events.Node.RequestToRenameNodeHandler(mProject.RenameSectionNodeRequested); + mProject.RenamedNode -= new Events.Node.RenamedNodeHandler(mTOCPanel.SyncRenamedSectionNode); mProject.RenamedNode -= new Events.Node.RenamedNodeHandler(mStripManagerPanel.SyncRenamedNode); - mTOCPanel.RequestToDeleteSection -= new Events.Node.RequestToDeleteNodeHandler(mProject.RemoveNodeRequested); - mProject.DeletedNode -= new Events.Node.DeletedNodeHandler(mTOCPanel.SyncDeletedNode); + mTOCPanel.RequestToDeleteSectionNode -= new Events.Node.RequestToDeleteNodeHandler(mProject.RemoveNodeRequested); + mProject.DeletedNode -= new Events.Node.DeletedNodeHandler(mTOCPanel.SyncDeletedSectionNode); mProject.DeletedNode -= new Events.Node.DeletedNodeHandler(mStripManagerPanel.SyncDeletedNode); mStripManagerPanel.ImportAudioAssetRequested -= new Events.Strip.RequestToImportAssetHandler(mProject.ImportAssetRequested); @@ -76,52 +76,52 @@ mProject.DeletedPhraseNode -= new Events.Node.DeletedNodeHandler(mStripManagerPanel.SyncDeleteAudioBlock); //md: toc clipboard features - mTOCPanel.RequestToCutNode -= new Events.Node.RequestToCutSectionNodeHandler(mProject.CutTOCNodeRequested); - mProject.CutTOCNode -= new Events.Node.CutSectionNodeHandler(mTOCPanel.SyncCutNode); - mProject.UndidCutTOCNode -= new Events.Node.MovedNodeHandler(mTOCPanel.SyncUndidCutNode); + mTOCPanel.RequestToCutSectionNode -= new Events.Node.RequestToCutSectionNodeHandler(mProject.CutSectionNodeRequested); + mProject.CutSectionNode -= new Events.Node.CutSectionNodeHandler(mTOCPanel.SyncCutSectionNode); + mProject.UndidCutSectionNode -= new Events.Node.MovedNodeHandler(mTOCPanel.SyncUndidCutSectionNode); - mTOCPanel.RequestToCopyNode -= new Events.Node.RequestToCopySectionNodeHandler(mProject.CopyTOCNodeRequested); - mProject.CopiedTOCNode -= new Events.Node.CopiedSectionNodeHandler(mTOCPanel.SyncCopiedNode); - mProject.UndidCopyTOCNode -= new Events.Node.CopiedSectionNodeHandler(mTOCPanel.SyncUndidCopyNode); + mTOCPanel.RequestToCopySectionNode -= new Events.Node.RequestToCopySectionNodeHandler(mProject.CopySectionNodeRequested); + mProject.CopiedSectionNode -= new Events.Node.CopiedSectionNodeHandler(mTOCPanel.SyncCopiedSectionNode); + mProject.UndidCopySectionNode -= new Events.Node.CopiedSectionNodeHandler(mTOCPanel.SyncUndidCopySectionNode); - mTOCPanel.RequestToPasteNode -= new Events.Node.RequestToPasteSectionNodeHandler(mProject.PasteTOCNodeRequested); - mProject.PastedTOCNode -= new Events.Node.PastedSectionNodeHandler(mTOCPanel.SyncPastedNode); - mProject.UndidPasteTOCNode -= new Events.Node.UndidPasteSectionNodeHandler(mTOCPanel.SyncUndidPasteNode); + mTOCPanel.RequestToPasteSectionNode -= new Events.Node.RequestToPasteSectionNodeHandler(mProject.PasteSectionNodeRequested); + mProject.PastedSectionNode -= new Events.Node.PastedSectionNodeHandler(mTOCPanel.SyncPastedSectionNode); + mProject.UndidPasteSectionNode -= new Events.Node.UndidPasteSectionNodeHandler(mTOCPanel.SyncUndidPasteSectionNode); } // Set up the handlers for the new project if (value != null) { - mTOCPanel.RequestToAddSiblingSection += new Events.Node.RequestToAddSiblingNodeHandler(value.CreateSiblingSectionRequested); + mTOCPanel.RequestToAddSiblingSection += new Events.Node.RequestToAddSiblingNodeHandler(value.CreateSiblingSectionNodeRequested); mStripManagerPanel.AddSiblingSection += - new Events.Node.RequestToAddSiblingNodeHandler(value.CreateSiblingSectionRequested); + new Events.Node.RequestToAddSiblingNodeHandler(value.CreateSiblingSectionNodeRequested); value.AddedSectionNode += new Events.Node.AddedSectionNodeHandler(mTOCPanel.SyncAddedSectionNode); value.AddedSectionNode += new Events.Node.AddedSectionNodeHandler(mStripManagerPanel.SyncAddedSectionNode); - mTOCPanel.RequestToAddChildSection += new Events.Node.RequestToAddChildSectionNodeHandler(value.CreateChildSectionRequested); + mTOCPanel.RequestToAddChildSectionNode += new Events.Node.RequestToAddChildSectionNodeHandler(value.CreateChildSectionNodeRequested); //these all relate to moving nodes up and down - mTOCPanel.RequestToMoveSectionUp += new Events.Node.RequestToMoveSectionNodeUpHandler(value.MoveNodeUpRequested); - mTOCPanel.RequestToMoveSectionDown += new Events.Node.RequestToMoveSectionNodeDownHandler(value.MoveNodeDownRequested); - value.MovedNode += new Events.Node.MovedNodeHandler(mTOCPanel.SyncMovedNode); + mTOCPanel.RequestToMoveSectionNodeUp += new Events.Node.RequestToMoveSectionNodeUpHandler(value.MoveSectionNodeUpRequested); + mTOCPanel.RequestToMoveSectionNodeDown += new Events.Node.RequestToMoveSectionNodeDownHandler(value.MoveSectionNodeDownRequested); + value.MovedNode += new Events.Node.MovedNodeHandler(mTOCPanel.SyncMovedSectionNode); value.MovedNode += new Events.Node.MovedNodeHandler(mStripManagerPanel.SyncMovedNode); - value.UndidMoveNode += new Events.Node.MovedNodeHandler(mTOCPanel.SyncMovedNode); + value.UndidMoveNode += new Events.Node.MovedNodeHandler(mTOCPanel.SyncMovedSectionNode); value.UndidMoveNode += new Events.Node.MovedNodeHandler(mStripManagerPanel.SyncMovedNode); - mTOCPanel.RequestToIncreaseSectionLevel += - new Events.Node.RequestToIncreaseSectionNodeLevelHandler(value.IncreaseNodeLevelRequested); + mTOCPanel.RequestToIncreaseSectionNodeLevel += + new Events.Node.RequestToIncreaseSectionNodeLevelHandler(value.IncreaseSectionNodeLevelRequested); //marisa: the former "mProject.IncreasedSectionLevel" event is now handled by MovedNode - mTOCPanel.RequestToDecreaseSectionLevel += - new Events.Node.RequestToDecreaseSectionNodeLevelHandler(value.DecreaseNodeLevelRequested); - value.DecreasedNodeLevel += new Events.Node.DecreasedSectionNodeLevelHandler(mTOCPanel.SyncDecreasedNodeLevel); + mTOCPanel.RequestToDecreaseSectionNodeLevel += + new Events.Node.RequestToDecreaseSectionNodeLevelHandler(value.DecreaseSectionNodeLevelRequested); + value.DecreasedSectionNodeLevel += new Events.Node.DecreasedSectionNodeLevelHandler(mTOCPanel.SyncDecreasedSectionNodeLevel); - mTOCPanel.RequestToRenameSection += new Events.Node.RequestToRenameNodeHandler(value.RenameNodeRequested); - mStripManagerPanel.RenameSection += new Events.Node.RequestToRenameNodeHandler(value.RenameNodeRequested); - value.RenamedNode += new Events.Node.RenamedNodeHandler(mTOCPanel.SyncRenamedNode); + mTOCPanel.RequestToRenameSectionNode += new Events.Node.RequestToRenameNodeHandler(value.RenameSectionNodeRequested); + mStripManagerPanel.RenameSection += new Events.Node.RequestToRenameNodeHandler(value.RenameSectionNodeRequested); + value.RenamedNode += new Events.Node.RenamedNodeHandler(mTOCPanel.SyncRenamedSectionNode); value.RenamedNode += new Events.Node.RenamedNodeHandler(mStripManagerPanel.SyncRenamedNode); - mTOCPanel.RequestToDeleteSection += new Events.Node.RequestToDeleteNodeHandler(value.RemoveNodeRequested); - value.DeletedNode += new Events.Node.DeletedNodeHandler(mTOCPanel.SyncDeletedNode); + mTOCPanel.RequestToDeleteSectionNode += new Events.Node.RequestToDeleteNodeHandler(value.RemoveNodeRequested); + value.DeletedNode += new Events.Node.DeletedNodeHandler(mTOCPanel.SyncDeletedSectionNode); value.DeletedNode += new Events.Node.DeletedNodeHandler(mStripManagerPanel.SyncDeletedNode); // Block events @@ -152,17 +152,17 @@ //md: clipboard in the TOC - mTOCPanel.RequestToCutNode += new Events.Node.RequestToCutSectionNodeHandler(value.CutTOCNodeRequested); - value.CutTOCNode += new Events.Node.CutSectionNodeHandler(mTOCPanel.SyncCutNode); - value.UndidCutTOCNode += new Events.Node.MovedNodeHandler(mTOCPanel.SyncUndidCutNode); + mTOCPanel.RequestToCutSectionNode += new Events.Node.RequestToCutSectionNodeHandler(value.CutSectionNodeRequested); + value.CutSectionNode += new Events.Node.CutSectionNodeHandler(mTOCPanel.SyncCutSectionNode); + value.UndidCutSectionNode += new Events.Node.MovedNodeHandler(mTOCPanel.SyncUndidCutSectionNode); - mTOCPanel.RequestToCopyNode += new Events.Node.RequestToCopySectionNodeHandler(value.CopyTOCNodeRequested); - value.CopiedTOCNode += new Events.Node.CopiedSectionNodeHandler(mTOCPanel.SyncCopiedNode); - value.UndidCopyTOCNode += new Events.Node.CopiedSectionNodeHandler(mTOCPanel.SyncUndidCopyNode); + mTOCPanel.RequestToCopySectionNode += new Events.Node.RequestToCopySectionNodeHandler(value.CopySectionNodeRequested); + value.CopiedSectionNode += new Events.Node.CopiedSectionNodeHandler(mTOCPanel.SyncCopiedSectionNode); + value.UndidCopySectionNode += new Events.Node.CopiedSectionNodeHandler(mTOCPanel.SyncUndidCopySectionNode); - mTOCPanel.RequestToPasteNode += new Events.Node.RequestToPasteSectionNodeHandler(value.PasteTOCNodeRequested); - value.PastedTOCNode += new Events.Node.PastedSectionNodeHandler(mTOCPanel.SyncPastedNode); - value.UndidPasteTOCNode += new Events.Node.UndidPasteSectionNodeHandler(mTOCPanel.SyncUndidPasteNode); + mTOCPanel.RequestToPasteSectionNode += new Events.Node.RequestToPasteSectionNodeHandler(value.PasteSectionNodeRequested); + value.PastedSectionNode += new Events.Node.PastedSectionNodeHandler(mTOCPanel.SyncPastedSectionNode); + value.UndidPasteSectionNode += new Events.Node.UndidPasteSectionNodeHandler(mTOCPanel.SyncUndidPasteSectionNode); } mProject = value; Added: trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.ContextMenu.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.ContextMenu.cs (rev 0) +++ trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.ContextMenu.cs 2006-08-11 16:22:35 UTC (rev 847) @@ -0,0 +1,136 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Text; +using System.Windows.Forms; +using urakawa.media; +using System.Collections; + + +namespace Obi.UserControls +{ + public partial class TOCPanel + { + public event Events.Node.RequestToAddSiblingNodeHandler RequestToAddSiblingSection; + public event Events.Node.RequestToAddChildSectionNodeHandler RequestToAddChildSectionNode; + public event Events.Node.RequestToDecreaseSectionNodeLevelHandler RequestToDecreaseSectionNodeLevel; + public event Events.Node.RequestToIncreaseSectionNodeLevelHandler RequestToIncreaseSectionNodeLevel; + public event Events.Node.RequestToMoveSectionNodeDownHandler RequestToMoveSectionNodeDown; + public event Events.Node.RequestToMoveSectionNodeUpHandler RequestToMoveSectionNodeUp; + public event Events.Node.RequestToRenameNodeHandler RequestToRenameSectionNode; + public event Events.Node.RequestToDeleteNodeHandler RequestToDeleteSectionNode; + + //md: clipboard events + public event Events.Node.RequestToCutSectionNodeHandler RequestToCutSectionNode; + public event Events.Node.RequestToCopySectionNodeHandler RequestToCopySectionNode; + public event Events.Node.RequestToPasteSectionNodeHandler RequestToPasteSectionNode; + + /* + * *************************************** + * These functions "...ToolStripMenuItem_Click" are triggered + * by the TOC panel's context menu + */ + + // These are internal so that the main menu can also link to them once the project is open. + + /// <summary> + /// Triggered by the "add sibling section" menu item. + /// </summary> + internal void mAddSectionToolStripMenuItem_Click(object sender, EventArgs e) + { + RequestToAddSiblingSection(this, + new Events.Node.NodeEventArgs(this, GetSelectedSection())); + } + + /// <summary> + /// Triggered by the "add sub-section" menu item. + /// </summary> + internal void mAddSubSectionToolStripMenuItem_Click(object sender, EventArgs e) + { + RequestToAddChildSectionNode(this, + new Events.Node.NodeEventArgs(this, GetSelectedSection())); + } + + /// <summary> + /// Triggered by the "move section up" menu item. + /// </summary> + internal void mMoveUpToolStripMenuItem_Click(object sender, EventArgs e) + { + RequestToMoveSectionNodeUp(this, + new Events.Node.NodeEventArgs(this, GetSelectedSection())); + } + + /// <summary> + /// Triggered by the "delete section" menu item. + /// </summary> + internal void mDeleteSectionToolStripMenuItem_Click(object sender, EventArgs e) + { + RequestToDeleteSectionNode(this, new Events.Node.NodeEventArgs(this, GetSelectedSection())); + } + + internal void mRenameToolStripMenuItem_Click(object sender, EventArgs e) + { + TreeNode sel = this.mTocTree.SelectedNode; + sel.BeginEdit(); + } + + internal void mMoveDownToolStripMenuItem_Click(object sender, EventArgs e) + { + RequestToMoveSectionNodeDown(this, + new Events.Node.NodeEventArgs(this, GetSelectedSection())); + } + + internal void increaseLevelToolStripMenuItem_Click(object sender, EventArgs e) + { + RequestToIncreaseSectionNodeLevel(this, + new Events.Node.NodeEventArgs(this, GetSelectedSection())); + } + + internal void decreaseLevelToolStripMenuItem_Click(object sender, EventArgs e) + { + RequestToDecreaseSectionNodeLevel(this, + new Events.Node.NodeEventArgs(this, GetSelectedSection())); + } + + private void tESTShallowDeleteToolStripMenuItem_Click_1(object sender, EventArgs e) + { + SyncShallowDeletedSectionNode(this, + new Events.Node.NodeEventArgs(this, GetSelectedSection())); + } + + + /// <summary> + /// If a node is selected, set focus on that node in the Strip view. + /// </summary> + // mg20060804 + internal void mShowInStripViewToolStripMenuItem_Click(object sender, EventArgs e) + { + //mg 20060804 + if (GetSelectedSection() != null) + { + ProjectPanel.StripManager.SelectedSectionNode = GetSelectedSection(); + if (ProjectPanel.StripManager.SelectedSectionNode != null) + ProjectPanel.StripManager.SelectedSectionStrip.Focus(); + } + } + + //md 20060810 + internal void cutSectionToolStripMenuItem_Click(object sender, EventArgs e) + { + RequestToCutSectionNode(this, new Events.Node.NodeEventArgs(this, GetSelectedSection())); + } + + //md 20060810 + internal void copySectionToolStripMenuItem_Click(object sender, EventArgs e) + { + RequestToCopySectionNode(this, new Events.Node.NodeEventArgs(this, GetSelectedSection())); + } + + internal void mPasteSectionToolStripMenuItem_Click(object sender, EventArgs e) + { + RequestToPasteSectionNode(this, new Events.Node.NodeEventArgs(this, GetSelectedSection())); + } + } +} Added: trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.SyncCallbacks.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.SyncCallbacks.cs (rev 0) +++ trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.SyncCallbacks.cs 2006-08-11 16:22:35 UTC (rev 847) @@ -0,0 +1,309 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Text; +using System.Windows.Forms; +using urakawa.media; +using System.Collections; + + +namespace Obi.UserControls +{ + public partial class TOCPanel + { + /// <summary> + /// Change the label of the tree view node. + /// This is in response to external renames (i.e. those not originating from within the tree view itself) + /// </summary> + /// <param name="sender">The sender of this event notification</param> + /// <param name="e"><see cref="e.Node"/> is the tree node being renamed.</param> + internal void SyncRenamedSectionNode(object sender, Events.Node.RenameNodeEventArgs e) + { + if (e.Origin != this) + { + TreeNode treeNode = FindTreeNodeWithoutLabel(e.Node); + treeNode.Text = e.Label; + } + } + + + /// <summary> + /// Add a section to the tree view. If we were the ones to request its addition, + /// also start editing its label right now. + /// + /// The new heading has already been created as a <see cref="CoreNode"/>. + /// It is in its correct place in the core tree. + /// Now we need to add it as a <see cref="TreeNode"/> so + /// it shows up in the tree view. Internally, the new <see cref="TreeNode"/> + /// is given the key of its <see cref="CoreNode"/> object's hash code. + /// This makes it faster to find a <see cref="TreeNode"/> + /// based on a given <see cref="CoreNode"/>. + /// </summary> + /// <param name="sender">The sender of this event notification</param> + /// <param name="e"><see cref="e.Node"/> is the new heading to add to the tree</param> + + internal void SyncAddedSectionNode(object sender, Events.Node.AddedSectionNodeEventArgs e) + { + TreeNode newTreeNode; + string label = Project.GetTextMedia(e.Node).getText(); + if (e.Node.getParent().getParent() != null) + { + TreeNode relTreeNode = FindTreeNodeFromCoreNode((urakawa.core.CoreNode)e.Node.getParent()); + newTreeNode = relTreeNode.Nodes.Insert(e.Index, e.Node.GetHashCode().ToString(), label); + } + else + { + newTreeNode = mTocTree.Nodes.Insert(e.Index, e.Node.GetHashCode().ToString(), label); + } + newTreeNode.Tag = e.Node; + newTreeNode.ExpandAll(); + newTreeNode.EnsureVisible(); + mTocTree.SelectedNode = newTreeNode; + //start editing if the request to add a node happened in the tree view + if (e.Origin.Equals(this)) + { + newTreeNode.BeginEdit(); + } + } + + + + /// <summary> + /// Remove a node from the tree view. + /// This will remove the whole subtree. + /// </summary> + /// <param name="sender">The sender of this event notification</param> + /// <param name="e"><see cref="e.Node"/> is the node to be removed.</param> + internal void SyncDeletedSectionNode(object sender, Events.Node.NodeEventArgs e) + { + if (e.Node != null) + { + TreeNode treeNode = FindTreeNodeFromCoreNode(e.Node); + treeNode.Remove(); + } + } + + /// <summary> + /// This function deletes a node and promotes its children to be one level shallower + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + internal void SyncShallowDeletedSectionNode(object sender, Events.Node.NodeEventArgs e) + { + System.Windows.Forms.TreeNode selected = FindTreeNodeFromCoreNode(e.Node); + TreeNode newSelection = null; + + //save the first child as our new selection (for the end of this function) + if (selected.Nodes.Count > 0) + { + newSelection = selected.Nodes[0]; + } + + foreach (TreeNode childnode in selected.Nodes) + { + ExecuteDecreaseNodeLevel(childnode); + } + + selected.Remove(); + + //make the currently selected node something reasonable + if (newSelection != null) + { + mTocTree.SelectedNode = newSelection; + } + + } + + internal void SyncMovedSectionNode(object sender, Events.Node.MovedNodeEventArgs e) + { + TreeNode selected = FindTreeNodeFromCoreNode(e.Node); + + TreeNode parent = Project.GetNodeType(e.Parent) == NodeType.Section ? FindTreeNodeFromCoreNode(e.Parent) : null; + + if (selected == null) return; + + TreeNode clone = (TreeNode)selected.Clone(); + + selected.Remove(); + + TreeNodeCollection siblings = null; + if (parent == null) + { + siblings = mTocTree.Nodes; + } + else + { + siblings = parent.Nodes; + } + + siblings.Insert(e.Index, clone); + clone.ExpandAll(); + clone.EnsureVisible(); + mTocTree.SelectedNode = clone; + } + + /// <summary> + /// Decrease the node level. + /// When a node becomes shallower, it adopts its former younger siblings. + /// We'll have to get feedback on how users like this behavior. + /// </summary> + /// <param name="sender"></param> + /// <param name="e"></param> + internal void SyncDecreasedSectionNodeLevel(object sender, Events.Node.NodeEventArgs e) + { + TreeNode selected = FindTreeNodeFromCoreNode(e.Node); + ExecuteDecreaseNodeLevel(selected); + } + + //this logic was separated from the SyncXXX function because + //we need to use it separately during a shallow delete + internal void ExecuteDecreaseNodeLevel(TreeNode selectedNode) + { + //the only reason we can't decrease the level is if the node is already + //at the outermost level + if (selectedNode.Parent == null) + { + return; + } + + ArrayList futureChildren = new ArrayList(); + + int idx = 0; + //make copies of our future children, and remove them from the tree + foreach (TreeNode node in selectedNode.Parent.Nodes) + { + if (node.Index > selectedNode.Index) + { + futureChildren.Add(node.Clone()); + node.Remove(); + idx++; + } + } + + TreeNodeCollection siblingCollection = null; + + //move it out a level + if (selectedNode.Parent.Parent != null) + { + siblingCollection = selectedNode.Parent.Parent.Nodes; + } + else + { + siblingCollection = mTocTree.Nodes; + } + + int newIndex = selectedNode.Parent.Index + 1; + + TreeNode clone = (TreeNode)selectedNode.Clone(); + selectedNode.Remove(); + + siblingCollection.Insert(newIndex, clone); + + foreach (object node in futureChildren) + { + clone.Nodes.Add((TreeNode)node); + } + + clone.ExpandAll(); + clone.EnsureVisible(); + mTocTree.SelectedNode = clone; + } + + //md 20060810 + internal void SyncCutSectionNode(object sender, Events.Node.NodeEventArgs e) + { + TreeNode selected = FindTreeNodeFromCoreNode(e.Node); + if (selected != null) + { + mClipboard = (TreeNode)selected.Clone(); + selected.Remove(); + } + } + + //md 20060810 + internal void SyncUndidCutSectionNode(object sender, Events.Node.MovedNodeEventArgs e) + { + if (mClipboard == null) return; + + TreeNode parent = Project.GetNodeType(e.Parent) == NodeType.Section ? FindTreeNodeFromCoreNode(e.Parent) : null; + + TreeNodeCollection siblings = null; + if (parent == null) + { + siblings = mTocTree.Nodes; + } + else + { + siblings = parent.Nodes; + } + + TreeNode uncutNode = mClipboard; + + siblings.Insert(e.Index, uncutNode); + uncutNode.ExpandAll(); + uncutNode.EnsureVisible(); + mTocTree.SelectedNode = uncutNode; + + mClipboard = null; + } + + //md 20060810 + internal void SyncCopiedSectionNode(object sender, Events.Node.NodeEventArgs e) + { + TreeNode selected = FindTreeNodeFromCoreNode(e.Node); + + if (selected != null) + { + mClipboard = (TreeNode)selected.Clone(); + } + } + + //md 20060810 + internal void SyncUndidCopySectionNode(object sender, Events.Node.NodeEventArgs e) + { + mClipboard = null; + } + + //md 20060810 + //e.Node is what was just pasted in + internal void SyncPastedSectionNode(object sender, Events.Node.AddedSectionNodeEventArgs e) + { + if (mClipboard == null) return; + + urakawa.core.CoreNode nodeParent = (urakawa.core.CoreNode)e.Node.getParent(); + + TreeNode parent = Project.GetNodeType(nodeParent) == NodeType.Section ? FindTreeNodeFromCoreNode(nodeParent) : null; + string label = Project.GetTextMedia(e.Node).getText(); + + TreeNodeCollection siblings = null; + if (parent == null) + { + siblings = mTocTree.Nodes; + } + else + { + siblings = parent.Nodes; + } + + siblings.Insert(e.Index, mClipboard); + + //don't clear the clipboard, we can use it again + } + + internal void SyncUndidPasteSectionNode(object sender, Events.Node.NodeEventArgs e) + { + TreeNode pastedNode = FindTreeNodeFromCoreNode(e.Node); + + if (pastedNode != null) + { + //put it back on the clipboard + mClipboard = (TreeNode)pastedNode.Clone(); + pastedNode.Remove(); + } + + } + + } +} Modified: trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs =================================================================== --- trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs 2006-08-11 16:04:03 UTC (rev 846) +++ trunk/urakawa/application/Obi/Obi/UserControls/TOCPanel.cs 2006-08-11 16:22:35 UTC (rev 847) @@ -21,21 +21,9 @@ private ProjectPanel mProjectPanel; //the parent of this control private TreeNode mClipboard; //md: the clipboard itself - public event Events.Node.RequestToAddSiblingNodeHandler RequestToAddSiblingSection; - public event Events.Node.RequestToAddChildSectionNodeHandler RequestToAddChildSection; - public event Events.Node.RequestToDecreaseSectionNodeLevelHandler RequestToDecreaseSectionLevel; - public event Events.Node.RequestToIncreaseSectionNodeLevelHandler RequestToIncreaseSectionLevel; - public event Events.Node.RequestToMoveSectionNodeDownHandler RequestToMoveSectionDown; - public event Events.Node.RequestToMoveSectionNodeUpHandler RequestToMoveSectionUp; - public event Events.Node.RequestToRenameNodeHandler RequestToRenameSection; - public event Events.Node.RequestToDeleteNodeHandler RequestToDeleteSection; - public event Events.Node.SelectedHandler SelectedTreeNode; // raised when selection changes (JQ) + public event Events.Node.SelectedHandler SelectedTreeNode; // raised when selection changes (JQ) - //md: clipboard events - public event Events.Node.RequestToCutSectionNodeHandler RequestToCutNode; - public event Events.Node.RequestToCopySectionNodeHandler RequestToCopyNode; - public event Events.Node.RequestToPasteSectionNodeHandler RequestToPasteNode; - + #region properties /// <summary> /// Test whether a node is currently selected or not. @@ -179,117 +167,8 @@ } } - #region context menu handlers - /* - * *************************************** - * These functions "...ToolStripMenuItem_Click" are triggered - * by the TOC panel's context menu - */ + - // These are internal so that the main m... [truncated message content] |