#region Disclaimer / License
// Copyright (C) 2011, Jackie Ng
// http://trac.osgeo.org/mapguide/wiki/maestro, jumpinjackie@gmail.com
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
//
#endregion
using System;
using System.Collections.Generic;
using System.Text;
using Maestro.Editors.Fusion.WidgetEditors;
using OSGeo.MapGuide.ObjectModels.ApplicationDefinition;
using OSGeo.MapGuide.MaestroAPI;
namespace Maestro.Editors.Fusion
{
///
/// Maintains the collection of specialized widget editors
///
public static class FusionWidgetEditorMap
{
static Dictionary _edTypes;
static FusionWidgetEditorMap()
{
_edTypes = new Dictionary();
_edTypes[KnownWidgetNames.About] = typeof(AboutWidgetCtrl);
_edTypes[KnownWidgetNames.ActivityIndicator] = typeof(ActivityIndicatorWidgetCtrl);
_edTypes[KnownWidgetNames.Buffer] = typeof(BufferWidgetCtrl);
_edTypes[KnownWidgetNames.BufferPanel] = typeof(BufferPanelWidgetCtrl);
_edTypes[KnownWidgetNames.CenterSelection] = typeof(CenterSelectionWidgetCtrl);
_edTypes[KnownWidgetNames.ClearSelection] = typeof(ClearSelectionCtrl);
_edTypes[KnownWidgetNames.ColorPicker] = typeof(ColorPickerWidgetCtrl);
//_edTypes[KnownWidgetNames.CTRLClick]
_edTypes[KnownWidgetNames.CursorPosition] = typeof(CursorPositionWidgetCtrl);
_edTypes[KnownWidgetNames.EditableScale] = typeof(EditableScaleWidgetCtrl);
_edTypes[KnownWidgetNames.ExtentHistory] = typeof(ExtentHistoryWidgetCtrl);
_edTypes[KnownWidgetNames.FeatureInfo] = typeof(FeatureInfoWidgetCtrl);
_edTypes[KnownWidgetNames.Help] = typeof(HelpWidgetCtrl);
_edTypes[KnownWidgetNames.InitialMapView] = typeof(InitialMapViewWidgetCtrl);
_edTypes[KnownWidgetNames.InvokeScript] = typeof(InvokeScriptWidgetCtrl);
//_edTypes[KnownWidgetNames.InvokeURL]
//_edTypes[KnownWidgetNames.LayerManager]
_edTypes[KnownWidgetNames.Legend] = typeof(LegendWidgetCtrl);
_edTypes[KnownWidgetNames.LinkToView] = typeof(LinkToViewWidgetCtrl);
_edTypes[KnownWidgetNames.MapMenu] = typeof(MapMenuWidgetCtrl);
_edTypes[KnownWidgetNames.Maptip] = typeof(MapTipWidgetCtrl);
_edTypes[KnownWidgetNames.Measure] = typeof(MeasureWidgetCtrl);
_edTypes[KnownWidgetNames.Navigator] = typeof(NavigatorWidgetCtrl);
//_edTypes[KnownWidgetNames.OverviewMap]
_edTypes[KnownWidgetNames.Pan] = typeof(PanWidgetCtrl);
//_edTypes[KnownWidgetNames.PanOnClick]
//_edTypes[KnownWidgetNames.PanQuery]
//_edTypes[KnownWidgetNames.Print]
//_edTypes[KnownWidgetNames.Query]
//_edTypes[KnownWidgetNames.QuickPlot]
//_edTypes[KnownWidgetNames.Redline]
_edTypes[KnownWidgetNames.RefreshMap] = typeof(RefreshMapWidgetCtrl);
//_edTypes[KnownWidgetNames.SaveMap]
//_edTypes[KnownWidgetNames.Scalebar]
//_edTypes[KnownWidgetNames.Search]
//_edTypes[KnownWidgetNames.Select]
//_edTypes[KnownWidgetNames.SelectionInfo]
//_edTypes[KnownWidgetNames.SelectPolygon]
//_edTypes[KnownWidgetNames.SelectRadius]
//_edTypes[KnownWidgetNames.SelectRadiusValue]
//_edTypes[KnownWidgetNames.SelectWithin]
//_edTypes[KnownWidgetNames.TaskPane]
//_edTypes[KnownWidgetNames.Theme]
//_edTypes[KnownWidgetNames.ViewOptions]
//_edTypes[KnownWidgetNames.ViewSize]
//_edTypes[KnownWidgetNames.Zoom]
//_edTypes[KnownWidgetNames.ZoomOnClick]
//_edTypes[KnownWidgetNames.ZoomToSelection]
}
///
/// Gets the editor for widget.
///
/// The widget.
/// The context.
/// The edsvc.
///
public static IWidgetEditor GetEditorForWidget(IWidget widget, FlexibleLayoutEditorContext context, IEditorService edsvc)
{
Check.NotNull(widget, "widget");
Check.NotNull(context, "context");
Check.NotNull(edsvc, "edsvc");
IWidgetEditor ed = null;
if (_edTypes.ContainsKey(widget.Name))
{
try
{
ed = (IWidgetEditor)Activator.CreateInstance(_edTypes[widget.Name]);
}
catch (Exception ex)
{
ed = null;
System.Diagnostics.Trace.TraceError(ex.ToString());
}
}
if (ed == null)
ed = new GenericWidgetCtrl();
ed.Setup(widget, context, edsvc);
return ed;
}
}
}