protected void SaveChoices( IDeviceSpecificDesigner designer, String deviceSpecificID, ICollection choices ) { DeviceSpecific deviceSpecific; if (!designer.GetDeviceSpecific(deviceSpecificID, out deviceSpecific)) { return; } if(choices.Count == 0) { designer.SetDeviceSpecific(deviceSpecificID, null); return; } if (deviceSpecific == null) { deviceSpecific = new DeviceSpecific(); } else { deviceSpecific.Choices.Clear(); } foreach (ChoiceTreeNode node in choices) { node.CommitChanges(); DeviceSpecificChoice choice = node.Choice.RuntimeChoice; deviceSpecific.Choices.Add(choice); } designer.SetDeviceSpecific(deviceSpecificID, deviceSpecific); }
internal void SaveChoicesFromComboBox( IDeviceSpecificDesigner designer, String deviceSpecificID ) { SaveChoices(designer, deviceSpecificID, _cachedComboBox); }
protected void SaveChoices( IDeviceSpecificDesigner designer, String deviceSpecificID, ICollection choices ) { DeviceSpecific deviceSpecific; if (!designer.GetDeviceSpecific(deviceSpecificID, out deviceSpecific)) { return; } if (choices.Count == 0) { designer.SetDeviceSpecific(deviceSpecificID, null); return; } if (deviceSpecific == null) { deviceSpecific = new DeviceSpecific(); } else { deviceSpecific.Choices.Clear(); } foreach (ChoiceTreeNode node in choices) { node.CommitChanges(); DeviceSpecificChoice choice = node.Choice.RuntimeChoice; deviceSpecific.Choices.Add(choice); } designer.SetDeviceSpecific(deviceSpecificID, deviceSpecific); }
internal void SaveChoicesFromTreeView( IDeviceSpecificDesigner designer, String deviceSpecificID ) { SaveChoices(designer, deviceSpecificID, _cachedTreeView); }
// This version of InitDialog() handles merged UIs internal static int InitDialog( Form dialog, IDeviceSpecificDesigner designer, int mergingContext ) { InitDialog(dialog, designer.UnderlyingControl.Site); int tabOffset = 0; designer.InitHeader(mergingContext); Control header = designer.Header; if (header != null) { // (6, 5) = Windows standard positioning header.Location = new Point(6, 5); dialog.Controls.Add(header); // +6 = 6px space between header and first control dialog.Height += header.Height + 6; tabOffset = GenericUI.GetMaxContainedTabIndex(header); // Changing the header width is going to magically // cause everything to be repositioned vertically // -10 = 5px padding on each side of the client area header.Width = dialog.ClientSize.Width - 10; } return(tabOffset); }
internal ChoiceTreeNode( DeviceFilterNode filter, DeviceSpecificChoice runtimeChoice, IDeviceSpecificDesigner designer ) : base() { _designer = designer; _runtimeChoice = runtimeChoice; Name = _runtimeChoice.Filter; Argument = _runtimeChoice.Argument; }
internal ChoicePropertyFilter( DeviceSpecificChoice choice, IDeviceSpecificDesigner designer, ISite site ) { _events = new EventHandlerList(); _choice = choice; _site = site; _designer = designer; CreateLocalCopiesOfObjects(); }
internal TemplatingOptionsDialog(MobileTemplatedControlDesigner designer, ISite site, int mergingContext) { _strCollSchemas = new StringCollection(); _mergingContext = mergingContext; _designer = designer; _site = site; _dsd = (IDeviceSpecificDesigner)designer; _dsd.SetDeviceSpecificEditor(this); InitializeComponent(); this.Text = SR.GetString(SR.TemplatingOptionsDialog_Title); _btnHelp.Text = SR.GetString(SR.GenericDialog_HelpBtnCaption); _btnClose.Text = SR.GetString(SR.GenericDialog_CloseBtnCaption); _lblSchemas.Text = SR.GetString(SR.TemplatingOptionsDialog_SchemaCaption); _btnEditChoices.Text = SR.GetString(SR.TemplatingOptionsDialog_EditBtnCaption); _lblChoices.Text = SR.GetString(SR.TemplatingOptionsDialog_FilterCaption); _schemasFriendly = new String[] { SR.GetString(SR.TemplatingOptionsDialog_HTMLSchemaFriendly), SR.GetString(SR.TemplatingOptionsDialog_CHTMLSchemaFriendly) }; _schemasUrl = new String[] { SR.GetString(SR.MarkupSchema_HTML32), SR.GetString(SR.MarkupSchema_cHTML10) }; int tabOffset = GenericUI.InitDialog( this, _dsd, _mergingContext ); SetTabIndexes(tabOffset); _dsd.RefreshHeader(_mergingContext); String currentDeviceSpecificID = _dsd.CurrentDeviceSpecificID; if (null != currentDeviceSpecificID && currentDeviceSpecificID.Length > 0) { DeviceSpecific ds; _dsd.GetDeviceSpecific(currentDeviceSpecificID, out ds); ((IRefreshableDeviceSpecificEditor)this).Refresh(currentDeviceSpecificID, ds); } UpdateControlEnabling(); }
internal ChoiceTreeNode( DeviceFilterNode filter, IDeviceSpecificDesigner designer ) : base() { Name = filter.Name; _designer = designer; _runtimeChoice = new DeviceSpecificChoice(); _runtimeChoice.Filter = filter.Name; if ( // This looks like circular reasoning, but the designer is a // IDeviceSpecificDesigner and we are interested in the // type of the designer's parent control. Adapters.DesignerAdapterUtil.ControlDesigner(designer.UnderlyingControl) is MobileTemplatedControlDesigner ) { _runtimeChoice.Xmlns = SR.GetString(SR.MarkupSchema_HTML32); } }
internal TemplatingOptionsDialog(MobileTemplatedControlDesigner designer, ISite site, int mergingContext) : base(site) { _strCollSchemas = new StringCollection(); _mergingContext = mergingContext; _designer = designer; _site = site; _dsd = (IDeviceSpecificDesigner) designer; _dsd.SetDeviceSpecificEditor(this); InitializeComponent(); this.Text = SR.GetString(SR.TemplatingOptionsDialog_Title); _btnClose.Text = SR.GetString(SR.GenericDialog_CloseBtnCaption); _lblSchemas.Text = SR.GetString(SR.TemplatingOptionsDialog_SchemaCaption); _btnEditChoices.Text = SR.GetString(SR.TemplatingOptionsDialog_EditBtnCaption); _lblChoices.Text = SR.GetString(SR.TemplatingOptionsDialog_FilterCaption); _schemasFriendly = new String[] { SR.GetString(SR.TemplatingOptionsDialog_HTMLSchemaFriendly), SR.GetString(SR.TemplatingOptionsDialog_CHTMLSchemaFriendly) }; _schemasUrl = new String[] { SR.GetString(SR.MarkupSchema_HTML32), SR.GetString(SR.MarkupSchema_cHTML10) }; int tabOffset = GenericUI.InitDialog( this, _dsd, _mergingContext ); SetTabIndexes(tabOffset); _dsd.RefreshHeader(_mergingContext); String currentDeviceSpecificID = _dsd.CurrentDeviceSpecificID; if (null != currentDeviceSpecificID && currentDeviceSpecificID.Length > 0) { DeviceSpecific ds; _dsd.GetDeviceSpecific(currentDeviceSpecificID, out ds); ((IRefreshableDeviceSpecificEditor) this).Refresh(currentDeviceSpecificID, ds); } UpdateControlEnabling(); }
// This version of InitDialog() handles merged UIs internal static int InitDialog( Form dialog, IDeviceSpecificDesigner designer, int mergingContext ) { InitDialog(dialog, designer.UnderlyingControl.Site); int tabOffset = 0; designer.InitHeader(mergingContext); Control header = designer.Header; if (header != null) { // (6, 5) = Windows standard positioning header.Location = new Point(6, 5); dialog.Controls.Add(header); // +6 = 6px space between header and first control dialog.Height += header.Height + 6; tabOffset = GenericUI.GetMaxContainedTabIndex(header); // Changing the header width is going to magically // cause everything to be repositioned vertically // -10 = 5px padding on each side of the client area header.Width = dialog.ClientSize.Width - 10; } return tabOffset; }
internal PropertyOverridesDialog( IDeviceSpecificDesigner designer, int mergingContext ) : base(designer.UnderlyingControl.Site) { _designer = designer; _mergingContext = mergingContext; // Required for Win Form Designer support InitializeComponent(); this._lblAppliedFilters.Text = SR.GetString(SR.PropertyOverridesDialog_AppliedDeviceFilters); this._btnEditFilters.Text = SR.GetString(SR.GenericDialog_Edit); this._lblProperties.Text = SR.GetString(SR.PropertyOverridesDialog_DeviceSpecificProperties); this._cmdOK.Text = SR.GetString(SR.GenericDialog_OKBtnCaption); this._cmdCancel.Text = SR.GetString(SR.GenericDialog_CancelBtnCaption); int tabOffset = GenericUI.InitDialog( this, _designer, _mergingContext ); this.Text = _designer.UnderlyingControl.ID + " - " + SR.GetString(SR.PropertyOverridesDialog_Title); SetTabIndexes(tabOffset); _designer.SetDeviceSpecificEditor(this); // Note that the following can cause an // IDeviceSpecificDesigner.Refresh() to occur as a side-effect. _designer.RefreshHeader(_mergingContext); _ignoreSelectionChanged = false; // NOTE: Calling CurrentDeviceSpecificID will cause a refresh to // happen as a side effect. _currentDeviceSpecificID = _designer.CurrentDeviceSpecificID; if(_currentDeviceSpecificID != null) { _cbChoices.Items.Clear(); LoadChoices(_currentDeviceSpecificID); if(!ValidateLoadedChoices()) { // Throw to prevent dialog from opening. Caught and hidden // by PropertyOverridesTypeEditor.cs throw new InvalidChoiceException( "Property overrides dialog can not open because there " + "are invalid choices defined in the page." ); } } // Register Event Handlers _cbChoices.SelectedIndexChanged += new EventHandler( OnFilterSelected ); _btnEditFilters.Click += new EventHandler(OnEditFilters); _cmdOK.Click += new EventHandler(OnOK); _cmdCancel.Click += new EventHandler(OnCancel); UpdateUI(); }
protected virtual ArrayList GetControls(ITypeDescriptorContext context) { ArrayList controlList = new ArrayList(); MobileControl control = null; IContainer container = context.Container; if (context.Instance is Array) { Array list = (Array)context.Instance; Debug.Assert(list.Length > 0); foreach (Object obj in list) { Debug.Assert(obj is MobileControl); Form form = GetContainingForm((MobileControl)obj); // If the control is not within a Form control or a StyleSheet control, // simply return the empty combobox. // If the control is placed at UserControl top level, the ID of the // containing Form is null. if ((form == null || form.ID == null) && GetContainingStyleSheet((MobileControl)obj) == null) { return(null); } } control = list.GetValue(0) as MobileControl; } else { if (context.Instance is MobileControl) { control = (MobileControl)context.Instance; } else if (context.Instance is ChoicePropertyFilter) { ChoicePropertyFilter filter = (ChoicePropertyFilter)context.Instance; IDeviceSpecificDesigner designer = filter.Designer; control = designer.UnderlyingObject as MobileControl; Debug.Assert(control != null, "Not a control"); } else { Debug.Fail("Unrecognized object passed in"); return(null); } Form form = GetContainingForm(control); // All controls must be contained within Forms or StyleSheets // Show empty combobox for the invalid control. if (form == null) { if (GetContainingStyleSheet(control) == null) { return(null); } } // MobileUserControl has a default Form with null ID else if (form.ID == null && (GetContainingStyleSheet(control) == null)) { Debug.Assert(container is IDesignerHost && ((IDesignerHost)container).RootComponent is MobileUserControl); // Just return an empty array list, so that url picker still works. return(controlList); } } // If container is null, try to get one from control's IContainer if (container == null) { ISite site = control.Site; Debug.Assert(site != null); container = site.Container; } // Is this possible? if (container == null) { Debug.Fail("container is null"); return(null); } foreach (IComponent component in container.Components) { Form candidate = component as Form; if (candidate != null && candidate.ID != null && candidate.ID.Length != 0) { controlList.Add(ProcessControlId(candidate.ID)); } } controlList.Sort(); return(controlList); }
internal ChoiceTreeNode( DeviceFilterNode filter, IDeviceSpecificDesigner designer ) : base() { Name = filter.Name; _designer = designer; _runtimeChoice = new DeviceSpecificChoice(); _runtimeChoice.Filter = filter.Name; if( // This looks like circular reasoning, but the designer is a // IDeviceSpecificDesigner and we are interested in the // type of the designer's parent control. Adapters.DesignerAdapterUtil.ControlDesigner(designer.UnderlyingControl) is MobileTemplatedControlDesigner ) { _runtimeChoice.Xmlns = SR.GetString(SR.MarkupSchema_HTML32); } }
internal PropertyOverridesDialog( IDeviceSpecificDesigner designer, int mergingContext ) { _designer = designer; _mergingContext = mergingContext; // Required for Win Form Designer support InitializeComponent(); this._lblAppliedFilters.Text = SR.GetString(SR.PropertyOverridesDialog_AppliedDeviceFilters); this._btnEditFilters.Text = SR.GetString(SR.GenericDialog_Edit); this._lblProperties.Text = SR.GetString(SR.PropertyOverridesDialog_DeviceSpecificProperties); this._cmdOK.Text = SR.GetString(SR.GenericDialog_OKBtnCaption); this._cmdCancel.Text = SR.GetString(SR.GenericDialog_CancelBtnCaption); this._cmdHelp.Text = SR.GetString(SR.GenericDialog_HelpBtnCaption); int tabOffset = GenericUI.InitDialog( this, _designer, _mergingContext ); this.Text = _designer.UnderlyingControl.ID + " - " + SR.GetString(SR.PropertyOverridesDialog_Title); SetTabIndexes(tabOffset); _designer.SetDeviceSpecificEditor(this); // Note that the following can cause an // IDeviceSpecificDesigner.Refresh() to occur as a side-effect. _designer.RefreshHeader(_mergingContext); _ignoreSelectionChanged = false; // NOTE: Calling CurrentDeviceSpecificID will cause a refresh to // happen as a side effect. _currentDeviceSpecificID = _designer.CurrentDeviceSpecificID; if (_currentDeviceSpecificID != null) { _cbChoices.Items.Clear(); LoadChoices(_currentDeviceSpecificID); if (!ValidateLoadedChoices()) { // Throw to prevent dialog from opening. Caught and hidden // by PropertyOverridesTypeEditor.cs throw new InvalidChoiceException( "Property overrides dialog can not open because there " + "are invalid choices defined in the page." ); } } // Register Event Handlers _cbChoices.SelectedIndexChanged += new EventHandler( OnFilterSelected ); _btnEditFilters.Click += new EventHandler(OnEditFilters); _cmdOK.Click += new EventHandler(OnOK); _cmdCancel.Click += new EventHandler(OnCancel); _cmdHelp.Click += new EventHandler(OnHelp); UpdateUI(); }
internal AppliedDeviceFiltersDialog( IDeviceSpecificDesigner designer, int mergingContext) : base (designer.UnderlyingControl.Site) { _designer = designer; _designer.SetDeviceSpecificEditor(this); // Required for Win Form Designer support InitializeComponent(); _lblAvailableFilters.Text = SR.GetString(SR.AppliedDeviceFiltersDialog_AvailableDeviceFilters); _appliedFiltersList.LblTitle.Text = SR.GetString(SR.AppliedDeviceFiltersDialog_AppliedDeviceFilters); _btnEditFilters.Text = SR.GetString(SR.GenericDialog_Edit); _btnApplyFilter.Text = SR.GetString(SR.AppliedDeviceFiltersDialog_ApplyDeviceFilter); _lblArgument.Text = SR.GetString(SR.AppliedDeviceFiltersDialog_Argument); _cmdOK.Text = SR.GetString(SR.GenericDialog_OKBtnCaption); _cmdCancel.Text = SR.GetString(SR.GenericDialog_CancelBtnCaption); int tabOffset = GenericUI.InitDialog( this, _designer, mergingContext ); this.Text = _designer.UnderlyingControl.ID + " - " + SR.GetString(SR.AppliedDeviceFiltersDialog_Title); SetTabIndexes(tabOffset); _webConfig = new WebConfigManager(_designer.UnderlyingControl.Site); LoadAvailableFilters(); // Note that the following can cause an // IDeviceSpecificDesigner.Refresh() to occur as a side-effect. _designer.RefreshHeader(mergingContext); _currentDeviceSpecificID = _designer.CurrentDeviceSpecificID; if(_currentDeviceSpecificID != null) { DeviceSpecific ds; _designer.GetDeviceSpecific(_currentDeviceSpecificID, out ds); LoadChoices(ds); } // Register Event Handlers _cbAvailableFilters.SelectedIndexChanged += new EventHandler( OnAvailableFilterSelected ); _cbAvailableFilters.TextChanged += new EventHandler( OnAvailableFilterSelected ); _btnApplyFilter.Click += new EventHandler(OnApplyFilter); _btnEditFilters.Click += new EventHandler(OnEditFilters); _appliedFiltersList.TvList.AfterSelect += new TreeViewEventHandler(OnAppliedFilterSelected); _appliedFiltersList.TvList.AfterLabelEdit += new NodeLabelEditEventHandler(OnAfterLabelEdit); _appliedFiltersList.BtnUp.Click += new EventHandler(OnAppliedFiltersReordered); _appliedFiltersList.BtnDown.Click += new EventHandler(OnAppliedFiltersReordered); _appliedFiltersList.BtnRemove.Click -= _appliedFiltersList.RemoveHandler; _appliedFiltersList.BtnRemove.Click += new EventHandler(OnRemove); _tbArgument.TextChanged += new EventHandler(OnArgumentChanged); _cmdOK.Click += new EventHandler(OnOK); _cmdCancel.Click += new EventHandler(OnCancel); UpdateUI(); }
internal AppliedDeviceFiltersDialog( IDeviceSpecificDesigner designer, int mergingContext) { _designer = designer; _designer.SetDeviceSpecificEditor(this); // Required for Win Form Designer support InitializeComponent(); _lblAvailableFilters.Text = SR.GetString(SR.AppliedDeviceFiltersDialog_AvailableDeviceFilters); _appliedFiltersList.LblTitle.Text = SR.GetString(SR.AppliedDeviceFiltersDialog_AppliedDeviceFilters); _btnEditFilters.Text = SR.GetString(SR.GenericDialog_Edit); _btnApplyFilter.Text = SR.GetString(SR.AppliedDeviceFiltersDialog_ApplyDeviceFilter); _lblArgument.Text = SR.GetString(SR.AppliedDeviceFiltersDialog_Argument); _cmdOK.Text = SR.GetString(SR.GenericDialog_OKBtnCaption); _cmdCancel.Text = SR.GetString(SR.GenericDialog_CancelBtnCaption); _cmdHelp.Text = SR.GetString(SR.GenericDialog_HelpBtnCaption); int tabOffset = GenericUI.InitDialog( this, _designer, mergingContext ); this.Text = _designer.UnderlyingControl.ID + " - " + SR.GetString(SR.AppliedDeviceFiltersDialog_Title); SetTabIndexes(tabOffset); _webConfig = new WebConfigManager(_designer.UnderlyingControl.Site); LoadAvailableFilters(); // Note that the following can cause an // IDeviceSpecificDesigner.Refresh() to occur as a side-effect. _designer.RefreshHeader(mergingContext); _currentDeviceSpecificID = _designer.CurrentDeviceSpecificID; if (_currentDeviceSpecificID != null) { DeviceSpecific ds; _designer.GetDeviceSpecific(_currentDeviceSpecificID, out ds); LoadChoices(ds); } // Register Event Handlers _cbAvailableFilters.SelectedIndexChanged += new EventHandler( OnAvailableFilterSelected ); _cbAvailableFilters.TextChanged += new EventHandler( OnAvailableFilterSelected ); _btnApplyFilter.Click += new EventHandler(OnApplyFilter); _btnEditFilters.Click += new EventHandler(OnEditFilters); _appliedFiltersList.TvList.AfterSelect += new TreeViewEventHandler(OnAppliedFilterSelected); _appliedFiltersList.TvList.AfterLabelEdit += new NodeLabelEditEventHandler(OnAfterLabelEdit); _appliedFiltersList.BtnUp.Click += new EventHandler(OnAppliedFiltersReordered); _appliedFiltersList.BtnDown.Click += new EventHandler(OnAppliedFiltersReordered); _appliedFiltersList.BtnRemove.Click -= _appliedFiltersList.RemoveHandler; _appliedFiltersList.BtnRemove.Click += new EventHandler(OnRemove); _tbArgument.TextChanged += new EventHandler(OnArgumentChanged); _cmdOK.Click += new EventHandler(OnOK); _cmdCancel.Click += new EventHandler(OnCancel); _cmdHelp.Click += new EventHandler(OnHelp); UpdateUI(); }
public override Object EditValue(ITypeDescriptorContext context, IServiceProvider provider, Object value) { Debug.Assert(context.Instance is Control, "Expected control"); Control ctrl = (Control)context.Instance; IServiceProvider serviceProvider; ISite site = ctrl.Site; if (site == null && ctrl.Page != null) { site = ctrl.Page.Site; } if (site != null) { serviceProvider = site; } else { serviceProvider = provider; } Debug.Assert(serviceProvider != null, "Failed to get the serviceProvider"); IComponentChangeService changeService = (IComponentChangeService)serviceProvider.GetService(typeof(IComponentChangeService)); IDesignerHost designerHost = (IDesignerHost)serviceProvider.GetService(typeof(IDesignerHost)); Debug.Assert(designerHost != null, "Must always have access to IDesignerHost service"); IDeviceSpecificDesigner dsDesigner = designerHost.GetDesigner(ctrl) as IDeviceSpecificDesigner; Debug.Assert(dsDesigner != null, "Expected component designer to implement IDeviceSpecificDesigner"); IMobileWebFormServices wfServices = (IMobileWebFormServices)serviceProvider.GetService(typeof(IMobileWebFormServices)); DialogResult result = DialogResult.Cancel; DesignerTransaction transaction = designerHost.CreateTransaction(_propertyOverridesDescription); try { if (changeService != null) { try { changeService.OnComponentChanging(ctrl, null); } catch (CheckoutException ce) { if (ce == CheckoutException.Canceled) { return(value); } throw; } } try { PropertyOverridesDialog dialog = new PropertyOverridesDialog( dsDesigner, MobileControlDesigner.MergingContextProperties ); IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); result = edSvc.ShowDialog(dialog); } catch (InvalidChoiceException e) { Debug.Fail(e.ToString()); } finally { if (changeService != null && result != DialogResult.Cancel) { changeService.OnComponentChanged(ctrl, null, null, null); } } } finally { if (transaction != null) { if (result == DialogResult.OK) { transaction.Commit(); } else { transaction.Cancel(); } } } return(value); }
protected virtual Object [] GetValidatableControls(Object instance) { System.Web.UI.MobileControls.BaseValidator thisValidator = null; if (instance is Array) { Array controlList = (Array)instance; Debug.Assert(controlList.Length > 0); thisValidator = (BaseValidator)controlList.GetValue(0); Form firstForm = GetContainingForm(thisValidator); for (int i = 1; i < controlList.Length; i++) { BaseValidator validator = (BaseValidator)controlList.GetValue(i); if (GetContainingForm(validator) != firstForm) { return(null); } } } if (instance is System.Web.UI.MobileControls.BaseValidator) { thisValidator = (System.Web.UI.MobileControls.BaseValidator)instance; } else if (instance is ChoicePropertyFilter) { IDeviceSpecificDesigner designer = ((ChoicePropertyFilter)instance).Designer; thisValidator = designer.UnderlyingObject as System.Web.UI.MobileControls.BaseValidator; } if (thisValidator == null) { Debug.Fail("Unsupported object passed in"); return(null); } ArrayList controlArray = new ArrayList(); if (GetContainingStyleSheet(thisValidator) != null) { ISite site = thisValidator.Site; IContainer container = null; if (site != null) { container = site.Container; Debug.Assert(container != null); foreach (IComponent component in container.Components) { Control control = component as Control; if (control != null && CanBeValidated(control)) { controlArray.Add(control.ID); } } } } else { Form parentForm = GetContainingForm(thisValidator); if (parentForm != null) { ExtractValidatableControls(parentForm, controlArray); } else { return(null); } } controlArray.Sort(); return(controlArray.ToArray()); }