//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

using VSShellInterop = global::Microsoft.VisualStudio.Shell.Interop;
using VSShell = global::Microsoft.VisualStudio.Shell;
using DslShell = global::Microsoft.VisualStudio.Modeling.Shell;
using DslDesign = global::Microsoft.VisualStudio.Modeling.Design;
using DslModeling = global::Microsoft.VisualStudio.Modeling;
using VSTextTemplatingHost = global::Microsoft.VisualStudio.TextTemplating.VSHost;
using System;
using System.Diagnostics;
using System.Drawing.Design;
using System.Linq;
using System.Windows.Forms;
	
namespace MDC.ProductionSystem
{
	/// <summary>
	/// This class implements the VS package that integrates this DSL into Visual Studio.
	/// </summary>
	[VSShell::DefaultRegistryRoot("Software\\Microsoft\\VisualStudio\\10.0")]
	[VSShell::PackageRegistration(RegisterUsing = VSShell::RegistrationMethod.Assembly, UseManagedResourcesOnly = true)]
	[VSShell::ProvideToolWindow(typeof(ProductionSystemExplorerToolWindow), MultiInstances = false, Style = VSShell::VsDockStyle.Tabbed, Orientation = VSShell::ToolWindowOrientation.Right, Window = "{3AE79031-E1BC-11D0-8F78-00A0C9110057}")]
	[VSShell::ProvideToolWindowVisibility(typeof(ProductionSystemExplorerToolWindow), Constants.ProductionSystemEditorFactoryId)]
	[VSShell::ProvideStaticToolboxGroup("@ProductionSystemToolboxTab;MDC.ProductionSystem.Dsl.dll", "MDC.ProductionSystem.ProductionSystemToolboxTab")]
	[VSShell::ProvideStaticToolboxItem("MDC.ProductionSystem.ProductionSystemToolboxTab",
					"@ConveyorBeltToolboxItem;MDC.ProductionSystem.Dsl.dll", 
					"MDC.ProductionSystem.ConveyorBeltToolboxItem", 
					"CF_TOOLBOXITEMCONTAINER,CF_TOOLBOXITEMCONTAINER_HASH,CF_TOOLBOXITEMCONTAINER_CONTENTS", 
					"ConveyorBelt", 
					"@ConveyorBeltToolboxBitmap;MDC.ProductionSystem.Dsl.dll", 
					0xff00ff)]
	[VSShell::ProvideStaticToolboxItem("MDC.ProductionSystem.ProductionSystemToolboxTab",
					"@WheelGeneratorToolboxItem;MDC.ProductionSystem.Dsl.dll", 
					"MDC.ProductionSystem.WheelGeneratorToolboxItem", 
					"CF_TOOLBOXITEMCONTAINER,CF_TOOLBOXITEMCONTAINER_HASH,CF_TOOLBOXITEMCONTAINER_CONTENTS", 
					"WheelGenerator", 
					"@WheelGeneratorToolboxBitmap;MDC.ProductionSystem.Dsl.dll", 
					0xff00ff)]
	[VSShell::ProvideStaticToolboxItem("MDC.ProductionSystem.ProductionSystemToolboxTab",
					"@TrackGeneratorToolboxItem;MDC.ProductionSystem.Dsl.dll", 
					"MDC.ProductionSystem.TrackGeneratorToolboxItem", 
					"CF_TOOLBOXITEMCONTAINER,CF_TOOLBOXITEMCONTAINER_HASH,CF_TOOLBOXITEMCONTAINER_CONTENTS", 
					"TrackGenerator", 
					"@TrackGeneratorToolboxBitmap;MDC.ProductionSystem.Dsl.dll", 
					0xff00ff)]
	[VSShell::ProvideStaticToolboxItem("MDC.ProductionSystem.ProductionSystemToolboxTab",
					"@BodyGeneratorToolboxItem;MDC.ProductionSystem.Dsl.dll", 
					"MDC.ProductionSystem.BodyGeneratorToolboxItem", 
					"CF_TOOLBOXITEMCONTAINER,CF_TOOLBOXITEMCONTAINER_HASH,CF_TOOLBOXITEMCONTAINER_CONTENTS", 
					"BodyGenerator", 
					"@BodyGeneratorToolboxBitmap;MDC.ProductionSystem.Dsl.dll", 
					0xff00ff)]
	[VSShell::ProvideStaticToolboxItem("MDC.ProductionSystem.ProductionSystemToolboxTab",
					"@GunGeneratorToolboxItem;MDC.ProductionSystem.Dsl.dll", 
					"MDC.ProductionSystem.GunGeneratorToolboxItem", 
					"CF_TOOLBOXITEMCONTAINER,CF_TOOLBOXITEMCONTAINER_HASH,CF_TOOLBOXITEMCONTAINER_CONTENTS", 
					"GunGenerator", 
					"@GunGeneratorToolboxBitmap;MDC.ProductionSystem.Dsl.dll", 
					0xff00ff)]
	[VSShell::ProvideStaticToolboxItem("MDC.ProductionSystem.ProductionSystemToolboxTab",
					"@WaterGeneratorToolboxItem;MDC.ProductionSystem.Dsl.dll", 
					"MDC.ProductionSystem.WaterGeneratorToolboxItem", 
					"CF_TOOLBOXITEMCONTAINER,CF_TOOLBOXITEMCONTAINER_HASH,CF_TOOLBOXITEMCONTAINER_CONTENTS", 
					"WaterGenerator", 
					"@WaterGeneratorToolboxBitmap;MDC.ProductionSystem.Dsl.dll", 
					0xff00ff)]
	[VSShell::ProvideStaticToolboxItem("MDC.ProductionSystem.ProductionSystemToolboxTab",
					"@OperatorToolboxItem;MDC.ProductionSystem.Dsl.dll", 
					"MDC.ProductionSystem.OperatorToolboxItem", 
					"CF_TOOLBOXITEMCONTAINER,CF_TOOLBOXITEMCONTAINER_HASH,CF_TOOLBOXITEMCONTAINER_CONTENTS", 
					"Operator", 
					"@OperatorToolboxBitmap;MDC.ProductionSystem.Dsl.dll", 
					0xff00ff)]
	[VSShell::ProvideStaticToolboxItem("MDC.ProductionSystem.ProductionSystemToolboxTab",
					"@WheelToolboxItem;MDC.ProductionSystem.Dsl.dll", 
					"MDC.ProductionSystem.WheelToolboxItem", 
					"CF_TOOLBOXITEMCONTAINER,CF_TOOLBOXITEMCONTAINER_HASH,CF_TOOLBOXITEMCONTAINER_CONTENTS", 
					"Wheel", 
					"@WheelToolboxBitmap;MDC.ProductionSystem.Dsl.dll", 
					0xff00ff)]
	[VSShell::ProvideStaticToolboxItem("MDC.ProductionSystem.ProductionSystemToolboxTab",
					"@TrackToolboxItem;MDC.ProductionSystem.Dsl.dll", 
					"MDC.ProductionSystem.TrackToolboxItem", 
					"CF_TOOLBOXITEMCONTAINER,CF_TOOLBOXITEMCONTAINER_HASH,CF_TOOLBOXITEMCONTAINER_CONTENTS", 
					"Track", 
					"@TrackToolboxBitmap;MDC.ProductionSystem.Dsl.dll", 
					0xff00ff)]
	[VSShell::ProvideStaticToolboxItem("MDC.ProductionSystem.ProductionSystemToolboxTab",
					"@BodyToolboxItem;MDC.ProductionSystem.Dsl.dll", 
					"MDC.ProductionSystem.BodyToolboxItem", 
					"CF_TOOLBOXITEMCONTAINER,CF_TOOLBOXITEMCONTAINER_HASH,CF_TOOLBOXITEMCONTAINER_CONTENTS", 
					"Body", 
					"@BodyToolboxBitmap;MDC.ProductionSystem.Dsl.dll", 
					0xff00ff)]
	[VSShell::ProvideStaticToolboxItem("MDC.ProductionSystem.ProductionSystemToolboxTab",
					"@GunToolboxItem;MDC.ProductionSystem.Dsl.dll", 
					"MDC.ProductionSystem.GunToolboxItem", 
					"CF_TOOLBOXITEMCONTAINER,CF_TOOLBOXITEMCONTAINER_HASH,CF_TOOLBOXITEMCONTAINER_CONTENTS", 
					"Gun", 
					"@GunToolboxBitmap;MDC.ProductionSystem.Dsl.dll", 
					0xff00ff)]
	[VSShell::ProvideStaticToolboxItem("MDC.ProductionSystem.ProductionSystemToolboxTab",
					"@WaterToolboxItem;MDC.ProductionSystem.Dsl.dll", 
					"MDC.ProductionSystem.WaterToolboxItem", 
					"CF_TOOLBOXITEMCONTAINER,CF_TOOLBOXITEMCONTAINER_HASH,CF_TOOLBOXITEMCONTAINER_CONTENTS", 
					"Water", 
					"@WaterToolboxBitmap;MDC.ProductionSystem.Dsl.dll", 
					0xff00ff)]
	[VSShell::ProvideStaticToolboxItem("MDC.ProductionSystem.ProductionSystemToolboxTab",
					"@ComponentToConveyorToolboxItem;MDC.ProductionSystem.Dsl.dll", 
					"MDC.ProductionSystem.ComponentToConveyorToolboxItem", 
					"CF_TOOLBOXITEMCONTAINER,CF_TOOLBOXITEMCONTAINER_HASH,CF_TOOLBOXITEMCONTAINER_CONTENTS", 
					"ComponentToConveyor", 
					"@ComponentToConveyorToolboxBitmap;MDC.ProductionSystem.Dsl.dll", 
					0xff00ff)]
	[VSShell::ProvideStaticToolboxItem("MDC.ProductionSystem.ProductionSystemToolboxTab",
					"@ConveyorToConveyorToolboxItem;MDC.ProductionSystem.Dsl.dll", 
					"MDC.ProductionSystem.ConveyorToConveyorToolboxItem", 
					"CF_TOOLBOXITEMCONTAINER,CF_TOOLBOXITEMCONTAINER_HASH,CF_TOOLBOXITEMCONTAINER_CONTENTS", 
					"ConveyorToConveyor", 
					"@ConveyorToConveyorToolboxBitmap;MDC.ProductionSystem.Dsl.dll", 
					0xff00ff)]
	[VSShell::ProvideStaticToolboxItem("MDC.ProductionSystem.ProductionSystemToolboxTab",
					"@ConveyorToMachineToolboxItem;MDC.ProductionSystem.Dsl.dll", 
					"MDC.ProductionSystem.ConveyorToMachineToolboxItem", 
					"CF_TOOLBOXITEMCONTAINER,CF_TOOLBOXITEMCONTAINER_HASH,CF_TOOLBOXITEMCONTAINER_CONTENTS", 
					"ConveyorToMachine", 
					"@ConveyorToMachineToolboxBitmap;MDC.ProductionSystem.Dsl.dll", 
					0xff00ff)]
	[VSShell::ProvideStaticToolboxItem("MDC.ProductionSystem.ProductionSystemToolboxTab",
					"@MachineToConveyorToolboxItem;MDC.ProductionSystem.Dsl.dll", 
					"MDC.ProductionSystem.MachineToConveyorToolboxItem", 
					"CF_TOOLBOXITEMCONTAINER,CF_TOOLBOXITEMCONTAINER_HASH,CF_TOOLBOXITEMCONTAINER_CONTENTS", 
					"MachineToConveyor", 
					"@MachineToConveyorToolboxBitmap;MDC.ProductionSystem.Dsl.dll", 
					0xff00ff)]
	[VSShell::ProvideStaticToolboxItem("MDC.ProductionSystem.ProductionSystemToolboxTab",
					"@OperatorToMachineToolboxItem;MDC.ProductionSystem.Dsl.dll", 
					"MDC.ProductionSystem.OperatorToMachineToolboxItem", 
					"CF_TOOLBOXITEMCONTAINER,CF_TOOLBOXITEMCONTAINER_HASH,CF_TOOLBOXITEMCONTAINER_CONTENTS", 
					"OperatorToMachine", 
					"@OperatorToMachineToolboxBitmap;MDC.ProductionSystem.Dsl.dll", 
					0xff00ff)]
	[VSShell::ProvideStaticToolboxItem("MDC.ProductionSystem.ProductionSystemToolboxTab",
					"@AssemblerToolboxItem;MDC.ProductionSystem.Dsl.dll", 
					"MDC.ProductionSystem.AssemblerToolboxItem", 
					"CF_TOOLBOXITEMCONTAINER,CF_TOOLBOXITEMCONTAINER_HASH,CF_TOOLBOXITEMCONTAINER_CONTENTS", 
					"Assembler", 
					"@AssemblerToolboxBitmap;MDC.ProductionSystem.Dsl.dll", 
					0xff00ff)]
	[VSShell::ProvideStaticToolboxItem("MDC.ProductionSystem.ProductionSystemToolboxTab",
					"@RepairBayToolboxItem;MDC.ProductionSystem.Dsl.dll", 
					"MDC.ProductionSystem.RepairBayToolboxItem", 
					"CF_TOOLBOXITEMCONTAINER,CF_TOOLBOXITEMCONTAINER_HASH,CF_TOOLBOXITEMCONTAINER_CONTENTS", 
					"RepairBay", 
					"@RepairBayToolboxBitmap;MDC.ProductionSystem.Dsl.dll", 
					0xff00ff)]
	[VSShell::ProvideStaticToolboxItem("MDC.ProductionSystem.ProductionSystemToolboxTab",
					"@QualityControlToolboxItem;MDC.ProductionSystem.Dsl.dll", 
					"MDC.ProductionSystem.QualityControlToolboxItem", 
					"CF_TOOLBOXITEMCONTAINER,CF_TOOLBOXITEMCONTAINER_HASH,CF_TOOLBOXITEMCONTAINER_CONTENTS", 
					"QualityControl", 
					"@QualityControlToolboxBitmap;MDC.ProductionSystem.Dsl.dll", 
					0xff00ff)]
	[VSShell::ProvideStaticToolboxItem("MDC.ProductionSystem.ProductionSystemToolboxTab",
					"@GarageToolboxItem;MDC.ProductionSystem.Dsl.dll", 
					"MDC.ProductionSystem.GarageToolboxItem", 
					"CF_TOOLBOXITEMCONTAINER,CF_TOOLBOXITEMCONTAINER_HASH,CF_TOOLBOXITEMCONTAINER_CONTENTS", 
					"Garage", 
					"@GarageToolboxBitmap;MDC.ProductionSystem.Dsl.dll", 
					0xff00ff)]
	[VSShell::ProvideEditorFactory(typeof(ProductionSystemEditorFactory), 103, TrustLevel = VSShellInterop::__VSEDITORTRUSTLEVEL.ETL_AlwaysTrusted)]
	[VSShell::ProvideEditorExtension(typeof(ProductionSystemEditorFactory), "." + Constants.DesignerFileExtension, 50)]
	[DslShell::ProvideRelatedFile("." + Constants.DesignerFileExtension, Constants.DefaultDiagramExtension,
		ProjectSystem = DslShell::ProvideRelatedFileAttribute.CSharpProjectGuid,
		FileOptions = DslShell::RelatedFileType.FileName)]
	[DslShell::ProvideRelatedFile("." + Constants.DesignerFileExtension, Constants.DefaultDiagramExtension,
		ProjectSystem = DslShell::ProvideRelatedFileAttribute.VisualBasicProjectGuid,
		FileOptions = DslShell::RelatedFileType.FileName)]
	[DslShell::RegisterAsDslToolsEditor]
	[global::System.Runtime.InteropServices.ComVisible(true)]
	[DslShell::ProvideBindingPath]
	[DslShell::ProvideXmlEditorChooserBlockSxSWithXmlEditor(@"ProductionSystem", typeof(ProductionSystemEditorFactory))]
	internal abstract partial class ProductionSystemPackageBase : DslShell::ModelingPackage
	{
		protected global::MDC.ProductionSystem.ProductionSystemToolboxHelper toolboxHelper;	
		
		/// <summary>
		/// Initialization method called by the package base class when this package is loaded.
		/// </summary>
		protected override void Initialize()
		{
			base.Initialize();

			// Register the editor factory used to create the DSL editor.
			this.RegisterEditorFactory(new ProductionSystemEditorFactory(this));
			
			// Initialize the toolbox helper
			toolboxHelper = new global::MDC.ProductionSystem.ProductionSystemToolboxHelper(this);

			// Create the command set that handles menu commands provided by this package.
			ProductionSystemCommandSet commandSet = new ProductionSystemCommandSet(this);
			commandSet.Initialize();
			
			// Create the command set that handles cut/copy/paste commands provided by this package.
			ProductionSystemClipboardCommandSet clipboardCommandSet = new ProductionSystemClipboardCommandSet(this);
			clipboardCommandSet.Initialize();
			
			// Register the model explorer tool window for this DSL.
			this.AddToolWindow(typeof(ProductionSystemExplorerToolWindow));

			// Initialize Extension Registars
			// this is a partial method call
			this.InitializeExtensions();

			// Add dynamic toolbox items
			this.SetupDynamicToolbox();
		}

		/// <summary>
		/// Partial method to initialize ExtensionRegistrars (if any) in the DslPackage
		/// </summary>
		partial void InitializeExtensions();
		
		/// <summary>
		/// Returns any dynamic tool items for the designer
		/// </summary>
		/// <remarks>The default implementation is to return the list of items from the generated toolbox helper.</remarks>
		protected override global::System.Collections.Generic.IList<DslDesign::ModelingToolboxItem> CreateToolboxItems()
		{
			try
			{
				Debug.Assert(toolboxHelper != null, "Toolbox helper is not initialized");
				return toolboxHelper.CreateToolboxItems();
			}
			catch(global::System.Exception e)
			{
				global::System.Diagnostics.Debug.Fail("Exception thrown during toolbox item creation.  This may result in Package Load Failure:\r\n\r\n" + e);
				throw;
			}
		}
		
		
		/// <summary>
		/// Given a toolbox item "unique ID" and a data format identifier, returns the content of
		/// the data format. 
		/// </summary>
		/// <param name="itemId">The unique ToolboxItem to retrieve data for</param>
		/// <param name="format">The desired format of the resulting data</param>
		protected override object GetToolboxItemData(string itemId, DataFormats.Format format)
		{
			Debug.Assert(toolboxHelper != null, "Toolbox helper is not initialized");
		
			// Retrieve the specified ToolboxItem from the DSL
			return toolboxHelper.GetToolboxItemData(itemId, format);
		}
	}

}

//
// Package attributes which may need to change are placed on the partial class below, rather than in the main include file.
//
namespace MDC.ProductionSystem
{
	/// <summary>
	/// Double-derived class to allow easier code customization.
	/// </summary>
	[VSShell::ProvideMenuResource("1000.ctmenu", 1)]
	[VSShell::ProvideToolboxItems(1)]
	[VSTextTemplatingHost::ProvideDirectiveProcessor(typeof(global::MDC.ProductionSystem.ProductionSystemDirectiveProcessor), global::MDC.ProductionSystem.ProductionSystemDirectiveProcessor.ProductionSystemDirectiveProcessorName, "A directive processor that provides access to ProductionSystem files")]
	[global::System.Runtime.InteropServices.Guid(Constants.ProductionSystemPackageId)]
	internal sealed partial class ProductionSystemPackage : ProductionSystemPackageBase
	{
	}
}