Author: mkrueger
Date: 2007-09-05 08:15:02 -0400 (Wed, 05 Sep 2007)
New Revision: 85354

Modified:
   trunk/monodevelop/Core/src/MonoDevelop.Ide/ChangeLog
   
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/NodeState.cs
   
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/TreeViewPad.cs
   
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DefaultWorkbench.cs
   trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Document.cs
   
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ProjectOperations.cs
   
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui/SdiWorkspaceLayout.cs
Log:
* MonoDevelop.Ide.Gui.Pads/TreeViewPad.cs,
  MonoDevelop.Ide.Gui.Pads/NodeState.cs,
  MonoDevelop.Ide.Gui/Document.cs,
  MonoDevelop.Ide.Gui/ProjectOperations.cs,
  MonoDevelop.Ide.Gui/DefaultWorkbench.cs,
  MonoDevelop.Ide.Gui/SdiWorkspaceLayout.cs: Updated to the
  ICustomXmlSerializer infrastructure.

Modified: trunk/monodevelop/Core/src/MonoDevelop.Ide/ChangeLog
===================================================================
--- trunk/monodevelop/Core/src/MonoDevelop.Ide/ChangeLog        2007-09-05 
12:14:59 UTC (rev 85353)
+++ trunk/monodevelop/Core/src/MonoDevelop.Ide/ChangeLog        2007-09-05 
12:15:02 UTC (rev 85354)
@@ -1,3 +1,12 @@
+2007-09-05  Mike Krüger <[EMAIL PROTECTED]> 
+
+       * MonoDevelop.Ide.Gui.Pads/TreeViewPad.cs,
+         MonoDevelop.Ide.Gui.Pads/NodeState.cs, 
MonoDevelop.Ide.Gui/Document.cs,
+         MonoDevelop.Ide.Gui/ProjectOperations.cs,
+         MonoDevelop.Ide.Gui/DefaultWorkbench.cs,
+         MonoDevelop.Ide.Gui/SdiWorkspaceLayout.cs: Updated to the
+         ICustomXmlSerializer infrastructure.
+
 2007-09-05  Michael Hutchinson <[EMAIL PROTECTED]> 
 
        * MonoDevelop.Ide.Templates/CodeTranslationFileDescriptionTemplate.cs: 
Add

Modified: 
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DefaultWorkbench.cs
===================================================================
--- 
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DefaultWorkbench.cs
  2007-09-05 12:14:59 UTC (rev 85353)
+++ 
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DefaultWorkbench.cs
  2007-09-05 12:15:02 UTC (rev 85354)
@@ -344,7 +344,7 @@
 //                     fileAttribute.InnerText = content.ContentName;
 //                     doc.DocumentElement.Attributes.Append(fileAttribute);
 //                     
-                       Properties memento = 
((IMementoCapable)content).CreateMemento();
+                       object memento = 
((IMementoCapable)content).CreateMemento();
                        
 //                     
doc.DocumentElement.AppendChild(memento.ToXmlElement(doc));
 //                     
@@ -352,14 +352,14 @@
                        // check the file name length because it could be more 
than the maximum length of a file name
                        string fullFileName = System.IO.Path.Combine 
(directory, fileName);
                        if (Runtime.FileService.IsValidFileName(fullFileName)) {
-                               memento.Save (fullFileName);
+                               ((Properties)memento).Save (fullFileName);
 //                             doc.Save (fullFileName);
                        }
                        
                }
                
                // interface IMementoCapable
-               public Properties CreateMemento()
+               public ICustomXmlSerializer CreateMemento()
                {
                        WorkbenchMemento memento   = new WorkbenchMemento (new 
Properties ());
                        int x, y, width, height;
@@ -374,14 +374,14 @@
 
                        memento.FullScreen  = fullscreen;
                        if (layout != null)
-                               memento.LayoutMemento = layout.CreateMemento ();
+                               memento.LayoutMemento = 
(Properties)layout.CreateMemento ();
                        return memento.ToProperties ();
                }
                
-               public void SetMemento(Properties xmlMemento)
+               public void SetMemento (ICustomXmlSerializer xmlMemento)
                {
                        if (xmlMemento != null) {
-                               WorkbenchMemento memento = new WorkbenchMemento 
(xmlMemento);
+                               WorkbenchMemento memento = new WorkbenchMemento 
((Properties)xmlMemento);
                                
                                normalBounds = memento.Bounds;
                                Move (normalBounds.X, normalBounds.Y);

Modified: 
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Document.cs
===================================================================
--- trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Document.cs  
2007-09-05 12:14:59 UTC (rev 85353)
+++ trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Document.cs  
2007-09-05 12:15:02 UTC (rev 85354)
@@ -136,7 +136,7 @@
                
                public void Reload ()
                {
-                       Properties memento = null;
+                       ICustomXmlSerializer memento = null;
                        IMementoCapable mc = GetContent<IMementoCapable> ();
                        if (mc != null) {
                                memento = mc.CreateMemento();

Modified: 
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ProjectOperations.cs
===================================================================
--- 
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ProjectOperations.cs
 2007-09-05 12:14:59 UTC (rev 85353)
+++ 
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ProjectOperations.cs
 2007-09-05 12:15:02 UTC (rev 85354)
@@ -823,11 +823,18 @@
                                                                switch 
(reader.LocalName) {
                                                                case 
ViewMementoNode:
                                                                        string 
id = reader.GetAttribute (IdAttribute);
-                                                                       
Properties memento = Properties.Read (reader);
+                                                                       string 
raw = reader.ReadInnerXml ();
                                                                        foreach 
(Pad pad in IdeApp.Workbench.Pads) {
                                                                                
if (id == pad.Id && pad.Content is IMementoCapable) {
                                                                                
        IMementoCapable m = (IMementoCapable) pad.Content; 
-                                                                               
        m.SetMemento (memento);
+                                                                               
        XmlReader innerReader = new XmlTextReader (new MemoryStream 
(System.Text.Encoding.UTF8.GetBytes (raw)));
+                                                                               
        try {
+                                                                               
                while (innerReader.Read () && innerReader.NodeType != 
XmlNodeType.Element) 
+                                                                               
                        ;
+                                                                               
                m.SetMemento ((ICustomXmlSerializer)m.CreateMemento ().ReadFrom 
(innerReader));
+                                                                               
        } finally {
+                                                                               
                innerReader.Close ();
+                                                                               
        }
                                                                                
}
                                                                        }
                                                                        return 
true;
@@ -889,7 +896,8 @@
                                        if (pad.Content is IMementoCapable) {
                                                writer.WriteStartElement 
(ViewMementoNode);
                                                writer.WriteAttributeString 
(IdAttribute, pad.Id); 
-                                               
((IMementoCapable)pad.Content).CreateMemento ().Write (writer);
+                                               
+                                               
((ICustomXmlSerializer)((IMementoCapable)pad.Content).CreateMemento ()).WriteTo 
(writer);
                                                writer.WriteEndElement (); // 
ViewMementoNode
                                        }
                                }

Modified: 
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui/SdiWorkspaceLayout.cs
===================================================================
--- 
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui/SdiWorkspaceLayout.cs
        2007-09-05 12:14:59 UTC (rev 85353)
+++ 
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui/SdiWorkspaceLayout.cs
        2007-09-05 12:15:02 UTC (rev 85354)
@@ -193,15 +193,15 @@
                        }
                }
                
-               public Properties CreateMemento()
+               public ICustomXmlSerializer CreateMemento()
                {
                        return new SdiWorkbenchLayoutMemento (initialized ? 
toolbarFrame.GetStatus () : new DockToolbarFrameStatus ()).ToProperties ();
                }
                
-               public void SetMemento(Properties memento)
+               public void SetMemento (ICustomXmlSerializer memento)
                {
                        initialized = true;
-                       SdiWorkbenchLayoutMemento m = new 
SdiWorkbenchLayoutMemento (memento);
+                       SdiWorkbenchLayoutMemento m = new 
SdiWorkbenchLayoutMemento ((Properties)memento);
                        toolbarFrame.SetStatus (m.Status);
                }
                

Modified: 
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/NodeState.cs
===================================================================
--- 
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/NodeState.cs
    2007-09-05 12:14:59 UTC (rev 85353)
+++ 
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/NodeState.cs
    2007-09-05 12:15:02 UTC (rev 85354)
@@ -35,7 +35,7 @@
 
 namespace MonoDevelop.Ide.Gui.Pads
 {
-       public class NodeState
+       public class NodeState : ICustomXmlSerializer
        {
                string nodeName;
                
@@ -90,71 +90,76 @@
                        }
                }
                
-               public Properties ToXml ()
+               void ICustomXmlSerializer.WriteTo (XmlWriter writer)
                {
-                       return ToXml (null);
+                       WriteTo (writer, null);
                }
                
-               public static NodeState FromXml (Properties state)
+               ICustomXmlSerializer ICustomXmlSerializer.ReadFrom (XmlReader 
reader)
                {
-                       return FromXml (state, null);
+                       return ReadFrom (reader, null);
                }
                
-               Properties  ToXml (TreeViewPad.TreeOptions parentOptions)
+               const string Node              = "Node";
+               const string nameAttribute     = "name";
+               const string expandedAttribute = "expanded";
+               const string selectedAttribute = "selected";
+
+               void WriteTo (XmlWriter writer, TreeViewPad.TreeOptions 
parentOptions)
                {
-                       Properties result = new Properties();
-                       
+                       writer.WriteStartElement (Node);
                        if (NodeName != null)
-                               result.Set ("name", NodeName);
+                               writer.WriteAttributeString (nameAttribute, 
NodeName);
                        if (Expanded)
-                               result.Set ("expanded", bool.TrueString);
+                               writer.WriteAttributeString (expandedAttribute, 
bool.TrueString);
                        if (Selected)
-                               result.Set ("selected", bool.TrueString);
+                               writer.WriteAttributeString (selectedAttribute, 
bool.TrueString);
 
-                       Properties optionProperties = new Properties();
-                       result.Set ("Options", optionProperties);
-                       
                        TreeViewPad.TreeOptions ops = Options;
                        if (ops != null) {
                                foreach (DictionaryEntry de in ops) {
                                        object parentVal = parentOptions != 
null ? parentOptions [de.Key] : null;
                                        if (parentVal != null && 
!parentVal.Equals (de.Value) || (parentVal == null && de.Value != null) || 
parentOptions == null) {
-                                               optionProperties.Set 
(de.Key.ToString(), de.Value.ToString ()); 
+                                               writer.WriteStartElement 
("Option");
+                                               writer.WriteAttributeString 
("id", de.Key.ToString());
+                                               writer.WriteAttributeString 
("value", de.Value.ToString ());
+                                               writer.WriteEndElement (); // 
Option
                                        }
                                }
                        }
                        
-                       if (ChildrenState == null) 
-                               return result;
-                       
-                       Properties nodeProperties = new Properties();
-                       result.Set ("Nodes", nodeProperties);
-                       foreach (NodeState ces in ChildrenState) {
-                               nodeProperties.Set (ces.NodeName, ces.ToXml 
(ops != null ? ops : parentOptions));
+                       if (ChildrenState != null) { 
+                               Properties nodeProperties = new Properties();
+                               foreach (NodeState ces in ChildrenState) {
+                                       ces.WriteTo (writer, Options != null ? 
Options : parentOptions);
+                               }
                        }
                        
-                       return result;
+                       writer.WriteEndElement (); // NodeState
                }
 
-               static NodeState FromXml (Properties state, 
TreeViewPad.TreeOptions parentOptions)
+               ICustomXmlSerializer ReadFrom (XmlReader reader, 
TreeViewPad.TreeOptions parentOptions)
                {
                        NodeState result = new NodeState ();
-                       result.NodeName = state.Get ("name", "");
-                       result.Expanded = state.Get ("expanded", false);
-                       result.Selected = state.Get ("selected", false);
+                       result.NodeName = reader.GetAttribute (nameAttribute);
+                       if (!String.IsNullOrEmpty (reader.GetAttribute 
(expandedAttribute)))
+                               result.Expanded = Boolean.Parse 
(reader.GetAttribute (expandedAttribute));
+                       if (!String.IsNullOrEmpty (reader.GetAttribute 
(selectedAttribute)))
+                               result.Selected = Boolean.Parse 
(reader.GetAttribute (selectedAttribute));
                        
-                       Properties optionProperties = state.Get ("Options", new 
Properties ());
-                       foreach (string key in optionProperties.Keys) {
-                               if (result.Options == null) 
-                                       result.Options = parentOptions != null 
? parentOptions.CloneOptions (Gtk.TreeIter.Zero) : new TreeViewPad.TreeOptions 
();   
-                               result.Options [key] = bool.Parse 
(optionProperties.Get<string> (key));
-                       }
-                       
-                       Properties nodeProperties = state.Get ("Nodes", new 
Properties ());
-                       result.ChildrenState = new 
List<MonoDevelop.Ide.Gui.Pads.NodeState> ();
-                       foreach (string key in nodeProperties.Keys) {
-                               result.ChildrenState.Add (FromXml 
(nodeProperties.Get (key, new Properties ()), result.Options != null ? 
result.Options : parentOptions));
-                       }
+                       XmlReadHelper.ReadList (reader, Node, delegate () {
+                               switch (reader.LocalName) {
+                               case "Option":
+                                       if (result.Options == null) 
+                                               result.Options = parentOptions 
!= null ? parentOptions.CloneOptions (Gtk.TreeIter.Zero) : new 
TreeViewPad.TreeOptions ();   
+                                       result.Options [reader.GetAttribute 
("id")] = bool.Parse (reader.GetAttribute ("value"));
+                                       return true;
+                               case "Node":
+                                       result.ChildrenState.Add 
((NodeState)ReadFrom (reader, result.Options != null ? result.Options : 
parentOptions));
+                                       return true;
+                               }
+                               return false;
+                       });
                        return result;
                }
                

Modified: 
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/TreeViewPad.cs
===================================================================
--- 
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/TreeViewPad.cs
  2007-09-05 12:14:59 UTC (rev 85353)
+++ 
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/TreeViewPad.cs
  2007-09-05 12:15:02 UTC (rev 85354)
@@ -766,23 +766,21 @@
                        builder.Update ();
                }
                
-               public Properties SaveTreeState ()
+               public NodeState SaveTreeState ()
                {
                        ITreeNavigator root = GetRootNode ();
                        if (root == null) 
-                               return new Properties ();
+                               return null;
 
-                       NodeState state = root.SaveState ();
-                       return state.ToXml ();
+                       return root.SaveState ();
                }
                
-               public void RestoreTreeState (Properties properties)
+               public void RestoreTreeState (NodeState state)
                {
                        ITreeNavigator nav = GetRootNode ();
                        if (nav == null)
                                return;
-                       if (properties != null) {
-                               NodeState state = NodeState.FromXml 
(properties);
+                       if (state != null) {
                                nav.RestoreState (state);
                        }
                }
@@ -1189,14 +1187,14 @@
                        }
                }
                
-               public Properties CreateMemento ()
+               public ICustomXmlSerializer CreateMemento ()
                {
                        return this.SaveTreeState ();
                }
 
-               public void SetMemento (Properties memento)
+               public void SetMemento (ICustomXmlSerializer memento)
                {
-                       this.RestoreTreeState (memento);
+                       this.RestoreTreeState ((NodeState)memento);
                }
 
                // ********* Own events

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to