Common CustomDataSource
Common_CustomDataSource_VBNet\CustomDataSource_VBNet\TiledMapDataSource_VBNet\MapFunctionality.vb
' Copyright 2007 ESRI
' 
' All rights reserved under the copyright laws of the United States
' and applicable international laws, treaties, and conventions.
' 
' You may freely redistribute and use this sample code, with or
' without modification, provided you include the original copyright
' notice and use restrictions.
' 
' See the use restrictions.
'


Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.Web.UI
Imports ESRI.ArcGIS.ADF.Web.Geometry
Imports ESRI.ArcGIS.ADF.Web.SpatialReference
Imports ESRI.ArcGIS.ADF.Web.DataSources
Imports System.Collections

Imports ESRI.ArcGIS.ADF.Web.Display.Graphics
Imports ESRI.ArcGIS.ADF.Web.Display.Drawing
Imports ESRI.ArcGIS.ADF.Web

Namespace TiledMapDataSource_VBNet
  Public Class MapFunctionality
    Implements IMapFunctionality
    #Region "Constructor"

    Public Sub New(ByVal name_Renamed As String, ByVal resource_Renamed As MapResource)
      Me.name_Renamed = name_Renamed
      Me.resource_Renamed = resource_Renamed
    End Sub

    Public ReadOnly Property MapResource() As MapResource
      Get
        Return TryCast(resource_Renamed, MapResource)
      End Get
    End Property

    #End Region

    #Region "IMapFunctionality implementation"

    #Region "Private Member Vars"
    Private displaySettings_Renamed As ESRI.ArcGIS.ADF.Web.DisplaySettings = Nothing
    Private webControl_Renamed As System.Web.UI.WebControls.WebControl = Nothing
    Private maintainsState_Renamed As Boolean = False
    Private spatialReference_Renamed As ESRI.ArcGIS.ADF.Web.SpatialReference.SpatialReference = Nothing
    Private layerVisibility_Renamed As Dictionary(Of String, Boolean) = Nothing
    #End Region

    #Region "Public Properties"

    Public Property MaintainsState() As Boolean Implements IMapFunctionality.MaintainsState
      Get
        Return maintainsState_Renamed
      End Get
      Set
        maintainsState_Renamed = Value
      End Set
    End Property

    Public Property WebControl() As System.Web.UI.WebControls.WebControl Implements IMapFunctionality.WebControl
      Get
        Return webControl_Renamed
      End Get
      Set
        webControl_Renamed = Value
      End Set
    End Property

    Public ReadOnly Property Units() As ESRI.ArcGIS.ADF.Web.DataSources.Units Implements IMapFunctionality.Units
      Get
        Throw New NotImplementedException()
      End Get
    End Property

    Public Property DisplaySettings() As ESRI.ArcGIS.ADF.Web.DisplaySettings Implements IMapFunctionality.DisplaySettings
      Get
        If maintainsState_Renamed Then
          If displaySettings_Renamed Is Nothing Then
            displaySettings_Renamed = CType(MapResource.DisplaySettings.Clone(), DisplaySettings)
          End If
          Return displaySettings_Renamed
        Else
          Return MapResource.DisplaySettings
        End If
      End Get
      Set
        If maintainsState_Renamed Then
        displaySettings_Renamed = Value
        Else
          MapResource.DisplaySettings = Value
        End If
      End Set
    End Property

    Public ReadOnly Property LayerIDs() As Object()
      Get
        Dim ids As Object() = New Object(LayerVisibility.Count - 1){}
        Dim i As Integer = 0
        For Each kvp As KeyValuePair(Of String, Boolean) In LayerVisibility
          ids(i) = kvp.Key.ToString()
          i += 1
        Next kvp
        Return ids
      End Get
    End Property

    Private extent_Renamed As Envelope
    Public Property Extent() As Envelope
      Get
        Return extent_Renamed
      End Get
      Set
        extent_Renamed = Value
      End Set
    End Property

    Public Property SpatialReference() As ESRI.ArcGIS.ADF.Web.SpatialReference.SpatialReference Implements IMapFunctionality.SpatialReference
      Get
        Return spatialReference_Renamed
      End Get
      Set
        spatialReference_Renamed = Value
      End Set
    End Property

    Public Function GetScale() As Double
      Return Double.NaN
    End Function

    Public ReadOnly Property Rotation() As Double Implements IMapFunctionality.Rotation
      Get
        Return Double.NaN
      End Get
    End Property
    #End Region

    #Region "Public Methods"

    Public Sub ApplyStateToDataSourceObjects() Implements IMapFunctionality.ApplyStateToDataSourceObjects
      Throw New NotImplementedException()
    End Sub

    Public Sub GetStateFromDataSourceObjects() Implements IMapFunctionality.GetStateFromDataSourceObjects
      Throw New NotImplementedException()
    End Sub

        Public Sub GetLayers(<System.Runtime.InteropServices.Out()> ByRef layerids As String(), <System.Runtime.InteropServices.Out()> ByRef layernames As String()) Implements IMapFunctionality.GetLayers
            Throw New NotImplementedException()
        End Sub

    Public Sub GetVisibleScale(ByVal layerid As String, <System.Runtime.InteropServices.Out()> ByRef minscale As Double, <System.Runtime.InteropServices.Out()> ByRef maxscale As Double) Implements IMapFunctionality.GetVisibleScale
      Throw New NotImplementedException()
    End Sub

    Public Function GetScale(ByVal extent_Renamed As ESRI.ArcGIS.ADF.Web.Geometry.Envelope, ByVal mapWidth As Integer, ByVal mapHeight As Integer) As Double Implements IMapFunctionality.GetScale
      Throw New NotImplementedException()
    End Function

        Public Function GetCopyrightText() As System.Collections.Generic.Dictionary(Of String, String) Implements IMapFunctionality.GetCopyrightText
            Throw New NotImplementedException()
        End Function

    Public Function DrawExtent(ByVal extentToDraw As ESRI.ArcGIS.ADF.Web.Geometry.Envelope) As ESRI.ArcGIS.ADF.Web.MapImage Implements IMapFunctionality.DrawExtent
      Throw New NotImplementedException()
    End Function

    Public ReadOnly Property LayerVisibility() As Dictionary(Of String, Boolean)
      Get
        If maintainsState_Renamed Then
          Return MapResource.layerVisibility
        Else
          Return layerVisibility_Renamed
        End If
      End Get
    End Property

    Public Function GetLayerVisibility(ByVal layerID As String) As Boolean Implements IMapFunctionality.GetLayerVisibility
      Return LayerVisibility(layerID)
    End Function

    Public Sub SetLayerVisibility(ByVal layerID As String, ByVal visible As Boolean) Implements IMapFunctionality.SetLayerVisibility
      LayerVisibility(layerID) = visible
    End Sub

    #End Region

    #End Region

    #Region "IGISFunctionality implementation"

    Private name_Renamed As String = String.Empty
    Private resource_Renamed As IGISResource = Nothing
    Private initialized_Renamed As Boolean = False

    Public Property Name() As String Implements IMapFunctionality.Name
      Get
        Return name_Renamed
      End Get
      Set
        name_Renamed = Value
      End Set
    End Property

    Public Property Resource() As IGISResource Implements IMapFunctionality.Resource
      Get
        Return resource_Renamed
      End Get
      Set
        resource_Renamed = Value
      End Set
    End Property

    Public ReadOnly Property Initialized() As Boolean Implements IMapFunctionality.Initialized
      Get
        Return initialized_Renamed
      End Get
    End Property

    Public Sub LoadState() Implements IMapFunctionality.LoadState
      If resource_Renamed.DataSource Is Nothing Then
      Return
      End If
      If resource_Renamed.DataSource.State Is Nothing Then
      Return
      End If
      Dim o As Object = resource_Renamed.DataSource.State(key)
      If Not o Is Nothing Then
        Dim mf As MapFunctionality = TryCast(o, MapFunctionality)
        layerVisibility_Renamed = mf.layerVisibility
      End If
    End Sub

    Public Sub Initialize() Implements IMapFunctionality.Initialize
      initialized_Renamed = True
      If layerVisibility_Renamed Is Nothing Then
        layerVisibility_Renamed = New Dictionary(Of String, Boolean)()
        Dim mapRes As MapResource = TryCast(resource_Renamed, MapResource)
        For Each kvp As KeyValuePair(Of String, Boolean) In mapRes.layerVisibility
          layerVisibility_Renamed.Add(kvp.Key, kvp.Value)
        Next kvp

      End If
    End Sub

    Public Sub SaveState() Implements IMapFunctionality.SaveState
      If resource_Renamed.DataSource Is Nothing Then
      Return
      End If
      If resource_Renamed.DataSource.State Is Nothing Then
      Return
      End If
      resource_Renamed.DataSource.State(key) = Me
    End Sub

    Public Sub Dispose() Implements IMapFunctionality.Dispose
      initialized_Renamed = False
    End Sub

    Public Function Supports(ByVal operation As String) As Boolean Implements IMapFunctionality.Supports
      Return False
    End Function

    #End Region

    #Region "Private Properties"

    Private ReadOnly Property key() As String
      Get
        Dim szResource As String = CType(resource_Renamed, Object).GetType().ToString() & ":" & resource_Renamed.Name
        Dim szThis As String = Me.GetType().ToString() & ":" & name_Renamed
        Return (szResource & "," & szThis)
      End Get
    End Property

    #End Region

  End Class
End Namespace