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
- DataBoundControl.cs
- FontUnit.cs
- UIAgentCrashedException.cs
- CqlBlock.cs
- RadioButtonList.cs
- DataGridViewColumnDesigner.cs
- ApplicationHost.cs
- recordstatefactory.cs
- HostVisual.cs
- WindowsRebar.cs
- UrlMappingsSection.cs
- FloatUtil.cs
- Object.cs
- RegexNode.cs
- DictionarySurrogate.cs
- ImageIndexEditor.cs
- ClientApiGenerator.cs
- CounterCreationData.cs
- SafeCryptoHandles.cs
- ReplyChannelBinder.cs
- DependencyStoreSurrogate.cs
- StylusButtonCollection.cs
- ProcessModule.cs
- PlatformCulture.cs
- SafeRightsManagementSessionHandle.cs
- SortQuery.cs
- ServerValidateEventArgs.cs
- CorrelationTokenTypeConvertor.cs
- PreProcessInputEventArgs.cs
- CodeAttributeDeclarationCollection.cs
- ApplicationManager.cs
- Win32.cs
- XmlTextAttribute.cs
- UInt16.cs
- SimpleTypeResolver.cs
- Size3D.cs
- ConstraintEnumerator.cs
- Pen.cs
- ConfigXmlComment.cs
- HandledEventArgs.cs
- Attachment.cs
- KeyBinding.cs
- Pair.cs
- DocobjHost.cs
- MaskedTextProvider.cs
- UnsafeNativeMethods.cs
- DynamicObjectAccessor.cs
- BamlLocalizabilityResolver.cs
- Separator.cs
- BulletedListEventArgs.cs
- CodeCatchClauseCollection.cs
- DataRelationPropertyDescriptor.cs
- Int32AnimationBase.cs
- BindableTemplateBuilder.cs
- UnionCodeGroup.cs
- DeferredElementTreeState.cs
- RewritingValidator.cs
- XmlSchemaSimpleTypeUnion.cs
- RuleElement.cs
- TextServicesLoader.cs
- CollectionViewGroup.cs
- WebBrowserUriTypeConverter.cs
- PropertySourceInfo.cs
- EventLogException.cs
- PlatformNotSupportedException.cs
- ProgramPublisher.cs
- Metafile.cs
- ObfuscateAssemblyAttribute.cs
- Zone.cs
- PageAction.cs
- DispatcherExceptionFilterEventArgs.cs
- IUnknownConstantAttribute.cs
- GenericXmlSecurityToken.cs
- WebPartConnection.cs
- ScrollEvent.cs
- Size.cs
- Track.cs
- XmlSchemaInferenceException.cs
- GPPOINT.cs
- CompiledAction.cs
- SetMemberBinder.cs
- TemplateComponentConnector.cs
- EtwProvider.cs
- X509ChainElement.cs
- CqlWriter.cs
- SimpleMailWebEventProvider.cs
- FixedTextBuilder.cs
- ExtendedProperty.cs
- WebMessageBodyStyleHelper.cs
- TableHeaderCell.cs
- Faults.cs
- XhtmlConformanceSection.cs
- UnsafeNativeMethods.cs
- VerificationException.cs
- CompiledIdentityConstraint.cs
- WebUtility.cs
- Repeater.cs
- TableLayoutPanelCodeDomSerializer.cs
- XmlSchemaValidator.cs
- WebMessageFormatHelper.cs