Beispiel #1
0
		/// <summary>
		/// Creates backdrop, cursor, and trays.
		/// </summary>
		/// <param name="name"></param>
		/// <param name="window"></param>
		/// <param name="mouse"></param>
		/// <param name="listener"></param>
		public SdkTrayManager( String name, RenderWindow window, SIS.Mouse mouse, ISdkTrayListener listener )
		{
			mName = name;
			mWindow = window;
			this.Mouse = mouse;
			Listener = listener;

			mWidgetPadding = 8;
			mWidgetSpacing = 2;

			OverlayManager om = OverlayManager.Instance;

			String nameBase = mName + "/";
			nameBase.Replace( ' ', '_' );

			// create overlay layers for everything

			this.BackdropLayer = om.Create( nameBase + "BackdropLayer" );
			mTraysLayer = om.Create( nameBase + "WidgetsLayer" );
			mPriorityLayer = om.Create( nameBase + "PriorityLayer" );
			cursorLayer = om.Create( nameBase + "CursorLayer" );
			this.BackdropLayer.ZOrder = 100;
			mTraysLayer.ZOrder = 200;
			mPriorityLayer.ZOrder = 300;
			cursorLayer.ZOrder = 400;

			// make backdrop and cursor overlay containers

			cursor = (OverlayElementContainer)om.Elements.CreateElementFromTemplate( "SdkTrays/Cursor", "Panel", nameBase + "Cursor" );
			cursorLayer.AddElement( cursor );
			backdrop = (OverlayElementContainer)om.Elements.CreateElement( "Panel", nameBase + "Backdrop" );
			this.BackdropLayer.AddElement( backdrop );
			mDialogShade = (OverlayElementContainer)om.Elements.CreateElement( "Panel", nameBase + "DialogShade" );
			mDialogShade.MaterialName = "SdkTrays/Shade";
			mDialogShade.Hide();
			mPriorityLayer.AddElement( mDialogShade );

			String[] trayNames = {
									 "TopLeft", "Top", "TopRight", "Left", "Center", "Right", "BottomLeft", "Bottom", "BottomRight"
								 };

			for ( int i = 0; i < 9; i++ ) // make the real trays
			{
				mTrays[ i ] = (OverlayElementContainer)om.Elements.CreateElementFromTemplate( "SdkTrays/Tray", "BorderPanel", nameBase + trayNames[ i ] + "Tray" );

				mTraysLayer.AddElement( mTrays[ i ] );

				trayWidgetAlign[ i ] = HorizontalAlignment.Center;

				// align trays based on location
				if ( i == (int)TrayLocation.Top || i == (int)TrayLocation.Center || i == (int)TrayLocation.Bottom )
					mTrays[ i ].HorizontalAlignment = HorizontalAlignment.Center;
				if ( i == (int)TrayLocation.Left || i == (int)TrayLocation.Center || i == (int)TrayLocation.Right )
					mTrays[ i ].VerticalAlignment = VerticalAlignment.Center;
				if ( i == (int)TrayLocation.TopRight || i == (int)TrayLocation.Right || i == (int)TrayLocation.BottomRight )
					mTrays[ i ].HorizontalAlignment = HorizontalAlignment.Right;
				if ( i == (int)TrayLocation.BottomLeft || i == (int)TrayLocation.Bottom || i == (int)TrayLocation.BottomRight )
					mTrays[ i ].VerticalAlignment = VerticalAlignment.Bottom;
			}

			// create the null tray for free-floating widgets
			mTrays[ 9 ] = (OverlayElementContainer)om.Elements.CreateElement( "Panel", nameBase + "NullTray" );
			trayWidgetAlign[ 9 ] = HorizontalAlignment.Left;
			mTraysLayer.AddElement( mTrays[ 9 ] );

			for ( int i = 0; i < mWidgets.Length; i++ )
			{
				mWidgets[ i ] = new WidgetList();
			}

			this.AdjustTrays();

			ShowTrays();
			ShowCursor();
		}