using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.ComponentModel;

#pragma warning disable 1591

namespace OSGeo.MapGuide.Viewer
{
    [ToolboxItem(true)]
    public class MgLoadPackageComponent : MgComponent
    {
        public MgLoadPackageComponent() 
        {
            this.Label = this.ToolTipText = Strings.TextLoadPackage;
            this.Icon = Properties.Resources.load_package;
        }

        protected override bool RequiresLoadedMap
        {
            get
            {
                return false;
            }
        }

        [Description("The LoadMap component to invoke once the package has been loaded")]
        [MgComponentProperty]
        public MgLoadMapComponent InvokeOnPackageLoad
        {
            get;
            set;
        }

        public override void Invoke()
        {
            using (var open = new OpenFileDialog())
            {
                open.Title = Strings.TextLoadPackage;
                open.Filter = "*.mgp|*.mgp";
                if (open.ShowDialog() == DialogResult.OK)
                {
                    var viewer = this.Viewer;
                    var provider = viewer.GetProvider();
                    var resSvc = (MgResourceService)provider.CreateService(MgServiceType.ResourceService);
                    var source = new MgByteSource(open.FileName);
                    var br = source.GetReader();

                    resSvc.ApplyResourcePackage(br);
                    MessageBox.Show(Strings.TextPackageLoaded);
                    if (this.InvokeOnPackageLoad != null)
                        this.InvokeOnPackageLoad.Invoke();
                }
            }
        }
    }
}