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
- HelpProvider.cs
- ConnectionInterfaceCollection.cs
- SimpleFieldTemplateFactory.cs
- SafeSecurityHelper.cs
- RowType.cs
- SiteMap.cs
- SqlException.cs
- HttpModuleAction.cs
- SmiXetterAccessMap.cs
- MulticastNotSupportedException.cs
- SudsWriter.cs
- CustomAttributeSerializer.cs
- DashStyle.cs
- TextFormattingConverter.cs
- TableStyle.cs
- Zone.cs
- Application.cs
- KeyTime.cs
- MemberJoinTreeNode.cs
- URLMembershipCondition.cs
- Win32.cs
- HMACSHA512.cs
- Directory.cs
- CodeDOMProvider.cs
- Calendar.cs
- DictionarySectionHandler.cs
- WebPart.cs
- CookielessHelper.cs
- DataGridColumnCollection.cs
- ConstrainedGroup.cs
- ManagedIStream.cs
- BamlCollectionHolder.cs
- DrawingCollection.cs
- NullPackagingPolicy.cs
- BlockCollection.cs
- SaveFileDialog.cs
- SelectingProviderEventArgs.cs
- EventHandlersStore.cs
- MenuItem.cs
- RightsManagementProvider.cs
- LinqToSqlWrapper.cs
- DataGridBoolColumn.cs
- CipherData.cs
- DebuggerAttributes.cs
- ExpressionEditorAttribute.cs
- autovalidator.cs
- ListItemConverter.cs
- SrgsRuleRef.cs
- IdleTimeoutMonitor.cs
- Action.cs
- LineVisual.cs
- TabControl.cs
- Ipv6Element.cs
- WMIGenerator.cs
- ConfigXmlAttribute.cs
- SqlUtils.cs
- VariableQuery.cs
- Menu.cs
- CacheDependency.cs
- ArgumentReference.cs
- ObjectPersistData.cs
- LogSwitch.cs
- AutomationPatternInfo.cs
- GeometryHitTestParameters.cs
- AsyncPostBackErrorEventArgs.cs
- DecoderExceptionFallback.cs
- XmlSchemaSequence.cs
- XmlNodeList.cs
- TextModifierScope.cs
- DockProviderWrapper.cs
- AssertSection.cs
- ClientSettingsProvider.cs
- ChtmlCalendarAdapter.cs
- Instrumentation.cs
- ProcessHostMapPath.cs
- DataGridTextBoxColumn.cs
- DiscoveryDocumentSerializer.cs
- IOException.cs
- CodePrimitiveExpression.cs
- DataGridPagerStyle.cs
- SapiRecoContext.cs
- PageResolution.cs
- MetafileEditor.cs
- HttpListenerTimeoutManager.cs
- ManagementEventArgs.cs
- GAC.cs
- EventLogReader.cs
- PhysicalFontFamily.cs
- SqlErrorCollection.cs
- UpdateProgress.cs
- _DisconnectOverlappedAsyncResult.cs
- XNameTypeConverter.cs
- WorkflowDefinitionContext.cs
- Rect.cs
- InputLanguageEventArgs.cs
- SourceItem.cs
- ReadOnlyKeyedCollection.cs
- FunctionDescription.cs
- XmlSignatureManifest.cs
- DocumentXmlWriter.cs