using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using OSGeo.MapGuide.Viewer;
using OSGeo.MapGuide;
using OSGeo.MapGuide.Viewer.AppLayoutEngine;

namespace SampleExtension
{
    public partial class InteractingWithLayers : MgControlView
    {
        private IMapViewer _viewer;

        public InteractingWithLayers(IMapViewer viewer)
        {
            InitializeComponent();
            _viewer = viewer;
            this.Title = "Interacting With Layers";

            MgMapBase map = _viewer.GetMap();
            MgLayerCollection layers = map.GetLayers();
            if (layers.IndexOf("Roads") >= 0 && layers.IndexOf("Streets") < 0)
            {
                btnRenameRoadsLayer.Text = "Rename Roads Layer to Streets";
            }
            else if (layers.IndexOf("Roads") < 0 && layers.IndexOf("Streets") >= 0)
            {
                btnRenameRoadsLayer.Text = "Rename Streets Layer to Roads";
            }
        }

        private void btnLayerVisibility_Click(object sender, EventArgs e)
        {
            MgMapBase map = _viewer.GetMap();
            MgLayerCollection layers = map.GetLayers();
            new LayerVisibilityDialog(layers).ShowDialog();
        }

        private void btnRenameRoadsLayer_Click(object sender, EventArgs e)
        {
            MgMapBase map = _viewer.GetMap();
            MgLayerCollection layers = map.GetLayers();

            bool bRefresh = false;
            if (layers.IndexOf("Roads") >= 0)
            {
                MgLayerBase roads = layers.GetItem("Roads");
                roads.Name = "Streets";
                roads.LegendLabel = "Streets";

                MessageBox.Show("Layer (Roads) has been changed to (Streets)");
                btnRenameRoadsLayer.Text = "Rename Streets Layer to Roads";
                bRefresh = true;
            }
            else if (layers.IndexOf("Streets") >= 0)
            {
                MgLayerBase streets = layers.GetItem("Streets");
                streets.Name = "Roads";
                streets.LegendLabel = "Roads";

                MessageBox.Show("Layer (Streets) has been changed to (Roads)");
                btnRenameRoadsLayer.Text = "Rename Roads Layer to Streets";
                bRefresh = true;
            }

            if (bRefresh)
            {
                _viewer.RefreshMap();
                IMapLegend legend = Shell.Instance.Legend;
                if (legend != null)
                    legend.RefreshLegend();
            }
        }
    }
}