Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Activities / Rules / Design / Dialogs / ConditionBrowserDialog.cs / 1305376 / ConditionBrowserDialog.cs
#region Using directives using System; using System.CodeDom; 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.ComponentModel.Compiler; using System.Workflow.Activities.Rules; using System.Workflow.Interop; using System.Globalization; using Microsoft.Win32; using System.Workflow.Activities.Common; #endregion namespace System.Workflow.Activities.Rules.Design { #region class ConditionBrowserDialog internal sealed class ConditionBrowserDialog : BasicBrowserDialog { #region members and constructors private RuleConditionCollection declarativeConditionCollection; public ConditionBrowserDialog(Activity activity, string name) : base(activity, name) { RuleDefinitions rules = ConditionHelper.Load_Rules_DT(activity.Site, Helpers.GetRootActivity(activity)); if (rules != null) this.declarativeConditionCollection = rules.Conditions; InitializeListView(this.declarativeConditionCollection, name); } #endregion #region override members protected override string GetObjectName(object ruleObject) { RuleExpressionCondition ruleExpressionCondition = ruleObject as RuleExpressionCondition; return ruleExpressionCondition.Name; } protected override object OnNewInternal() { using (RuleConditionDialog dlg = new RuleConditionDialog(this.Activity, null)) { if (DialogResult.OK == dlg.ShowDialog(this)) { RuleExpressionCondition declarativeRuleDefinition = new RuleExpressionCondition(); declarativeRuleDefinition.Expression = dlg.Expression; declarativeRuleDefinition.Name = this.CreateNewName(); this.declarativeConditionCollection.Add(declarativeRuleDefinition); return declarativeRuleDefinition; } } return null; } protected override bool OnEditInternal(object currentRuleObject, out object updatedRuleObject) { RuleExpressionCondition declarativeRuleDefinition = currentRuleObject as RuleExpressionCondition; updatedRuleObject = null; using (RuleConditionDialog dlg = new RuleConditionDialog(this.Activity, declarativeRuleDefinition.Expression)) { if (DialogResult.OK == dlg.ShowDialog(this)) { updatedRuleObject = new RuleExpressionCondition(declarativeRuleDefinition.Name, dlg.Expression); this.declarativeConditionCollection.Remove(declarativeRuleDefinition.Name); this.declarativeConditionCollection.Add(updatedRuleObject as RuleExpressionCondition); return true; } } return false; } protected override string OnRenameInternal(object ruleObject) { RuleExpressionCondition declarativeRuleDefinition = ruleObject as RuleExpressionCondition; using (RenameRuleObjectDialog dlg = new RenameRuleObjectDialog(this.Activity.Site, declarativeRuleDefinition.Name, new RenameRuleObjectDialog.NameValidatorDelegate(IsUniqueName), this)) { if ((dlg.ShowDialog(this) == DialogResult.OK) && (dlg.RuleObjectName != declarativeRuleDefinition.Name)) { this.declarativeConditionCollection.Remove(declarativeRuleDefinition); declarativeRuleDefinition.Name = dlg.RuleObjectName; this.declarativeConditionCollection.Add(declarativeRuleDefinition); return dlg.RuleObjectName; } } return null; } protected override void OnDeleteInternal(object ruleObject) { RuleExpressionCondition declarativeRuleDefinition = ruleObject as RuleExpressionCondition; this.declarativeConditionCollection.Remove(declarativeRuleDefinition.Name); } protected override void UpdateListViewItem(object ruleObject, ListViewItem listViewItem) { RuleExpressionCondition declarativeRuleDefinition = ruleObject as RuleExpressionCondition; ITypeProvider typeProvider = (ITypeProvider)this.Activity.Site.GetService(typeof(ITypeProvider)); if (typeProvider == null) { string message = string.Format(CultureInfo.CurrentCulture, Messages.MissingService, typeof(ITypeProvider).FullName); throw new InvalidOperationException(message); } RuleValidation validator = new RuleValidation(this.Activity, typeProvider, false); bool valid = declarativeRuleDefinition.Validate(validator); listViewItem.Tag = declarativeRuleDefinition; listViewItem.Text = declarativeRuleDefinition.Name; string validText = valid ? Messages.Yes : Messages.No; if (listViewItem.SubItems.Count == 1) listViewItem.SubItems.Add(validText); else listViewItem.SubItems[1].Text = validText; } protected override void UpdatePreview(TextBox previewBox, object ruleObject) { RuleExpressionCondition declarativeRuleDefinition = ruleObject as RuleExpressionCondition; if (declarativeRuleDefinition != null && declarativeRuleDefinition.Expression != null) { RuleExpressionCondition ruleExpressionCondition = new RuleExpressionCondition(declarativeRuleDefinition.Expression); NativeMethods.SendMessage(previewBox.Handle, NativeMethods.WM_SETREDRAW, IntPtr.Zero, IntPtr.Zero); previewBox.Lines = ruleExpressionCondition.ToString().Split('\n'); NativeMethods.SendMessage(previewBox.Handle, NativeMethods.WM_SETREDRAW, new IntPtr(1), IntPtr.Zero); previewBox.Invalidate(); } else { previewBox.Text = string.Empty; } } protected override string DescriptionText { get { return Messages.ConditionDescriptionText; } } protected override string TitleText { get { return Messages.ConditionTitleText; } } protected override string PreviewLabelText { get { return Messages.ConditionPreviewLabelText; } } protected override string ConfirmDeleteMessageText { get { return Messages.ConditionConfirmDeleteMessageText; } } protected override string ConfirmDeleteTitleText { get { return Messages.DeleteCondition; } } internal override string EmptyNameErrorText { get { return Messages.ConditionEmptyNameErrorText; } } internal override string DuplicateNameErrorText { get { return Messages.ConditionDuplicateNameErrorText; } } internal override string NewNameLabelText { get { return Messages.ConditionNewNameLableText;} } internal override string RenameTitleText { get { return Messages.ConditionRenameTitleText; } } // used by RenameConditionDialog internal override bool IsUniqueName(string ruleName) { return (!this.declarativeConditionCollection.Contains(ruleName)); } #endregion #region helpers private string CreateNewName() { string newRuleNameBase = Messages.NewConditionName; int index = 1; while (true) { string newRuleName = newRuleNameBase + index.ToString(CultureInfo.InvariantCulture); if (!this.declarativeConditionCollection.Contains(newRuleName)) return newRuleName; index++; } } #endregion } #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.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.ComponentModel.Compiler; using System.Workflow.Activities.Rules; using System.Workflow.Interop; using System.Globalization; using Microsoft.Win32; using System.Workflow.Activities.Common; #endregion namespace System.Workflow.Activities.Rules.Design { #region class ConditionBrowserDialog internal sealed class ConditionBrowserDialog : BasicBrowserDialog { #region members and constructors private RuleConditionCollection declarativeConditionCollection; public ConditionBrowserDialog(Activity activity, string name) : base(activity, name) { RuleDefinitions rules = ConditionHelper.Load_Rules_DT(activity.Site, Helpers.GetRootActivity(activity)); if (rules != null) this.declarativeConditionCollection = rules.Conditions; InitializeListView(this.declarativeConditionCollection, name); } #endregion #region override members protected override string GetObjectName(object ruleObject) { RuleExpressionCondition ruleExpressionCondition = ruleObject as RuleExpressionCondition; return ruleExpressionCondition.Name; } protected override object OnNewInternal() { using (RuleConditionDialog dlg = new RuleConditionDialog(this.Activity, null)) { if (DialogResult.OK == dlg.ShowDialog(this)) { RuleExpressionCondition declarativeRuleDefinition = new RuleExpressionCondition(); declarativeRuleDefinition.Expression = dlg.Expression; declarativeRuleDefinition.Name = this.CreateNewName(); this.declarativeConditionCollection.Add(declarativeRuleDefinition); return declarativeRuleDefinition; } } return null; } protected override bool OnEditInternal(object currentRuleObject, out object updatedRuleObject) { RuleExpressionCondition declarativeRuleDefinition = currentRuleObject as RuleExpressionCondition; updatedRuleObject = null; using (RuleConditionDialog dlg = new RuleConditionDialog(this.Activity, declarativeRuleDefinition.Expression)) { if (DialogResult.OK == dlg.ShowDialog(this)) { updatedRuleObject = new RuleExpressionCondition(declarativeRuleDefinition.Name, dlg.Expression); this.declarativeConditionCollection.Remove(declarativeRuleDefinition.Name); this.declarativeConditionCollection.Add(updatedRuleObject as RuleExpressionCondition); return true; } } return false; } protected override string OnRenameInternal(object ruleObject) { RuleExpressionCondition declarativeRuleDefinition = ruleObject as RuleExpressionCondition; using (RenameRuleObjectDialog dlg = new RenameRuleObjectDialog(this.Activity.Site, declarativeRuleDefinition.Name, new RenameRuleObjectDialog.NameValidatorDelegate(IsUniqueName), this)) { if ((dlg.ShowDialog(this) == DialogResult.OK) && (dlg.RuleObjectName != declarativeRuleDefinition.Name)) { this.declarativeConditionCollection.Remove(declarativeRuleDefinition); declarativeRuleDefinition.Name = dlg.RuleObjectName; this.declarativeConditionCollection.Add(declarativeRuleDefinition); return dlg.RuleObjectName; } } return null; } protected override void OnDeleteInternal(object ruleObject) { RuleExpressionCondition declarativeRuleDefinition = ruleObject as RuleExpressionCondition; this.declarativeConditionCollection.Remove(declarativeRuleDefinition.Name); } protected override void UpdateListViewItem(object ruleObject, ListViewItem listViewItem) { RuleExpressionCondition declarativeRuleDefinition = ruleObject as RuleExpressionCondition; ITypeProvider typeProvider = (ITypeProvider)this.Activity.Site.GetService(typeof(ITypeProvider)); if (typeProvider == null) { string message = string.Format(CultureInfo.CurrentCulture, Messages.MissingService, typeof(ITypeProvider).FullName); throw new InvalidOperationException(message); } RuleValidation validator = new RuleValidation(this.Activity, typeProvider, false); bool valid = declarativeRuleDefinition.Validate(validator); listViewItem.Tag = declarativeRuleDefinition; listViewItem.Text = declarativeRuleDefinition.Name; string validText = valid ? Messages.Yes : Messages.No; if (listViewItem.SubItems.Count == 1) listViewItem.SubItems.Add(validText); else listViewItem.SubItems[1].Text = validText; } protected override void UpdatePreview(TextBox previewBox, object ruleObject) { RuleExpressionCondition declarativeRuleDefinition = ruleObject as RuleExpressionCondition; if (declarativeRuleDefinition != null && declarativeRuleDefinition.Expression != null) { RuleExpressionCondition ruleExpressionCondition = new RuleExpressionCondition(declarativeRuleDefinition.Expression); NativeMethods.SendMessage(previewBox.Handle, NativeMethods.WM_SETREDRAW, IntPtr.Zero, IntPtr.Zero); previewBox.Lines = ruleExpressionCondition.ToString().Split('\n'); NativeMethods.SendMessage(previewBox.Handle, NativeMethods.WM_SETREDRAW, new IntPtr(1), IntPtr.Zero); previewBox.Invalidate(); } else { previewBox.Text = string.Empty; } } protected override string DescriptionText { get { return Messages.ConditionDescriptionText; } } protected override string TitleText { get { return Messages.ConditionTitleText; } } protected override string PreviewLabelText { get { return Messages.ConditionPreviewLabelText; } } protected override string ConfirmDeleteMessageText { get { return Messages.ConditionConfirmDeleteMessageText; } } protected override string ConfirmDeleteTitleText { get { return Messages.DeleteCondition; } } internal override string EmptyNameErrorText { get { return Messages.ConditionEmptyNameErrorText; } } internal override string DuplicateNameErrorText { get { return Messages.ConditionDuplicateNameErrorText; } } internal override string NewNameLabelText { get { return Messages.ConditionNewNameLableText;} } internal override string RenameTitleText { get { return Messages.ConditionRenameTitleText; } } // used by RenameConditionDialog internal override bool IsUniqueName(string ruleName) { return (!this.declarativeConditionCollection.Contains(ruleName)); } #endregion #region helpers private string CreateNewName() { string newRuleNameBase = Messages.NewConditionName; int index = 1; while (true) { string newRuleName = newRuleNameBase + index.ToString(CultureInfo.InvariantCulture); if (!this.declarativeConditionCollection.Contains(newRuleName)) return newRuleName; index++; } } #endregion } #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
- ImageAutomationPeer.cs
- XmlAnyElementAttributes.cs
- GridItemProviderWrapper.cs
- EncoderParameters.cs
- autovalidator.cs
- XmlDocument.cs
- ListViewCancelEventArgs.cs
- OrderingInfo.cs
- KeyInterop.cs
- ScrollChrome.cs
- PrimitiveXmlSerializers.cs
- TimelineCollection.cs
- FileRecordSequence.cs
- CommandHelpers.cs
- EventBuilder.cs
- MatrixUtil.cs
- StateDesigner.Layouts.cs
- MarkupProperty.cs
- LessThanOrEqual.cs
- RegexInterpreter.cs
- DialogResultConverter.cs
- OnOperation.cs
- errorpatternmatcher.cs
- IntegerValidator.cs
- Fonts.cs
- DocumentPageHost.cs
- HotSpot.cs
- XamlClipboardData.cs
- ProxyElement.cs
- RpcResponse.cs
- ActivitySurrogateSelector.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- Types.cs
- RoutedEventValueSerializer.cs
- NameScope.cs
- AsyncResult.cs
- RequiredFieldValidator.cs
- ColumnMapTranslator.cs
- SmiMetaDataProperty.cs
- StylusPointProperty.cs
- SqlCommandSet.cs
- WizardPanelChangingEventArgs.cs
- InvalidOleVariantTypeException.cs
- AsymmetricAlgorithm.cs
- SmiContextFactory.cs
- XMLDiffLoader.cs
- VirtualizedCellInfoCollection.cs
- HttpModuleCollection.cs
- DataGridAddNewRow.cs
- ConstraintStruct.cs
- StaticDataManager.cs
- DoubleUtil.cs
- ToolBarButton.cs
- SvcMapFileLoader.cs
- GridViewUpdateEventArgs.cs
- DiscoveryProxy.cs
- KnownTypeDataContractResolver.cs
- RecipientInfo.cs
- BrowserCapabilitiesCodeGenerator.cs
- ICspAsymmetricAlgorithm.cs
- XhtmlBasicPhoneCallAdapter.cs
- CodeGroup.cs
- NavigationProgressEventArgs.cs
- SqlGatherProducedAliases.cs
- SoapCommonClasses.cs
- TrackBarRenderer.cs
- MorphHelper.cs
- EventLogPermission.cs
- DataListItemCollection.cs
- VirtualizedItemPattern.cs
- SimpleWebHandlerParser.cs
- PaperSource.cs
- ILGenerator.cs
- DataGridViewColumn.cs
- RawStylusInputCustomData.cs
- CellLabel.cs
- ObjectItemCollectionAssemblyCacheEntry.cs
- HMAC.cs
- TextWriter.cs
- CodeAssignStatement.cs
- GridItemCollection.cs
- OAVariantLib.cs
- PropertyTabAttribute.cs
- CryptoKeySecurity.cs
- OperationBehaviorAttribute.cs
- TextRange.cs
- PreservationFileWriter.cs
- Speller.cs
- DataGridViewCellStyleContentChangedEventArgs.cs
- DataServiceKeyAttribute.cs
- PassportAuthentication.cs
- SpanIndex.cs
- DataGridViewCellStyleBuilderDialog.cs
- FileLevelControlBuilderAttribute.cs
- StringValueConverter.cs
- QilUnary.cs
- XPathConvert.cs
- WebPartCloseVerb.cs
- ImageField.cs
- WindowsListView.cs