Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / MIT / System / Web / UI / MobileControls / Design / ListComponentEditorPage.cs / 1305376 / ListComponentEditorPage.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Web.UI.Design.MobileControls
{
using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Globalization;
using System.Diagnostics;
using System.Web.UI.MobileControls;
using System.Windows.Forms;
using System.Windows.Forms.Design;
using System.Web.UI.Design.MobileControls.Util;
[
System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand,
Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)
]
[Obsolete("The System.Web.Mobile.dll assembly has been deprecated and should no longer be used. For information about how to develop ASP.NET mobile applications, see http://go.microsoft.com/fwlink/?LinkId=157231.")]
internal abstract class ListComponentEditorPage : MobileComponentEditorPage
{
protected bool CaseSensitive;
protected EditableTreeList TreeList = null;
protected ListTreeNode CurrentNode = null;
protected String TreeViewTitle = String.Empty;
protected String AddButtonTitle = String.Empty;
protected String DefaultName = String.Empty;
protected String MessageTitle = String.Empty;
protected String EmptyNameMessage = String.Empty;
// protected String DuplicateNameMessage = String.Empty; // AUI 2292
// protected String InvalidNameMessage = String.Empty; // AUI 4240
// private bool _newLabelSetDirty = true; // AUI 4452
protected int Y = 16;
protected static readonly int X = 238;
protected static readonly int ControlWidth = 152;
protected static readonly int LabelHeight = 16;
protected static readonly int CellSpace = 27;
protected static readonly int Index = 200;
protected static readonly int CmbHeight = 20;
protected virtual bool FilterIllegalName()
{
return true;
}
protected virtual void InitForm()
{
TreeList = new EditableTreeList(true, CaseSensitive, Y);
TreeList.TabIndex = 0;
TreeList.LblTitle.Text = TreeViewTitle;
TreeList.BtnAdd.Text = AddButtonTitle;
TreeList.TvList.AfterLabelEdit += new NodeLabelEditEventHandler(OnAfterLabelEdit);
TreeList.TvList.BeforeLabelEdit += new NodeLabelEditEventHandler(OnBeforeLabelEdit);
TreeList.TvList.AfterSelect += new TreeViewEventHandler(OnNodeSelected);
TreeList.BtnAdd.Click += new EventHandler(OnClickAddButton);
TreeList.BtnRemove.Click += new EventHandler(OnClickRemoveButton);
TreeList.BtnUp.Click += new EventHandler(OnClickUpButton);
TreeList.BtnDown.Click += new EventHandler(OnClickDownButton);
this.Controls.AddRange(new Control[] {TreeList /*, grplblProperties*/});
}
protected virtual void InitPage()
{
TreeList.TvList.Nodes.Clear();
TreeList.TvList.SelectedNode = null;
}
private void InitTree()
{
LoadItems();
if (TreeList.TvList.Nodes.Count > 0)
{
CurrentNode = (ListTreeNode)TreeList.TvList.Nodes[0];
TreeList.TvList.SelectedNode = CurrentNode;
LoadItemProperties();
}
}
///
/// Loads the component into the page.
///
///
protected override sealed void LoadComponent()
{
InitPage();
InitTree();
UpdateControlsEnabling();
}
protected abstract void LoadItems();
protected abstract void LoadItemProperties();
protected override void SaveComponent()
{
foreach (ListTreeNode node in TreeList.TvList.Nodes)
{
if (node.IsEditing)
{
// commit changes if still in editing mode.
node.EndEdit(false);
}
}
}
public override sealed void SetComponent(IComponent component)
{
base.SetComponent(component);
Debug.Assert (component is ObjectList | component is List |
component is SelectionList, "Invalid Component");
InitForm();
}
protected virtual String GetNewName()
{
int i = 1;
while (NameExists(DefaultName + i.ToString(CultureInfo.InvariantCulture)))
{
i++;
}
return DefaultName + i.ToString(CultureInfo.InvariantCulture);
}
protected bool NameExists(String name)
{
foreach (ListTreeNode node in TreeList.TvList.Nodes)
{
if (String.Compare(node.Name, name, ((!CaseSensitive) ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal)) == 0)
{
return true;
}
}
return false;
}
protected virtual void OnAfterLabelEdit(Object source, NodeLabelEditEventArgs e)
{
Debug.Assert(null != e);
Debug.Assert(e.CancelEdit == false);
// this happens when the label is unchanged after entering and exiting
// label editing mode - bizarre behavior. this may be a bug in treeview
if (null == e.Label)
{
return;
}
if (FilterIllegalName())
{
bool cancel = true;
/* AUI 2292
if (String.Compare(e.Node.Text, e.Label, true) != 0 && NameExists(e.Label))
{
MessageBox.Show(
String.Format(DuplicateNameMessage, e.Label),
MessageTitle,
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
*/
// can't accept an empty node name
if (e.Label.Length == 0)
{
MessageBox.Show(
EmptyNameMessage,
MessageTitle,
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
/* Removed for DCR 4240
// can't accept an illegal node name
else if (!IsValidName(e.Label))
{
MessageBox.Show(
InvalidNameMessage,
MessageTitle,
MessageBoxButtons.OK,
MessageBoxIcon.Exclamation);
}
*/
else
{
cancel = false;
}
if (cancel)
{
e.CancelEdit = true;
return;
}
}
CurrentNode.Name = e.Label;
CurrentNode.Dirty = true;
SetDirty();
/* pulled out because of 4452
if (_newLabelSetDirty)
{
SetDirty();
}
*/
OnNodeRenamed();
}
private void OnBeforeLabelEdit(Object source, NodeLabelEditEventArgs e)
{
SetDirty();
}
private void OnClickDownButton(Object source, EventArgs e)
{
if (IsLoading())
{
return;
}
SetDirty();
}
private void OnClickUpButton(Object source, EventArgs e)
{
if (IsLoading())
{
return;
}
SetDirty();
}
protected virtual void OnNodeSelected(Object source, TreeViewEventArgs e)
{
if (IsLoading())
{
return;
}
CurrentNode = (ListTreeNode) TreeList.TvList.SelectedNode;
LoadItemProperties();
UpdateControlsEnabling();
}
protected virtual void OnPropertyChanged(Object source, EventArgs e)
{
}
protected virtual void OnClickAddButton(Object source, EventArgs e)
{
if (IsLoading())
{
return;
}
SetDirty();
}
protected virtual void OnClickRemoveButton(Object source, EventArgs e)
{
if (IsLoading())
{
return;
}
if (TreeList.TvList.Nodes.Count == 0)
{
CurrentNode = null;
LoadItemProperties();
}
SetDirty();
UpdateControlsEnabling();
}
protected virtual void UpdateControlsEnabling()
{
}
protected virtual void OnNodeRenamed()
{
}
[
System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand,
Flags=System.Security.Permissions.SecurityPermissionFlag.UnmanagedCode)
]
protected class ListTreeNode : TreeNode
{
private bool _dirty;
private String _name;
internal ListTreeNode(String text) : base(text)
{
this._name = text;
}
internal bool Dirty
{
get
{
return _dirty;
}
set
{
_dirty = value;
}
}
internal new String Name
{
get
{
return _name;
}
set
{
_name = value;
}
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Expression.cs
- RectAnimationClockResource.cs
- EnumMemberAttribute.cs
- CoTaskMemSafeHandle.cs
- DesignerUtility.cs
- CodeObjectCreateExpression.cs
- SafeCancelMibChangeNotify.cs
- EventRoute.cs
- DataGridPageChangedEventArgs.cs
- TypeInfo.cs
- Int32CollectionValueSerializer.cs
- Base64Encoding.cs
- _UncName.cs
- XmlSchemaAppInfo.cs
- DecoderFallbackWithFailureFlag.cs
- IISMapPath.cs
- WorkflowViewService.cs
- SQLBinary.cs
- VirtualPath.cs
- RelOps.cs
- TraceUtility.cs
- DefaultExpressionVisitor.cs
- RoutedEventArgs.cs
- ListViewGroupItemCollection.cs
- AppModelKnownContentFactory.cs
- IProvider.cs
- XmlQueryTypeFactory.cs
- IItemProperties.cs
- XmlCDATASection.cs
- ActiveXContainer.cs
- ListMarkerSourceInfo.cs
- ZipPackagePart.cs
- OperationAbortedException.cs
- ApplicationSecurityInfo.cs
- StreamingContext.cs
- EntityModelSchemaGenerator.cs
- XmlCharType.cs
- WindowsGraphics2.cs
- ComplexBindingPropertiesAttribute.cs
- CodeSnippetCompileUnit.cs
- ErrorFormatter.cs
- TreeNodeStyleCollection.cs
- HtmlDocument.cs
- CacheAxisQuery.cs
- SpnEndpointIdentityExtension.cs
- DrawingAttributes.cs
- ThrowOnMultipleAssignment.cs
- Renderer.cs
- ProfilePropertyNameValidator.cs
- Comparer.cs
- SqlInternalConnectionTds.cs
- DtdParser.cs
- SqlDataReaderSmi.cs
- EvidenceTypeDescriptor.cs
- XmlnsDictionary.cs
- RtfToXamlLexer.cs
- XPathDescendantIterator.cs
- cookieexception.cs
- LZCodec.cs
- TreeNodeBindingCollection.cs
- RestHandlerFactory.cs
- DoubleConverter.cs
- CatchDesigner.xaml.cs
- FixedSOMElement.cs
- PresentationAppDomainManager.cs
- CompositeTypefaceMetrics.cs
- LogicalMethodInfo.cs
- SR.cs
- IdentitySection.cs
- OrderByQueryOptionExpression.cs
- StateChangeEvent.cs
- configsystem.cs
- FileLogRecord.cs
- ColorConverter.cs
- CaseInsensitiveHashCodeProvider.cs
- TypeLoadException.cs
- DesignerLabelAdapter.cs
- ClientSettings.cs
- LinkedResource.cs
- RightsManagementInformation.cs
- keycontainerpermission.cs
- ExpressionHelper.cs
- MessageBox.cs
- VisualState.cs
- PartialTrustVisibleAssembly.cs
- XmlDocumentFragment.cs
- Math.cs
- CurrentChangingEventArgs.cs
- QilXmlWriter.cs
- Properties.cs
- DesignerSelectionListAdapter.cs
- ToolStripComboBox.cs
- GAC.cs
- CodeMemberMethod.cs
- ItemDragEvent.cs
- FileDialog.cs
- AccessedThroughPropertyAttribute.cs
- BoolExpressionVisitors.cs
- FileDataSourceCache.cs
- CompatibleComparer.cs