2
// ObjectDescription.cs
7
// Copyright (C) 2007 Novell, Inc (http://www.novell.com)
9
// Permission is hereby granted, free of charge, to any person obtaining
10
// a copy of this software and associated documentation files (the
11
// "Software"), to deal in the Software without restriction, including
12
// without limitation the rights to use, copy, modify, merge, publish,
13
// distribute, sublicense, and/or sell copies of the Software, and to
14
// permit persons to whom the Software is furnished to do so, subject to
15
// the following conditions:
17
// The above copyright notice and this permission notice shall be
18
// included in all copies or substantial portions of the Software.
20
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31
using System.Collections.Specialized;
33
using Mono.Addins.Serialization;
35
namespace Mono.Addins.Description
38
/// Base class for add-in description definitions.
40
public class ObjectDescription: IBinaryXmlElement
42
internal XmlElement Element;
45
internal ObjectDescription (XmlElement elem)
50
internal ObjectDescription ()
55
/// Gets the parent object.
58
/// The parent object.
60
public object Parent {
61
get { return parent; }
65
/// Gets the parent add-in description.
68
/// The parent add-in description.
70
public AddinDescription ParentAddinDescription {
72
if (parent is AddinDescription)
73
return (AddinDescription) parent;
74
else if (parent is ObjectDescription)
75
return ((ObjectDescription)parent).ParentAddinDescription;
81
internal string ParseString (string s)
83
var desc = ParentAddinDescription;
85
return desc.ParseString (s);
90
internal void SetParent (object ob)
95
void IBinaryXmlElement.Write (BinaryXmlWriter writer)
100
void IBinaryXmlElement.Read (BinaryXmlReader reader)
105
internal virtual void Write (BinaryXmlWriter writer)
109
internal virtual void Read (BinaryXmlReader reader)
113
internal virtual void SaveXml (XmlElement parent)
117
internal void CreateElement (XmlElement parent, string nodeName)
119
if (Element == null) {
120
Element = parent.OwnerDocument.CreateElement (nodeName);
121
parent.AppendChild (Element);
125
internal string ReadXmlDescription ()
127
XmlElement de = Element ["Description"];
134
internal void SaveXmlDescription (string desc)
136
XmlElement de = Element ["Description"];
137
if (desc != null && desc.Length > 0) {
139
de = Element.OwnerDocument.CreateElement ("Description");
140
Element.AppendChild (de);
145
Element.RemoveChild (de);
149
internal virtual void Verify (string location, StringCollection errors)
153
internal void VerifyNotEmpty (string location, StringCollection errors, string attr, string val)
155
if (val == null || val.Length == 0)
156
errors.Add (location + ": attribute '" + attr + "' can't be empty.");