Ejemplo n.º 1
0
		static void InitializeWorkbench(WpfWorkbench workbench, IWorkbenchLayout layout)
		{
			SD.Services.AddService(typeof(IWorkbench), workbench);
			
			UILanguageService.ValidateLanguage();
			
			TaskService.Initialize();
			Project.CustomToolsService.Initialize();
			
			workbench.Initialize();
			workbench.SetMemento(SD.PropertyService.NestedProperties(workbenchMemento));
			workbench.WorkbenchLayout = layout;
			
			// HACK: eagerly load output pad because pad services cannnot be instanciated from background threads
			SD.Services.AddService(typeof(IOutputPad), CompilerMessageView.Instance);
			
			var dlgMsgService = SD.MessageService as IDialogMessageService;
			if (dlgMsgService != null) {
				dlgMsgService.DialogSynchronizeInvoke = SD.MainThread.SynchronizingObject;
				dlgMsgService.DialogOwner = workbench.MainWin32Window;
			}
			
			var applicationStateInfoService = SD.GetService<ApplicationStateInfoService>();
			if (applicationStateInfoService != null) {
				applicationStateInfoService.RegisterStateGetter(activeContentState, delegate { return SD.Workbench.ActiveContent; });
			}
			
			WorkbenchSingleton.OnWorkbenchCreated();
			
			// initialize workbench-dependent services:
			NavigationService.InitializeService();
			
			workbench.ActiveContentChanged += delegate {
				Debug.WriteLine("ActiveContentChanged to " + workbench.ActiveContent);
				LoggingService.Debug("ActiveContentChanged to " + workbench.ActiveContent);
			};
			workbench.ActiveViewContentChanged += delegate {
				Debug.WriteLine("ActiveViewContentChanged to " + workbench.ActiveViewContent);
				LoggingService.Debug("ActiveViewContentChanged to " + workbench.ActiveViewContent);
			};
			workbench.ActiveWorkbenchWindowChanged += delegate {
				Debug.WriteLine("ActiveWorkbenchWindowChanged to " + workbench.ActiveWorkbenchWindow);
				LoggingService.Debug("ActiveWorkbenchWindowChanged to " + workbench.ActiveWorkbenchWindow);
			};
		}
Ejemplo n.º 2
0
 public void Attach(IWorkbench workbench)
 {
     if (this.workbench != null)
         throw new InvalidOperationException("Can attach only once!");
     this.workbench = (WpfWorkbench)workbench;
     this.workbench.mainContent.Content = dockingManager;
     CommandManager.AddCanExecuteHandler(this.workbench, OnCanExecuteRoutedCommand);
     CommandManager.AddExecutedHandler(this.workbench, OnExecuteRoutedCommand);
     Busy = true;
     try {
         foreach (PadDescriptor pd in workbench.PadContentCollection) {
             ShowPad(pd);
         }
     } finally {
         Busy = false;
     }
     LoadConfiguration();
     EnsureFloatingWindowsLocations();
 }