Common Custom data source
Common_CustomDataSource_VBNet\TiledMapDataSource_VBNet\MapResource.vb
' Copyright 2010 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 System.Collections
Imports ESRI.ArcGIS.ADF.Web.DataSources
Imports ESRI.ArcGIS.ADF.Web.Display.Graphics

Namespace TiledMapDataSource_VBNet
    Public Class MapResource
        Implements IMapResource
        Public Sub New()
        End Sub
        Public Sub New(ByVal name_Renamed As String, ByVal dataSource_Renamed As GISDataSource)
            Me.name_Renamed = name_Renamed
            Me.dataSource_Renamed = dataSource_Renamed
        End Sub

#Region "IMapResource implementation"

        Private mapInformation_Renamed As IMapInformation = Nothing
        Private displaySettings_Renamed As ESRI.ArcGIS.ADF.Web.DisplaySettings = Nothing

        Public ReadOnly Property MapInformation() As IMapInformation Implements IMapResource.MapInformation
            Get
                Return mapInformation_Renamed
            End Get
        End Property

        Public Property DisplaySettings() As ESRI.ArcGIS.ADF.Web.DisplaySettings Implements IMapResource.DisplaySettings
            Get
                Return displaySettings_Renamed
            End Get
            Set(ByVal value As ESRI.ArcGIS.ADF.Web.DisplaySettings)
                displaySettings_Renamed = Value
            End Set
        End Property

#End Region

#Region "IGISResource implementation"

        Private initialized_Renamed As Boolean = False
        Private name_Renamed As String = String.Empty
        Private resourceDefinition_Renamed As String = String.Empty
        Private dataSource_Renamed As IGISDataSource = Nothing
        Private functionalities_Renamed As GISFunctionalityCollection = New GISFunctionalityCollection()
        Friend layerVisibility As Dictionary(Of String, Boolean) = Nothing
        Private validationtimeout_Renamed As Integer = 0

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

        Public Property ValidationTimeout() As Integer Implements IMapResource.ValidationTimeout
            Get
                Return validationtimeout_Renamed
            End Get
            Set(ByVal value As Integer)
                validationtimeout_Renamed = Value
            End Set
        End Property

        Public Property ResourceDefinition() As String Implements IMapResource.ResourceDefinition
            Get
                Return resourceDefinition_Renamed
            End Get
            Set(ByVal value As String)
                resourceDefinition_Renamed = Value
            End Set
        End Property

        Public Property DataSource() As IGISDataSource Implements IMapResource.DataSource
            Get
                Return dataSource_Renamed
            End Get
            Set(ByVal value As IGISDataSource)
                dataSource_Renamed = Value
            End Set
        End Property

        Public Property Functionalities() As GISFunctionalityCollection Implements IMapResource.Functionalities
            Get
                Return functionalities_Renamed
            End Get
            Set(ByVal value As GISFunctionalityCollection)
                functionalities_Renamed = Value
            End Set
        End Property

        Public Function SupportsFunctionality(ByVal functionalityType As System.Type) As Boolean Implements IMapResource.SupportsFunctionality
            If functionalityType Is GetType(ESRI.ArcGIS.ADF.Web.DataSources.IMapFunctionality) Then
                Return True
            ElseIf functionalityType Is GetType(ESRI.ArcGIS.ADF.Web.DataSources.ITileFunctionality) Then
                Return True
            ElseIf functionalityType Is GetType(ESRI.ArcGIS.ADF.Web.DataSources.IMapTocFunctionality) Then
                Return True
            Else
                Return False
            End If
        End Function

        Public Function CreateFunctionality(ByVal functionalityType As System.Type, ByVal functionalityName As String) As IGISFunctionality Implements IMapResource.CreateFunctionality
            Dim func As IGISFunctionality = Nothing
            If functionalityType Is GetType(ESRI.ArcGIS.ADF.Web.DataSources.IMapFunctionality) Then
                func = New MapFunctionality(functionalityName, Me)
            ElseIf functionalityType Is GetType(ESRI.ArcGIS.ADF.Web.DataSources.ITileFunctionality) Then
                Dim tileCacheInfo As TileCacheInfo = TryCast(mapInformation_Renamed.TileCacheInfo, TileCacheInfo)
                func = New TileFunctionality(functionalityName, Me, tileCacheInfo)
            ElseIf functionalityType Is GetType(ESRI.ArcGIS.ADF.Web.DataSources.IMapTocFunctionality) Then
                Dim tileCacheInfo As TileCacheInfo = TryCast(mapInformation_Renamed.TileCacheInfo, TileCacheInfo)
                func = New MapTocFunctionality(functionalityName, Me, tileCacheInfo)
            Else
                Throw New ArgumentException("functionalityType")
            End If
            Return func
        End Function

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

        Public Sub LoadState() Implements IMapResource.LoadState
            If dataSource_Renamed Is Nothing Then
                Return
            End If
            If dataSource_Renamed.State Is Nothing Then
                Return
            End If

            Dim o As Object = dataSource_Renamed.State(key)
            If Not o Is Nothing Then
                Dim mr As MapResource = TryCast(o, MapResource)
                mapInformation_Renamed = mr.mapInformation
                layerVisibility = mr.layerVisibility
            End If
        End Sub

        Public Sub Initialize() Implements IMapResource.Initialize
            If mapInformation_Renamed Is Nothing Then
                mapInformation_Renamed = New MapInformation(DataSource.DataSourceDefinition, ResourceDefinition)
            End If

            If layerVisibility Is Nothing Then
                Dim tileCacheInfo As TileCacheInfo = CType(mapInformation_Renamed.TileCacheInfo, TileCacheInfo)
                layerVisibility = New Dictionary(Of String, Boolean)()
                If Not tileCacheInfo.Layers Is Nothing Then
                    For Each kvp As KeyValuePair(Of String, String) In tileCacheInfo.Layers
                        layerVisibility.Add(kvp.Key, True)
                    Next kvp
                End If
            End If
            initialized_Renamed = True
        End Sub

        Public Sub SaveState() Implements IMapResource.SaveState
            If dataSource_Renamed Is Nothing Then
                Return
            End If
            If dataSource_Renamed.State Is Nothing Then
                Return
            End If
            dataSource_Renamed.State(key) = Me
        End Sub

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

        Public Sub ClearState() Implements IMapResource.ClearState
            If DataSource Is Nothing OrElse DataSource.State Is Nothing Then
                Return
            End If
            DataSource.State(key) = Nothing
        End Sub

#End Region

#Region "private Key Properties"
        Friend ReadOnly Property key() As String
            Get
                Dim tmp As String = Me.GetType().ToString() & ":" & name_Renamed
                Return (tmp)
            End Get
        End Property
#End Region

    End Class
End Namespace