LocalizationExtenderProvider Class
NOTE: This class is now obsolete. The non-obsolete alternative is CodeDomLocalizationProvider.
Provides design-time support for localization features to a root designer. Namespace: System.ComponentModel.DesignAssembly: System.Design (in system.design.dll)
'Declaration <ObsoleteAttribute("This class has been deprecated. Use CodeDomLocalizationProvider instead. http://go.microsoft.com/fwlink/?linkid=14202")> _ Public Class LocalizationExtenderProvider Implements IExtenderProvider, IDisposable 'Usage Dim instance As LocalizationExtenderProvider
/** @attribute ObsoleteAttribute("This class has been deprecated. Use CodeDomLocalizationProvider instead. http://go.microsoft.com/fwlink/?linkid=14202") */
public class LocalizationExtenderProvider implements IExtenderProvider, IDisposable
ObsoleteAttribute("This class has been deprecated. Use CodeDomLocalizationProvider instead. http://go.microsoft.com/fwlink/?linkid=14202") public class LocalizationExtenderProvider implements IExtenderProvider, IDisposable
Not applicable.
LocalizationExtenderProvider can extend an IRootDesigner with a set of properties and methods that provide support for the .NET Framework localization architecture. For more about using resources, see Localization.
The localization support architecture enables designers to initialize component properties using resource files that can be swapped at run time to support a variety of languages, culture-specific styles and dynamically configurable features. You can use the methods of this class to enable designers and code generating serializers to load from resources and build initialization code that uses localization features.
The default serializers that ship with Visual Studio are already capable of localizing components and controls, but they only do so if they locate support for the .NET Framework localization architecture. To detect the presence of localization support, the serialization system must locate a public Boolean property named “Localizable” on the root designer component. If a serializer finds this property, it searches for a property of type CultureInfo named "Language" to determine the current resource configuration. Default serializers use these properties to determine if it should localize any localizable resources of the component, and if so, what CultureInfo format the resource information should be saved in.
The following code example adds a LocalizationExtenderProvider to a component.
' Adds a LocalizationExtenderProvider that provides localization support properties to the specified component. extender = New LocalizationExtenderProvider(Me.component_.Site, Me.component_)
// Adds a LocalizationExtenderProvider that provides localization
// support properties to the specified component.
extender = new LocalizationExtenderProvider(
this.component.get_Site(), this.component);
The following code example includes an example component and designer. The designer uses a LocalizationExtenderProvider to add localization support properties for the component.
Imports System Imports System.Collections Imports System.ComponentModel Imports System.ComponentModel.Design Imports System.Diagnostics Imports System.Drawing Imports System.Windows.Forms Imports System.Windows.Forms.Design ' This example demonstrates adding localization support to a component hierarchy from a ' custom IRootDesigner using the LocalizationExtenderProvider class. ' RootViewDesignerComponent is a component associated with the SampleRootDesigner ' IRootDesigner that provides LocalizationExtenderProvider localization support. ' This derived class is included at the top of this example to enable ' easy launching of designer view without having to put the class in its own file. Public Class RootViewDesignerComponent Inherits RootDesignedComponent Public Sub New() End Sub End Class ' The following attribute associates the RootDesignedComponent with the RootDesignedComponent component. <Designer(GetType(SampleRootDesigner), GetType(IRootDesigner))> _ Public Class RootDesignedComponent Inherits Component Public Sub New() End Sub End Class ' Example IRootDesigner implementation demonstrates LocalizationExtenderProvider support. Friend Class SampleRootDesigner Implements IRootDesigner ' RootDesignerView Control provides a full region designer view for this root designer's associated component. Private m_view As RootDesignerView ' Stores reference to the LocalizationExtenderProvider this designer adds, in order to remove it on Dispose. Private extender As LocalizationExtenderProvider ' Internally stores the IDesigner's component reference Private component_ As IComponent ' Adds a LocalizationExtenderProvider for the component this designer is initialized to support. Public Sub Initialize(ByVal component As System.ComponentModel.IComponent) Implements IRootDesigner.Initialize Me.component_ = component ' If no extender from this designer is active... If extender Is Nothing Then ' Adds a LocalizationExtenderProvider that provides localization support properties to the specified component. extender = New LocalizationExtenderProvider(Me.component_.Site, Me.component_) End If End Sub ' Provides a RootDesignerView object that supports ViewTechnology.WindowsForms. Function GetView(ByVal technology As ViewTechnology) As Object Implements IRootDesigner.GetView If technology <> ViewTechnology.WindowsForms Then Throw New ArgumentException("Not a supported view technology", "technology") End If If m_view Is Nothing Then ' Create the view control. In this example, a Control of type RootDesignerView is used. ' A WindowsForms ViewTechnology view provider requires a class that inherits from Control. m_view = New RootDesignerView(Me, Me.Component) End If Return m_view End Function ' This designer supports the WindowsForms view technology. ReadOnly Property SupportedTechnologies() As ViewTechnology() Implements IRootDesigner.SupportedTechnologies Get Return New ViewTechnology() {ViewTechnology.WindowsForms} End Get End Property ' If a LocalizationExtenderProvider has been added, removes the extender provider. Protected Overloads Sub Dispose(ByVal disposing As Boolean) ' If an extender has been added, remove it If (extender IsNot Nothing) Then ' Disposes of the extender provider. The extender ' provider removes itself from the extender provider ' service when it is disposed. extender.Dispose() extender = Nothing End If End Sub ' Empty IDesigner interface property and method implementations Public ReadOnly Property Verbs() As System.ComponentModel.Design.DesignerVerbCollection Implements IDesigner.Verbs Get Return Nothing End Get End Property Public ReadOnly Property Component() As System.ComponentModel.IComponent Implements IRootDesigner.Component Get Return Me.component_ End Get End Property Public Sub DoDefaultAction() Implements IDesigner.DoDefaultAction End Sub Public Overloads Sub Dispose() Implements IDisposable.Dispose End Sub ' RootDesignerView is a simple control that will be displayed in the designer window. Private Class RootDesignerView Inherits Control Private m_designer As SampleRootDesigner Private comp As IComponent Public Sub New(ByVal designer As SampleRootDesigner, ByVal component As IComponent) m_designer = designer Me.comp = component BackColor = Color.Blue Font = New Font(FontFamily.GenericMonospace, 12) End Sub ' Displays the name of the component and the name of the assembly of the component ' that this root designer is providing support for. Protected Overrides Sub OnPaint(ByVal pe As PaintEventArgs) MyBase.OnPaint(pe) If (m_designer IsNot Nothing) AndAlso (comp IsNot Nothing) Then ' Draws the name of the component in large letters. pe.Graphics.DrawString("Root Designer View", Font, Brushes.Yellow, 8, 4) pe.Graphics.DrawString("Design Name : " + comp.Site.Name, New Font("Arial", 10), Brushes.Yellow, 8, 28) ' Uses the site of the component to acquire an ISelectionService and sets the property grid focus to the component. Dim selectionService As ISelectionService = CType(comp.Site.GetService(GetType(ISelectionService)), ISelectionService) If (selectionService IsNot Nothing) Then selectionService.SetSelectedComponents(New IComponent() {m_designer.Component}) End If End If End Sub End Class End Class
package LocalizationExtenderProviderExample;
import System.*;
import System.Collections.*;
import System.ComponentModel.*;
import System.ComponentModel.Design.*;
import System.Diagnostics.*;
import System.Drawing.*;
import System.Windows.Forms.*;
import System.Windows.Forms.Design.*;
// This example demonstrates adding localization support to a
// component hierarchy from a custom IRootDesigner
// using the LocalizationExtenderProvider class.
// RootViewDesignerComponent is a component associated with the
// SampleRootDesigner IRootDesigner that provides LocalizationExtenderProvider
// localization support. This derived class is included at the top of this
// example to enable easy launching of designer view without having to
// put the class in its own file.
public class RootViewDesignerComponent extends RootDesignedComponent
{
public RootViewDesignerComponent()
{
} //RootViewDesignerComponent
} //RootViewDesignerComponent
// The following attribute associates the RootDesignedComponent with the
// RootDesignedComponent component.
/** @attribute Designer(SampleRootDesigner.class, IRootDesigner.class)
*/
public class RootDesignedComponent extends Component
{
public RootDesignedComponent()
{
} //RootDesignedComponent
} //RootDesignedComponent
// Example IRootDesigner implementation demonstrates
// LocalizationExtenderProvider support.
class SampleRootDesigner implements IRootDesigner
{
// RootDesignerView Control provides a full region designer view for
// this root designer's associated component.
private RootDesignerView mView;
// Stores reference to the LocalizationExtenderProvider this designer adds,
// in order to remove it on Dispose.
private LocalizationExtenderProvider extender;
// Internally stores the IDesigner's component reference
private IComponent component;
// Adds a LocalizationExtenderProvider for the component this designer is
// initialized to support.
public void Initialize(System.ComponentModel.IComponent component)
{
this.component = component;
// If no extender from this designer is active...
if (extender == null) {
// Adds a LocalizationExtenderProvider that provides localization
// support properties to the specified component.
extender = new LocalizationExtenderProvider(
this.component.get_Site(), this.component);
}
} //Initialize
// Provides a RootDesignerView object that supports
// ViewTechnology.WindowsForms.
public Object GetView(ViewTechnology technology)
{
if (!technology.Equals(ViewTechnology.WindowsForms)) {
throw new ArgumentException("Not a supported view technology",
"technology");
}
if (mView == null) {
// Create the view control. In this example, a Control of type
// RootDesignerView is used.
// A WindowsForms ViewTechnology view provider requires a class
// that inherits from Control.
mView = new RootDesignerView(this, this.component);
}
return mView;
} //IRootDesigner.GetView
// This designer supports the WindowsForms view technology.
/** @property
*/
public ViewTechnology[] get_SupportedTechnologies()
{
return new ViewTechnology[] { ViewTechnology.WindowsForms };
} // get_SupportedTechnologies
// If a LocalizationExtenderProvider has been added,
// removes the extender provider.
protected void Dispose(boolean disposing)
{
// If an extender has been added, remove it
if (extender != null) {
// Disposes of the extender provider. The extender
// provider removes itself from the extender provider
// service when it is disposed.
extender.Dispose();
extender = null;
}
} //Dispose
// Empty IDesigner interface property and method implementations
/** @property
*/
public System.ComponentModel.Design.DesignerVerbCollection get_Verbs()
{
return null;
} //get_Verbs
/** @property
*/
public System.ComponentModel.IComponent get_Component()
{
return this.component;
} //get_Component
public void DoDefaultAction()
{
} //DoDefaultAction
public void Dispose()
{
} //Dispose
// RootDesignerView is a simple control that will be displayed
// in the designer window.
private class RootDesignerView extends Control
{
private SampleRootDesigner mDesigner;
private IComponent comp;
public RootDesignerView(SampleRootDesigner designer,
IComponent component)
{
mDesigner = designer;
this.comp = component;
set_BackColor(Color.get_Blue());
set_Font(new Font(FontFamily.get_GenericMonospace(), 12));
} //RootDesignerView
// Displays the name of the component and the name of the assembly of
// the component that this root designer is providing support for.
protected void OnPaint(PaintEventArgs pe)
{
super.OnPaint(pe);
if (mDesigner != null && comp != null) {
// Draws the name of the component in large letters.
pe.get_Graphics().DrawString("Root Designer View", get_Font(),
Brushes.get_Yellow(), 8, 4);
pe.get_Graphics().DrawString("Design Name : "
+ comp.get_Site().get_Name(), new Font("Arial", 10),
Brushes.get_Yellow(), 8, 28);
pe.get_Graphics().DrawString("Assembly : "
+ comp.GetType().get_AssemblyQualifiedName(),
new Font("Arial", 10), Brushes.get_Yellow(),
new RectangleF(new PointF(8, 44),
new SizeF((float)(get_ClientRectangle().get_Width() - 8),
(float)(get_ClientRectangle().get_Height() - 44))));
// Uses the site of the component to acquire an
// ISelectionService and sets the property grid focus
// to the component.
ISelectionService selectionService = (ISelectionService)(comp.
get_Site().GetService(ISelectionService.class.ToType()));
if (selectionService != null) {
selectionService.SetSelectedComponents(new IComponent[]
{ mDesigner.component });
}
}
} //OnPaint
} //RootDesignerView
} //SampleRootDesigner
Windows 98, Windows Server 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.