ArcObjects Library Reference  

CacheManagerDlg

About the Dynamic cache layer manager controller Sample

[C#]

CacheManagerDlg.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using ESRI.ArcGIS.Controls;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.SystemUI;

namespace DynamicCacheLayerManagerController
{
  public partial class CacheManagerDlg : Form, IDisposable
  {
    #region dialog class members
    public struct LayerCacheInfo
    {
      public string name;
      public string folderName;
      public string folderPath;
      public string format;
      public bool alwaysDrawCoarsestLevel;
      public bool strictOnDemand;
      public int progressiveDrawingLevels;
      public int progressiveFetchingLevels;
      public double detailsThreshold;
      public double maxCacheScale;

      // override ToString method in order to show only the layer name in the combo itself
      public override string ToString()
      {
        return name;
      }
    }
    
    
    private IHookHelper m_hookHelper = null;

    private Dictionary<string, LayerCacheInfo> m_layerCacheInfos = new Dictionary<string, LayerCacheInfo>();
    #endregion

    #region dialog constructor
    public CacheManagerDlg(IHookHelper hookHelper)
    {
      m_hookHelper = hookHelper;

      InitializeComponent();
    }
    #endregion

    #region private methods

    private void CacheManagerDlg_Load(object sender, EventArgs e)
    {
      InitializeForm();
    }

    private void cboLayerNames_SelectedIndexChanged(object sender, EventArgs e)
    {
      // get the layers from the map
      if (m_hookHelper.FocusMap.LayerCount == 0)
        return;

      IMap map = m_hookHelper.FocusMap;

      IDynamicCacheLayerManager dynamicCacheLayerManager = new DynamicCacheLayerManagerClass();

      // get all of the non-dynamic layers
      ILayer layer;
      for (int i = 0; i < map.LayerCount; i++)
      {
        layer = map.get_Layer(i);
        if (layer is IDynamicLayer)
          continue;

        dynamicCacheLayerManager.Init(map, layer);
        LayerCacheInfo layerInfo = (LayerCacheInfo)cboLayerNames.SelectedItem;
        if (dynamicCacheLayerManager.FolderName == layerInfo.folderName)
        {
          // populate the form
          lblCacheFolderName.Text = dynamicCacheLayerManager.FolderName;
          lblCacheFolderPath.Text = dynamicCacheLayerManager.FolderPath;
          if (dynamicCacheLayerManager.Format.ToUpper().IndexOf("PNG") > -1)
            rdoPNG.Checked = true;
          else
            rdoJPEG.Checked = true;

          chkAlwaysDrawCoarsestLevel.Checked = dynamicCacheLayerManager.AlwaysDrawCoarsestLevel;
          numDetaildThreshold.Value = Convert.ToDecimal(dynamicCacheLayerManager.DetailsThreshold);
          chkStrictOnDemandMode.Checked = dynamicCacheLayerManager.StrictOnDemandMode;
          numProgressiveDrawingLevels.Value = dynamicCacheLayerManager.ProgressiveDrawingLevels;
          numProgressiveFetchingLevels.Value = dynamicCacheLayerManager.ProgressiveFetchingLevels;
          numMaxCacheScale.Value = Convert.ToDecimal(dynamicCacheLayerManager.MaxCacheScale);
          return;
        }
      }
    }

    private void btnFolderPath_Click(object sender, EventArgs e)
    {
      FolderBrowserDialog dlg = new FolderBrowserDialog();
      dlg.ShowNewFolderButton = true;
      dlg.Description = "Cache Folder";

      if (cboLayerNames.SelectedIndex != -1)
      {
        LayerCacheInfo layerInfo = (LayerCacheInfo)cboLayerNames.SelectedItem;
        dlg.SelectedPath = layerInfo.folderPath;
      }

      if (DialogResult.OK == dlg.ShowDialog())
      {
        if (System.IO.Directory.Exists(dlg.SelectedPath))
          lblCacheFolderPath.Text = dlg.SelectedPath;
      }
    }

    private void btnRestoreDefaults_Click(object sender, EventArgs e)
    {
      // get the selected item
      if (cboLayerNames.SelectedIndex == -1)
        return;

      LayerCacheInfo layerInfo = (LayerCacheInfo)cboLayerNames.SelectedItem;
      if (m_layerCacheInfos.ContainsKey(layerInfo.folderName))
      {
        layerInfo = m_layerCacheInfos[layerInfo.folderName];
        // populate the form
        lblCacheFolderName.Text = layerInfo.folderName;
        lblCacheFolderPath.Text = layerInfo.folderPath;
        if (layerInfo.format.ToUpper().IndexOf("PNG") > -1)
          rdoPNG.Checked = true;
        else
          rdoJPEG.Checked = true;

        chkAlwaysDrawCoarsestLevel.Checked = layerInfo.alwaysDrawCoarsestLevel;
        chkStrictOnDemandMode.Checked = layerInfo.strictOnDemand;
        numDetaildThreshold.Value = Convert.ToDecimal(layerInfo.detailsThreshold);
        numProgressiveDrawingLevels.Value = layerInfo.progressiveDrawingLevels;
        numProgressiveFetchingLevels.Value = layerInfo.progressiveFetchingLevels;
        numMaxCacheScale.Value = Convert.ToDecimal(layerInfo.maxCacheScale);
      }


    }

    private void btnDismiss_Click(object sender, EventArgs e)
    {
      Close();
    }

    private void btnApply_Click(object sender, EventArgs e)
    {
      UpdateLayer();
    }

    private void btnOK_Click(object sender, EventArgs e)
    {
      UpdateLayer();
      Close();
    }

    private void GetCacheDefaultsProps()
    {
      m_layerCacheInfos.Clear();

      if (m_hookHelper.FocusMap.LayerCount == 0)
        return;

      IMap map = m_hookHelper.FocusMap;

      IDynamicCacheLayerManager dynamicCacheLayerManager = new DynamicCacheLayerManagerClass();

      // get all of the non-dynamic layers
      ILayer layer;
      for (int i = 0; i < map.LayerCount; i++)
      {
        layer = map.get_Layer(i);
        if (layer is IDynamicLayer)
          continue;

        dynamicCacheLayerManager.Init(map, layer);
        LayerCacheInfo layerCacheInfo;
        layerCacheInfo.name                       = layer.Name;
        layerCacheInfo.folderName                 = dynamicCacheLayerManager.FolderName;
        layerCacheInfo.folderPath                 = dynamicCacheLayerManager.FolderPath;
        layerCacheInfo.format                     = dynamicCacheLayerManager.Format;
        layerCacheInfo.detailsThreshold           = dynamicCacheLayerManager.DetailsThreshold;
        layerCacheInfo.alwaysDrawCoarsestLevel    = dynamicCacheLayerManager.AlwaysDrawCoarsestLevel;
        layerCacheInfo.progressiveDrawingLevels   = dynamicCacheLayerManager.ProgressiveDrawingLevels;
        layerCacheInfo.progressiveFetchingLevels  = dynamicCacheLayerManager.ProgressiveFetchingLevels;
        layerCacheInfo.strictOnDemand             = dynamicCacheLayerManager.StrictOnDemandMode;
        layerCacheInfo.maxCacheScale              = dynamicCacheLayerManager.MaxCacheScale;

        m_layerCacheInfos.Add(layerCacheInfo.folderName, layerCacheInfo);
      }      
    }

    private void InitializeForm()
    {
      GetCacheDefaultsProps();
      
      if (m_layerCacheInfos.Count == 0)
      {
        // clear the form
        cboLayerNames.Items.Clear();
        cboLayerNames.SelectedIndex = -1;

        lblCacheFolderPath.Text = string.Empty;
        btnFolderPath.Enabled = false;
        numProgressiveDrawingLevels.Value = 0;
        numProgressiveFetchingLevels.Value = 0;
        numMaxCacheScale.Value = 0;

        groupDrawingProps.Enabled = false;
        btnOK.Enabled = false;
        btnApply.Enabled = false;

        return;
      }

      groupDrawingProps.Enabled = true;
      btnFolderPath.Enabled = true;
      btnOK.Enabled = true;
      btnApply.Enabled = true;

      string selectedLayerName = string.Empty;
      LayerCacheInfo layerInfo;
      layerInfo.name = string.Empty;
      layerInfo.folderPath = string.Empty;
      layerInfo.folderName = string.Empty;
      layerInfo.format = string.Empty;
      layerInfo.alwaysDrawCoarsestLevel = false;
      layerInfo.detailsThreshold = 0;
      layerInfo.strictOnDemand = false;
      layerInfo.progressiveDrawingLevels = 0;
      layerInfo.progressiveFetchingLevels = 0;
      layerInfo.maxCacheScale = 0;

      int selectedIndex = cboLayerNames.SelectedIndex;
      if (selectedIndex != -1)
      {
        selectedLayerName = ((LayerCacheInfo)cboLayerNames.SelectedItem).folderName;
        if (m_layerCacheInfos.ContainsKey(selectedLayerName))
          layerInfo = m_layerCacheInfos[selectedLayerName];
      }

      // populate the combo
      cboLayerNames.Items.Clear();
      int index = 0;
      bool bFirst = true;
      foreach (KeyValuePair<string, LayerCacheInfo> layerCacheInfoPair in m_layerCacheInfos)
      {
        cboLayerNames.Items.Add(layerCacheInfoPair.Value);

        if (bFirst && layerInfo.name == string.Empty)
        {
          layerInfo = layerCacheInfoPair.Value;
          cboLayerNames.SelectedIndex = 0;
          bFirst = false;
        }

        if (selectedLayerName == layerCacheInfoPair.Key)
        {
          // make it the selected item
          cboLayerNames.SelectedIndex = index;
        }
        index++;
      }

      // populate the form
      lblCacheFolderName.Text = layerInfo.folderName;
      lblCacheFolderPath.Text = layerInfo.folderPath;
      if (layerInfo.format.ToUpper().IndexOf("PNG")  > -1)
        rdoPNG.Checked = true;
      else
        rdoJPEG.Checked = true;

      chkAlwaysDrawCoarsestLevel.Checked = layerInfo.alwaysDrawCoarsestLevel;
      chkStrictOnDemandMode.Checked = layerInfo.strictOnDemand;
      numDetaildThreshold.Value = Convert.ToDecimal(layerInfo.detailsThreshold);
      numProgressiveDrawingLevels.Value = layerInfo.progressiveDrawingLevels;
      numProgressiveFetchingLevels.Value = layerInfo.progressiveFetchingLevels;      
      numMaxCacheScale.Value = Convert.ToDecimal(layerInfo.maxCacheScale);
    }

    private void UpdateLayer()
    {
      // get the selected layer from the map
      if (m_hookHelper.FocusMap.LayerCount == 0)
        return;

      if (cboLayerNames.SelectedIndex == -1)
        return;

      IMap map = m_hookHelper.FocusMap;

      IDynamicCacheLayerManager dynamicCacheLayerManager = new DynamicCacheLayerManagerClass();

      // get all of the non-dynamic layers
      ILayer layer;
      for (int i = 0; i < map.LayerCount; i++)
      {
        layer = map.get_Layer(i);
        if (layer is IDynamicLayer)
          continue;

        dynamicCacheLayerManager.Init(map, layer);
        LayerCacheInfo layerInfo = (LayerCacheInfo)cboLayerNames.SelectedItem;
        if (dynamicCacheLayerManager.FolderName == layerInfo.folderName)
        {
          dynamicCacheLayerManager.FolderPath = lblCacheFolderPath.Text;
          dynamicCacheLayerManager.Format = (rdoPNG.Checked ? "PNG32" : "JPEG32");
          dynamicCacheLayerManager.StrictOnDemandMode = chkStrictOnDemandMode.Checked;
          dynamicCacheLayerManager.AlwaysDrawCoarsestLevel = chkAlwaysDrawCoarsestLevel.Checked;
          dynamicCacheLayerManager.DetailsThreshold = Convert.ToDouble(numDetaildThreshold.Value);
          dynamicCacheLayerManager.ProgressiveDrawingLevels = Convert.ToInt32(numProgressiveDrawingLevels.Value);
          dynamicCacheLayerManager.ProgressiveFetchingLevels = Convert.ToInt32(numProgressiveFetchingLevels.Value);
          dynamicCacheLayerManager.MaxCacheScale = Convert.ToDouble(numMaxCacheScale.Value);
        }
      }
    }

    #endregion
  }
}
[Visual Basic .NET]

CacheManagerDlg.vb

Imports Microsoft.VisualBasic
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms
Imports ESRI.ArcGIS.Controls
Imports ESRI.ArcGIS.Carto
Imports ESRI.ArcGIS.Display
Imports ESRI.ArcGIS.esriSystem
Imports ESRI.ArcGIS.SystemUI

  Public Partial Class CacheManagerDlg : Inherits Form : Implements IDisposable
	#Region "dialog class members"
	Public Structure LayerCacheInfo
	  Public name As String
	  Public folderName As String
	  Public folderPath As String
	  Public format As String
	  Public alwaysDrawCoarsestLevel As Boolean
	  Public strictOnDemand As Boolean
	  Public progressiveDrawingLevels As Integer
	  Public progressiveFetchingLevels As Integer
	  Public detailsThreshold As Double
	  Public maxCacheScale As Double

	  ' override ToString method in order to show only the layer name in the combo itself
	  Public Overrides Function ToString() As String
			Return name
	  End Function
	End Structure

	Private m_hookHelper As IHookHelper = Nothing
	Private m_layerCacheInfos As Dictionary(Of String, LayerCacheInfo) = New Dictionary(Of String, LayerCacheInfo)()
	#End Region

	#Region "dialog constructor"
	Public Sub New(ByVal hookHelper As IHookHelper)
	  m_hookHelper = hookHelper

	  InitializeComponent()
	End Sub
	#End Region

	#Region "private methods"

	Private Sub CacheManagerDlg_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
	  InitializeForm()
	End Sub

	Private Sub cboLayerNames_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles cboLayerNames.SelectedIndexChanged
	  ' get the layers from the map
	  If m_hookHelper.FocusMap.LayerCount = 0 Then
			Return
	  End If

	  Dim map As IMap = m_hookHelper.FocusMap

	  Dim dynamicCacheLayerManager As IDynamicCacheLayerManager = New DynamicCacheLayerManagerClass()

	  ' get all of the non-dynamic layers
	  Dim layer As ILayer
	  Dim i As Integer = 0
	  Do While i < map.LayerCount
			layer = map.Layer(i)
			If TypeOf layer Is IDynamicLayer Then
				Continue Do
			End If

			dynamicCacheLayerManager.Init(map, layer)
			Dim layerInfo As LayerCacheInfo = CType(cboLayerNames.SelectedItem, LayerCacheInfo)
			If dynamicCacheLayerManager.FolderName = layerInfo.folderName Then
				' populate the form
				lblCacheFolderName.Text = dynamicCacheLayerManager.FolderName
				lblCacheFolderPath.Text = dynamicCacheLayerManager.FolderPath
				If dynamicCacheLayerManager.Format.ToUpper().IndexOf("PNG") > -1 Then
					rdoPNG.Checked = True
				Else
					rdoJPEG.Checked = True
				End If

				chkAlwaysDrawCoarsestLevel.Checked = dynamicCacheLayerManager.AlwaysDrawCoarsestLevel
				numDetaildThreshold.Value = Convert.ToDecimal(dynamicCacheLayerManager.DetailsThreshold)
				chkStrictOnDemandMode.Checked = dynamicCacheLayerManager.StrictOnDemandMode
				numProgressiveDrawingLevels.Value = dynamicCacheLayerManager.ProgressiveDrawingLevels
				numProgressiveFetchingLevels.Value = dynamicCacheLayerManager.ProgressiveFetchingLevels
				numMaxCacheScale.Value = Convert.ToDecimal(dynamicCacheLayerManager.MaxCacheScale)
				Return
			End If
		  i += 1
	  Loop
	End Sub

	Private Sub btnFolderPath_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnFolderPath.Click
	  Dim dlg As FolderBrowserDialog = New FolderBrowserDialog()
	  dlg.ShowNewFolderButton = True
	  dlg.Description = "Cache Folder"

	  If cboLayerNames.SelectedIndex <> -1 Then
			Dim layerInfo As LayerCacheInfo = CType(cboLayerNames.SelectedItem, LayerCacheInfo)
			dlg.SelectedPath = layerInfo.folderPath
	  End If

	  If System.Windows.Forms.DialogResult.OK = dlg.ShowDialog() Then
			If System.IO.Directory.Exists(dlg.SelectedPath) Then
				lblCacheFolderPath.Text = dlg.SelectedPath
			End If
	  End If
	End Sub

	Private Sub btnRestoreDefaults_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnRestoreDefaults.Click
	  ' get the selected item
	  If cboLayerNames.SelectedIndex = -1 Then
			Return
	  End If

	  Dim layerInfo As LayerCacheInfo = CType(cboLayerNames.SelectedItem, LayerCacheInfo)
	  If m_layerCacheInfos.ContainsKey(layerInfo.folderName) Then
			layerInfo = m_layerCacheInfos(layerInfo.folderName)
			' populate the form
			lblCacheFolderName.Text = layerInfo.folderName
			lblCacheFolderPath.Text = layerInfo.folderPath
			If layerInfo.format.ToUpper().IndexOf("PNG") > -1 Then
				rdoPNG.Checked = True
			Else
				rdoJPEG.Checked = True
			End If

			chkAlwaysDrawCoarsestLevel.Checked = layerInfo.alwaysDrawCoarsestLevel
			chkStrictOnDemandMode.Checked = layerInfo.strictOnDemand
			numDetaildThreshold.Value = Convert.ToDecimal(layerInfo.detailsThreshold)
			numProgressiveDrawingLevels.Value = layerInfo.progressiveDrawingLevels
			numProgressiveFetchingLevels.Value = layerInfo.progressiveFetchingLevels
			numMaxCacheScale.Value = Convert.ToDecimal(layerInfo.maxCacheScale)
	  End If


	End Sub

	Private Sub btnDismiss_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnDismiss.Click
	  Close()
	End Sub

	Private Sub btnApply_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnApply.Click
	  UpdateLayer()
	End Sub

	Private Sub btnOK_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnOK.Click
	  UpdateLayer()
	  Close()
	End Sub

	Private Sub GetCacheDefaultsProps()
	  m_layerCacheInfos.Clear()

	  If m_hookHelper.FocusMap.LayerCount = 0 Then
			Return
	  End If

	  Dim map As IMap = m_hookHelper.FocusMap

	  Dim dynamicCacheLayerManager As IDynamicCacheLayerManager = New DynamicCacheLayerManagerClass()

	  ' get all of the non-dynamic layers
	  Dim layer As ILayer
	  Dim i As Integer = 0
	  Do While i < map.LayerCount
			layer = map.Layer(i)
			If TypeOf layer Is IDynamicLayer Then
				Continue Do
			End If

			dynamicCacheLayerManager.Init(map, layer)
			Dim layerCacheInfo As LayerCacheInfo
			layerCacheInfo.name = layer.Name
			layerCacheInfo.folderName = dynamicCacheLayerManager.FolderName
			layerCacheInfo.folderPath = dynamicCacheLayerManager.FolderPath
			layerCacheInfo.format = dynamicCacheLayerManager.Format
			layerCacheInfo.detailsThreshold = dynamicCacheLayerManager.DetailsThreshold
			layerCacheInfo.alwaysDrawCoarsestLevel = dynamicCacheLayerManager.AlwaysDrawCoarsestLevel
			layerCacheInfo.progressiveDrawingLevels = dynamicCacheLayerManager.ProgressiveDrawingLevels
			layerCacheInfo.progressiveFetchingLevels = dynamicCacheLayerManager.ProgressiveFetchingLevels
			layerCacheInfo.strictOnDemand = dynamicCacheLayerManager.StrictOnDemandMode
			layerCacheInfo.maxCacheScale = dynamicCacheLayerManager.MaxCacheScale

			m_layerCacheInfos.Add(layerCacheInfo.folderName, layerCacheInfo)
		  i += 1
	  Loop
	End Sub

	Private Sub InitializeForm()
	  GetCacheDefaultsProps()

	  If m_layerCacheInfos.Count = 0 Then
			' clear the form
			cboLayerNames.Items.Clear()
			cboLayerNames.SelectedIndex = -1

			lblCacheFolderPath.Text = String.Empty
			btnFolderPath.Enabled = False
			numProgressiveDrawingLevels.Value = 0
			numProgressiveFetchingLevels.Value = 0
			numMaxCacheScale.Value = 0

			groupDrawingProps.Enabled = False
			btnOK.Enabled = False
			btnApply.Enabled = False

			Return
	  End If

	  groupDrawingProps.Enabled = True
	  btnFolderPath.Enabled = True
	  btnOK.Enabled = True
	  btnApply.Enabled = True

	  Dim selectedLayerName As String = String.Empty
	  Dim layerInfo As LayerCacheInfo
	  layerInfo.name = String.Empty
	  layerInfo.folderPath = String.Empty
	  layerInfo.folderName = String.Empty
	  layerInfo.format = String.Empty
	  layerInfo.alwaysDrawCoarsestLevel = False
	  layerInfo.detailsThreshold = 0
	  layerInfo.strictOnDemand = False
	  layerInfo.progressiveDrawingLevels = 0
	  layerInfo.progressiveFetchingLevels = 0
	  layerInfo.maxCacheScale = 0

	  Dim selectedIndex As Integer = cboLayerNames.SelectedIndex
	  If selectedIndex <> -1 Then
			selectedLayerName = (CType(cboLayerNames.SelectedItem, LayerCacheInfo)).folderName
			If m_layerCacheInfos.ContainsKey(selectedLayerName) Then
				layerInfo = m_layerCacheInfos(selectedLayerName)
			End If
	  End If

	  ' populate the combo
	  cboLayerNames.Items.Clear()
	  Dim index As Integer = 0
	  Dim bFirst As Boolean = True
	  For Each layerCacheInfoPair As KeyValuePair(Of String, LayerCacheInfo) In m_layerCacheInfos
			cboLayerNames.Items.Add(layerCacheInfoPair.Value)

			If bFirst AndAlso layerInfo.name = String.Empty Then
				layerInfo = layerCacheInfoPair.Value
				cboLayerNames.SelectedIndex = 0
				bFirst = False
			End If

			If selectedLayerName = layerCacheInfoPair.Key Then
				' make it the selected item
				cboLayerNames.SelectedIndex = index
			End If
			index += 1
	  Next layerCacheInfoPair

	  ' populate the form
	  lblCacheFolderName.Text = layerInfo.folderName
	  lblCacheFolderPath.Text = layerInfo.folderPath
	  If layerInfo.format.ToUpper().IndexOf("PNG") > -1 Then
			rdoPNG.Checked = True
	  Else
			rdoJPEG.Checked = True
	  End If

	  chkAlwaysDrawCoarsestLevel.Checked = layerInfo.alwaysDrawCoarsestLevel
	  chkStrictOnDemandMode.Checked = layerInfo.strictOnDemand
	  numDetaildThreshold.Value = Convert.ToDecimal(layerInfo.detailsThreshold)
	  numProgressiveDrawingLevels.Value = layerInfo.progressiveDrawingLevels
	  numProgressiveFetchingLevels.Value = layerInfo.progressiveFetchingLevels
	  numMaxCacheScale.Value = Convert.ToDecimal(layerInfo.maxCacheScale)
	End Sub

	Private Sub UpdateLayer()
	  ' get the selected layer from the map
	  If m_hookHelper.FocusMap.LayerCount = 0 Then
			Return
	  End If

	  If cboLayerNames.SelectedIndex = -1 Then
			Return
	  End If

	  Dim map As IMap = m_hookHelper.FocusMap

	  Dim dynamicCacheLayerManager As IDynamicCacheLayerManager = New DynamicCacheLayerManagerClass()

	  ' get all of the non-dynamic layers
	  Dim layer As ILayer
	  Dim i As Integer = 0
	  Do While i < map.LayerCount
			layer = map.Layer(i)
		If TypeOf layer Is IDynamicLayer Then
		  Continue Do
		End If

		dynamicCacheLayerManager.Init(map, layer)
		Dim layerInfo As LayerCacheInfo = CType(cboLayerNames.SelectedItem, LayerCacheInfo)
		If dynamicCacheLayerManager.FolderName = layerInfo.folderName Then
		  dynamicCacheLayerManager.FolderPath = lblCacheFolderPath.Text
		  If rdoPNG.Checked Then
			  dynamicCacheLayerManager.Format = ("PNG32")
		  Else
			  dynamicCacheLayerManager.Format = ("JPEG32")
		  End If
		  dynamicCacheLayerManager.StrictOnDemandMode = chkStrictOnDemandMode.Checked
		  dynamicCacheLayerManager.AlwaysDrawCoarsestLevel = chkAlwaysDrawCoarsestLevel.Checked
		  dynamicCacheLayerManager.DetailsThreshold = Convert.ToDouble(numDetaildThreshold.Value)
		  dynamicCacheLayerManager.ProgressiveDrawingLevels = Convert.ToInt32(numProgressiveDrawingLevels.Value)
		  dynamicCacheLayerManager.ProgressiveFetchingLevels = Convert.ToInt32(numProgressiveFetchingLevels.Value)
		  dynamicCacheLayerManager.MaxCacheScale = Convert.ToDouble(numMaxCacheScale.Value)
		End If
		  i += 1
	  Loop
	End Sub

	#End Region
  End Class