Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Activities / Rules / Design / Dialogs / BasicBrowserDialog.cs / 1305376 / BasicBrowserDialog.cs
#region Using directives using System; using System.CodeDom; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.Design; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Windows.Forms.Design; using System.Workflow.ComponentModel; using System.Workflow.ComponentModel.Design; using System.Workflow.Activities.Rules; using System.Workflow.Interop; using System.Globalization; using System.Workflow.Activities.Common; #endregion namespace System.Workflow.Activities.Rules.Design { #region class BasicBrowserDialog internal abstract partial class BasicBrowserDialog : Form { #region members and constructors private Activity activity; private string name; private IServiceProvider serviceProvider; protected BasicBrowserDialog(Activity activity, string name) { if (activity == null) throw (new ArgumentNullException("activity")); this.activity = activity; InitializeComponent(); // set captions this.descriptionLabel.Text = DescriptionText; this.Text = TitleText; this.previewLabel.Text = PreviewLabelText; this.newRuleToolStripButton.Enabled = true; this.name = name; serviceProvider = activity.Site; //Set dialog fonts IUIService uisvc = (IUIService)activity.Site.GetService(typeof(IUIService)); if (uisvc != null) this.Font = (Font)uisvc.Styles["DialogFont"]; HelpRequested += new HelpEventHandler(OnHelpRequested); HelpButtonClicked += new CancelEventHandler(OnHelpClicked); this.rulesListView.Select(); } protected Activity Activity { get { return this.activity; } } #endregion #region public properties public string SelectedName { get { return this.name; } } #endregion #region event handlers private void OnCancel(object sender, EventArgs e) { this.name = null; this.DialogResult = DialogResult.Cancel; this.Close(); } private void OnOk(object sender, EventArgs e) { object ruleObject = this.rulesListView.SelectedItems[0].Tag; this.name = this.GetObjectName(ruleObject); this.DialogResult = DialogResult.OK; this.Close(); } private void OnHelpClicked(object sender, CancelEventArgs e) { e.Cancel = true; ShowHelp(); } private void OnHelpRequested(object sender, HelpEventArgs e) { ShowHelp(); } private void ShowHelp() { if (serviceProvider != null) { IHelpService helpService = serviceProvider.GetService(typeof(IHelpService)) as IHelpService; if (helpService != null) { helpService.ShowHelpFromKeyword(this.GetType().FullName+".UI"); } else { IUIService uisvc = serviceProvider.GetService(typeof(IUIService)) as IUIService; if (uisvc != null) uisvc.ShowError(Messages.NoHelp); } } else { IUIService uisvc = (IUIService)GetService(typeof(IUIService)); if (uisvc != null) uisvc.ShowError(Messages.NoHelp); } } private void OnNew(object sender, EventArgs e) { try { this.OnComponentChanging(); object newObject = OnNewInternal(); if (newObject != null) { using (new WaitCursor()) { ListViewItem listViewItem = this.rulesListView.Items.Add(new ListViewItem()); this.UpdateListViewItem(newObject, listViewItem); listViewItem.Selected = true; this.OnComponentChanged(); } } } catch (InvalidOperationException ex) { DesignerHelpers.DisplayError(ex.Message, this.Text, this.activity.Site); } } private void OnEdit(object sender, EventArgs e) { try { this.OnComponentChanging(); object updatedRuleObject = null; object ruleObject = this.rulesListView.SelectedItems[0].Tag; if (OnEditInternal(ruleObject, out updatedRuleObject)) { using (new WaitCursor()) { this.UpdateListViewItem(updatedRuleObject, this.rulesListView.SelectedItems[0]); this.UpdatePreview(this.previewRichTextBox, updatedRuleObject); this.OnComponentChanged(); } } } catch (InvalidOperationException ex) { DesignerHelpers.DisplayError(ex.Message, this.Text, this.activity.Site); } } private void OnRename(object sender, EventArgs e) { try { this.OnComponentChanging(); object ruleObject = this.rulesListView.SelectedItems[0].Tag; string newName = OnRenameInternal(ruleObject); if (newName != null) { using (new WaitCursor()) { ListViewItem selectedItem = this.rulesListView.SelectedItems[0]; selectedItem.Text = newName; this.OnComponentChanged(); } } } catch (InvalidOperationException ex) { DesignerHelpers.DisplayError(ex.Message, this.Text, this.activity.Site); } } private void OnDelete(object sender, EventArgs e) { MessageBoxOptions mbo = (MessageBoxOptions)0; if (CultureInfo.CurrentUICulture.TextInfo.IsRightToLeft) mbo = MessageBoxOptions.RightAlign | MessageBoxOptions.RtlReading; DialogResult dr = MessageBox.Show(this, this.ConfirmDeleteMessageText, this.ConfirmDeleteTitleText, MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1, mbo); if (dr == DialogResult.OK) { using (new WaitCursor()) { object ruleObject = this.rulesListView.SelectedItems[0].Tag; try { this.OnComponentChanging(); int selectionIndex = this.rulesListView.SelectedIndices[0]; object selectedRuleObject = null; OnDeleteInternal(ruleObject); this.rulesListView.Items.RemoveAt(selectionIndex); if (this.rulesListView.Items.Count > 0) { int newSelectionIndex = Math.Min(selectionIndex, this.rulesListView.Items.Count - 1); this.rulesListView.Items[newSelectionIndex].Selected = true; selectedRuleObject = this.rulesListView.Items[newSelectionIndex].Tag; } this.UpdatePreview(this.previewRichTextBox, selectedRuleObject); this.OnComponentChanged(); } catch (InvalidOperationException ex) { DesignerHelpers.DisplayError(ex.Message, this.Text, this.activity.Site); } } } } private void OnItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) { if (e.IsSelected) e.Item.Focused = true; OnToolbarStatus(); this.okButton.Enabled = e.IsSelected; object currentRuleObject = null; if (e.IsSelected) currentRuleObject = e.Item.Tag; UpdatePreview(this.previewRichTextBox, currentRuleObject); } private void OnDoubleClick(object sender, EventArgs e) { if (this.rulesListView.SelectedItems.Count > 0) this.OnOk(sender, e); } private void OnToolbarStatus() { if (this.rulesListView.SelectedItems.Count == 1) { this.editToolStripButton.Enabled = true; this.renameToolStripButton.Enabled = true; this.deleteToolStripButton.Enabled = true; } else { this.editToolStripButton.Enabled = false; this.renameToolStripButton.Enabled = false; this.deleteToolStripButton.Enabled = false; } } #endregion #region helpers private bool OnComponentChanging() { bool canChange = true; ISite site = ((IComponent)this.activity).Site; IComponentChangeService changeService = (IComponentChangeService)site.GetService(typeof(IComponentChangeService)); if (changeService != null) { try { changeService.OnComponentChanging(this.activity, null); } catch (CheckoutException coEx) { if (coEx == CheckoutException.Canceled) canChange = false; else throw; } } return canChange; } private void OnComponentChanged() { ISite site = ((IComponent)this.activity).Site; IComponentChangeService changeService = (IComponentChangeService)site.GetService(typeof(IComponentChangeService)); if (changeService != null) changeService.OnComponentChanged(this.activity, null, null, null); ConditionHelper.Flush_Rules_DT(site, Helpers.GetRootActivity(this.activity)); } protected void InitializeListView(IList list, string selectedName) { foreach (object ruleObject in list) { ListViewItem listViewItem = this.rulesListView.Items.Add(new ListViewItem()); this.UpdateListViewItem(ruleObject, listViewItem); if (GetObjectName(ruleObject) == selectedName) listViewItem.Selected = true; } if (this.rulesListView.SelectedItems.Count == 0) OnToolbarStatus(); } #endregion #region override methods protected abstract string GetObjectName(object ruleObject); //commands protected abstract object OnNewInternal(); protected abstract bool OnEditInternal(object currentRuleObject, out object updatedRuleObject); protected abstract void OnDeleteInternal(object ruleObject); protected abstract string OnRenameInternal(object ruleObject); // populating controls protected abstract void UpdateListViewItem(object ruleObject, ListViewItem listViewItem); protected abstract void UpdatePreview(TextBox previewTextBox, object ruleObject); // captions protected abstract string DescriptionText { get;} protected abstract string TitleText { get;} protected abstract string PreviewLabelText { get;} protected abstract string ConfirmDeleteMessageText { get;} protected abstract string ConfirmDeleteTitleText { get;} internal abstract string EmptyNameErrorText { get;} internal abstract string DuplicateNameErrorText { get;} internal abstract string NewNameLabelText { get;} internal abstract string RenameTitleText { get;} internal abstract bool IsUniqueName(string ruleName); #endregion private class WaitCursor : IDisposable { private Cursor oldCursor; public WaitCursor() { Application.DoEvents(); // Force redraw before waiting oldCursor = Cursor.Current; Cursor.Current = Cursors.WaitCursor; } public void Dispose() { Cursor.Current = oldCursor; } } } #endregion } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. #region Using directives using System; using System.CodeDom; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.Design; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Windows.Forms.Design; using System.Workflow.ComponentModel; using System.Workflow.ComponentModel.Design; using System.Workflow.Activities.Rules; using System.Workflow.Interop; using System.Globalization; using System.Workflow.Activities.Common; #endregion namespace System.Workflow.Activities.Rules.Design { #region class BasicBrowserDialog internal abstract partial class BasicBrowserDialog : Form { #region members and constructors private Activity activity; private string name; private IServiceProvider serviceProvider; protected BasicBrowserDialog(Activity activity, string name) { if (activity == null) throw (new ArgumentNullException("activity")); this.activity = activity; InitializeComponent(); // set captions this.descriptionLabel.Text = DescriptionText; this.Text = TitleText; this.previewLabel.Text = PreviewLabelText; this.newRuleToolStripButton.Enabled = true; this.name = name; serviceProvider = activity.Site; //Set dialog fonts IUIService uisvc = (IUIService)activity.Site.GetService(typeof(IUIService)); if (uisvc != null) this.Font = (Font)uisvc.Styles["DialogFont"]; HelpRequested += new HelpEventHandler(OnHelpRequested); HelpButtonClicked += new CancelEventHandler(OnHelpClicked); this.rulesListView.Select(); } protected Activity Activity { get { return this.activity; } } #endregion #region public properties public string SelectedName { get { return this.name; } } #endregion #region event handlers private void OnCancel(object sender, EventArgs e) { this.name = null; this.DialogResult = DialogResult.Cancel; this.Close(); } private void OnOk(object sender, EventArgs e) { object ruleObject = this.rulesListView.SelectedItems[0].Tag; this.name = this.GetObjectName(ruleObject); this.DialogResult = DialogResult.OK; this.Close(); } private void OnHelpClicked(object sender, CancelEventArgs e) { e.Cancel = true; ShowHelp(); } private void OnHelpRequested(object sender, HelpEventArgs e) { ShowHelp(); } private void ShowHelp() { if (serviceProvider != null) { IHelpService helpService = serviceProvider.GetService(typeof(IHelpService)) as IHelpService; if (helpService != null) { helpService.ShowHelpFromKeyword(this.GetType().FullName+".UI"); } else { IUIService uisvc = serviceProvider.GetService(typeof(IUIService)) as IUIService; if (uisvc != null) uisvc.ShowError(Messages.NoHelp); } } else { IUIService uisvc = (IUIService)GetService(typeof(IUIService)); if (uisvc != null) uisvc.ShowError(Messages.NoHelp); } } private void OnNew(object sender, EventArgs e) { try { this.OnComponentChanging(); object newObject = OnNewInternal(); if (newObject != null) { using (new WaitCursor()) { ListViewItem listViewItem = this.rulesListView.Items.Add(new ListViewItem()); this.UpdateListViewItem(newObject, listViewItem); listViewItem.Selected = true; this.OnComponentChanged(); } } } catch (InvalidOperationException ex) { DesignerHelpers.DisplayError(ex.Message, this.Text, this.activity.Site); } } private void OnEdit(object sender, EventArgs e) { try { this.OnComponentChanging(); object updatedRuleObject = null; object ruleObject = this.rulesListView.SelectedItems[0].Tag; if (OnEditInternal(ruleObject, out updatedRuleObject)) { using (new WaitCursor()) { this.UpdateListViewItem(updatedRuleObject, this.rulesListView.SelectedItems[0]); this.UpdatePreview(this.previewRichTextBox, updatedRuleObject); this.OnComponentChanged(); } } } catch (InvalidOperationException ex) { DesignerHelpers.DisplayError(ex.Message, this.Text, this.activity.Site); } } private void OnRename(object sender, EventArgs e) { try { this.OnComponentChanging(); object ruleObject = this.rulesListView.SelectedItems[0].Tag; string newName = OnRenameInternal(ruleObject); if (newName != null) { using (new WaitCursor()) { ListViewItem selectedItem = this.rulesListView.SelectedItems[0]; selectedItem.Text = newName; this.OnComponentChanged(); } } } catch (InvalidOperationException ex) { DesignerHelpers.DisplayError(ex.Message, this.Text, this.activity.Site); } } private void OnDelete(object sender, EventArgs e) { MessageBoxOptions mbo = (MessageBoxOptions)0; if (CultureInfo.CurrentUICulture.TextInfo.IsRightToLeft) mbo = MessageBoxOptions.RightAlign | MessageBoxOptions.RtlReading; DialogResult dr = MessageBox.Show(this, this.ConfirmDeleteMessageText, this.ConfirmDeleteTitleText, MessageBoxButtons.OKCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1, mbo); if (dr == DialogResult.OK) { using (new WaitCursor()) { object ruleObject = this.rulesListView.SelectedItems[0].Tag; try { this.OnComponentChanging(); int selectionIndex = this.rulesListView.SelectedIndices[0]; object selectedRuleObject = null; OnDeleteInternal(ruleObject); this.rulesListView.Items.RemoveAt(selectionIndex); if (this.rulesListView.Items.Count > 0) { int newSelectionIndex = Math.Min(selectionIndex, this.rulesListView.Items.Count - 1); this.rulesListView.Items[newSelectionIndex].Selected = true; selectedRuleObject = this.rulesListView.Items[newSelectionIndex].Tag; } this.UpdatePreview(this.previewRichTextBox, selectedRuleObject); this.OnComponentChanged(); } catch (InvalidOperationException ex) { DesignerHelpers.DisplayError(ex.Message, this.Text, this.activity.Site); } } } } private void OnItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) { if (e.IsSelected) e.Item.Focused = true; OnToolbarStatus(); this.okButton.Enabled = e.IsSelected; object currentRuleObject = null; if (e.IsSelected) currentRuleObject = e.Item.Tag; UpdatePreview(this.previewRichTextBox, currentRuleObject); } private void OnDoubleClick(object sender, EventArgs e) { if (this.rulesListView.SelectedItems.Count > 0) this.OnOk(sender, e); } private void OnToolbarStatus() { if (this.rulesListView.SelectedItems.Count == 1) { this.editToolStripButton.Enabled = true; this.renameToolStripButton.Enabled = true; this.deleteToolStripButton.Enabled = true; } else { this.editToolStripButton.Enabled = false; this.renameToolStripButton.Enabled = false; this.deleteToolStripButton.Enabled = false; } } #endregion #region helpers private bool OnComponentChanging() { bool canChange = true; ISite site = ((IComponent)this.activity).Site; IComponentChangeService changeService = (IComponentChangeService)site.GetService(typeof(IComponentChangeService)); if (changeService != null) { try { changeService.OnComponentChanging(this.activity, null); } catch (CheckoutException coEx) { if (coEx == CheckoutException.Canceled) canChange = false; else throw; } } return canChange; } private void OnComponentChanged() { ISite site = ((IComponent)this.activity).Site; IComponentChangeService changeService = (IComponentChangeService)site.GetService(typeof(IComponentChangeService)); if (changeService != null) changeService.OnComponentChanged(this.activity, null, null, null); ConditionHelper.Flush_Rules_DT(site, Helpers.GetRootActivity(this.activity)); } protected void InitializeListView(IList list, string selectedName) { foreach (object ruleObject in list) { ListViewItem listViewItem = this.rulesListView.Items.Add(new ListViewItem()); this.UpdateListViewItem(ruleObject, listViewItem); if (GetObjectName(ruleObject) == selectedName) listViewItem.Selected = true; } if (this.rulesListView.SelectedItems.Count == 0) OnToolbarStatus(); } #endregion #region override methods protected abstract string GetObjectName(object ruleObject); //commands protected abstract object OnNewInternal(); protected abstract bool OnEditInternal(object currentRuleObject, out object updatedRuleObject); protected abstract void OnDeleteInternal(object ruleObject); protected abstract string OnRenameInternal(object ruleObject); // populating controls protected abstract void UpdateListViewItem(object ruleObject, ListViewItem listViewItem); protected abstract void UpdatePreview(TextBox previewTextBox, object ruleObject); // captions protected abstract string DescriptionText { get;} protected abstract string TitleText { get;} protected abstract string PreviewLabelText { get;} protected abstract string ConfirmDeleteMessageText { get;} protected abstract string ConfirmDeleteTitleText { get;} internal abstract string EmptyNameErrorText { get;} internal abstract string DuplicateNameErrorText { get;} internal abstract string NewNameLabelText { get;} internal abstract string RenameTitleText { get;} internal abstract bool IsUniqueName(string ruleName); #endregion private class WaitCursor : IDisposable { private Cursor oldCursor; public WaitCursor() { Application.DoEvents(); // Force redraw before waiting oldCursor = Cursor.Current; Cursor.Current = Cursors.WaitCursor; } public void Dispose() { Cursor.Current = oldCursor; } } } #endregion } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- followingquery.cs
- ImageBrush.cs
- StringKeyFrameCollection.cs
- XmlDataLoader.cs
- BitmapScalingModeValidation.cs
- ClientSettingsStore.cs
- EntryPointNotFoundException.cs
- FixUp.cs
- PerfService.cs
- MaskedTextProvider.cs
- XmlnsDictionary.cs
- ListView.cs
- XmlSchemaImport.cs
- MsmqHostedTransportManager.cs
- FieldMetadata.cs
- EncodingNLS.cs
- RegistryPermission.cs
- Missing.cs
- PackWebRequest.cs
- Pkcs7Signer.cs
- PolicyManager.cs
- odbcmetadatacolumnnames.cs
- DataColumnSelectionConverter.cs
- TableItemStyle.cs
- StickyNoteAnnotations.cs
- ListManagerBindingsCollection.cs
- SqlDataSourceEnumerator.cs
- ModelTreeEnumerator.cs
- SqlBuilder.cs
- WriteStateInfoBase.cs
- SiteMembershipCondition.cs
- FixedDocumentPaginator.cs
- DataGridViewRowsAddedEventArgs.cs
- XmlDictionaryWriter.cs
- XmlWellformedWriter.cs
- IODescriptionAttribute.cs
- DelegateSerializationHolder.cs
- ChangeBlockUndoRecord.cs
- X500Name.cs
- AsmxEndpointPickerExtension.cs
- XomlCompiler.cs
- User.cs
- smtpconnection.cs
- SoapMessage.cs
- MethodBody.cs
- TickBar.cs
- PerspectiveCamera.cs
- ADMembershipUser.cs
- XmlArrayAttribute.cs
- DataListCommandEventArgs.cs
- TextEditorContextMenu.cs
- MultiPropertyDescriptorGridEntry.cs
- TransformerInfoCollection.cs
- DataGridViewCellValueEventArgs.cs
- InvalidAsynchronousStateException.cs
- precedingsibling.cs
- RSAOAEPKeyExchangeFormatter.cs
- DataServiceEntityAttribute.cs
- XmlAutoDetectWriter.cs
- DefaultShape.cs
- AuthStoreRoleProvider.cs
- FontFamilyValueSerializer.cs
- BitmapCodecInfoInternal.cs
- ControlCollection.cs
- SchemaDeclBase.cs
- ManagementObjectCollection.cs
- CaretElement.cs
- DataFormats.cs
- ProxyWebPartConnectionCollection.cs
- VariableDesigner.xaml.cs
- Base64Encoding.cs
- DataPointer.cs
- HtmlHistory.cs
- ScrollItemPatternIdentifiers.cs
- TracedNativeMethods.cs
- InvokeWebService.cs
- FlowDocumentReaderAutomationPeer.cs
- ObjectAnimationUsingKeyFrames.cs
- AppDomainUnloadedException.cs
- PenThread.cs
- smtpconnection.cs
- ErrorActivity.cs
- ChineseLunisolarCalendar.cs
- SqlNode.cs
- ToolStripDropDownClosingEventArgs.cs
- StorageSetMapping.cs
- ResourceProviderFactory.cs
- RoutedEventArgs.cs
- Operator.cs
- PanelStyle.cs
- Animatable.cs
- ResourcePermissionBase.cs
- QueryPageSettingsEventArgs.cs
- XmlSchemaType.cs
- EventDescriptor.cs
- AssertFilter.cs
- ListControlBuilder.cs
- ToolStripPanelRenderEventArgs.cs
- PackagingUtilities.cs
- SystemInfo.cs