示例#1
0
		public DockControl Open(Type type, object key, bool focus)
		{
			DockControl control;
			if (this.controls.TryGetControl(type, key, out control))
			{
				control.Open();
			}
			else
			{
				control = (DockControl)Activator.CreateInstance(type);
				DockControlSettings settings;
				if (!this.settingsTable.TryGetValue(type, out settings))
				{
					settings = new DockControlSettings();
					this.settingsTable.Add(type, settings);
				}
				control.Init(key, settings);
				control.Manager = this;
				if (control.ShowFloating)
				{
					control.OpenFloating();
				}
				else
				{
					DockContainer dockContainer = this.FindDockContainer(control.DefaultDockLocation);
					WindowOpenMethod openMethod = focus ? WindowOpenMethod.OnScreenActivate : WindowOpenMethod.OnScreenSelect;
					if (dockContainer == null)
					{
						control.OpenDocked(control.DefaultDockLocation, openMethod);
					}
					else
					{
						foreach (TD.SandDock.DockControl existingWindow in this.GetDockControls())
						{
							if (existingWindow != control && existingWindow.LayoutSystem.DockContainer == dockContainer)
							{
								control.DockNextTo(existingWindow);
								((TD.SandDock.DockControl)control).Open(openMethod);
								break;
							}
						}
					}
				}
				this.controls.Add(type, key, control);
			}
			return control;
		}
示例#2
0
 internal void Init(object key, DockControlSettings settings)
 {
   this.Key = key;
   this.Settings = settings;
   this.OnInit();
 }
示例#3
0
		public void SetSettings(SettingsInfo settings)
		{
			this.settingsTable.Clear();
			foreach (SettingsGroup settingsGroup in settings.Groups)
			{
				Type type = Type.GetType(settingsGroup.TypeName, false);
				if (type != null)
				{
					DockControlSettings dockControlSettings = new DockControlSettings();
					this.settingsTable.Add(type, dockControlSettings);
					foreach (SettingsItem settingsItem in settingsGroup.Items)
						dockControlSettings.SetValue(settingsItem.Key, settingsItem.Value);
				}
			}
		}