[mapguide-commits] r5716 - in trunk/Tools/Maestro:
Maestro.Base/Editor OSGeo.MapGuide.MaestroAPI/ObjectModels
svn_mapguide at osgeo.org
svn_mapguide at osgeo.org
Thu Apr 21 11:10:07 EDT 2011
Author: jng
Date: 2011-04-21 08:10:07 -0700 (Thu, 21 Apr 2011)
New Revision: 5716
Modified:
trunk/Tools/Maestro/Maestro.Base/Editor/LayerDefinitionEditor.cs
trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerFactory.cs
trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerInterfaces.cs
trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/SymbolInterfaces.cs
trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/VectorLayerDefinitionImpl.cs
Log:
Use the same unsupported placeholder to gracefully handle Layer Definitions with un-editable elements (ie. Composite Type Styles)
Modified: trunk/Tools/Maestro/Maestro.Base/Editor/LayerDefinitionEditor.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.Base/Editor/LayerDefinitionEditor.cs 2011-04-21 13:57:00 UTC (rev 5715)
+++ trunk/Tools/Maestro/Maestro.Base/Editor/LayerDefinitionEditor.cs 2011-04-21 15:10:07 UTC (rev 5716)
@@ -64,10 +64,22 @@
var dl = _res.SubLayer as IDrawingLayerDefinition;
if (vl != null)
{
- var ed = new VectorLayerEditorCtrl();
- ed.Bind(service);
- ed.Dock = DockStyle.Fill;
- panelBody.Controls.Add(ed);
+ //TODO: This is a stopgap measure until we have proper editor support for Composite Type styles.
+ //Until then, we check if it has composite style rules. Show a placeholder if we find any because this
+ //editor cannot edit them
+ if (HasCompositeRules(vl))
+ {
+ var ed = new UnsupportedEditorControl();
+ ed.Dock = DockStyle.Fill;
+ panelBody.Controls.Add(ed);
+ }
+ else
+ {
+ var ed = new VectorLayerEditorCtrl();
+ ed.Bind(service);
+ ed.Dock = DockStyle.Fill;
+ panelBody.Controls.Add(ed);
+ }
}
else if (gl != null)
{
@@ -89,6 +101,17 @@
}
}
+ private static bool HasCompositeRules(IVectorLayerDefinition vl)
+ {
+ foreach (var vsr in vl.VectorScaleRange)
+ {
+ var vsr2 = vsr as IVectorScaleRange2;
+ if (vsr2.CompositeStyle != null)
+ return true;
+ }
+ return false;
+ }
+
protected override void OnBeforeSave(object sender, CancelEventArgs e)
{
if (_edsvc.IsNew)
Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerFactory.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerFactory.cs 2011-04-21 13:57:00 UTC (rev 5715)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerFactory.cs 2011-04-21 15:10:07 UTC (rev 5716)
@@ -84,6 +84,8 @@
{
var vl = new VectorLayerDefinitionType();
+ //TODO: Create composite type style if 1.2 or 1.3 schema
+
vl.VectorScaleRange = new System.ComponentModel.BindingList<VectorScaleRangeType>();
var defaultRange = new VectorScaleRangeType()
{
Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerInterfaces.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerInterfaces.cs 2011-04-21 13:57:00 UTC (rev 5715)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/LayerInterfaces.cs 2011-04-21 15:10:07 UTC (rev 5716)
@@ -572,6 +572,17 @@
}
/// <summary>
+ /// The stylization to be applied to the vector features for a given scale range. Supports composite styles
+ /// </summary>
+ public interface IVectorScaleRange2 : IVectorScaleRange
+ {
+ /// <summary>
+ /// Gets or sets the composite style for this scale range
+ /// </summary>
+ ICompositeTypeStyle CompositeStyle { get; set; }
+ }
+
+ /// <summary>
/// Represents a name-value pair
/// </summary>
public interface INameStringPair
@@ -616,7 +627,11 @@
/// <summary>
///
/// </summary>
- Point
+ Point,
+ /// <summary>
+ ///
+ /// </summary>
+ Composite
}
/// <summary>
@@ -1526,7 +1541,7 @@
/// <summary>
/// Represents a composite style definition
/// </summary>
- public interface ICompositeTypeStyle
+ public interface ICompositeTypeStyle : IVectorStyle
{
/// <summary>
/// Gets the composite rules.
Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/SymbolInterfaces.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/SymbolInterfaces.cs 2011-04-21 13:57:00 UTC (rev 5715)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/SymbolInterfaces.cs 2011-04-21 15:10:07 UTC (rev 5716)
@@ -62,22 +62,22 @@
/// <summary>
/// Gets or sets the X scale
/// </summary>
- double? ScaleX { get; set; }
+ string ScaleX { get; set; }
/// <summary>
/// Gets or sets the Y scale
/// </summary>
- double? ScaleY { get; set; }
+ string ScaleY { get; set; }
/// <summary>
/// Gets or sets the X insertion offset
/// </summary>
- double? InsertionOffsetX { get; set; }
+ string InsertionOffsetX { get; set; }
/// <summary>
/// Gets or sets the Y insertion offset
/// </summary>
- double? InsertionOffsetY { get; set; }
+ string InsertionOffsetY { get; set; }
/// <summary>
/// Gets or sets the size context
@@ -87,22 +87,22 @@
/// <summary>
/// Gets or sets whether to draw this instance last
/// </summary>
- bool? DrawLast { get; set; }
+ string DrawLast { get; set; }
/// <summary>
/// Gets or sets whether to check the exclusion region
/// </summary>
- bool? CheckExclusionRegion { get; set; }
+ string CheckExclusionRegion { get; set; }
/// <summary>
/// Gets or sets whether to add this instance to the exclusion region
/// </summary>
- bool? AddToExclusionRegion { get; set; }
+ string AddToExclusionRegion { get; set; }
/// <summary>
/// Gets or sets the position algorithm
/// </summary>
- string PositionAlgorithm { get; set; }
+ string PositioningAlgorithm { get; set; }
}
/// <summary>
Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/VectorLayerDefinitionImpl.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/VectorLayerDefinitionImpl.cs 2011-04-21 13:57:00 UTC (rev 5715)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/ObjectModels/VectorLayerDefinitionImpl.cs 2011-04-21 15:10:07 UTC (rev 5716)
@@ -42,6 +42,7 @@
#endif
{
using OSGeo.MapGuide.ObjectModels.LayerDefinition;
+using OSGeo.MapGuide.ObjectModels.SymbolDefinition;
abstract partial class BaseLayerDefinitionType : ISubLayerDefinition
{
@@ -78,8 +79,10 @@
}
}
-
partial class VectorScaleRangeType : IVectorScaleRange
+#if LDF_120 || LDF_130
+ , IVectorScaleRange2
+#endif
{
#region Missing generated stuff
[EditorBrowsable(EditorBrowsableState.Never)]
@@ -242,6 +245,69 @@
{
return this.Clone();
}
+
+#if LDF_120
+ [XmlIgnore]
+ public ICompositeTypeStyle CompositeStyle
+ {
+ get
+ {
+ foreach (var item in this.itemsField)
+ {
+ if (typeof(ICompositeTypeStyle).IsAssignableFrom(item.GetType()))
+ return (ICompositeTypeStyle)item;
+ }
+
+ return null;
+ }
+ set
+ {
+ //Remove old one if it exists
+ var item = this.CompositeStyle;
+ if (item != null)
+ {
+ this.itemsField.Remove(item);
+ }
+ //Put the new one in if it is not null
+ if (value != null)
+ {
+ this.itemsField.Add(value);
+ }
+ }
+ }
+#elif LDF_130
+ [XmlIgnore]
+ public ICompositeTypeStyle CompositeStyle
+ {
+ get
+ {
+ foreach (var item in this.itemsField)
+ {
+ if (typeof(ICompositeTypeStyle2).IsAssignableFrom(item.GetType()))
+ return (ICompositeTypeStyle2)item;
+ }
+
+ return null;
+ }
+ set
+ {
+ //Remove old one if it exists
+ var item = this.CompositeStyle;
+ if (item != null)
+ {
+ this.itemsField.Remove(item);
+ }
+ //Put the new one in if it is not null
+ if (value != null)
+ {
+ if (typeof(ICompositeTypeStyle2).IsAssignableFrom(value.GetType()))
+ throw new InvalidOperationException("Assigned value does not implement ICompositeTypeStyle2");
+
+ this.itemsField.Add(value);
+ }
+ }
+ }
+#endif
}
partial class StrokeType : IStroke
@@ -264,6 +330,156 @@
}
}
+ #region Composite Symbolization support (needs more work. Currently this is just to make the layer editor properly detect such features)
+
+#if LDF_120 || LDF_130
+ partial class CompositeTypeStyle
+#if LDF_120
+ : ICompositeTypeStyle
+#else
+ : ICompositeTypeStyle2
+#endif
+ {
+ IEnumerable<ICompositeRule> ICompositeTypeStyle.CompositeRule
+ {
+ get
+ {
+ foreach (var rule in this.CompositeRule)
+ {
+ yield return rule;
+ }
+ }
+ }
+
+ public void AddCompositeRule(ICompositeRule compRule)
+ {
+ var rule = compRule as CompositeRule;
+ if (rule != null)
+ {
+ this.CompositeRule.Add(rule);
+ }
+ }
+
+ public void RemoveCompositeRule(ICompositeRule compRule)
+ {
+ var rule = compRule as CompositeRule;
+ if (rule != null)
+ {
+ this.CompositeRule.Remove(rule);
+ }
+ }
+
+ public StyleType StyleType
+ {
+ get { return StyleType.Composite; }
+ }
+
+ public int RuleCount
+ {
+ get { return this.CompositeRule.Count; }
+ }
+ }
+
+ partial class CompositeRule : ICompositeRule
+ {
+ [XmlIgnore]
+ ICompositeSymbolization ICompositeRule.CompositeSymbolization
+ {
+ get
+ {
+ return this.CompositeSymbolization;
+ }
+ set
+ {
+ this.CompositeSymbolization = (CompositeSymbolization)value;
+ }
+ }
+ }
+
+ partial class CompositeSymbolization : ICompositeSymbolization
+ {
+ IEnumerable<OSGeo.MapGuide.ObjectModels.SymbolDefinition.ISymbolInstance> ICompositeSymbolization.SymbolInstance
+ {
+ get
+ {
+ foreach (var sym in this.SymbolInstance)
+ {
+ yield return sym;
+ }
+ }
+ }
+
+ public void AddSymbolInstance(OSGeo.MapGuide.ObjectModels.SymbolDefinition.ISymbolInstance inst)
+ {
+ var sym = inst as SymbolInstance;
+ if (sym != null)
+ this.SymbolInstance.Add(sym);
+ }
+
+ public void RemoveSymbolInstance(OSGeo.MapGuide.ObjectModels.SymbolDefinition.ISymbolInstance inst)
+ {
+ var sym = inst as SymbolInstance;
+ if (sym != null)
+ this.SymbolInstance.Remove(sym);
+ }
+ }
+
+ partial class SymbolInstance : ISymbolInstance
+ {
+ [XmlIgnore]
+ public ISymbolInstanceReference Reference
+ {
+ get
+ {
+ throw new NotImplementedException();
+ }
+ set
+ {
+ throw new NotImplementedException();
+ }
+ }
+
+ IParameterOverrideCollection ISymbolInstance.ParameterOverrides
+ {
+ get { return this.ParameterOverrides; }
+ }
+ }
+
+ partial class ParameterOverrides : IParameterOverrideCollection
+ {
+ IEnumerable<IParameterOverride> IParameterOverrideCollection.Override
+ {
+ get
+ {
+ foreach (var ov in this.Override)
+ {
+ yield return ov;
+ }
+ }
+ }
+
+ public void AddOverride(IParameterOverride ov)
+ {
+ var o = ov as Override;
+ if (o != null)
+ this.Override.Add(o);
+ }
+
+ public void RemoveOverride(IParameterOverride ov)
+ {
+ var o = ov as Override;
+ if (o != null)
+ this.Override.Remove(o);
+ }
+ }
+
+ partial class Override : IParameterOverride
+ {
+ }
+
+#endif
+ #endregion
+
partial class AreaTypeStyleType : IAreaVectorStyle
{
[XmlIgnore]
More information about the mapguide-commits
mailing list