[mapguide-commits] r6729 - in trunk/Tools/Maestro: Maestro.TestViewer OSGeo.MapGuide.MaestroAPI/Mapping
svn_mapguide at osgeo.org
svn_mapguide at osgeo.org
Mon Jun 4 06:58:26 PDT 2012
Author: jng
Date: 2012-06-04 06:58:23 -0700 (Mon, 04 Jun 2012)
New Revision: 6729
Modified:
trunk/Tools/Maestro/Maestro.TestViewer/MainForm.Designer.cs
trunk/Tools/Maestro/Maestro.TestViewer/MainForm.cs
trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Mapping/RuntimeMap.cs
Log:
Add a new ToMapDefinition() API to the RuntimeMap class. This allows a RuntimeMap instance to be converted back to a MapDefinition
Modified: trunk/Tools/Maestro/Maestro.TestViewer/MainForm.Designer.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.TestViewer/MainForm.Designer.cs 2012-06-04 13:15:24 UTC (rev 6728)
+++ trunk/Tools/Maestro/Maestro.TestViewer/MainForm.Designer.cs 2012-06-04 13:58:23 UTC (rev 6729)
@@ -37,6 +37,7 @@
this.lblSelected = new System.Windows.Forms.ToolStripStatusLabel();
this.lblScale = new System.Windows.Forms.ToolStripStatusLabel();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+ this.saveBackToMapDefinitionToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.legend1 = new Maestro.MapViewer.Legend();
this.mapViewer1 = new Maestro.MapViewer.MapViewer();
this.defaultToolbar1 = new Maestro.MapViewer.DefaultToolbar();
@@ -63,6 +64,7 @@
//
this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.openMapDefinitionToolStripMenuItem,
+ this.saveBackToMapDefinitionToolStripMenuItem,
this.quitToolStripMenuItem});
this.fileToolStripMenuItem.Name = "fileToolStripMenuItem";
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
@@ -71,14 +73,14 @@
// openMapDefinitionToolStripMenuItem
//
this.openMapDefinitionToolStripMenuItem.Name = "openMapDefinitionToolStripMenuItem";
- this.openMapDefinitionToolStripMenuItem.Size = new System.Drawing.Size(185, 22);
+ this.openMapDefinitionToolStripMenuItem.Size = new System.Drawing.Size(222, 22);
this.openMapDefinitionToolStripMenuItem.Text = "Open Map Definition";
this.openMapDefinitionToolStripMenuItem.Click += new System.EventHandler(this.openMapDefinitionToolStripMenuItem_Click);
//
// quitToolStripMenuItem
//
this.quitToolStripMenuItem.Name = "quitToolStripMenuItem";
- this.quitToolStripMenuItem.Size = new System.Drawing.Size(185, 22);
+ this.quitToolStripMenuItem.Size = new System.Drawing.Size(222, 22);
this.quitToolStripMenuItem.Text = "Quit";
this.quitToolStripMenuItem.Click += new System.EventHandler(this.quitToolStripMenuItem_Click);
//
@@ -129,6 +131,14 @@
this.splitContainer1.SplitterDistance = 217;
this.splitContainer1.TabIndex = 3;
//
+ // saveBackToMapDefinitionToolStripMenuItem
+ //
+ this.saveBackToMapDefinitionToolStripMenuItem.Enabled = false;
+ this.saveBackToMapDefinitionToolStripMenuItem.Name = "saveBackToMapDefinitionToolStripMenuItem";
+ this.saveBackToMapDefinitionToolStripMenuItem.Size = new System.Drawing.Size(222, 22);
+ this.saveBackToMapDefinitionToolStripMenuItem.Text = "Save back to Map Definition";
+ this.saveBackToMapDefinitionToolStripMenuItem.Click += new System.EventHandler(this.saveBackToMapDefinitionToolStripMenuItem_Click);
+ //
// legend1
//
this.legend1.AllowDrop = true;
@@ -149,7 +159,6 @@
//
// mapViewer1
//
- this.mapViewer1.ConvertTiledGroupsToNonTiled = true;
this.mapViewer1.Cursor = System.Windows.Forms.Cursors.Default;
this.mapViewer1.Dock = System.Windows.Forms.DockStyle.Fill;
this.mapViewer1.Location = new System.Drawing.Point(0, 0);
@@ -218,6 +227,7 @@
private MapViewer.DefaultToolbar defaultToolbar1;
private MapViewer.MapStatusTracker mapStatusTracker1;
private MapViewer.Legend legend1;
+ private System.Windows.Forms.ToolStripMenuItem saveBackToMapDefinitionToolStripMenuItem;
}
}
Modified: trunk/Tools/Maestro/Maestro.TestViewer/MainForm.cs
===================================================================
--- trunk/Tools/Maestro/Maestro.TestViewer/MainForm.cs 2012-06-04 13:15:24 UTC (rev 6728)
+++ trunk/Tools/Maestro/Maestro.TestViewer/MainForm.cs 2012-06-04 13:58:23 UTC (rev 6729)
@@ -91,6 +91,7 @@
var rtMap = mapSvc.CreateMap(mdf);
mapViewer1.LoadMap(rtMap);
+ saveBackToMapDefinitionToolStripMenuItem.Enabled = true;
}
private void legend1_DragDrop(object sender, DragEventArgs e)
@@ -113,5 +114,27 @@
Trace.TraceInformation("Legend: DragOver");
e.Effect = DragDropEffects.Move;
}
+
+ private void saveBackToMapDefinitionToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ var rtMap = mapViewer1.GetMap();
+ if (rtMap == null)
+ {
+ MessageBox.Show("No map loaded");
+ return;
+ }
+
+ var mdf = rtMap.ToMapDefinition(true);
+ var resSvc = mdf.CurrentConnection.ResourceService;
+ using (var resPicker = new ResourcePicker(resSvc, ResourceTypes.MapDefinition, ResourcePickerMode.SaveResource))
+ {
+ if (resPicker.ShowDialog() == System.Windows.Forms.DialogResult.OK)
+ {
+ mdf.ResourceID = resPicker.ResourceID;
+ resSvc.SaveResource(mdf);
+ MessageBox.Show("Map saved to: " + resPicker.ResourceID);
+ }
+ }
+ }
}
}
Modified: trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Mapping/RuntimeMap.cs
===================================================================
--- trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Mapping/RuntimeMap.cs 2012-06-04 13:15:24 UTC (rev 6728)
+++ trunk/Tools/Maestro/OSGeo.MapGuide.MaestroAPI/Mapping/RuntimeMap.cs 2012-06-04 13:58:23 UTC (rev 6729)
@@ -1565,5 +1565,108 @@
#endregion
internal bool StrictSelection { get; set; }
+
+ /// <summary>
+ /// Converts this instance to an equivalent Map Definition
+ /// </summary>
+ /// <param name="useOriginalAsTemplate">If true, the converted Map Definition will use core settings from the original Map Definition used to create this instance</param>
+ /// <returns></returns>
+ public IMapDefinition ToMapDefinition(bool useOriginalAsTemplate)
+ {
+ var newMdf = ObjectFactory.CreateMapDefinition(this.CurrentConnection, ResourceIdentifier.GetName(this.MapDefinition));
+ if (useOriginalAsTemplate && this.ResourceService.ResourceExists(this.MapDefinition))
+ {
+ var oldMdf = (IMapDefinition)this.ResourceService.GetResource(this.MapDefinition);
+ newMdf.BackgroundColor = oldMdf.BackgroundColor;
+ newMdf.CoordinateSystem = oldMdf.CoordinateSystem;
+ newMdf.Metadata = oldMdf.Metadata;
+ newMdf.Extents = oldMdf.Extents;
+ }
+
+ var baseGroups = new List<RuntimeMapGroup>();
+
+ //Add dynamic groups
+ for (int i = this.Groups.Count - 1; i >= 0; i--)
+ {
+ //Deal with base groups later
+ if (this.Groups[i].Type == RuntimeMapGroup.kBaseMap)
+ {
+ baseGroups.Add(this.Groups[i]);
+ continue;
+ }
+
+ var rtGroup = this.Groups[i];
+ var newGroup = newMdf.AddGroup(rtGroup.Name);
+ newGroup.Group = rtGroup.Group;
+ newGroup.ExpandInLegend = rtGroup.ExpandInLegend;
+ newGroup.LegendLabel = rtGroup.LegendLabel;
+ newGroup.ShowInLegend = rtGroup.ShowInLegend;
+ newGroup.Visible = rtGroup.Visible;
+ }
+
+ var baseLayers = new List<RuntimeMapLayer>();
+
+ //Populate dynamic layers. Loop in reverse order so that they are added in correct draw order
+ for (int i = this.Layers.Count - 1; i >= 0; i--)
+ {
+ //Deal with base layers later
+ if (this.Layers[i].Type == RuntimeMapLayer.kBaseMap)
+ {
+ baseLayers.Add(this.Layers[i]);
+ continue;
+ }
+
+ var rtLayer = this.Layers[i];
+ var newLayer = newMdf.AddLayer(rtLayer.Group, rtLayer.Name, rtLayer.LayerDefinitionID);
+ newLayer.ExpandInLegend = rtLayer.ExpandInLegend;
+ newLayer.LegendLabel = rtLayer.LegendLabel;
+ newLayer.Selectable = rtLayer.Selectable;
+ newLayer.ShowInLegend = rtLayer.ShowInLegend;
+ newLayer.Visible = rtLayer.Visible;
+ }
+
+ if (baseLayers.Count > 0 && baseGroups.Count > 0)
+ {
+ newMdf.InitBaseMap();
+
+ //Add finite scales first
+ for (int i = _finiteDisplayScales.Length - 1; i >= 0; i--)
+ {
+ newMdf.BaseMap.AddFiniteDisplayScale(_finiteDisplayScales[i]);
+ }
+
+ var baseGroupsByName = new Dictionary<string, IBaseMapGroup>();
+
+ //Now groups
+ for (int i = baseGroups.Count - 1; i >= 0; i--)
+ {
+ var rtGroup = baseGroups[i];
+ var newGroup = newMdf.BaseMap.AddBaseLayerGroup(rtGroup.Name);
+ newGroup.ExpandInLegend = rtGroup.ExpandInLegend;
+ newGroup.LegendLabel = rtGroup.LegendLabel;
+ newGroup.ShowInLegend = rtGroup.ShowInLegend;
+ newGroup.Visible = rtGroup.Visible;
+
+ baseGroupsByName.Add(newGroup.Name, newGroup);
+ }
+
+ //Then layers. Loop in reverse order so that they are added in correct draw order
+ for (int i = baseLayers.Count - 1; i >= 0; i--)
+ {
+ var rtLayer = baseLayers[i];
+ //Should always happen
+ if (baseGroupsByName.ContainsKey(rtLayer.Group))
+ {
+ var newLayer = baseGroupsByName[rtLayer.Group].AddLayer(rtLayer.Name, rtLayer.LayerDefinitionID);
+ newLayer.ExpandInLegend = rtLayer.ExpandInLegend;
+ newLayer.LegendLabel = rtLayer.LegendLabel;
+ newLayer.Selectable = rtLayer.Selectable;
+ newLayer.ShowInLegend = rtLayer.ShowInLegend;
+ }
+ }
+ }
+
+ return newMdf;
+ }
}
}
More information about the mapguide-commits
mailing list