protected override void ExecuteCore(ConfigurationNode node) { IUIService uiService = ServiceHelper.GetUIService(ServiceProvider); using (OpenFileDialog fileDialog = new OpenFileDialog()) { fileDialog.Filter = Resources.EnvironmentDeltaFileDialogFilter; fileDialog.CheckFileExists = true; fileDialog.CheckPathExists = true; fileDialog.AddExtension = true; fileDialog.DefaultExt = Resources.DefaultEnvironmentDeltaFileExtension; fileDialog.RestoreDirectory = true; if (DialogResult.OK == uiService.ShowOpenDialog(fileDialog)) { uiService.BeginUpdate(); try { EnvironmentNodeBuilder nodeBuilder = new EnvironmentNodeBuilder(ServiceProvider); EnvironmentNode childNode = nodeBuilder.Build(fileDialog.FileName, node.Hierarchy); node.AddNode(childNode); uiService.SetUIDirty(node.Hierarchy); uiService.ActivateNode(childNode); } catch (Exception e) { uiService.ShowError(e, Resources.ErrorOpeningEnvironmentMergeFile); } finally { uiService.EndUpdate(); } } } }