[mapguide-commits] r7019 - in branches/2.4/MgDev/Desktop: . Localization MapViewer MapViewer/AppLayoutEngine MapViewer/Properties MapViewer/Tasks MapViewer.Desktop MgAppLayout MgAppLayout/Properties

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Mon Sep 17 06:40:43 PDT 2012


Author: jng
Date: 2012-09-17 06:40:40 -0700 (Mon, 17 Sep 2012)
New Revision: 7019

Added:
   branches/2.4/MgDev/Desktop/Localization/
   branches/2.4/MgDev/Desktop/Localization/Duplicati.Library.Utility.dll
   branches/2.4/MgDev/Desktop/Localization/LocalizationTool - license.txt
   branches/2.4/MgDev/Desktop/Localization/LocalizationTool - source.txt
   branches/2.4/MgDev/Desktop/Localization/LocalizationTool.exe
   branches/2.4/MgDev/Desktop/Localization/LocalizationTool.exe.config
   branches/2.4/MgDev/Desktop/Localization/configuration.xml
   branches/2.4/MgDev/Desktop/MapViewer.Desktop/Strings.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer.Desktop/Strings.resx
   branches/2.4/MgDev/Desktop/MapViewer/MgControlImpl.resx
   branches/2.4/MgDev/Desktop/MapViewer/Strings.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/Strings.resx
Modified:
   branches/2.4/MgDev/Desktop/MapViewer.Desktop/MapViewer.Desktop.csproj
   branches/2.4/MgDev/Desktop/MapViewer.Desktop/MgDesktopMapViewerProvider.cs
   branches/2.4/MgDev/Desktop/MapViewer/AppLayoutEngine/AppLayout.cs
   branches/2.4/MgDev/Desktop/MapViewer/AppLayoutEngine/MgQuitComponent.cs
   branches/2.4/MgDev/Desktop/MapViewer/AppLayoutEngine/Shell.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/AppLayoutEngine/Shell.cs
   branches/2.4/MgDev/Desktop/MapViewer/AppLayoutEngine/Shell.resx
   branches/2.4/MgDev/Desktop/MapViewer/BaseInteractionComponents.cs
   branches/2.4/MgDev/Desktop/MapViewer/MapViewer.csproj
   branches/2.4/MgDev/Desktop/MapViewer/MapViewerController.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgBufferComponent.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgBufferControlImpl.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgBufferControlImpl.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgBufferControlImpl.resx
   branches/2.4/MgDev/Desktop/MapViewer/MgComponent.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgControlImpl.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgDefaultToolbar.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgGenericInvokeComponent.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgInvokeComponent.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgLayerSelectionHandler.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgLegend.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgLegend.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgLegend.resx
   branches/2.4/MgDev/Desktop/MapViewer/MgLegendControlPresenter.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgLineMeasureControlImpl.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgLineMeasureControlImpl.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgLineMeasureControlImpl.resx
   branches/2.4/MgDev/Desktop/MapViewer/MgLoadPackageComponent.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgMapViewer.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgMapViewerProvider.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgMeasureComponent.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgPrintComponent.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgPrintControlImpl.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgPrintControlImpl.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgPrintControlImpl.resx
   branches/2.4/MgDev/Desktop/MapViewer/MgPropertyPane.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgPropertyPane.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgPropertyPane.resx
   branches/2.4/MgDev/Desktop/MapViewer/MgQueryComponent.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgQueryControlImpl.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgQueryControlImpl.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgQueryControlImpl.resx
   branches/2.4/MgDev/Desktop/MapViewer/MgQueryResultsDialog.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgQueryResultsDialog.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgQueryResultsDialog.resx
   branches/2.4/MgDev/Desktop/MapViewer/MgReadOnlyStream.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgTaskPane.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgTaskPane.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgTaskPane.resx
   branches/2.4/MgDev/Desktop/MapViewer/MgThemeComponent.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgThemeControlImpl.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgThemeControlImpl.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgThemeControlImpl.resx
   branches/2.4/MgDev/Desktop/MapViewer/MgTransientMapState.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsComponent.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsControlImpl.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsControlImpl.cs
   branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsControlImpl.resx
   branches/2.4/MgDev/Desktop/MapViewer/Properties/Resources.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/Properties/Resources.resx
   branches/2.4/MgDev/Desktop/MapViewer/Tasks/MgTaskPaneStub.Designer.cs
   branches/2.4/MgDev/Desktop/MapViewer/Tasks/MgTaskPaneStub.cs
   branches/2.4/MgDev/Desktop/MapViewer/Tasks/MgTaskPaneStub.resx
   branches/2.4/MgDev/Desktop/MapViewer/Util.cs
   branches/2.4/MgDev/Desktop/MgAppLayout/Properties/AssemblyInfo.cs
   branches/2.4/MgDev/Desktop/MgAppLayout/Sheboygan.AppLayout
Log:
#2118: Make the mg-desktop viewer components localization-ready. We use the same Maestro localization tool (a copy of which is included here) to allow for easy translation. The AppLayout now supports a top-level <Language> element that will set the current application's culture to the CultureInfo instance indicated by the specified language code. A set of translated satellite assemblies in the specified culture must already exist in the Application's directory for this element to do anything. Similarly, any application using mg-desktop should set their thread culture before initializing the viewer allowing translations from satellite assemblies to kick in.


Property changes on: branches/2.4/MgDev/Desktop/Localization
___________________________________________________________________
Added: bugtraq:number
   + true

Added: branches/2.4/MgDev/Desktop/Localization/Duplicati.Library.Utility.dll
===================================================================
(Binary files differ)


Property changes on: branches/2.4/MgDev/Desktop/Localization/Duplicati.Library.Utility.dll
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/2.4/MgDev/Desktop/Localization/LocalizationTool - license.txt
===================================================================
--- branches/2.4/MgDev/Desktop/Localization/LocalizationTool - license.txt	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Localization/LocalizationTool - license.txt	2012-09-17 13:40:40 UTC (rev 7019)
@@ -0,0 +1,491 @@
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+
+    Copyright 2008, http://www.hexad.dk, opensource at hexad.dk

Added: branches/2.4/MgDev/Desktop/Localization/LocalizationTool - source.txt
===================================================================
--- branches/2.4/MgDev/Desktop/Localization/LocalizationTool - source.txt	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Localization/LocalizationTool - source.txt	2012-09-17 13:40:40 UTC (rev 7019)
@@ -0,0 +1,2 @@
+LocalizationTool.exe is from the Duplicati project:
+http://code.google.com/p/duplicati
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/Localization/LocalizationTool.exe
===================================================================
(Binary files differ)


Property changes on: branches/2.4/MgDev/Desktop/Localization/LocalizationTool.exe
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: branches/2.4/MgDev/Desktop/Localization/LocalizationTool.exe.config
===================================================================
--- branches/2.4/MgDev/Desktop/Localization/LocalizationTool.exe.config	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Localization/LocalizationTool.exe.config	2012-09-17 13:40:40 UTC (rev 7019)
@@ -0,0 +1,5 @@
+<?xml version="1.0"?>
+<configuration>
+    <configSections>
+    </configSections>
+<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>

Added: branches/2.4/MgDev/Desktop/Localization/configuration.xml
===================================================================
--- branches/2.4/MgDev/Desktop/Localization/configuration.xml	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/Localization/configuration.xml	2012-09-17 13:40:40 UTC (rev 7019)
@@ -0,0 +1,13 @@
+<root>
+	<configuration name="MgAppLayout">
+		<assembly name="OSGeo.MapGuide.Viewer" folder="MapViewer" namespace="OSGeo.MapGuide.Viewer" />
+        <assembly name="OSGeo.MapGuide.Viewer.Desktop" folder="MapViewer.Desktop" namespace="OSGeo.MapGuide.Viewer.Desktop" />
+
+		<keyfile>..\DesktopUnmanagedApi\DotNet\MgDesktop.snk</keyfile>
+		<versionassembly>..\bin\Release\MgAppLayout.exe</versionassembly>
+		<sourcefolder>..</sourcefolder>
+		<outputfolder>compiled</outputfolder>
+		<productname>MgAppLayout</productname>
+        <frameworkVersion>3.5</frameworkVersion>
+	</configuration>
+</root>
\ No newline at end of file

Modified: branches/2.4/MgDev/Desktop/MapViewer/AppLayoutEngine/AppLayout.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/AppLayoutEngine/AppLayout.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/AppLayoutEngine/AppLayout.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -14,6 +14,9 @@
         public string Icon { get; set; }
 
         [XmlElement]
+        public string Language { get; set; }
+
+        [XmlElement]
         public AppLayoutSettings Settings { get; set; }
 
         [XmlElement]
@@ -71,26 +74,26 @@
             {
                 Items = new List<ItemBase>()
                 {
-                    new SubMenu("File") 
+                    new SubMenu(Strings.MenuFile) 
                     {
                         Items = new List<ItemBase>()
                         {
-                            new CommandItem("LoadMap"),
-                            new CommandItem("LoadPackage"),
+                            new CommandItem("LoadMap"), //NOXLATE
+                            new CommandItem("LoadPackage"), //NOXLATE
                             new SeparatorItem(),
-                            new CommandItem("Quit")
+                            new CommandItem("Quit") //NOXLATE
                         }
                     },
-                    new SubMenu("Tools")
+                    new SubMenu(Strings.MenuTools)
                     {
                         Items = new List<ItemBase>()
                         {
-                            new CommandItem("Buffer"),
-                            new CommandItem("Measure"),
-                            new CommandItem("Query"),
-                            new CommandItem("Theme"),
+                            new CommandItem("Buffer"), //NOXLATE
+                            new CommandItem("Measure"), //NOXLATE
+                            new CommandItem("Query"), //NOXLATE
+                            new CommandItem("Theme"), //NOXLATE
                             new SeparatorItem(),
-                            new CommandItem("ViewerOptions")
+                            new CommandItem("ViewerOptions") //NOXLATE
                         }
                     }
                 }
@@ -99,37 +102,37 @@
             {
                 Items = new List<ItemBase>()
                 {
-                    new CommandItem("PrintMap", false),
+                    new CommandItem("PrintMap", false), //NOXLATE
                     new SeparatorItem(),
-                    new CommandItem("CopyMap", false),
+                    new CommandItem("CopyMap", false), //NOXLATE
                     new SeparatorItem(),
-                    new CommandItem("ZoomIn", false),
-                    new CommandItem("ZoomOut", false),
-                    new CommandItem("InitialView", false),
+                    new CommandItem("ZoomIn", false), //NOXLATE
+                    new CommandItem("ZoomOut", false), //NOXLATE
+                    new CommandItem("InitialView", false), //NOXLATE
                     new SeparatorItem(),
-                    new CommandItem("ZoomPrev", false),
-                    new CommandItem("ZoomNext", false),
+                    new CommandItem("ZoomPrev", false), //NOXLATE
+                    new CommandItem("ZoomNext", false), //NOXLATE
                     new SeparatorItem(),
-                    new CommandItem("Select", false),
-                    new CommandItem("SelectRadius", false),
-                    new CommandItem("SelectPolygon", false),
-                    new CommandItem("Pan", false),
+                    new CommandItem("Select", false), //NOXLATE
+                    new CommandItem("SelectRadius", false), //NOXLATE
+                    new CommandItem("SelectPolygon", false), //NOXLATE
+                    new CommandItem("Pan", false), //NOXLATE
                     new SeparatorItem(),
-                    new CommandItem("ClearSelection", false),
-                    new CommandItem("RefreshMap", false),
+                    new CommandItem("ClearSelection", false), //NOXLATE
+                    new CommandItem("RefreshMap", false), //NOXLATE
                     new SeparatorItem(),
-                    new CommandItem("TooltipToggle", true),
+                    new CommandItem("TooltipToggle", true), //NOXLATE
                     new SeparatorItem(),
-                    new SubMenu("Tools")
+                    new SubMenu(Strings.MenuTools)
                     {
                         Items = new List<ItemBase>()
                         {
-                            new CommandItem("Buffer"),
-                            new CommandItem("Measure"),
-                            new CommandItem("Query"),
-                            new CommandItem("Theme"),
+                            new CommandItem("Buffer"), //NOXLATE
+                            new CommandItem("Measure"), //NOXLATE
+                            new CommandItem("Query"), //NOXLATE
+                            new CommandItem("Theme"), //NOXLATE
                             new SeparatorItem(),
-                            new CommandItem("ViewerOptions")
+                            new CommandItem("ViewerOptions") //NOXLATE
                         }
                     }
                 }
@@ -138,29 +141,29 @@
             {
                 Items = new List<ItemBase>()
                 {
-                    new CommandItem("RefreshMap"),
+                    new CommandItem("RefreshMap"), //NOXLATE
                     new SeparatorItem(),
-                    new CommandItem("ZoomIn"),
-                    new CommandItem("ZoomOut"),
-                    new CommandItem("ZoomToSelection"),
-                    new CommandItem("InitialView"),
+                    new CommandItem("ZoomIn"), //NOXLATE
+                    new CommandItem("ZoomOut"), //NOXLATE
+                    new CommandItem("ZoomToSelection"), //NOXLATE
+                    new CommandItem("InitialView"), //NOXLATE
                     new SeparatorItem(),
-                    new CommandItem("Pan"),
-                    new CommandItem("Select"),
-                    new CommandItem("ClearSelection"),
+                    new CommandItem("Pan"), //NOXLATE
+                    new CommandItem("Select"), //NOXLATE
+                    new CommandItem("ClearSelection"), //NOXLATE
                     new SeparatorItem(),
-                    new SubMenu("Tools") 
+                    new SubMenu(Strings.MenuTools) 
                     {
                         Items = new List<ItemBase>() 
                         {
-                            new CommandItem("Buffer"),
-                            new CommandItem("Measure"),
-                            new CommandItem("Query"),
-                            new CommandItem("Theme")
+                            new CommandItem("Buffer"), //NOXLATE
+                            new CommandItem("Measure"), //NOXLATE
+                            new CommandItem("Query"), //NOXLATE
+                            new CommandItem("Theme") //NOXLATE
                         }
                     },
                     new SeparatorItem(),
-                    new CommandItem("ViewerOptions"),
+                    new CommandItem("ViewerOptions"), //NOXLATE
                 }
             };
             layout.TaskPane = new TaskPaneDefinition()
@@ -170,10 +173,10 @@
                 {
                     Items = new List<ItemBase>()
                     {
-                        new CommandItem("Buffer"),
-                        new CommandItem("Measure"),
-                        new CommandItem("Query"),
-                        new CommandItem("Theme")
+                        new CommandItem("Buffer"), //NOXLATE
+                        new CommandItem("Measure"), //NOXLATE
+                        new CommandItem("Query"), //NOXLATE
+                        new CommandItem("Theme") //NOXLATE
                     }
                 }
             };
@@ -183,72 +186,72 @@
                 {
                     ClassName = typeof(Viewer.MgBufferComponent).FullName,
                     Assembly = null,
-                    ComponentID = "Buffer",
+                    ComponentID = "Buffer", //NOXLATE
                     Properties = new List<NameValue>()
                     {
-                        new NameValue("DefaultLayerName", "BufferLayer"),
-                        new NameValue("DefaultBufferUnits", "enum:" + typeof(MeasurementUnit).FullName + ":" + MeasurementUnit.Meters.ToString()),
-                        new NameValue("Target", "enum:" + typeof(MgViewerTarget).FullName + ":" + MgViewerTarget.TaskPane),
-                        new NameValue("TaskPane", "taskpane:")
+                        new NameValue("DefaultLayerName", "BufferLayer"), //NOXLATE
+                        new NameValue("DefaultBufferUnits", "enum:" + typeof(MeasurementUnit).FullName + ":" + MeasurementUnit.Meters.ToString()), //NOXLATE
+                        new NameValue("Target", "enum:" + typeof(MgViewerTarget).FullName + ":" + MgViewerTarget.TaskPane), //NOXLATE
+                        new NameValue("TaskPane", "taskpane:") //NOXLATE
                     }
                 },
-                new ComponentDefinition(typeof(Viewer.MgCircleSelectComponent).FullName, "SelectRadius"),
-                new ComponentDefinition(typeof(Viewer.MgClearSelectionComponent).FullName, "ClearSelection"),
-                new ComponentDefinition(typeof(Viewer.MgCopyMapComponent).FullName, "CopyMap"),
-                new ComponentDefinition(typeof(Viewer.MgInitialViewComponent).FullName, "InitialView"),
-                new ComponentDefinition(typeof(Viewer.MgLoadMapComponent).FullName, "LoadMap")
+                new ComponentDefinition(typeof(Viewer.MgCircleSelectComponent).FullName, "SelectRadius"), //NOXLATE
+                new ComponentDefinition(typeof(Viewer.MgClearSelectionComponent).FullName, "ClearSelection"), //NOXLATE
+                new ComponentDefinition(typeof(Viewer.MgCopyMapComponent).FullName, "CopyMap"), //NOXLATE
+                new ComponentDefinition(typeof(Viewer.MgInitialViewComponent).FullName, "InitialView"), //NOXLATE
+                new ComponentDefinition(typeof(Viewer.MgLoadMapComponent).FullName, "LoadMap") //NOXLATE
                 {
                     Properties = new List<NameValue>()
                     {
-                        new NameValue("MapDefinition", mapDefinition)
+                        new NameValue("MapDefinition", mapDefinition) //NOXLATE
                     }
                 },
-                new ComponentDefinition(typeof(Viewer.MgLoadPackageComponent).FullName, "LoadPackage")
+                new ComponentDefinition(typeof(Viewer.MgLoadPackageComponent).FullName, "LoadPackage") //NOXLATE
                 {
                     Properties = new List<NameValue>()
                     {
-                        new NameValue("InvokeOnPackageLoad", "component:LoadMap")
+                        new NameValue("InvokeOnPackageLoad", "component:LoadMap") //NOXLATE
                     }
                 },
-                new ComponentDefinition(typeof(Viewer.MgMeasureComponent).FullName, "Measure")
+                new ComponentDefinition(typeof(Viewer.MgMeasureComponent).FullName, "Measure") //NOXLATE
                 {
                     Properties = new List<NameValue>()
                     {
-                        new NameValue("MeasureMode", "enum:" + typeof(MeasureMode).FullName + ":" + MeasureMode.Line.ToString()),
-                        new NameValue("PreferredUnits", "enum:" + typeof(MeasurementUnit).FullName + ":" + MeasurementUnit.Meters.ToString()),
-                        new NameValue("Target", "enum:" + typeof(MgViewerTarget).FullName + ":" + MgViewerTarget.TaskPane),
-                        new NameValue("TaskPane", "taskpane:")
+                        new NameValue("MeasureMode", "enum:" + typeof(MeasureMode).FullName + ":" + MeasureMode.Line.ToString()), //NOXLATE
+                        new NameValue("PreferredUnits", "enum:" + typeof(MeasurementUnit).FullName + ":" + MeasurementUnit.Meters.ToString()), //NOXLATE
+                        new NameValue("Target", "enum:" + typeof(MgViewerTarget).FullName + ":" + MgViewerTarget.TaskPane), //NOXLATE
+                        new NameValue("TaskPane", "taskpane:") //NOXLATE
                     }
                 },
-                new ComponentDefinition(typeof(Viewer.MgPanComponent).FullName, "Pan"),
-                new ComponentDefinition(typeof(Viewer.MgPolygonSelectComponent).FullName, "SelectPolygon"),
-                new ComponentDefinition(typeof(Viewer.MgPrintComponent).FullName, "PrintMap"),
-                new ComponentDefinition(typeof(Viewer.MgQueryComponent).FullName, "Query")
+                new ComponentDefinition(typeof(Viewer.MgPanComponent).FullName, "Pan"), //NOXLATE
+                new ComponentDefinition(typeof(Viewer.MgPolygonSelectComponent).FullName, "SelectPolygon"), //NOXLATE
+                new ComponentDefinition(typeof(Viewer.MgPrintComponent).FullName, "PrintMap"), //NOXLATE
+                new ComponentDefinition(typeof(Viewer.MgQueryComponent).FullName, "Query") //NOXLATE
                 {
                     Properties = new List<NameValue>()
                     {
-                        new NameValue("Target", "enum:" + typeof(MgViewerTarget).FullName + ":" + MgViewerTarget.TaskPane),
-                        new NameValue("TaskPane", "taskpane:")
+                        new NameValue("Target", "enum:" + typeof(MgViewerTarget).FullName + ":" + MgViewerTarget.TaskPane), //NOXLATE
+                        new NameValue("TaskPane", "taskpane:") //NOXLATE
                     }
                 },
-                new ComponentDefinition(typeof(Viewer.AppLayoutEngine.MgQuitComponent).FullName, "Quit"),
-                new ComponentDefinition(typeof(Viewer.MgRefreshMapComponent).FullName, "RefreshMap"),
-                new ComponentDefinition(typeof(Viewer.MgSelectComponent).FullName, "Select"),
-                new ComponentDefinition(typeof(Viewer.MgThemeComponent).FullName, "Theme")
+                new ComponentDefinition(typeof(Viewer.AppLayoutEngine.MgQuitComponent).FullName, "Quit"), //NOXLATE
+                new ComponentDefinition(typeof(Viewer.MgRefreshMapComponent).FullName, "RefreshMap"), //NOXLATE
+                new ComponentDefinition(typeof(Viewer.MgSelectComponent).FullName, "Select"), //NOXLATE
+                new ComponentDefinition(typeof(Viewer.MgThemeComponent).FullName, "Theme") //NOXLATE
                 {
                     Properties = new List<NameValue>()
                     {
-                        new NameValue("Target", "enum:" + typeof(MgViewerTarget).FullName + ":" + MgViewerTarget.TaskPane),
-                        new NameValue("TaskPane", "taskpane:")
+                        new NameValue("Target", "enum:" + typeof(MgViewerTarget).FullName + ":" + MgViewerTarget.TaskPane), //NOXLATE
+                        new NameValue("TaskPane", "taskpane:") //NOXLATE
                     }
                 },
-                new ComponentDefinition(typeof(Viewer.MgTooltipToggleComponent).FullName, "TooltipToggle"),
-                new ComponentDefinition(typeof(Viewer.MgViewerOptionsComponent).FullName, "ViewerOptions"),
-                new ComponentDefinition(typeof(Viewer.MgZoomInComponent).FullName, "ZoomIn"),
-                new ComponentDefinition(typeof(Viewer.MgZoomNextComponent).FullName, "ZoomNext"),
-                new ComponentDefinition(typeof(Viewer.MgZoomOutComponent).FullName, "ZoomOut"),
-                new ComponentDefinition(typeof(Viewer.MgZoomPreviousComponent).FullName, "ZoomPrev"),
-                new ComponentDefinition(typeof(Viewer.MgZoomToSelectionComponent).FullName, "ZoomToSelection")
+                new ComponentDefinition(typeof(Viewer.MgTooltipToggleComponent).FullName, "TooltipToggle"), //NOXLATE
+                new ComponentDefinition(typeof(Viewer.MgViewerOptionsComponent).FullName, "ViewerOptions"), //NOXLATE
+                new ComponentDefinition(typeof(Viewer.MgZoomInComponent).FullName, "ZoomIn"), //NOXLATE
+                new ComponentDefinition(typeof(Viewer.MgZoomNextComponent).FullName, "ZoomNext"), //NOXLATE
+                new ComponentDefinition(typeof(Viewer.MgZoomOutComponent).FullName, "ZoomOut"), //NOXLATE
+                new ComponentDefinition(typeof(Viewer.MgZoomPreviousComponent).FullName, "ZoomPrev"), //NOXLATE
+                new ComponentDefinition(typeof(Viewer.MgZoomToSelectionComponent).FullName, "ZoomToSelection") //NOXLATE
             };
             return layout;
         }

Modified: branches/2.4/MgDev/Desktop/MapViewer/AppLayoutEngine/MgQuitComponent.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/AppLayoutEngine/MgQuitComponent.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/AppLayoutEngine/MgQuitComponent.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -10,7 +10,7 @@
     {
         public MgQuitComponent()
         {
-            this.Label = Properties.Resources.TextExitApplication;
+            this.Label = Strings.TextExitApplication;
         }
 
         public override void Invoke()

Modified: branches/2.4/MgDev/Desktop/MapViewer/AppLayoutEngine/Shell.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/AppLayoutEngine/Shell.Designer.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/AppLayoutEngine/Shell.Designer.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -35,15 +35,11 @@
             this.layerPropertiesContainer = new System.Windows.Forms.SplitContainer();
             this.tabControl1 = new System.Windows.Forms.TabControl();
             this.TAB_LEGEND = new System.Windows.Forms.TabPage();
-            this.legend = new OSGeo.MapGuide.Viewer.MgLegend();
             this.imgList = new System.Windows.Forms.ImageList(this.components);
             this.tabControl2 = new System.Windows.Forms.TabControl();
             this.TAB_PROPERTIES = new System.Windows.Forms.TabPage();
-            this.propertyPane = new OSGeo.MapGuide.Viewer.MgPropertyPane();
-            this.mapViewer = new OSGeo.MapGuide.Viewer.MgMapViewer();
             this.viewerContextMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
             this.viewerToolbar = new System.Windows.Forms.ToolStrip();
-            this.taskPane = new OSGeo.MapGuide.Viewer.MgTaskPane();
             this.taskPaneToolbar = new System.Windows.Forms.ToolStrip();
             this.btnInitialTask = new System.Windows.Forms.ToolStripButton();
             this.taskMenu = new System.Windows.Forms.ToolStripDropDownButton();
@@ -54,6 +50,10 @@
             this.lblMapScale = new System.Windows.Forms.ToolStripStatusLabel();
             this.lblMapSize = new System.Windows.Forms.ToolStripStatusLabel();
             this.lblPoweredBy = new System.Windows.Forms.ToolStripStatusLabel();
+            this.legend = new OSGeo.MapGuide.Viewer.MgLegend();
+            this.propertyPane = new OSGeo.MapGuide.Viewer.MgPropertyPane();
+            this.mapViewer = new OSGeo.MapGuide.Viewer.MgMapViewer();
+            this.taskPane = new OSGeo.MapGuide.Viewer.MgTaskPane();
             this.appContainer.Panel1.SuspendLayout();
             this.appContainer.Panel2.SuspendLayout();
             this.appContainer.SuspendLayout();
@@ -73,9 +73,8 @@
             // 
             // appContainer
             // 
-            this.appContainer.Dock = System.Windows.Forms.DockStyle.Fill;
+            resources.ApplyResources(this.appContainer, "appContainer");
             this.appContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
-            this.appContainer.Location = new System.Drawing.Point(0, 24);
             this.appContainer.Name = "appContainer";
             // 
             // appContainer.Panel1
@@ -87,15 +86,11 @@
             // 
             this.appContainer.Panel2.Controls.Add(this.taskPane);
             this.appContainer.Panel2.Controls.Add(this.taskPaneToolbar);
-            this.appContainer.Size = new System.Drawing.Size(881, 528);
-            this.appContainer.SplitterDistance = 662;
-            this.appContainer.TabIndex = 1;
             // 
             // infoPaneViewerContainer
             // 
-            this.infoPaneViewerContainer.Dock = System.Windows.Forms.DockStyle.Fill;
+            resources.ApplyResources(this.infoPaneViewerContainer, "infoPaneViewerContainer");
             this.infoPaneViewerContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel1;
-            this.infoPaneViewerContainer.Location = new System.Drawing.Point(0, 25);
             this.infoPaneViewerContainer.Name = "infoPaneViewerContainer";
             // 
             // infoPaneViewerContainer.Panel1
@@ -105,17 +100,12 @@
             // infoPaneViewerContainer.Panel2
             // 
             this.infoPaneViewerContainer.Panel2.Controls.Add(this.mapViewer);
-            this.infoPaneViewerContainer.Size = new System.Drawing.Size(662, 503);
-            this.infoPaneViewerContainer.SplitterDistance = 220;
-            this.infoPaneViewerContainer.TabIndex = 0;
             // 
             // layerPropertiesContainer
             // 
-            this.layerPropertiesContainer.Dock = System.Windows.Forms.DockStyle.Fill;
+            resources.ApplyResources(this.layerPropertiesContainer, "layerPropertiesContainer");
             this.layerPropertiesContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
-            this.layerPropertiesContainer.Location = new System.Drawing.Point(0, 0);
             this.layerPropertiesContainer.Name = "layerPropertiesContainer";
-            this.layerPropertiesContainer.Orientation = System.Windows.Forms.Orientation.Horizontal;
             // 
             // layerPropertiesContainer.Panel1
             // 
@@ -124,46 +114,22 @@
             // layerPropertiesContainer.Panel2
             // 
             this.layerPropertiesContainer.Panel2.Controls.Add(this.tabControl2);
-            this.layerPropertiesContainer.Size = new System.Drawing.Size(220, 503);
-            this.layerPropertiesContainer.SplitterDistance = 271;
-            this.layerPropertiesContainer.TabIndex = 0;
             // 
             // tabControl1
             // 
             this.tabControl1.Controls.Add(this.TAB_LEGEND);
-            this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
+            resources.ApplyResources(this.tabControl1, "tabControl1");
             this.tabControl1.ImageList = this.imgList;
-            this.tabControl1.Location = new System.Drawing.Point(0, 0);
             this.tabControl1.Name = "tabControl1";
             this.tabControl1.SelectedIndex = 0;
-            this.tabControl1.Size = new System.Drawing.Size(220, 271);
-            this.tabControl1.TabIndex = 0;
             // 
             // TAB_LEGEND
             // 
             this.TAB_LEGEND.Controls.Add(this.legend);
-            this.TAB_LEGEND.ImageIndex = 0;
-            this.TAB_LEGEND.Location = new System.Drawing.Point(4, 23);
+            resources.ApplyResources(this.TAB_LEGEND, "TAB_LEGEND");
             this.TAB_LEGEND.Name = "TAB_LEGEND";
-            this.TAB_LEGEND.Padding = new System.Windows.Forms.Padding(3);
-            this.TAB_LEGEND.Size = new System.Drawing.Size(212, 244);
-            this.TAB_LEGEND.TabIndex = 1;
-            this.TAB_LEGEND.Text = "Layers";
             this.TAB_LEGEND.UseVisualStyleBackColor = true;
             // 
-            // legend
-            // 
-            this.legend.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.legend.GroupContextMenu = null;
-            this.legend.LayerContextMenu = null;
-            this.legend.Location = new System.Drawing.Point(3, 3);
-            this.legend.Name = "legend";
-            this.legend.ShowTooltips = true;
-            this.legend.Size = new System.Drawing.Size(206, 238);
-            this.legend.TabIndex = 0;
-            this.legend.ThemeCompressionLimit = 0;
-            this.legend.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(this.legend_PropertyChanged);
-            // 
             // imgList
             // 
             this.imgList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imgList.ImageStream")));
@@ -174,110 +140,54 @@
             // tabControl2
             // 
             this.tabControl2.Controls.Add(this.TAB_PROPERTIES);
-            this.tabControl2.Dock = System.Windows.Forms.DockStyle.Fill;
+            resources.ApplyResources(this.tabControl2, "tabControl2");
             this.tabControl2.ImageList = this.imgList;
-            this.tabControl2.Location = new System.Drawing.Point(0, 0);
             this.tabControl2.Name = "tabControl2";
             this.tabControl2.SelectedIndex = 0;
-            this.tabControl2.Size = new System.Drawing.Size(220, 228);
-            this.tabControl2.TabIndex = 0;
             // 
             // TAB_PROPERTIES
             // 
             this.TAB_PROPERTIES.Controls.Add(this.propertyPane);
-            this.TAB_PROPERTIES.ImageIndex = 1;
-            this.TAB_PROPERTIES.Location = new System.Drawing.Point(4, 23);
+            resources.ApplyResources(this.TAB_PROPERTIES, "TAB_PROPERTIES");
             this.TAB_PROPERTIES.Name = "TAB_PROPERTIES";
-            this.TAB_PROPERTIES.Padding = new System.Windows.Forms.Padding(3);
-            this.TAB_PROPERTIES.Size = new System.Drawing.Size(212, 201);
-            this.TAB_PROPERTIES.TabIndex = 1;
-            this.TAB_PROPERTIES.Text = "Properties";
             this.TAB_PROPERTIES.UseVisualStyleBackColor = true;
             // 
-            // propertyPane
-            // 
-            this.propertyPane.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.propertyPane.Location = new System.Drawing.Point(3, 3);
-            this.propertyPane.Name = "propertyPane";
-            this.propertyPane.Size = new System.Drawing.Size(206, 195);
-            this.propertyPane.TabIndex = 0;
-            // 
-            // mapViewer
-            // 
-            this.mapViewer.ContextMenuStrip = this.viewerContextMenu;
-            this.mapViewer.Cursor = System.Windows.Forms.Cursors.Default;
-            this.mapViewer.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.mapViewer.Location = new System.Drawing.Point(0, 0);
-            this.mapViewer.MaxScale = 1000000000;
-            this.mapViewer.MinScale = 10;
-            this.mapViewer.MouseWheelDelayRenderInterval = 800;
-            this.mapViewer.Name = "mapViewer";
-            this.mapViewer.PointPixelBuffer = 2;
-            this.mapViewer.SelectionColor = System.Drawing.Color.Blue;
-            this.mapViewer.Size = new System.Drawing.Size(438, 503);
-            this.mapViewer.TabIndex = 0;
-            this.mapViewer.Text = "mgMapViewer1";
-            this.mapViewer.TooltipDelayInterval = 1000;
-            this.mapViewer.ZoomInFactor = 0.5;
-            this.mapViewer.ZoomOutFactor = 2;
-            // 
             // viewerContextMenu
             // 
             this.viewerContextMenu.Name = "viewerContextMenu";
-            this.viewerContextMenu.Size = new System.Drawing.Size(61, 4);
+            resources.ApplyResources(this.viewerContextMenu, "viewerContextMenu");
             // 
             // viewerToolbar
             // 
-            this.viewerToolbar.Location = new System.Drawing.Point(0, 0);
+            resources.ApplyResources(this.viewerToolbar, "viewerToolbar");
             this.viewerToolbar.Name = "viewerToolbar";
-            this.viewerToolbar.Size = new System.Drawing.Size(662, 25);
-            this.viewerToolbar.TabIndex = 1;
-            this.viewerToolbar.Text = "toolStrip2";
             // 
-            // taskPane
-            // 
-            this.taskPane.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.taskPane.Location = new System.Drawing.Point(0, 25);
-            this.taskPane.Name = "taskPane";
-            this.taskPane.Size = new System.Drawing.Size(215, 503);
-            this.taskPane.TabIndex = 1;
-            // 
             // taskPaneToolbar
             // 
             this.taskPaneToolbar.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
             this.btnInitialTask,
             this.taskMenu});
-            this.taskPaneToolbar.Location = new System.Drawing.Point(0, 0);
+            resources.ApplyResources(this.taskPaneToolbar, "taskPaneToolbar");
             this.taskPaneToolbar.Name = "taskPaneToolbar";
-            this.taskPaneToolbar.Size = new System.Drawing.Size(215, 25);
-            this.taskPaneToolbar.TabIndex = 0;
-            this.taskPaneToolbar.Text = "toolStrip3";
             // 
             // btnInitialTask
             // 
             this.btnInitialTask.Image = global::OSGeo.MapGuide.Viewer.Properties.Resources.icon_home;
-            this.btnInitialTask.ImageTransparentColor = System.Drawing.Color.Magenta;
+            resources.ApplyResources(this.btnInitialTask, "btnInitialTask");
             this.btnInitialTask.Name = "btnInitialTask";
-            this.btnInitialTask.Size = new System.Drawing.Size(83, 22);
-            this.btnInitialTask.Text = "Initial Task";
             this.btnInitialTask.Click += new System.EventHandler(this.btnInitialTask_Click);
             // 
             // taskMenu
             // 
             this.taskMenu.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
             this.taskMenu.Image = global::OSGeo.MapGuide.Viewer.Properties.Resources.icon_tasks;
-            this.taskMenu.ImageTransparentColor = System.Drawing.Color.Magenta;
+            resources.ApplyResources(this.taskMenu, "taskMenu");
             this.taskMenu.Name = "taskMenu";
-            this.taskMenu.Size = new System.Drawing.Size(65, 22);
-            this.taskMenu.Text = "Tasks";
             // 
             // mainMenu
             // 
-            this.mainMenu.Location = new System.Drawing.Point(0, 0);
+            resources.ApplyResources(this.mainMenu, "mainMenu");
             this.mainMenu.Name = "mainMenu";
-            this.mainMenu.Size = new System.Drawing.Size(881, 24);
-            this.mainMenu.TabIndex = 2;
-            this.mainMenu.Text = "menuStrip1";
             // 
             // appStatusBar
             // 
@@ -287,52 +197,80 @@
             this.lblMapScale,
             this.lblMapSize,
             this.lblPoweredBy});
-            this.appStatusBar.Location = new System.Drawing.Point(0, 552);
+            resources.ApplyResources(this.appStatusBar, "appStatusBar");
             this.appStatusBar.Name = "appStatusBar";
-            this.appStatusBar.Size = new System.Drawing.Size(881, 23);
-            this.appStatusBar.TabIndex = 3;
-            this.appStatusBar.Text = "statusStrip1";
             // 
             // lblCoordinates
             // 
             this.lblCoordinates.Name = "lblCoordinates";
-            this.lblCoordinates.Size = new System.Drawing.Size(0, 18);
+            resources.ApplyResources(this.lblCoordinates, "lblCoordinates");
             // 
             // lblSelected
             // 
             this.lblSelected.Name = "lblSelected";
-            this.lblSelected.Size = new System.Drawing.Size(729, 18);
+            resources.ApplyResources(this.lblSelected, "lblSelected");
             this.lblSelected.Spring = true;
-            this.lblSelected.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
             // 
             // lblMapScale
             // 
             this.lblMapScale.Name = "lblMapScale";
-            this.lblMapScale.Size = new System.Drawing.Size(0, 18);
+            resources.ApplyResources(this.lblMapScale, "lblMapScale");
             // 
             // lblMapSize
             // 
             this.lblMapSize.Name = "lblMapSize";
-            this.lblMapSize.Size = new System.Drawing.Size(0, 18);
+            resources.ApplyResources(this.lblMapSize, "lblMapSize");
             // 
             // lblPoweredBy
             // 
             this.lblPoweredBy.Image = global::OSGeo.MapGuide.Viewer.Properties.Resources.PoweredBy_en;
-            this.lblPoweredBy.ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.None;
+            resources.ApplyResources(this.lblPoweredBy, "lblPoweredBy");
             this.lblPoweredBy.Name = "lblPoweredBy";
-            this.lblPoweredBy.Size = new System.Drawing.Size(137, 18);
             // 
+            // legend
+            // 
+            resources.ApplyResources(this.legend, "legend");
+            this.legend.GroupContextMenu = null;
+            this.legend.LayerContextMenu = null;
+            this.legend.Name = "legend";
+            this.legend.ShowTooltips = true;
+            this.legend.ThemeCompressionLimit = 0;
+            this.legend.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(this.legend_PropertyChanged);
+            // 
+            // propertyPane
+            // 
+            resources.ApplyResources(this.propertyPane, "propertyPane");
+            this.propertyPane.Name = "propertyPane";
+            // 
+            // mapViewer
+            // 
+            this.mapViewer.ContextMenuStrip = this.viewerContextMenu;
+            this.mapViewer.Cursor = System.Windows.Forms.Cursors.Default;
+            resources.ApplyResources(this.mapViewer, "mapViewer");
+            this.mapViewer.MaxScale = 1000000000;
+            this.mapViewer.MinScale = 10;
+            this.mapViewer.MouseWheelDelayRenderInterval = 800;
+            this.mapViewer.Name = "mapViewer";
+            this.mapViewer.PointPixelBuffer = 2;
+            this.mapViewer.SelectionColor = System.Drawing.Color.Blue;
+            this.mapViewer.TooltipDelayInterval = 1000;
+            this.mapViewer.ZoomInFactor = 0.5;
+            this.mapViewer.ZoomOutFactor = 2;
+            // 
+            // taskPane
+            // 
+            resources.ApplyResources(this.taskPane, "taskPane");
+            this.taskPane.Name = "taskPane";
+            // 
             // Shell
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            resources.ApplyResources(this, "$this");
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.ClientSize = new System.Drawing.Size(881, 575);
             this.Controls.Add(this.appContainer);
             this.Controls.Add(this.mainMenu);
             this.Controls.Add(this.appStatusBar);
             this.MainMenuStrip = this.mainMenu;
             this.Name = "Shell";
-            this.Text = "Shell";
             this.appContainer.Panel1.ResumeLayout(false);
             this.appContainer.Panel1.PerformLayout();
             this.appContainer.Panel2.ResumeLayout(false);

Modified: branches/2.4/MgDev/Desktop/MapViewer/AppLayoutEngine/Shell.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/AppLayoutEngine/Shell.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/AppLayoutEngine/Shell.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -6,6 +6,7 @@
 using System.Text;
 using System.Windows.Forms;
 using System.Reflection;
+using System.Globalization;
 
 namespace OSGeo.MapGuide.Viewer.AppLayoutEngine
 {
@@ -34,6 +35,23 @@
         public void Initialize(AppLayout layout, MgMapViewerProvider provider)
         {
             this.Text = layout.Title;
+
+            if (!string.IsNullOrEmpty(layout.Language))
+            {
+                try
+                {
+                    var ci = CultureInfo.GetCultureInfo(layout.Language);
+                    System.Threading.Thread.CurrentThread.CurrentUICulture 
+                        = System.Threading.Thread.CurrentThread.CurrentCulture
+                        = ci;
+                    SetLanguage(ci);
+                }
+                catch (Exception ex)
+                {
+                    MessageBox.Show(ex.Message, "Set Language");
+                }
+            }
+
             _menuInvoker = new MgMenuItemComponentInvoker();
             _toolInvoker = new MgToolButtonComponentInvoker();
 
@@ -66,13 +84,35 @@
                 if (cmp != null)
                     taskPane.SetInitialComponent(cmp);
                 else
-                    MessageBox.Show("WARNING: The specified initial task component id (" + _layout.TaskPane.InitialComponentID + ") does not exist in the AppLayout");
+                    MessageBox.Show(string.Format(Strings.WarnInitialTaskComponentNotFound, _layout.TaskPane.InitialComponentID));
             }
 
             _provider = provider;
             mapViewer.PropertyChanged += new PropertyChangedEventHandler(OnMapViewerPropertyChanged);
         }
 
+        private void SetLanguage(CultureInfo lang)
+        {
+            //The reason we have to do this is because we're setting the language after this object
+            //has been initialized and resources applied. We basically have to re-apply against the
+            //current language
+            ComponentResourceManager resources = new ComponentResourceManager(this.GetType());
+            ApplyResourceToControl(resources, this, lang);
+            resources.ApplyResources(this, "$this", lang);
+
+            //NOTE: Property pane is a separate case that has to be handled individually
+            propertyPane.SetLanguage(lang);
+        }
+
+        private static void ApplyResourceToControl(ComponentResourceManager resources, Control control, CultureInfo lang)
+        {
+            foreach (Control c in control.Controls)
+            {
+                ApplyResourceToControl(resources, c, lang);
+                resources.ApplyResources(c, c.Name, lang);
+            }
+        }
+
         internal void SetTaskPaneWidth(uint width)
         {
             if (appContainer.Panel2Collapsed)
@@ -111,7 +151,7 @@
 
         void OnMapViewerPropertyChanged(object sender, PropertyChangedEventArgs e)
         {
-            if (e.PropertyName == "IsBusy")
+            if (e.PropertyName == "IsBusy") //NOXLATE
             {
                 if (_loader != null)
                     _loader.Visible = mapViewer.IsBusy;
@@ -143,7 +183,7 @@
                 }
                 else
                 {
-                    MessageBox.Show("WARNING: Attempted to invoke the component with ID (" + _layout.Settings.InvokeOnStartup + "), but could not find any component with this ID. The application will continue");
+                    MessageBox.Show(string.Format(Strings.WarnInvokeNonExistentComponent, _layout.Settings.InvokeOnStartup));
                 }
             }
         }
@@ -185,7 +225,7 @@
             {
                 _loader = new ToolStripLabel(Properties.Resources.icon_loading);
                 _loader.Alignment = ToolStripItemAlignment.Right;
-                _loader.Text = "";
+                _loader.Text = string.Empty;
                 _loader.ImageScaling = ToolStripItemImageScaling.None;
             }
             viewerToolbar.Items.Add(_loader);
@@ -195,7 +235,7 @@
         private ToolStripItem CreateToolbarItem(ItemBase item)
         {
             if (item == null)
-                throw new ArgumentNullException("item");
+                throw new ArgumentNullException("item"); //NOXLATE
 
             if (item is SeparatorItem)
             {
@@ -228,14 +268,14 @@
             }
             else
             {
-                throw new NotSupportedException("Unsupported item type: " + item.GetType().Name);
+                throw new NotSupportedException(string.Format(Strings.ErrorUnsupportedItemType, item.GetType().Name));
             }
         }
 
         private ToolStripItem CreateMenuItem(ItemBase item)
         {
             if (item == null)
-                throw new ArgumentNullException("item");
+                throw new ArgumentNullException("item"); //NOXLATE
 
             if (item is SeparatorItem)
             {
@@ -270,7 +310,7 @@
             }
             else
             {
-                throw new NotSupportedException("Unsupported item type: " + item.GetType().Name);
+                throw new NotSupportedException(string.Format(Strings.ErrorUnsupportedItemType, item.GetType().Name));
             }
         }
 
@@ -306,7 +346,7 @@
                         if (type.FullName == compDef.ClassName)
                         {
                             if (_components.ContainsKey(compDef.ComponentID))
-                                throw new InvalidOperationException("A component with ID " + compDef.ComponentID + " already exists");
+                                throw new InvalidOperationException(string.Format(Strings.ErrorComponentAlreadyExists, compDef.ComponentID));
                             var comp = (MgComponent)Activator.CreateInstance(type);
                             _components[compDef.ComponentID] = comp;
                             break;
@@ -325,7 +365,7 @@
                         if (type.FullName == compDef.ClassName)
                         {
                             if (_components.ContainsKey(compDef.ComponentID))
-                                throw new InvalidOperationException("A component with ID " + compDef.ComponentID + " already exists");
+                                throw new InvalidOperationException(string.Format(Strings.ErrorComponentAlreadyExists, compDef.ComponentID));
                             var comp = (MgComponent)Activator.CreateInstance(type);
                             _components[compDef.ComponentID] = comp;
                             break;
@@ -352,7 +392,7 @@
                     {
                         var compID = prop.Value.Substring(StringPrefixes.COMPONENTID.Length);
                         if (!_components.ContainsKey(compID))
-                            throw new InvalidOperationException("Component " + compID + " does not exist");
+                            throw new InvalidOperationException(string.Format(Strings.ErrorComponentNotFound, compID));
 
                         comp.SetPropertyValue(prop.Name, _components[compID]);
                     }
@@ -360,7 +400,7 @@
                     {
                         string [] tokens = prop.Value.Split(':');
                         if (tokens.Length != 3)
-                            throw new InvalidOperationException("Malformed enum string. Expected enum:className:value");
+                            throw new InvalidOperationException(Strings.ErrorMalformedEnumString);
                         comp.SetPropertyValue(prop.Name, Enum.Parse(Type.GetType(tokens[1]), tokens[2]));
                     }
                     else if (prop.Value.StartsWith(StringPrefixes.TASKPANEID)) //NOTE: only one taskpane instance, but we're checking this as a forward-looking measure
@@ -468,7 +508,7 @@
 
         private void UpdateLegendTabText()
         {
-            TAB_LEGEND.Text = legend.IsBusy ? Properties.Resources.TextLayersRefreshing : Properties.Resources.TextLayers;
+            TAB_LEGEND.Text = legend.IsBusy ? Strings.TextLayersRefreshing : Strings.TextLayers;
         }
     }
 

Modified: branches/2.4/MgDev/Desktop/MapViewer/AppLayoutEngine/Shell.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/AppLayoutEngine/Shell.resx	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/AppLayoutEngine/Shell.resx	2012-09-17 13:40:40 UTC (rev 7019)
@@ -117,6 +117,87 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="appContainer.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Fill</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="appContainer.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 24</value>
+  </data>
+  <data name="infoPaneViewerContainer.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Fill</value>
+  </data>
+  <data name="infoPaneViewerContainer.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 25</value>
+  </data>
+  <data name="layerPropertiesContainer.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Fill</value>
+  </data>
+  <data name="layerPropertiesContainer.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 0</value>
+  </data>
+  <data name="layerPropertiesContainer.Orientation" type="System.Windows.Forms.Orientation, System.Windows.Forms">
+    <value>Horizontal</value>
+  </data>
+  <data name="legend.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Fill</value>
+  </data>
+  <data name="legend.Location" type="System.Drawing.Point, System.Drawing">
+    <value>3, 3</value>
+  </data>
+  <data name="legend.Size" type="System.Drawing.Size, System.Drawing">
+    <value>206, 238</value>
+  </data>
+  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="legend.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name=">>legend.Name" xml:space="preserve">
+    <value>legend</value>
+  </data>
+  <data name=">>legend.Type" xml:space="preserve">
+    <value>OSGeo.MapGuide.Viewer.MgLegend, OSGeo.MapGuide.Viewer, Version=2.4.0.6971, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f</value>
+  </data>
+  <data name=">>legend.Parent" xml:space="preserve">
+    <value>TAB_LEGEND</value>
+  </data>
+  <data name=">>legend.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="TAB_LEGEND.ImageIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="TAB_LEGEND.Location" type="System.Drawing.Point, System.Drawing">
+    <value>4, 23</value>
+  </data>
+  <data name="TAB_LEGEND.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
+    <value>3, 3, 3, 3</value>
+  </data>
+  <data name="TAB_LEGEND.Size" type="System.Drawing.Size, System.Drawing">
+    <value>212, 244</value>
+  </data>
+  <data name="TAB_LEGEND.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name="TAB_LEGEND.Text" xml:space="preserve">
+    <value>Layers</value>
+  </data>
+  <data name=">>TAB_LEGEND.Name" xml:space="preserve">
+    <value>TAB_LEGEND</value>
+  </data>
+  <data name=">>TAB_LEGEND.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>TAB_LEGEND.Parent" xml:space="preserve">
+    <value>tabControl1</value>
+  </data>
+  <data name=">>TAB_LEGEND.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="tabControl1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Fill</value>
+  </data>
   <metadata name="imgList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
@@ -125,7 +206,7 @@
         AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
         LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
         ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAD6
-        CAAAAk1TRnQBSQFMAgEBAgEAARABAAEQAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+        CAAAAk1TRnQBSQFMAgEBAgEAATgBAAE4AQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
         AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
         AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
         AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
@@ -166,19 +247,517 @@
         BgAC/wHwBQAC/wHwBQAC/wHwAQEEAAs=
 </value>
   </data>
+  <data name="tabControl1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 0</value>
+  </data>
+  <data name="tabControl1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>220, 271</value>
+  </data>
+  <data name="tabControl1.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name=">>tabControl1.Name" xml:space="preserve">
+    <value>tabControl1</value>
+  </data>
+  <data name=">>tabControl1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TabControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>tabControl1.Parent" xml:space="preserve">
+    <value>layerPropertiesContainer.Panel1</value>
+  </data>
+  <data name=">>tabControl1.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name=">>layerPropertiesContainer.Panel1.Name" xml:space="preserve">
+    <value>layerPropertiesContainer.Panel1</value>
+  </data>
+  <data name=">>layerPropertiesContainer.Panel1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>layerPropertiesContainer.Panel1.Parent" xml:space="preserve">
+    <value>layerPropertiesContainer</value>
+  </data>
+  <data name=">>layerPropertiesContainer.Panel1.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="propertyPane.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Fill</value>
+  </data>
+  <data name="propertyPane.Location" type="System.Drawing.Point, System.Drawing">
+    <value>3, 3</value>
+  </data>
+  <data name="propertyPane.Size" type="System.Drawing.Size, System.Drawing">
+    <value>206, 195</value>
+  </data>
+  <data name="propertyPane.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name=">>propertyPane.Name" xml:space="preserve">
+    <value>propertyPane</value>
+  </data>
+  <data name=">>propertyPane.Type" xml:space="preserve">
+    <value>OSGeo.MapGuide.Viewer.MgPropertyPane, OSGeo.MapGuide.Viewer, Version=2.4.0.6971, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f</value>
+  </data>
+  <data name=">>propertyPane.Parent" xml:space="preserve">
+    <value>TAB_PROPERTIES</value>
+  </data>
+  <data name=">>propertyPane.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="TAB_PROPERTIES.ImageIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name="TAB_PROPERTIES.Location" type="System.Drawing.Point, System.Drawing">
+    <value>4, 23</value>
+  </data>
+  <data name="TAB_PROPERTIES.Padding" type="System.Windows.Forms.Padding, System.Windows.Forms">
+    <value>3, 3, 3, 3</value>
+  </data>
+  <data name="TAB_PROPERTIES.Size" type="System.Drawing.Size, System.Drawing">
+    <value>212, 201</value>
+  </data>
+  <data name="TAB_PROPERTIES.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name="TAB_PROPERTIES.Text" xml:space="preserve">
+    <value>Properties</value>
+  </data>
+  <data name=">>TAB_PROPERTIES.Name" xml:space="preserve">
+    <value>TAB_PROPERTIES</value>
+  </data>
+  <data name=">>TAB_PROPERTIES.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TabPage, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>TAB_PROPERTIES.Parent" xml:space="preserve">
+    <value>tabControl2</value>
+  </data>
+  <data name=">>TAB_PROPERTIES.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="tabControl2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Fill</value>
+  </data>
+  <data name="tabControl2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 0</value>
+  </data>
+  <data name="tabControl2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>220, 228</value>
+  </data>
+  <data name="tabControl2.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name=">>tabControl2.Name" xml:space="preserve">
+    <value>tabControl2</value>
+  </data>
+  <data name=">>tabControl2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TabControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>tabControl2.Parent" xml:space="preserve">
+    <value>layerPropertiesContainer.Panel2</value>
+  </data>
+  <data name=">>tabControl2.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name=">>layerPropertiesContainer.Panel2.Name" xml:space="preserve">
+    <value>layerPropertiesContainer.Panel2</value>
+  </data>
+  <data name=">>layerPropertiesContainer.Panel2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>layerPropertiesContainer.Panel2.Parent" xml:space="preserve">
+    <value>layerPropertiesContainer</value>
+  </data>
+  <data name=">>layerPropertiesContainer.Panel2.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="layerPropertiesContainer.Size" type="System.Drawing.Size, System.Drawing">
+    <value>220, 503</value>
+  </data>
+  <data name="layerPropertiesContainer.SplitterDistance" type="System.Int32, mscorlib">
+    <value>271</value>
+  </data>
+  <data name="layerPropertiesContainer.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name=">>layerPropertiesContainer.Name" xml:space="preserve">
+    <value>layerPropertiesContainer</value>
+  </data>
+  <data name=">>layerPropertiesContainer.Type" xml:space="preserve">
+    <value>System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>layerPropertiesContainer.Parent" xml:space="preserve">
+    <value>infoPaneViewerContainer.Panel1</value>
+  </data>
+  <data name=">>layerPropertiesContainer.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name=">>infoPaneViewerContainer.Panel1.Name" xml:space="preserve">
+    <value>infoPaneViewerContainer.Panel1</value>
+  </data>
+  <data name=">>infoPaneViewerContainer.Panel1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>infoPaneViewerContainer.Panel1.Parent" xml:space="preserve">
+    <value>infoPaneViewerContainer</value>
+  </data>
+  <data name=">>infoPaneViewerContainer.Panel1.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
   <metadata name="viewerContextMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>611, 17</value>
   </metadata>
+  <data name="viewerContextMenu.Size" type="System.Drawing.Size, System.Drawing">
+    <value>61, 4</value>
+  </data>
+  <data name=">>viewerContextMenu.Name" xml:space="preserve">
+    <value>viewerContextMenu</value>
+  </data>
+  <data name=">>viewerContextMenu.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ContextMenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="mapViewer.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Fill</value>
+  </data>
+  <data name="mapViewer.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 0</value>
+  </data>
+  <data name="mapViewer.Size" type="System.Drawing.Size, System.Drawing">
+    <value>438, 503</value>
+  </data>
+  <data name="mapViewer.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="mapViewer.Text" xml:space="preserve">
+    <value>mgMapViewer1</value>
+  </data>
+  <data name=">>mapViewer.Name" xml:space="preserve">
+    <value>mapViewer</value>
+  </data>
+  <data name=">>mapViewer.Type" xml:space="preserve">
+    <value>OSGeo.MapGuide.Viewer.MgMapViewer, OSGeo.MapGuide.Viewer, Version=2.4.0.6971, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f</value>
+  </data>
+  <data name=">>mapViewer.Parent" xml:space="preserve">
+    <value>infoPaneViewerContainer.Panel2</value>
+  </data>
+  <data name=">>mapViewer.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name=">>infoPaneViewerContainer.Panel2.Name" xml:space="preserve">
+    <value>infoPaneViewerContainer.Panel2</value>
+  </data>
+  <data name=">>infoPaneViewerContainer.Panel2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>infoPaneViewerContainer.Panel2.Parent" xml:space="preserve">
+    <value>infoPaneViewerContainer</value>
+  </data>
+  <data name=">>infoPaneViewerContainer.Panel2.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="infoPaneViewerContainer.Size" type="System.Drawing.Size, System.Drawing">
+    <value>662, 503</value>
+  </data>
+  <data name="infoPaneViewerContainer.SplitterDistance" type="System.Int32, mscorlib">
+    <value>220</value>
+  </data>
+  <data name="infoPaneViewerContainer.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name=">>infoPaneViewerContainer.Name" xml:space="preserve">
+    <value>infoPaneViewerContainer</value>
+  </data>
+  <data name=">>infoPaneViewerContainer.Type" xml:space="preserve">
+    <value>System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>infoPaneViewerContainer.Parent" xml:space="preserve">
+    <value>appContainer.Panel1</value>
+  </data>
+  <data name=">>infoPaneViewerContainer.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
   <metadata name="viewerToolbar.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>108, 17</value>
+    <value>0, 0</value>
   </metadata>
+  <data name="viewerToolbar.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 0</value>
+  </data>
+  <data name="viewerToolbar.Size" type="System.Drawing.Size, System.Drawing">
+    <value>662, 25</value>
+  </data>
+  <data name="viewerToolbar.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name="viewerToolbar.Text" xml:space="preserve">
+    <value>toolStrip2</value>
+  </data>
+  <data name=">>viewerToolbar.Name" xml:space="preserve">
+    <value>viewerToolbar</value>
+  </data>
+  <data name=">>viewerToolbar.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>viewerToolbar.Parent" xml:space="preserve">
+    <value>appContainer.Panel1</value>
+  </data>
+  <data name=">>viewerToolbar.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name=">>appContainer.Panel1.Name" xml:space="preserve">
+    <value>appContainer.Panel1</value>
+  </data>
+  <data name=">>appContainer.Panel1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>appContainer.Panel1.Parent" xml:space="preserve">
+    <value>appContainer</value>
+  </data>
+  <data name=">>appContainer.Panel1.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="taskPane.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Fill</value>
+  </data>
+  <data name="taskPane.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 25</value>
+  </data>
+  <data name="taskPane.Size" type="System.Drawing.Size, System.Drawing">
+    <value>215, 503</value>
+  </data>
+  <data name="taskPane.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name=">>taskPane.Name" xml:space="preserve">
+    <value>taskPane</value>
+  </data>
+  <data name=">>taskPane.Type" xml:space="preserve">
+    <value>OSGeo.MapGuide.Viewer.MgTaskPane, OSGeo.MapGuide.Viewer, Version=2.4.0.6971, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f</value>
+  </data>
+  <data name=">>taskPane.Parent" xml:space="preserve">
+    <value>appContainer.Panel2</value>
+  </data>
+  <data name=">>taskPane.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
   <metadata name="taskPaneToolbar.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>236, 17</value>
+    <value>0, 0</value>
   </metadata>
+  <data name="btnInitialTask.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
+    <value>Magenta</value>
+  </data>
+  <data name="btnInitialTask.Size" type="System.Drawing.Size, System.Drawing">
+    <value>83, 22</value>
+  </data>
+  <data name="btnInitialTask.Text" xml:space="preserve">
+    <value>Initial Task</value>
+  </data>
+  <data name="taskMenu.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
+    <value>Magenta</value>
+  </data>
+  <data name="taskMenu.Size" type="System.Drawing.Size, System.Drawing">
+    <value>65, 22</value>
+  </data>
+  <data name="taskMenu.Text" xml:space="preserve">
+    <value>Tasks</value>
+  </data>
+  <data name="taskPaneToolbar.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 0</value>
+  </data>
+  <data name="taskPaneToolbar.Size" type="System.Drawing.Size, System.Drawing">
+    <value>215, 25</value>
+  </data>
+  <data name="taskPaneToolbar.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="taskPaneToolbar.Text" xml:space="preserve">
+    <value>toolStrip3</value>
+  </data>
+  <data name=">>taskPaneToolbar.Name" xml:space="preserve">
+    <value>taskPaneToolbar</value>
+  </data>
+  <data name=">>taskPaneToolbar.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>taskPaneToolbar.Parent" xml:space="preserve">
+    <value>appContainer.Panel2</value>
+  </data>
+  <data name=">>taskPaneToolbar.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name=">>appContainer.Panel2.Name" xml:space="preserve">
+    <value>appContainer.Panel2</value>
+  </data>
+  <data name=">>appContainer.Panel2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.SplitterPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>appContainer.Panel2.Parent" xml:space="preserve">
+    <value>appContainer</value>
+  </data>
+  <data name=">>appContainer.Panel2.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="appContainer.Size" type="System.Drawing.Size, System.Drawing">
+    <value>881, 528</value>
+  </data>
+  <data name="appContainer.SplitterDistance" type="System.Int32, mscorlib">
+    <value>662</value>
+  </data>
+  <data name="appContainer.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name=">>appContainer.Name" xml:space="preserve">
+    <value>appContainer</value>
+  </data>
+  <data name=">>appContainer.Type" xml:space="preserve">
+    <value>System.Windows.Forms.SplitContainer, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>appContainer.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>appContainer.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
   <metadata name="mainMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>378, 17</value>
   </metadata>
+  <data name="mainMenu.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 0</value>
+  </data>
+  <data name="mainMenu.Size" type="System.Drawing.Size, System.Drawing">
+    <value>881, 24</value>
+  </data>
+  <data name="mainMenu.TabIndex" type="System.Int32, mscorlib">
+    <value>2</value>
+  </data>
+  <data name="mainMenu.Text" xml:space="preserve">
+    <value>menuStrip1</value>
+  </data>
+  <data name=">>mainMenu.Name" xml:space="preserve">
+    <value>mainMenu</value>
+  </data>
+  <data name=">>mainMenu.Type" xml:space="preserve">
+    <value>System.Windows.Forms.MenuStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>mainMenu.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>mainMenu.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
   <metadata name="appStatusBar.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>488, 17</value>
   </metadata>
+  <data name="lblCoordinates.Size" type="System.Drawing.Size, System.Drawing">
+    <value>0, 18</value>
+  </data>
+  <data name="lblSelected.Size" type="System.Drawing.Size, System.Drawing">
+    <value>729, 18</value>
+  </data>
+  <data name="lblSelected.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
+    <value>MiddleLeft</value>
+  </data>
+  <data name="lblMapScale.Size" type="System.Drawing.Size, System.Drawing">
+    <value>0, 18</value>
+  </data>
+  <data name="lblMapSize.Size" type="System.Drawing.Size, System.Drawing">
+    <value>0, 18</value>
+  </data>
+  <data name="lblPoweredBy.ImageScaling" type="System.Windows.Forms.ToolStripItemImageScaling, System.Windows.Forms">
+    <value>None</value>
+  </data>
+  <data name="lblPoweredBy.Size" type="System.Drawing.Size, System.Drawing">
+    <value>137, 18</value>
+  </data>
+  <data name="appStatusBar.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 552</value>
+  </data>
+  <data name="appStatusBar.Size" type="System.Drawing.Size, System.Drawing">
+    <value>881, 23</value>
+  </data>
+  <data name="appStatusBar.TabIndex" type="System.Int32, mscorlib">
+    <value>3</value>
+  </data>
+  <data name="appStatusBar.Text" xml:space="preserve">
+    <value>statusStrip1</value>
+  </data>
+  <data name=">>appStatusBar.Name" xml:space="preserve">
+    <value>appStatusBar</value>
+  </data>
+  <data name=">>appStatusBar.Type" xml:space="preserve">
+    <value>System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>appStatusBar.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>appStatusBar.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+    <value>6, 13</value>
+  </data>
+  <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
+    <value>881, 575</value>
+  </data>
+  <data name="$this.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
+    <value>NoControl</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>Shell</value>
+  </data>
+  <data name=">>imgList.Name" xml:space="preserve">
+    <value>imgList</value>
+  </data>
+  <data name=">>imgList.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ImageList, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnInitialTask.Name" xml:space="preserve">
+    <value>btnInitialTask</value>
+  </data>
+  <data name=">>btnInitialTask.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>taskMenu.Name" xml:space="preserve">
+    <value>taskMenu</value>
+  </data>
+  <data name=">>taskMenu.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripDropDownButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>lblCoordinates.Name" xml:space="preserve">
+    <value>lblCoordinates</value>
+  </data>
+  <data name=">>lblCoordinates.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>lblSelected.Name" xml:space="preserve">
+    <value>lblSelected</value>
+  </data>
+  <data name=">>lblSelected.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>lblMapScale.Name" xml:space="preserve">
+    <value>lblMapScale</value>
+  </data>
+  <data name=">>lblMapScale.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>lblMapSize.Name" xml:space="preserve">
+    <value>lblMapSize</value>
+  </data>
+  <data name=">>lblMapSize.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>lblPoweredBy.Name" xml:space="preserve">
+    <value>lblPoweredBy</value>
+  </data>
+  <data name=">>lblPoweredBy.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>$this.Name" xml:space="preserve">
+    <value>Shell</value>
+  </data>
+  <data name=">>$this.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
 </root>
\ No newline at end of file

Modified: branches/2.4/MgDev/Desktop/MapViewer/BaseInteractionComponents.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/BaseInteractionComponents.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/BaseInteractionComponents.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -11,7 +11,7 @@
     {
         public MgCopyMapComponent()
         {
-            this.Label = this.ToolTipText = Properties.Resources.TextCopyMap;
+            this.Label = this.ToolTipText = Strings.TextCopyMap;
             this.Icon = Properties.Resources.edit_copy;
         }
 
@@ -26,7 +26,7 @@
     {
         public MgZoomInComponent()
         {
-            this.Label = this.ToolTipText = Properties.Resources.TextZoomIn;
+            this.Label = this.ToolTipText = Strings.TextZoomIn;
             this.Icon = Properties.Resources.zoom_in_fixed;
         }
 
@@ -44,7 +44,7 @@
     {
         public MgZoomOutComponent()
         {
-            this.Label = this.ToolTipText = Properties.Resources.TextZoomOut;
+            this.Label = this.ToolTipText = Strings.TextZoomOut;
             this.Icon = Properties.Resources.zoom_out_fixed;
         }
 
@@ -56,7 +56,7 @@
 
         protected override void OnViewerPropertyChanged(object sender, PropertyChangedEventArgs e)
         {
-            if (e.PropertyName == "ActiveTool")
+            if (e.PropertyName == "ActiveTool") //NOXLATE
             {
                 var state = (this.Viewer.ActiveTool == MapActiveTool.ZoomOut);
                 foreach (var l in _listeners)
@@ -88,7 +88,7 @@
     {
         public MgZoomNextComponent()
         {
-            this.Label = this.ToolTipText = Properties.Resources.TextZoomNext;
+            this.Label = this.ToolTipText = Strings.TextZoomNext;
             this.Icon = Properties.Resources.view_forward;
         }
 
@@ -107,7 +107,7 @@
 
         protected override void OnViewerPropertyChanged(object sender, PropertyChangedEventArgs e)
         {
-            if (e.PropertyName == "ViewHistoryIndex" || e.PropertyName == "ViewHistory")
+            if (e.PropertyName == "ViewHistoryIndex" || e.PropertyName == "ViewHistory") //NOXLATE
             {
                 Evaluate();
             }
@@ -125,7 +125,7 @@
     {
         public MgZoomPreviousComponent()
         {
-            this.Label = this.ToolTipText = Properties.Resources.TextZoomPrevious;
+            this.Label = this.ToolTipText = Strings.TextZoomPrevious;
             this.Icon = Properties.Resources.view_back;
         }
 
@@ -144,7 +144,7 @@
 
         protected override void OnViewerPropertyChanged(object sender, PropertyChangedEventArgs e)
         {
-            if (e.PropertyName == "ViewHistoryIndex" || e.PropertyName == "ViewHistory")
+            if (e.PropertyName == "ViewHistoryIndex" || e.PropertyName == "ViewHistory") //NOXLATE
             {
                 Evaluate();
             }
@@ -164,7 +164,7 @@
 
         public MgZoomToSelectionComponent()
         {
-            this.Label = this.ToolTipText = Properties.Resources.TextZoomToSelection;
+            this.Label = this.ToolTipText = Strings.TextZoomToSelection;
             this.Icon = Properties.Resources.icon_zoomselect;
             this.Disposed += new EventHandler(OnDisposed);
         }
@@ -185,7 +185,7 @@
 
             if (selLayers == null)
             {
-                MessageBox.Show(Properties.Resources.TextNoSelection);
+                MessageBox.Show(Strings.TextNoSelection);
                 return;
             }
 
@@ -251,7 +251,7 @@
     {
         public MgInitialViewComponent()
         {
-            this.Label = this.ToolTipText = Properties.Resources.TextZoomExtents;
+            this.Label = this.ToolTipText = Strings.TextZoomExtents;
             this.Icon = Properties.Resources.zoom_full;
         }
 
@@ -267,7 +267,7 @@
         protected override void OnViewerPropertyChanged(object sender, PropertyChangedEventArgs e)
         {
             base.OnViewerPropertyChanged(sender, e);
-            if (e.PropertyName == "ActiveTool")
+            if (e.PropertyName == "ActiveTool") //NOXLATE
             {
                 ViewerActiveToolChanged(this.Viewer.ActiveTool);
             }
@@ -295,7 +295,7 @@
     {
         public MgSelectComponent()
         {
-            this.Label = this.ToolTipText = Properties.Resources.TextSelect;
+            this.Label = this.ToolTipText = Strings.TextSelect;
             this.Icon = Properties.Resources.select_features;
         }
 
@@ -315,7 +315,7 @@
 
         public MgCircleSelectComponent()
         {
-            this.Label = this.ToolTipText = Properties.Resources.TextSelectRadius;
+            this.Label = this.ToolTipText = Strings.TextSelectRadius;
             this.Icon = Properties.Resources.select_radius;
             this.Disposed += new EventHandler(OnDisposed);
         }
@@ -331,7 +331,7 @@
 
         static string MakeWktCircle(double x, double y, double r)
         {
-            return "CURVEPOLYGON ((" + (x - r) + " " + y + " (CIRCULARARCSEGMENT (" + x + " " + (y - r) + ", " + (x + r) + " " + y + "), CIRCULARARCSEGMENT (" + x + " " + (y + r) + ", " + (x - r) + " " + y + "))))";
+            return "CURVEPOLYGON ((" + (x - r) + " " + y + " (CIRCULARARCSEGMENT (" + x + " " + (y - r) + ", " + (x + r) + " " + y + "), CIRCULARARCSEGMENT (" + x + " " + (y + r) + ", " + (x - r) + " " + y + "))))"; //NOXLATE
         }
 
         public override void Invoke()
@@ -355,7 +355,7 @@
 
         public MgPolygonSelectComponent()
         {
-            this.Label = this.ToolTipText = Properties.Resources.TextSelectPolygon;
+            this.Label = this.ToolTipText = Strings.TextSelectPolygon;
             this.Icon = Properties.Resources.select_polygon;
             this.Disposed += new EventHandler(OnDisposed);
         }
@@ -395,7 +395,7 @@
     {
         public MgPanComponent()
         {
-            this.Label = this.ToolTipText = Properties.Resources.TextPan;
+            this.Label = this.ToolTipText = Strings.TextPan;
             this.Icon = Properties.Resources.icon_pan;
         }
 
@@ -413,7 +413,7 @@
     {
         public MgClearSelectionComponent()
         {
-            this.Label = this.ToolTipText = Properties.Resources.TextClearSelection;
+            this.Label = this.ToolTipText = Strings.TextClearSelection;
             this.Icon = Properties.Resources.select_clear;
         }
 
@@ -428,7 +428,7 @@
     {
         public MgRefreshMapComponent()
         {
-            this.Label = this.ToolTipText = Properties.Resources.TextRefreshMap;
+            this.Label = this.ToolTipText = Strings.TextRefreshMap;
             this.Icon = Properties.Resources.view_refresh;
         }
 
@@ -443,7 +443,7 @@
     {
         public MgTooltipToggleComponent()
         {
-            this.Label = this.ToolTipText = Properties.Resources.TextEnableTooltips;
+            this.Label = this.ToolTipText = Strings.TextEnableTooltips;
             this.Icon = Properties.Resources.ui_tooltip_balloon_bottom;
         }
 
@@ -454,12 +454,12 @@
 
             if (viewer.FeatureTooltipsEnabled)
             {
-                this.Label = this.ToolTipText = Properties.Resources.TextDisableTooltips;
+                this.Label = this.ToolTipText = Strings.TextDisableTooltips;
                 this.Icon = Properties.Resources.ui_tooltip_balloon_bottom;
             }
             else
             {
-                this.Label = this.ToolTipText = Properties.Resources.TextEnableTooltips;
+                this.Label = this.ToolTipText = Strings.TextEnableTooltips;
                 this.Icon = Properties.Resources.ui_tooltip_balloon_bottom;
             }
             //Update subscribers

Modified: branches/2.4/MgDev/Desktop/MapViewer/MapViewer.csproj
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MapViewer.csproj	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MapViewer.csproj	2012-09-17 13:40:40 UTC (rev 7019)
@@ -199,6 +199,11 @@
       <DesignTime>True</DesignTime>
       <DependentUpon>Resources.resx</DependentUpon>
     </Compile>
+    <Compile Include="Strings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>Strings.resx</DependentUpon>
+    </Compile>
     <Compile Include="Tasks\MgTaskPaneStub.cs">
       <SubType>UserControl</SubType>
     </Compile>
@@ -219,6 +224,9 @@
     <EmbeddedResource Include="MgBufferControlImpl.resx">
       <DependentUpon>MgBufferControlImpl.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="MgControlImpl.resx">
+      <DependentUpon>MgControlImpl.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="MgLegend.resx">
       <DependentUpon>MgLegend.cs</DependentUpon>
     </EmbeddedResource>
@@ -250,6 +258,10 @@
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>Resources.Designer.cs</LastGenOutput>
     </EmbeddedResource>
+    <EmbeddedResource Include="Strings.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Strings.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
     <EmbeddedResource Include="Tasks\MgTaskPaneStub.resx">
       <DependentUpon>MgTaskPaneStub.cs</DependentUpon>
     </EmbeddedResource>

Modified: branches/2.4/MgDev/Desktop/MapViewer/MapViewerController.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MapViewerController.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MapViewerController.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -24,7 +24,7 @@
         public MapViewerController(IMapViewer viewer, IMapLegend legend, IMapStatusBar statBar, IPropertyPane propPane)
         {
             if (viewer == null)
-                throw new ArgumentNullException("viewer");
+                throw new ArgumentNullException("viewer"); //NOXLATE
 
             _viewer = viewer;
             _legend = legend;
@@ -85,7 +85,7 @@
                 return;
 
             if (_statBar != null)
-                _statBar.SetCursorPositionMessage(string.Format("X: {0:0.0000000}, Y: {1:0.0000000} ({2})", e.X, e.Y, _viewer.CoordinateSystem.Units));
+                _statBar.SetCursorPositionMessage(string.Format("X: {0:0.0000000}, Y: {1:0.0000000} ({2})", e.X, e.Y, _viewer.CoordinateSystem.Units)); //NOXLATE
         }
 
         void OnLegendVisibilityChanged(object sender, EventArgs e)
@@ -115,7 +115,7 @@
                 if (_propPane != null)
                     _propPane.Init(sset);
                 if (_statBar != null)
-                    _statBar.SetFeatureSelectedMessage(string.Format("{0} features selected", sset.TotalCount));
+                    _statBar.SetFeatureSelectedMessage(string.Format(Strings.StatFeaturesSelected, sset.TotalCount));
             }
         }
 
@@ -128,7 +128,7 @@
                 _legend.SetScale(scale);
 
             if (_statBar != null)
-                _statBar.SetMapScaleMessage(string.Format("1:{0:0.00000}", scale));
+                _statBar.SetMapScaleMessage(string.Format("1:{0:0.00000}", scale)); //NOXLATE
         }
 
         void OnMapRefreshed(object sender, EventArgs e)
@@ -136,11 +136,9 @@
             if (_statBar != null)
             {
                 var map = _viewer.GetMap();
-                _statBar.SetMapScaleMessage(string.Format("1:{0:0.00000}", map.ViewScale));
+                _statBar.SetMapScaleMessage(string.Format("1:{0:0.00000}", map.ViewScale)); //NOXLATE0
                 var ext = map.MapExtent;
-                _statBar.SetMapSizeMessage(string.Format("{0:0.000} x {1:0.000} ({2})", ext.Width, ext.Height, _viewer.CoordinateSystem.Units));
-                //var sel = _viewer.GetSelection();
-                //_statBar.SetFeatureSelectedMessage(string.Format("{0} features selected", GetTotalSelectionCount(sel)));
+                _statBar.SetMapSizeMessage(string.Format("{0:0.000} x {1:0.000} ({2})", ext.Width, ext.Height, _viewer.CoordinateSystem.Units)); //NOXLATE
             }
         }
     }

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgBufferComponent.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgBufferComponent.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgBufferComponent.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -14,16 +14,16 @@
         public MgBufferComponent()
         {
             this.Icon = Properties.Resources.buffer;
-            this.Label = this.ToolTipText = Properties.Resources.TitleBuffer;
-            this.DefaultLayerName = "Buffer 1";
+            this.Label = this.ToolTipText = Strings.TitleBuffer;
+            this.DefaultLayerName = "Buffer 1"; //NOXLATE
             this.DefaultBufferUnits = MeasurementUnit.Meters;
         }
 
-        [Description("The default name of the buffer layer that is created")]
+        [Description("The default name of the buffer layer that is created")] //NOXLATE
         [MgComponentProperty]
         public string DefaultLayerName { get; set; }
 
-        [Description("The default buffer unit selection")]
+        [Description("The default buffer unit selection")] //NOXLATE
         [MgComponentProperty]
         public MeasurementUnit DefaultBufferUnits { get; set; }
 

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgBufferControlImpl.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgBufferControlImpl.Designer.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgBufferControlImpl.Designer.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -28,6 +28,7 @@
         /// </summary>
         private void InitializeComponent()
         {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MgBufferControlImpl));
             this.groupBox1 = new System.Windows.Forms.GroupBox();
             this.lstLayers = new System.Windows.Forms.ListBox();
             this.label2 = new System.Windows.Forms.Label();
@@ -71,56 +72,38 @@
             // 
             // groupBox1
             // 
-            this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
+            resources.ApplyResources(this.groupBox1, "groupBox1");
             this.groupBox1.Controls.Add(this.lstLayers);
             this.groupBox1.Controls.Add(this.label2);
             this.groupBox1.Controls.Add(this.cmbUnits);
             this.groupBox1.Controls.Add(this.numBufferDistance);
             this.groupBox1.Controls.Add(this.label1);
             this.groupBox1.Controls.Add(this.lblSelectFeatures);
-            this.groupBox1.Location = new System.Drawing.Point(0, 0);
             this.groupBox1.Name = "groupBox1";
-            this.groupBox1.Size = new System.Drawing.Size(232, 220);
-            this.groupBox1.TabIndex = 0;
             this.groupBox1.TabStop = false;
-            this.groupBox1.Text = "Buffer Settings";
             // 
             // lstLayers
             // 
-            this.lstLayers.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                        | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
+            resources.ApplyResources(this.lstLayers, "lstLayers");
             this.lstLayers.FormattingEnabled = true;
-            this.lstLayers.Location = new System.Drawing.Point(9, 126);
             this.lstLayers.Name = "lstLayers";
-            this.lstLayers.Size = new System.Drawing.Size(206, 82);
-            this.lstLayers.TabIndex = 5;
             // 
             // label2
             // 
-            this.label2.AutoSize = true;
-            this.label2.Location = new System.Drawing.Point(6, 101);
+            resources.ApplyResources(this.label2, "label2");
             this.label2.Name = "label2";
-            this.label2.Size = new System.Drawing.Size(180, 13);
-            this.label2.TabIndex = 4;
-            this.label2.Text = "Includes the following layers in buffer";
             // 
             // cmbUnits
             // 
-            this.cmbUnits.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
+            resources.ApplyResources(this.cmbUnits, "cmbUnits");
             this.cmbUnits.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
             this.cmbUnits.FormattingEnabled = true;
-            this.cmbUnits.Location = new System.Drawing.Point(105, 66);
             this.cmbUnits.Name = "cmbUnits";
-            this.cmbUnits.Size = new System.Drawing.Size(110, 21);
-            this.cmbUnits.TabIndex = 3;
             // 
             // numBufferDistance
             // 
             this.numBufferDistance.DecimalPlaces = 7;
-            this.numBufferDistance.Location = new System.Drawing.Point(9, 67);
+            resources.ApplyResources(this.numBufferDistance, "numBufferDistance");
             this.numBufferDistance.Maximum = new decimal(new int[] {
             100000,
             0,
@@ -132,33 +115,22 @@
             0,
             -2147483648});
             this.numBufferDistance.Name = "numBufferDistance";
-            this.numBufferDistance.Size = new System.Drawing.Size(92, 20);
-            this.numBufferDistance.TabIndex = 2;
             // 
             // label1
             // 
-            this.label1.AutoSize = true;
-            this.label1.Location = new System.Drawing.Point(6, 50);
+            resources.ApplyResources(this.label1, "label1");
             this.label1.Name = "label1";
-            this.label1.Size = new System.Drawing.Size(126, 13);
-            this.label1.TabIndex = 1;
-            this.label1.Text = "Distance around features";
             // 
             // lblSelectFeatures
             // 
             this.lblSelectFeatures.BackColor = System.Drawing.Color.White;
             this.lblSelectFeatures.ForeColor = System.Drawing.Color.Blue;
-            this.lblSelectFeatures.Location = new System.Drawing.Point(6, 16);
+            resources.ApplyResources(this.lblSelectFeatures, "lblSelectFeatures");
             this.lblSelectFeatures.Name = "lblSelectFeatures";
-            this.lblSelectFeatures.Size = new System.Drawing.Size(209, 23);
-            this.lblSelectFeatures.TabIndex = 0;
-            this.lblSelectFeatures.Text = "Select Features on the Map first";
-            this.lblSelectFeatures.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
             // 
             // groupBox2
             // 
-            this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
+            resources.ApplyResources(this.groupBox2, "groupBox2");
             this.groupBox2.Controls.Add(this.btnFillBackColor);
             this.groupBox2.Controls.Add(this.pnlFillBackColor);
             this.groupBox2.Controls.Add(this.label10);
@@ -169,103 +141,68 @@
             this.groupBox2.Controls.Add(this.label4);
             this.groupBox2.Controls.Add(this.cmbFillPattern);
             this.groupBox2.Controls.Add(this.label3);
-            this.groupBox2.Location = new System.Drawing.Point(0, 220);
             this.groupBox2.Name = "groupBox2";
-            this.groupBox2.Size = new System.Drawing.Size(232, 144);
-            this.groupBox2.TabIndex = 1;
             this.groupBox2.TabStop = false;
-            this.groupBox2.Text = "Fill Style";
             // 
             // btnFillBackColor
             // 
-            this.btnFillBackColor.Location = new System.Drawing.Point(183, 102);
+            resources.ApplyResources(this.btnFillBackColor, "btnFillBackColor");
             this.btnFillBackColor.Name = "btnFillBackColor";
-            this.btnFillBackColor.Size = new System.Drawing.Size(32, 23);
-            this.btnFillBackColor.TabIndex = 9;
-            this.btnFillBackColor.Text = "...";
             this.btnFillBackColor.UseVisualStyleBackColor = true;
             this.btnFillBackColor.Click += new System.EventHandler(this.btnFillBackColor_Click);
             // 
             // pnlFillBackColor
             // 
-            this.pnlFillBackColor.Location = new System.Drawing.Point(95, 103);
+            resources.ApplyResources(this.pnlFillBackColor, "pnlFillBackColor");
             this.pnlFillBackColor.Name = "pnlFillBackColor";
-            this.pnlFillBackColor.Size = new System.Drawing.Size(82, 22);
-            this.pnlFillBackColor.TabIndex = 8;
             // 
             // label10
             // 
-            this.label10.AutoSize = true;
-            this.label10.Location = new System.Drawing.Point(30, 107);
+            resources.ApplyResources(this.label10, "label10");
             this.label10.Name = "label10";
-            this.label10.Size = new System.Drawing.Size(59, 13);
-            this.label10.TabIndex = 7;
-            this.label10.Text = "Back Color";
             // 
             // numFillTransparency
             // 
-            this.numFillTransparency.Location = new System.Drawing.Point(95, 77);
+            resources.ApplyResources(this.numFillTransparency, "numFillTransparency");
             this.numFillTransparency.Name = "numFillTransparency";
-            this.numFillTransparency.Size = new System.Drawing.Size(120, 20);
-            this.numFillTransparency.TabIndex = 6;
             // 
             // label5
             // 
-            this.label5.AutoSize = true;
-            this.label5.Location = new System.Drawing.Point(17, 79);
+            resources.ApplyResources(this.label5, "label5");
             this.label5.Name = "label5";
-            this.label5.Size = new System.Drawing.Size(72, 13);
-            this.label5.TabIndex = 5;
-            this.label5.Text = "Transparency";
             // 
             // btnFillColor
             // 
-            this.btnFillColor.Location = new System.Drawing.Point(183, 48);
+            resources.ApplyResources(this.btnFillColor, "btnFillColor");
             this.btnFillColor.Name = "btnFillColor";
-            this.btnFillColor.Size = new System.Drawing.Size(32, 23);
-            this.btnFillColor.TabIndex = 4;
-            this.btnFillColor.Text = "...";
             this.btnFillColor.UseVisualStyleBackColor = true;
             this.btnFillColor.Click += new System.EventHandler(this.btnFillColor_Click);
             // 
             // pnlFillColor
             // 
-            this.pnlFillColor.Location = new System.Drawing.Point(95, 49);
+            resources.ApplyResources(this.pnlFillColor, "pnlFillColor");
             this.pnlFillColor.Name = "pnlFillColor";
-            this.pnlFillColor.Size = new System.Drawing.Size(82, 22);
-            this.pnlFillColor.TabIndex = 3;
             // 
             // label4
             // 
-            this.label4.AutoSize = true;
-            this.label4.Location = new System.Drawing.Point(34, 53);
+            resources.ApplyResources(this.label4, "label4");
             this.label4.Name = "label4";
-            this.label4.Size = new System.Drawing.Size(55, 13);
-            this.label4.TabIndex = 2;
-            this.label4.Text = "Fore Color";
             // 
             // cmbFillPattern
             // 
             this.cmbFillPattern.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
             this.cmbFillPattern.FormattingEnabled = true;
-            this.cmbFillPattern.Location = new System.Drawing.Point(95, 23);
+            resources.ApplyResources(this.cmbFillPattern, "cmbFillPattern");
             this.cmbFillPattern.Name = "cmbFillPattern";
-            this.cmbFillPattern.Size = new System.Drawing.Size(120, 21);
-            this.cmbFillPattern.TabIndex = 1;
             // 
             // label3
             // 
-            this.label3.AutoSize = true;
-            this.label3.Location = new System.Drawing.Point(48, 26);
+            resources.ApplyResources(this.label3, "label3");
             this.label3.Name = "label3";
-            this.label3.Size = new System.Drawing.Size(41, 13);
-            this.label3.TabIndex = 0;
-            this.label3.Text = "Pattern";
             // 
             // groupBox3
             // 
-            this.groupBox3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
+            resources.ApplyResources(this.groupBox3, "groupBox3");
             this.groupBox3.Controls.Add(this.numLineThickness);
             this.groupBox3.Controls.Add(this.cmbBorderPattern);
             this.groupBox3.Controls.Add(this.label6);
@@ -273,130 +210,85 @@
             this.groupBox3.Controls.Add(this.btnBorderColor);
             this.groupBox3.Controls.Add(this.label7);
             this.groupBox3.Controls.Add(this.pnlBorderColor);
-            this.groupBox3.Location = new System.Drawing.Point(0, 364);
             this.groupBox3.Name = "groupBox3";
-            this.groupBox3.Size = new System.Drawing.Size(232, 100);
-            this.groupBox3.TabIndex = 2;
             this.groupBox3.TabStop = false;
-            this.groupBox3.Text = "Border Style";
             // 
             // numLineThickness
             // 
-            this.numLineThickness.Location = new System.Drawing.Point(95, 73);
+            resources.ApplyResources(this.numLineThickness, "numLineThickness");
             this.numLineThickness.Name = "numLineThickness";
-            this.numLineThickness.Size = new System.Drawing.Size(120, 20);
-            this.numLineThickness.TabIndex = 13;
             // 
             // cmbBorderPattern
             // 
             this.cmbBorderPattern.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
             this.cmbBorderPattern.FormattingEnabled = true;
-            this.cmbBorderPattern.Location = new System.Drawing.Point(95, 19);
+            resources.ApplyResources(this.cmbBorderPattern, "cmbBorderPattern");
             this.cmbBorderPattern.Name = "cmbBorderPattern";
-            this.cmbBorderPattern.Size = new System.Drawing.Size(120, 21);
-            this.cmbBorderPattern.TabIndex = 8;
             // 
             // label6
             // 
-            this.label6.AutoSize = true;
-            this.label6.Location = new System.Drawing.Point(17, 75);
+            resources.ApplyResources(this.label6, "label6");
             this.label6.Name = "label6";
-            this.label6.Size = new System.Drawing.Size(72, 13);
-            this.label6.TabIndex = 12;
-            this.label6.Text = "Transparency";
             // 
             // label8
             // 
-            this.label8.AutoSize = true;
-            this.label8.Location = new System.Drawing.Point(48, 22);
+            resources.ApplyResources(this.label8, "label8");
             this.label8.Name = "label8";
-            this.label8.Size = new System.Drawing.Size(41, 13);
-            this.label8.TabIndex = 7;
-            this.label8.Text = "Pattern";
             // 
             // btnBorderColor
             // 
-            this.btnBorderColor.Location = new System.Drawing.Point(183, 44);
+            resources.ApplyResources(this.btnBorderColor, "btnBorderColor");
             this.btnBorderColor.Name = "btnBorderColor";
-            this.btnBorderColor.Size = new System.Drawing.Size(32, 23);
-            this.btnBorderColor.TabIndex = 11;
-            this.btnBorderColor.Text = "...";
             this.btnBorderColor.UseVisualStyleBackColor = true;
             this.btnBorderColor.Click += new System.EventHandler(this.btnBorderColor_Click);
             // 
             // label7
             // 
-            this.label7.AutoSize = true;
-            this.label7.Location = new System.Drawing.Point(58, 49);
+            resources.ApplyResources(this.label7, "label7");
             this.label7.Name = "label7";
-            this.label7.Size = new System.Drawing.Size(31, 13);
-            this.label7.TabIndex = 9;
-            this.label7.Text = "Color";
             // 
             // pnlBorderColor
             // 
-            this.pnlBorderColor.Location = new System.Drawing.Point(95, 45);
+            resources.ApplyResources(this.pnlBorderColor, "pnlBorderColor");
             this.pnlBorderColor.Name = "pnlBorderColor";
-            this.pnlBorderColor.Size = new System.Drawing.Size(82, 22);
-            this.pnlBorderColor.TabIndex = 10;
             // 
             // btnCreate
             // 
-            this.btnCreate.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-            this.btnCreate.Location = new System.Drawing.Point(9, 567);
+            resources.ApplyResources(this.btnCreate, "btnCreate");
             this.btnCreate.Name = "btnCreate";
-            this.btnCreate.Size = new System.Drawing.Size(98, 23);
-            this.btnCreate.TabIndex = 3;
-            this.btnCreate.Text = "Create Buffer";
             this.btnCreate.UseVisualStyleBackColor = true;
             this.btnCreate.Click += new System.EventHandler(this.btnCreate_Click);
             // 
             // groupBox4
             // 
-            this.groupBox4.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                        | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
+            resources.ApplyResources(this.groupBox4, "groupBox4");
             this.groupBox4.Controls.Add(this.chkMergeBuffers);
             this.groupBox4.Controls.Add(this.txtBufferLayer);
             this.groupBox4.Controls.Add(this.label9);
-            this.groupBox4.Location = new System.Drawing.Point(0, 464);
             this.groupBox4.Name = "groupBox4";
-            this.groupBox4.Size = new System.Drawing.Size(232, 97);
-            this.groupBox4.TabIndex = 4;
             this.groupBox4.TabStop = false;
-            this.groupBox4.Text = "Other";
             // 
             // chkMergeBuffers
             // 
-            this.chkMergeBuffers.AutoSize = true;
+            resources.ApplyResources(this.chkMergeBuffers, "chkMergeBuffers");
             this.chkMergeBuffers.Checked = true;
             this.chkMergeBuffers.CheckState = System.Windows.Forms.CheckState.Checked;
-            this.chkMergeBuffers.Location = new System.Drawing.Point(12, 69);
             this.chkMergeBuffers.Name = "chkMergeBuffers";
-            this.chkMergeBuffers.Size = new System.Drawing.Size(117, 17);
-            this.chkMergeBuffers.TabIndex = 2;
-            this.chkMergeBuffers.Text = "Merge Buffer Areas";
             this.chkMergeBuffers.UseVisualStyleBackColor = true;
             // 
             // txtBufferLayer
             // 
-            this.txtBufferLayer.Location = new System.Drawing.Point(12, 43);
+            resources.ApplyResources(this.txtBufferLayer, "txtBufferLayer");
             this.txtBufferLayer.Name = "txtBufferLayer";
-            this.txtBufferLayer.Size = new System.Drawing.Size(203, 20);
-            this.txtBufferLayer.TabIndex = 1;
             // 
             // label9
             // 
-            this.label9.AutoSize = true;
-            this.label9.Location = new System.Drawing.Point(9, 26);
+            resources.ApplyResources(this.label9, "label9");
             this.label9.Name = "label9";
-            this.label9.Size = new System.Drawing.Size(98, 13);
-            this.label9.TabIndex = 0;
-            this.label9.Text = "Buffer Layer Name:";
             // 
             // MgBufferControlImpl
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            resources.ApplyResources(this, "$this");
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.Controls.Add(this.groupBox4);
             this.Controls.Add(this.btnCreate);
@@ -404,7 +296,6 @@
             this.Controls.Add(this.groupBox2);
             this.Controls.Add(this.groupBox1);
             this.Name = "MgBufferControlImpl";
-            this.Size = new System.Drawing.Size(232, 601);
             this.groupBox1.ResumeLayout(false);
             this.groupBox1.PerformLayout();
             ((System.ComponentModel.ISupportInitialize)(this.numBufferDistance)).EndInit();

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgBufferControlImpl.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgBufferControlImpl.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgBufferControlImpl.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -19,7 +19,7 @@
         public MgBufferControlImpl(IMapViewer viewer, string defaultLayerName, MeasurementUnit units)
         {
             InitializeComponent();
-            this.Title = Properties.Resources.TitleBuffer;
+            this.Title = Strings.TitleBuffer;
             _viewer = viewer;
             _sessionId = Guid.NewGuid().ToString();
             var provider = viewer.GetProvider();
@@ -98,13 +98,13 @@
                 var layerName = txtBufferLayer.Text.Trim();
                 if (string.IsNullOrEmpty(layerName))
                 {
-                    MessageBox.Show("Please enter a name for this layer");
+                    MessageBox.Show(Strings.MsgEnterNameForLayer);
                     return;
                 }
 
                 if (lstLayers.SelectedItems.Count == 0)
                 {
-                    MessageBox.Show("Please include one or more layers to create a buffer from");
+                    MessageBox.Show(Strings.MsgIncludeLayersToBuffer);
                     return;
                 }
 
@@ -113,8 +113,8 @@
                 var provider = _viewer.GetProvider();
 
                 //From here, it's the same logic as buffer.aspx in .net MapGuide AJAX viewer
-                MgResourceIdentifier fsId = new MgResourceIdentifier("Session:" + _sessionId + "//" + txtBufferLayer.Text + "_Buffer.FeatureSource");
-                MgResourceIdentifier ldfId = new MgResourceIdentifier("Session:" + _sessionId + "//" + txtBufferLayer.Text + "_Buffer.LayerDefinition");
+                MgResourceIdentifier fsId = new MgResourceIdentifier("Session:" + _sessionId + "//" + txtBufferLayer.Text + "_Buffer.FeatureSource"); //NOXLATE
+                MgResourceIdentifier ldfId = new MgResourceIdentifier("Session:" + _sessionId + "//" + txtBufferLayer.Text + "_Buffer.LayerDefinition"); //NOXLATE
 
                 MgLayerBase layer = Util.FindLayer(layers, txtBufferLayer.Text);
                 string[] layerNames = GetLayerNames();
@@ -141,17 +141,17 @@
                 if (arbitraryMapSrs)
                     mapSrsUnits = srsMap.GetUnits();
 
-                String xtrans = String.Format("{0:x2}", ((int)(255 * Convert.ToInt32(numFillTransparency.Value) / 100)));
+                String xtrans = String.Format("{0:x2}", ((int)(255 * Convert.ToInt32(numFillTransparency.Value) / 100))); //NOXLATE
                 var lineColor = Util.ToHtmlColor(pnlBorderColor.BackColor);
                 var foreColor = Util.ToHtmlColor(pnlFillColor.BackColor);
                 var backColor = Util.ToHtmlColor(pnlFillBackColor.BackColor);
                 String layerTempl = string.Format(Properties.Resources.AreaLayerDef,
                         fsId.ToString(),
-                        "BufferSchema:Buffer",
-                        "GEOM",
+                        "BufferSchema:Buffer", //NOXLATE
+                        "GEOM", //NOXLATE
                         cmbFillPattern.SelectedItem,
                         xtrans + foreColor,
-                        ((0 != 1/*transparent*/) ? "ff" : "00") + backColor,
+                        ((0 != 1/*transparent*/) ? "ff" : "00") + backColor, //NOXLATE
                         cmbBorderPattern.SelectedItem,
                         numLineThickness.Value.ToString(NumberFormatInfo.InvariantInfo),
                         lineColor
@@ -170,12 +170,12 @@
                     //
                     MgClassDefinition classDef = new MgClassDefinition();
 
-                    classDef.SetName("Buffer");
-                    classDef.SetDescription("Feature class for buffer layer");
-                    classDef.SetDefaultGeometryPropertyName("GEOM");
+                    classDef.SetName("Buffer"); //NOXLATE
+                    classDef.SetDescription("Feature class for buffer layer"); //NOXLATE
+                    classDef.SetDefaultGeometryPropertyName("GEOM"); //NOXLATE
 
                     //Set KEY property
-                    MgDataPropertyDefinition prop = new MgDataPropertyDefinition("KEY");
+                    MgDataPropertyDefinition prop = new MgDataPropertyDefinition("KEY"); //NOXLATE
                     prop.SetDataType(MgPropertyType.Int32);
                     prop.SetAutoGeneration(true);
                     prop.SetReadOnly(true);
@@ -183,22 +183,22 @@
                     classDef.GetProperties().Add(prop);
 
                     //Set ID property. Hold this segment ID
-                    prop = new MgDataPropertyDefinition("ID");
+                    prop = new MgDataPropertyDefinition("ID"); //NOXLATE
                     prop.SetDataType(MgPropertyType.Int32);
                     classDef.GetProperties().Add(prop);
 
                     //Set geometry property
-                    MgGeometricPropertyDefinition geomProp = new MgGeometricPropertyDefinition("GEOM");
+                    MgGeometricPropertyDefinition geomProp = new MgGeometricPropertyDefinition("GEOM"); //NOXLATE
                     //prop.SetGeometryTypes(MgFeatureGeometricType.mfgtSurface); //TODO use the constant when exposed
                     geomProp.SetGeometryTypes(4);
                     classDef.GetProperties().Add(geomProp);
 
                     //Create the schema
-                    MgFeatureSchema schema = new MgFeatureSchema("BufferSchema", "Temporary buffer schema");
+                    MgFeatureSchema schema = new MgFeatureSchema("BufferSchema", "Temporary buffer schema"); //NOXLATE
                     schema.GetClasses().Add(classDef);
 
                     //finally, creation of the feature source
-                    MgCreateSdfParams sdfParams = new MgCreateSdfParams("LatLong", map.GetMapSRS(), schema);
+                    MgCreateSdfParams sdfParams = new MgCreateSdfParams("LatLong", map.GetMapSRS(), schema); //NOXLATE
                     _featSvc.CreateFeatureSource(fsId, sdfParams);
 
                     //Add layer to map
@@ -213,7 +213,7 @@
                 {
                     //data source already exist. clear its content
                     //
-                    Util.ClearDataSource(_featSvc, fsId, "BufferSchema:Buffer");
+                    Util.ClearDataSource(_featSvc, fsId, "BufferSchema:Buffer"); //NOXLATE
                 }
 
                 var sel = _viewer.GetSelection();
@@ -255,7 +255,7 @@
                     //
                     MgResourceIdentifier featSourceId = new MgResourceIdentifier(selLayer.GetFeatureSourceId());
                     MgSpatialContextReader ctxs = _featSvc.GetSpatialContexts(featSourceId, false);
-                    String srsDefDs = "";
+                    String srsDefDs = string.Empty;
                     if (ctxs != null && ctxs.ReadNext())
                         srsDefDs = ctxs.GetCoordinateSystemWkt();
 
@@ -268,7 +268,7 @@
                     var srsFactory = new MgCoordinateSystemFactory();
                     srsDs = srsFactory.Create(srsDefDs);
                     bool arbitraryDsSrs = (srsDs.GetType() == MgCoordinateSystemType.Arbitrary);
-                    String dsSrsUnits = "";
+                    String dsSrsUnits = string.Empty;
 
                     if (arbitraryDsSrs)
                         dsSrsUnits = srsDs.GetUnits();
@@ -371,7 +371,7 @@
 
                 if (propCollection.GetCount() > 0)
                 {
-                    commands.Add(new MgInsertFeatures("BufferSchema:Buffer", propCollection));
+                    commands.Add(new MgInsertFeatures("BufferSchema:Buffer", propCollection)); //NOXLATE
 
                     //Insert the features in the temporary data source
                     //
@@ -384,7 +384,10 @@
                 _viewer.RefreshMap();
 
                 //build report message
-                MessageBox.Show("Buffer layer (" + txtBufferLayer.Text + ") " + (newBuffer ? "created" : "updated"));
+                if (newBuffer)
+                    MessageBox.Show(string.Format(Strings.MsgBufferLayerCreated, txtBufferLayer.Text));
+                else
+                    MessageBox.Show(string.Format(Strings.MsgBufferLayerUpdated, txtBufferLayer.Text));
             }
             finally
             {

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgBufferControlImpl.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgBufferControlImpl.resx	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgBufferControlImpl.resx	2012-09-17 13:40:40 UTC (rev 7019)
@@ -117,7 +117,799 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="groupBox1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="lstLayers.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Bottom, Left, Right</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="lstLayers.Location" type="System.Drawing.Point, System.Drawing">
+    <value>9, 126</value>
+  </data>
+  <data name="lstLayers.Size" type="System.Drawing.Size, System.Drawing">
+    <value>206, 82</value>
+  </data>
+  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="lstLayers.TabIndex" type="System.Int32, mscorlib">
+    <value>5</value>
+  </data>
+  <data name=">>lstLayers.Name" xml:space="preserve">
+    <value>lstLayers</value>
+  </data>
+  <data name=">>lstLayers.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ListBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>lstLayers.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>lstLayers.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="label2.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>6, 101</value>
+  </data>
+  <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>180, 13</value>
+  </data>
+  <data name="label2.TabIndex" type="System.Int32, mscorlib">
+    <value>4</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Includes the following layers in buffer</value>
+  </data>
+  <data name=">>label2.Name" xml:space="preserve">
+    <value>label2</value>
+  </data>
+  <data name=">>label2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label2.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>label2.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="cmbUnits.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="cmbUnits.Location" type="System.Drawing.Point, System.Drawing">
+    <value>105, 66</value>
+  </data>
+  <data name="cmbUnits.Size" type="System.Drawing.Size, System.Drawing">
+    <value>110, 21</value>
+  </data>
+  <data name="cmbUnits.TabIndex" type="System.Int32, mscorlib">
+    <value>3</value>
+  </data>
+  <data name=">>cmbUnits.Name" xml:space="preserve">
+    <value>cmbUnits</value>
+  </data>
+  <data name=">>cmbUnits.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>cmbUnits.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>cmbUnits.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="numBufferDistance.Location" type="System.Drawing.Point, System.Drawing">
+    <value>9, 67</value>
+  </data>
+  <data name="numBufferDistance.Size" type="System.Drawing.Size, System.Drawing">
+    <value>92, 20</value>
+  </data>
+  <data name="numBufferDistance.TabIndex" type="System.Int32, mscorlib">
+    <value>2</value>
+  </data>
+  <data name=">>numBufferDistance.Name" xml:space="preserve">
+    <value>numBufferDistance</value>
+  </data>
+  <data name=">>numBufferDistance.Type" xml:space="preserve">
+    <value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>numBufferDistance.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>numBufferDistance.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="label1.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>6, 50</value>
+  </data>
+  <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>126, 13</value>
+  </data>
+  <data name="label1.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Distance around features</value>
+  </data>
+  <data name=">>label1.Name" xml:space="preserve">
+    <value>label1</value>
+  </data>
+  <data name=">>label1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label1.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>label1.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
+  <data name="lblSelectFeatures.Location" type="System.Drawing.Point, System.Drawing">
+    <value>6, 16</value>
+  </data>
+  <data name="lblSelectFeatures.Size" type="System.Drawing.Size, System.Drawing">
+    <value>209, 23</value>
+  </data>
+  <data name="lblSelectFeatures.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="lblSelectFeatures.Text" xml:space="preserve">
+    <value>Select Features on the Map first</value>
+  </data>
+  <data name="lblSelectFeatures.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
+    <value>MiddleLeft</value>
+  </data>
+  <data name=">>lblSelectFeatures.Name" xml:space="preserve">
+    <value>lblSelectFeatures</value>
+  </data>
+  <data name=">>lblSelectFeatures.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>lblSelectFeatures.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>lblSelectFeatures.ZOrder" xml:space="preserve">
+    <value>5</value>
+  </data>
+  <data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 0</value>
+  </data>
+  <data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>232, 220</value>
+  </data>
+  <data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="groupBox1.Text" xml:space="preserve">
+    <value>Buffer Settings</value>
+  </data>
+  <data name=">>groupBox1.Name" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>groupBox1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>groupBox1.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>groupBox1.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
+  <data name="groupBox2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="btnFillBackColor.Location" type="System.Drawing.Point, System.Drawing">
+    <value>183, 102</value>
+  </data>
+  <data name="btnFillBackColor.Size" type="System.Drawing.Size, System.Drawing">
+    <value>32, 23</value>
+  </data>
+  <data name="btnFillBackColor.TabIndex" type="System.Int32, mscorlib">
+    <value>9</value>
+  </data>
+  <data name="btnFillBackColor.Text" xml:space="preserve">
+    <value>...</value>
+  </data>
+  <data name=">>btnFillBackColor.Name" xml:space="preserve">
+    <value>btnFillBackColor</value>
+  </data>
+  <data name=">>btnFillBackColor.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnFillBackColor.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>btnFillBackColor.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="pnlFillBackColor.Location" type="System.Drawing.Point, System.Drawing">
+    <value>95, 103</value>
+  </data>
+  <data name="pnlFillBackColor.Size" type="System.Drawing.Size, System.Drawing">
+    <value>82, 22</value>
+  </data>
+  <data name="pnlFillBackColor.TabIndex" type="System.Int32, mscorlib">
+    <value>8</value>
+  </data>
+  <data name=">>pnlFillBackColor.Name" xml:space="preserve">
+    <value>pnlFillBackColor</value>
+  </data>
+  <data name=">>pnlFillBackColor.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>pnlFillBackColor.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>pnlFillBackColor.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="label10.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label10.Location" type="System.Drawing.Point, System.Drawing">
+    <value>30, 107</value>
+  </data>
+  <data name="label10.Size" type="System.Drawing.Size, System.Drawing">
+    <value>59, 13</value>
+  </data>
+  <data name="label10.TabIndex" type="System.Int32, mscorlib">
+    <value>7</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>Back Color</value>
+  </data>
+  <data name=">>label10.Name" xml:space="preserve">
+    <value>label10</value>
+  </data>
+  <data name=">>label10.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label10.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>label10.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="numFillTransparency.Location" type="System.Drawing.Point, System.Drawing">
+    <value>95, 77</value>
+  </data>
+  <data name="numFillTransparency.Size" type="System.Drawing.Size, System.Drawing">
+    <value>120, 20</value>
+  </data>
+  <data name="numFillTransparency.TabIndex" type="System.Int32, mscorlib">
+    <value>6</value>
+  </data>
+  <data name=">>numFillTransparency.Name" xml:space="preserve">
+    <value>numFillTransparency</value>
+  </data>
+  <data name=">>numFillTransparency.Type" xml:space="preserve">
+    <value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>numFillTransparency.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>numFillTransparency.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="label5.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label5.Location" type="System.Drawing.Point, System.Drawing">
+    <value>17, 79</value>
+  </data>
+  <data name="label5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>72, 13</value>
+  </data>
+  <data name="label5.TabIndex" type="System.Int32, mscorlib">
+    <value>5</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Transparency</value>
+  </data>
+  <data name=">>label5.Name" xml:space="preserve">
+    <value>label5</value>
+  </data>
+  <data name=">>label5.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label5.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>label5.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
+  <data name="btnFillColor.Location" type="System.Drawing.Point, System.Drawing">
+    <value>183, 48</value>
+  </data>
+  <data name="btnFillColor.Size" type="System.Drawing.Size, System.Drawing">
+    <value>32, 23</value>
+  </data>
+  <data name="btnFillColor.TabIndex" type="System.Int32, mscorlib">
+    <value>4</value>
+  </data>
+  <data name="btnFillColor.Text" xml:space="preserve">
+    <value>...</value>
+  </data>
+  <data name=">>btnFillColor.Name" xml:space="preserve">
+    <value>btnFillColor</value>
+  </data>
+  <data name=">>btnFillColor.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnFillColor.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>btnFillColor.ZOrder" xml:space="preserve">
+    <value>5</value>
+  </data>
+  <data name="pnlFillColor.Location" type="System.Drawing.Point, System.Drawing">
+    <value>95, 49</value>
+  </data>
+  <data name="pnlFillColor.Size" type="System.Drawing.Size, System.Drawing">
+    <value>82, 22</value>
+  </data>
+  <data name="pnlFillColor.TabIndex" type="System.Int32, mscorlib">
+    <value>3</value>
+  </data>
+  <data name=">>pnlFillColor.Name" xml:space="preserve">
+    <value>pnlFillColor</value>
+  </data>
+  <data name=">>pnlFillColor.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>pnlFillColor.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>pnlFillColor.ZOrder" xml:space="preserve">
+    <value>6</value>
+  </data>
+  <data name="label4.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label4.Location" type="System.Drawing.Point, System.Drawing">
+    <value>34, 53</value>
+  </data>
+  <data name="label4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>55, 13</value>
+  </data>
+  <data name="label4.TabIndex" type="System.Int32, mscorlib">
+    <value>2</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Fore Color</value>
+  </data>
+  <data name=">>label4.Name" xml:space="preserve">
+    <value>label4</value>
+  </data>
+  <data name=">>label4.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label4.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>label4.ZOrder" xml:space="preserve">
+    <value>7</value>
+  </data>
+  <data name="cmbFillPattern.Location" type="System.Drawing.Point, System.Drawing">
+    <value>95, 23</value>
+  </data>
+  <data name="cmbFillPattern.Size" type="System.Drawing.Size, System.Drawing">
+    <value>120, 21</value>
+  </data>
+  <data name="cmbFillPattern.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name=">>cmbFillPattern.Name" xml:space="preserve">
+    <value>cmbFillPattern</value>
+  </data>
+  <data name=">>cmbFillPattern.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>cmbFillPattern.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>cmbFillPattern.ZOrder" xml:space="preserve">
+    <value>8</value>
+  </data>
+  <data name="label3.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label3.Location" type="System.Drawing.Point, System.Drawing">
+    <value>48, 26</value>
+  </data>
+  <data name="label3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>41, 13</value>
+  </data>
+  <data name="label3.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Pattern</value>
+  </data>
+  <data name=">>label3.Name" xml:space="preserve">
+    <value>label3</value>
+  </data>
+  <data name=">>label3.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label3.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>label3.ZOrder" xml:space="preserve">
+    <value>9</value>
+  </data>
+  <data name="groupBox2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 220</value>
+  </data>
+  <data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>232, 144</value>
+  </data>
+  <data name="groupBox2.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name="groupBox2.Text" xml:space="preserve">
+    <value>Fill Style</value>
+  </data>
+  <data name=">>groupBox2.Name" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>groupBox2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>groupBox2.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>groupBox2.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="groupBox3.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="numLineThickness.Location" type="System.Drawing.Point, System.Drawing">
+    <value>95, 73</value>
+  </data>
+  <data name="numLineThickness.Size" type="System.Drawing.Size, System.Drawing">
+    <value>120, 20</value>
+  </data>
+  <data name="numLineThickness.TabIndex" type="System.Int32, mscorlib">
+    <value>13</value>
+  </data>
+  <data name=">>numLineThickness.Name" xml:space="preserve">
+    <value>numLineThickness</value>
+  </data>
+  <data name=">>numLineThickness.Type" xml:space="preserve">
+    <value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>numLineThickness.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>numLineThickness.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="cmbBorderPattern.Location" type="System.Drawing.Point, System.Drawing">
+    <value>95, 19</value>
+  </data>
+  <data name="cmbBorderPattern.Size" type="System.Drawing.Size, System.Drawing">
+    <value>120, 21</value>
+  </data>
+  <data name="cmbBorderPattern.TabIndex" type="System.Int32, mscorlib">
+    <value>8</value>
+  </data>
+  <data name=">>cmbBorderPattern.Name" xml:space="preserve">
+    <value>cmbBorderPattern</value>
+  </data>
+  <data name=">>cmbBorderPattern.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>cmbBorderPattern.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>cmbBorderPattern.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="label6.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label6.Location" type="System.Drawing.Point, System.Drawing">
+    <value>17, 75</value>
+  </data>
+  <data name="label6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>72, 13</value>
+  </data>
+  <data name="label6.TabIndex" type="System.Int32, mscorlib">
+    <value>12</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Transparency</value>
+  </data>
+  <data name=">>label6.Name" xml:space="preserve">
+    <value>label6</value>
+  </data>
+  <data name=">>label6.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label6.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>label6.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="label8.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label8.Location" type="System.Drawing.Point, System.Drawing">
+    <value>48, 22</value>
+  </data>
+  <data name="label8.Size" type="System.Drawing.Size, System.Drawing">
+    <value>41, 13</value>
+  </data>
+  <data name="label8.TabIndex" type="System.Int32, mscorlib">
+    <value>7</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>Pattern</value>
+  </data>
+  <data name=">>label8.Name" xml:space="preserve">
+    <value>label8</value>
+  </data>
+  <data name=">>label8.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label8.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>label8.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="btnBorderColor.Location" type="System.Drawing.Point, System.Drawing">
+    <value>183, 44</value>
+  </data>
+  <data name="btnBorderColor.Size" type="System.Drawing.Size, System.Drawing">
+    <value>32, 23</value>
+  </data>
+  <data name="btnBorderColor.TabIndex" type="System.Int32, mscorlib">
+    <value>11</value>
+  </data>
+  <data name="btnBorderColor.Text" xml:space="preserve">
+    <value>...</value>
+  </data>
+  <data name=">>btnBorderColor.Name" xml:space="preserve">
+    <value>btnBorderColor</value>
+  </data>
+  <data name=">>btnBorderColor.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnBorderColor.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>btnBorderColor.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
+  <data name="label7.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label7.Location" type="System.Drawing.Point, System.Drawing">
+    <value>58, 49</value>
+  </data>
+  <data name="label7.Size" type="System.Drawing.Size, System.Drawing">
+    <value>31, 13</value>
+  </data>
+  <data name="label7.TabIndex" type="System.Int32, mscorlib">
+    <value>9</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>Color</value>
+  </data>
+  <data name=">>label7.Name" xml:space="preserve">
+    <value>label7</value>
+  </data>
+  <data name=">>label7.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label7.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>label7.ZOrder" xml:space="preserve">
+    <value>5</value>
+  </data>
+  <data name="pnlBorderColor.Location" type="System.Drawing.Point, System.Drawing">
+    <value>95, 45</value>
+  </data>
+  <data name="pnlBorderColor.Size" type="System.Drawing.Size, System.Drawing">
+    <value>82, 22</value>
+  </data>
+  <data name="pnlBorderColor.TabIndex" type="System.Int32, mscorlib">
+    <value>10</value>
+  </data>
+  <data name=">>pnlBorderColor.Name" xml:space="preserve">
+    <value>pnlBorderColor</value>
+  </data>
+  <data name=">>pnlBorderColor.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>pnlBorderColor.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>pnlBorderColor.ZOrder" xml:space="preserve">
+    <value>6</value>
+  </data>
+  <data name="groupBox3.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 364</value>
+  </data>
+  <data name="groupBox3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>232, 100</value>
+  </data>
+  <data name="groupBox3.TabIndex" type="System.Int32, mscorlib">
+    <value>2</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Border Style</value>
+  </data>
+  <data name=">>groupBox3.Name" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>groupBox3.Type" xml:space="preserve">
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>groupBox3.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>groupBox3.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="btnCreate.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Bottom, Left</value>
+  </data>
+  <data name="btnCreate.Location" type="System.Drawing.Point, System.Drawing">
+    <value>9, 567</value>
+  </data>
+  <data name="btnCreate.Size" type="System.Drawing.Size, System.Drawing">
+    <value>98, 23</value>
+  </data>
+  <data name="btnCreate.TabIndex" type="System.Int32, mscorlib">
+    <value>3</value>
+  </data>
+  <data name="btnCreate.Text" xml:space="preserve">
+    <value>Create Buffer</value>
+  </data>
+  <data name=">>btnCreate.Name" xml:space="preserve">
+    <value>btnCreate</value>
+  </data>
+  <data name=">>btnCreate.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnCreate.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>btnCreate.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="groupBox4.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Bottom, Left, Right</value>
+  </data>
+  <data name="chkMergeBuffers.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="chkMergeBuffers.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 69</value>
+  </data>
+  <data name="chkMergeBuffers.Size" type="System.Drawing.Size, System.Drawing">
+    <value>117, 17</value>
+  </data>
+  <data name="chkMergeBuffers.TabIndex" type="System.Int32, mscorlib">
+    <value>2</value>
+  </data>
+  <data name="chkMergeBuffers.Text" xml:space="preserve">
+    <value>Merge Buffer Areas</value>
+  </data>
+  <data name=">>chkMergeBuffers.Name" xml:space="preserve">
+    <value>chkMergeBuffers</value>
+  </data>
+  <data name=">>chkMergeBuffers.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>chkMergeBuffers.Parent" xml:space="preserve">
+    <value>groupBox4</value>
+  </data>
+  <data name=">>chkMergeBuffers.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="txtBufferLayer.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 43</value>
+  </data>
+  <data name="txtBufferLayer.Size" type="System.Drawing.Size, System.Drawing">
+    <value>203, 20</value>
+  </data>
+  <data name="txtBufferLayer.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name=">>txtBufferLayer.Name" xml:space="preserve">
+    <value>txtBufferLayer</value>
+  </data>
+  <data name=">>txtBufferLayer.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>txtBufferLayer.Parent" xml:space="preserve">
+    <value>groupBox4</value>
+  </data>
+  <data name=">>txtBufferLayer.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="label9.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label9.Location" type="System.Drawing.Point, System.Drawing">
+    <value>9, 26</value>
+  </data>
+  <data name="label9.Size" type="System.Drawing.Size, System.Drawing">
+    <value>98, 13</value>
+  </data>
+  <data name="label9.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>Buffer Layer Name:</value>
+  </data>
+  <data name=">>label9.Name" xml:space="preserve">
+    <value>label9</value>
+  </data>
+  <data name=">>label9.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label9.Parent" xml:space="preserve">
+    <value>groupBox4</value>
+  </data>
+  <data name=">>label9.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="groupBox4.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 464</value>
+  </data>
+  <data name="groupBox4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>232, 97</value>
+  </data>
+  <data name="groupBox4.TabIndex" type="System.Int32, mscorlib">
+    <value>4</value>
+  </data>
+  <data name="groupBox4.Text" xml:space="preserve">
+    <value>Other</value>
+  </data>
+  <data name=">>groupBox4.Name" xml:space="preserve">
+    <value>groupBox4</value>
+  </data>
+  <data name=">>groupBox4.Type" xml:space="preserve">
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>groupBox4.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>groupBox4.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
   <metadata name="colorPicker.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+    <value>6, 13</value>
+  </data>
+  <data name="$this.Size" type="System.Drawing.Size, System.Drawing">
+    <value>232, 601</value>
+  </data>
+  <data name=">>colorPicker.Name" xml:space="preserve">
+    <value>colorPicker</value>
+  </data>
+  <data name=">>colorPicker.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ColorDialog, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>$this.Name" xml:space="preserve">
+    <value>MgBufferControlImpl</value>
+  </data>
+  <data name=">>$this.Type" xml:space="preserve">
+    <value>OSGeo.MapGuide.Viewer.MgControlView, OSGeo.MapGuide.Viewer, Version=2.4.0.6971, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f</value>
+  </data>
 </root>
\ No newline at end of file

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgComponent.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgComponent.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgComponent.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -40,8 +40,8 @@
         /// Gets whether to disable invocation entry points (eg. buttons, menus, etc) to this component when the
         /// viewer is digitizing
         /// </summary>
-        [Category("MapGuide Component Properties")]
-        [Description("Disables this component while the digitizing is happening")]
+        [Category("MapGuide Component Properties")] //NOXLATE
+        [Description("Disables this component while the digitizing is happening")] //NOXLATE
         [MgComponentProperty]
         public virtual bool DisableWhenDigitizing { get { return true; } }
 
@@ -49,40 +49,40 @@
         /// Gets whether to disable invocation entry points (eg. buttons, menus, etc) to this component when the
         /// viewer is busy
         /// </summary>
-        [Category("MapGuide Component Properties")]
-        [Description("Disables this component while the map is loading")]
+        [Category("MapGuide Component Properties")] //NOXLATE
+        [Description("Disables this component while the map is loading")] //NOXLATE
         [MgComponentProperty]
         public virtual bool DisableWhenMapIsLoading { get { return true; } }
 
         /// <summary>
         /// Gets or sets the description of this component
         /// </summary>
-        [Category("MapGuide Component Properties")]
-        [Description("The description of this component")]
+        [Category("MapGuide Component Properties")] //NOXLATE
+        [Description("The description of this component")] //NOXLATE
         [MgComponentProperty]
         public string Label { get; set; }
 
         /// <summary>
         /// Gets or sets the tooltip text of this component
         /// </summary>
-        [Category("MapGuide Component Properties")]
-        [Description("The tooltip text of this component")]
+        [Category("MapGuide Component Properties")] //NOXLATE
+        [Description("The tooltip text of this component")] //NOXLATE
         [MgComponentProperty]
         public string ToolTipText { get; set; }
 
         /// <summary>
         /// The icon for this component
         /// </summary>
-        [Category("MapGuide Component Properties")]
-        [Description("The icon for this component")]
+        [Category("MapGuide Component Properties")] //NOXLATE
+        [Description("The icon for this component")] //NOXLATE
         [MgComponentProperty]
         public Image Icon { get; set; }
 
         /// <summary>
         /// Gets or sets the view instance to subscribe events to
         /// </summary>
-        [Category("MapGuide Component Properties")]
-        [Description("The viewer instance to subscribe events to")]
+        [Category("MapGuide Component Properties")] //NOXLATE
+        [Description("The viewer instance to subscribe events to")] //NOXLATE
         [MgComponentProperty]
         public IMapViewer Viewer
         {
@@ -135,17 +135,17 @@
 
         protected virtual void OnViewerPropertyChanged(object sender, PropertyChangedEventArgs e)
         {
-            if (e.PropertyName == "IsBusy")
+            if (e.PropertyName == "IsBusy") //NOXLATE
             {
                 var busy = this.Viewer.IsBusy;
-                //Trace.TraceInformation("Dispatching busy state event to " + _listeners.Count + " listeners");
+                //Trace.TraceInformation("Dispatching busy state event to " + _listeners.Count + " listeners"); //NOXLATE
                 if (this.DisableWhenMapIsLoading)
                 {
                     foreach (var l in _listeners)
                         l.SetEnabled(!busy);
                 }
             }
-            else if (e.PropertyName == "DigitizingType")
+            else if (e.PropertyName == "DigitizingType") //NOXLATE
             {
                 var bDigitizing = (this.Viewer.DigitizingType != MapDigitizationType.None);
                 if (this.DisableWhenDigitizing)
@@ -222,7 +222,7 @@
         {
             CheckAndInitProperties();
             if (!_properties.ContainsKey(propertyName))
-                throw new InvalidOperationException("Property " + propertyName + " is not a valid component property as it has not been marked with the MgComponentProperty attribute");
+                throw new InvalidOperationException(string.Format(Strings.ErrorInvalidComponentProperty, propertyName));
 
             _properties[propertyName].SetValue(this, value, null);
         }
@@ -231,7 +231,7 @@
         {
             CheckAndInitProperties();
             if (!_properties.ContainsKey(propertyName))
-                throw new InvalidOperationException("Property " + propertyName + " is not a valid component property as it has not been marked with the MgComponentProperty attribute");
+                throw new InvalidOperationException(string.Format(Strings.ErrorInvalidComponentProperty, propertyName));
 
             return _properties[propertyName].GetValue(propertyName, null);
         }
@@ -277,8 +277,8 @@
         /// <summary>
         /// 
         /// </summary>
-        [Category("MapGuide Component Properties")]
-        [Description("The task pane which will host the UI view")]
+        [Category("MapGuide Component Properties")] //NOXLATE
+        [Description("The task pane which will host the UI view")] //NOXLATE
         [MgComponentProperty]
         public MgTaskPane TaskPane
         {
@@ -291,9 +291,9 @@
         /// <summary>
         /// Gets or sets the target that this component should display its UI view in
         /// </summary>
-        [Category("MapGuide Component Properties")]
+        [Category("MapGuide Component Properties")] //NOXLATE
         [DefaultValue(MgViewerTarget.NewWindow)]
-        [Description("Target that this component should display its UI view in")]
+        [Description("Target that this component should display its UI view in")] //NOXLATE
         [MgComponentProperty]
         public MgViewerTarget Target
         {
@@ -302,7 +302,7 @@
             {
                 //Must have a task pane assigned, but we suppress this check during initialization
                 if (!_init && (value == MgViewerTarget.TaskPane && this.TaskPane == null))
-                    throw new ArgumentException("Target: No task pane assigned");
+                    throw new ArgumentException(Strings.ErrorTargetNoTaskPaneAssigned);
                 _target = value;
             }
         }
@@ -310,8 +310,8 @@
         /// <summary>
         /// Gets or sets the owner form that any new windows displayed by this component will belong to.
         /// </summary>
-        [Category("MapGuide Component Properties")]
-        [Description("The parent form which will be the owner for any new windows displayed by this component")]
+        [Category("MapGuide Component Properties")] //NOXLATE
+        [Description("The parent form which will be the owner for any new windows displayed by this component")] //NOXLATE
         public Form OwnerParent
         {
             get;
@@ -408,7 +408,7 @@
             _init = false;
             //Now it's safe to check that task pane must be assigned if target is task pane
             if (this.TaskPane == null && this.Target == MgViewerTarget.TaskPane)
-                throw new InvalidOperationException("EndInit: No task pane assigned");
+                throw new InvalidOperationException(Strings.ErrorEndInitNoTaskPaneAssigned);
         }
     }
 }

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgControlImpl.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgControlImpl.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgControlImpl.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -46,6 +46,17 @@
             if (this.Closer != null)
                 this.Closer.Close();
         }
+
+        private void InitializeComponent()
+        {
+            this.SuspendLayout();
+            // 
+            // MgControlView
+            // 
+            this.Name = "MgControlView";
+            this.ResumeLayout(false);
+
+        }
     }
 
     public interface IContentCloser

Added: branches/2.4/MgDev/Desktop/MapViewer/MgControlImpl.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgControlImpl.resx	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgControlImpl.resx	2012-09-17 13:40:40 UTC (rev 7019)
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <data name=">>$this.Name" xml:space="preserve">
+    <value>MgControlView</value>
+  </data>
+  <data name=">>$this.Type" xml:space="preserve">
+    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+</root>
\ No newline at end of file

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgDefaultToolbar.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgDefaultToolbar.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgDefaultToolbar.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -20,65 +20,65 @@
             : base()
         {
             this.GripStyle = ToolStripGripStyle.Visible;
-            this.ZoomIn = new ToolStripButton("", Properties.Resources.zoom_in_fixed, OnZoomIn)
+            this.ZoomIn = new ToolStripButton(string.Empty, Properties.Resources.zoom_in_fixed, OnZoomIn)
             {
-                ToolTipText = Properties.Resources.TextZoomIn,
+                ToolTipText = Strings.TextZoomIn,
                 DisplayStyle = ToolStripItemDisplayStyle.Image
             };
-            this.ZoomOut = new ToolStripButton("", Properties.Resources.zoom_out_fixed, OnZoomOut)
+            this.ZoomOut = new ToolStripButton(string.Empty, Properties.Resources.zoom_out_fixed, OnZoomOut)
             {
-                ToolTipText = Properties.Resources.TextZoomOut,
+                ToolTipText = Strings.TextZoomOut,
                 DisplayStyle = ToolStripItemDisplayStyle.Image
             };
-            this.ZoomExtents = new ToolStripButton("", Properties.Resources.zoom_full, OnZoomExtents)
+            this.ZoomExtents = new ToolStripButton(string.Empty, Properties.Resources.zoom_full, OnZoomExtents)
             {
-                ToolTipText = Properties.Resources.TextZoomExtents,
+                ToolTipText = Strings.TextZoomExtents,
                 DisplayStyle = ToolStripItemDisplayStyle.Image
             };
-            this.SelectTool = new ToolStripButton("", Properties.Resources.select_features, OnSelect)
+            this.SelectTool = new ToolStripButton(string.Empty, Properties.Resources.select_features, OnSelect)
             {
-                ToolTipText = Properties.Resources.TextSelect,
+                ToolTipText = Strings.TextSelect,
                 DisplayStyle = ToolStripItemDisplayStyle.Image
             };
-            this.Pan = new ToolStripButton("", Properties.Resources.icon_pan, OnPan)
+            this.Pan = new ToolStripButton(string.Empty, Properties.Resources.icon_pan, OnPan)
             {
-                ToolTipText = Properties.Resources.TextPan,
+                ToolTipText = Strings.TextPan,
                 DisplayStyle = ToolStripItemDisplayStyle.Image
             };
-            this.ClearSelection = new ToolStripButton("", Properties.Resources.select_clear, OnClearSelection)
+            this.ClearSelection = new ToolStripButton(string.Empty, Properties.Resources.select_clear, OnClearSelection)
             {
-                ToolTipText = Properties.Resources.TextClearSelection,
+                ToolTipText = Strings.TextClearSelection,
                 DisplayStyle = ToolStripItemDisplayStyle.Image
             };
-            this.RefreshMap = new ToolStripButton("", Properties.Resources.view_refresh, OnRefreshMap)
+            this.RefreshMap = new ToolStripButton(string.Empty, Properties.Resources.view_refresh, OnRefreshMap)
             {
-                ToolTipText = Properties.Resources.TextRefreshMap,
+                ToolTipText = Strings.TextRefreshMap,
                 DisplayStyle = ToolStripItemDisplayStyle.Image
             };
-            this.ToggleTooltips = new ToolStripButton(Properties.Resources.TextDisableTooltips, Properties.Resources.ui_tooltip_balloon_bottom, OnToggleTooltips)
+            this.ToggleTooltips = new ToolStripButton(Strings.TextDisableTooltips, Properties.Resources.ui_tooltip_balloon_bottom, OnToggleTooltips)
             {
-                ToolTipText = Properties.Resources.TextDisableTooltips,
+                ToolTipText = Strings.TextDisableTooltips,
                 DisplayStyle = ToolStripItemDisplayStyle.ImageAndText
             };
-            this.Loading = new ToolStripButton("", Properties.Resources.icon_loading)
+            this.Loading = new ToolStripButton(string.Empty, Properties.Resources.icon_loading)
             {
                 Alignment = ToolStripItemAlignment.Right,
                 ImageScaling = ToolStripItemImageScaling.None,
                 Visible = false
             };
-            this.SelectPolygon = new ToolStripButton("", Properties.Resources.select_polygon, OnSelectPolygon)
+            this.SelectPolygon = new ToolStripButton(string.Empty, Properties.Resources.select_polygon, OnSelectPolygon)
             {
-                ToolTipText = Properties.Resources.TextSelectPolygon,
+                ToolTipText = Strings.TextSelectPolygon,
                 DisplayStyle = ToolStripItemDisplayStyle.Image
             };
-            this.SelectRadius = new ToolStripButton("", Properties.Resources.select_radius, OnSelectRadius)
+            this.SelectRadius = new ToolStripButton(string.Empty, Properties.Resources.select_radius, OnSelectRadius)
             {
-                ToolTipText = Properties.Resources.TextSelectRadius,
+                ToolTipText = Strings.TextSelectRadius,
                 DisplayStyle = ToolStripItemDisplayStyle.Image
             };
-            this.CopyMap = new ToolStripButton("", Properties.Resources.edit_copy, OnCopyMap)
+            this.CopyMap = new ToolStripButton(string.Empty, Properties.Resources.edit_copy, OnCopyMap)
             {
-                ToolTipText = Properties.Resources.TextCopyMap,
+                ToolTipText = Strings.TextCopyMap,
                 DisplayStyle = ToolStripItemDisplayStyle.Image
             };
 
@@ -111,8 +111,8 @@
         /// <value>
         /// The zoom out mode.
         /// </value>
-        [Category("MapGuide Viewer")]
-        [Description("The behaviour of the zoom out command")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("The behaviour of the zoom out command")] //NOXLATE
         [DefaultValue(ZoomOutMode.ClickToZoom)]
         public ZoomOutMode ZoomOutMode
         {
@@ -143,8 +143,8 @@
         /// <summary>
         /// Gets or sets the viewer this toolbar is associated with
         /// </summary>
-        [Category("MapGuide Viewer")]
-        [Description("The map viewer component this toolbar will control")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("The map viewer component this toolbar will control")] //NOXLATE
         public IMapViewer Viewer
         {
             get { return _viewer; }
@@ -321,13 +321,13 @@
 
             if (_viewer.FeatureTooltipsEnabled)
             {
-                this.ToggleTooltips.Text = Properties.Resources.TextDisableTooltips;
-                this.ToggleTooltips.ToolTipText = Properties.Resources.TooltipDisableTooltips;
+                this.ToggleTooltips.Text = Strings.TextDisableTooltips;
+                this.ToggleTooltips.ToolTipText = Strings.TooltipDisableTooltips;
             }
             else
             {
-                this.ToggleTooltips.Text = Properties.Resources.TextEnableTooltips;
-                this.ToggleTooltips.ToolTipText = Properties.Resources.TooltipEnableTooltips;
+                this.ToggleTooltips.Text = Strings.TextEnableTooltips;
+                this.ToggleTooltips.ToolTipText = Strings.TooltipEnableTooltips;
             }
         }
 
@@ -342,7 +342,7 @@
 
         private void OnViewerPropertyChanged(object sender, PropertyChangedEventArgs e)
         {
-            if (e.PropertyName == "IsBusy")
+            if (e.PropertyName == "IsBusy") //NOXLATE
             {
                 var busy = _viewer.IsBusy;
                 this.ZoomExtents.Enabled = this.ZoomIn.Enabled
@@ -357,7 +357,7 @@
                                          = this.RefreshMap.Enabled = !busy;
                 this.Loading.Visible = busy;
             }
-            else if (e.PropertyName == "ActiveTool" || e.PropertyName == "DigitizingType")
+            else if (e.PropertyName == "ActiveTool" || e.PropertyName == "DigitizingType") //NOXLATE
             {
                 UpdateButtonCheckedState();
             }
@@ -365,12 +365,12 @@
 
         static string MakeWktPolygon(double x1, double y1, double x2, double y2)
         {
-            return "POLYGON((" + x1 + " " + y1 + ", " + x2 + " " + y1 + ", " + x2 + " " + y2 + ", " + x1 + " " + y2 + ", " + x1 + " " + y1 + "))";
+            return "POLYGON((" + x1 + " " + y1 + ", " + x2 + " " + y1 + ", " + x2 + " " + y2 + ", " + x1 + " " + y2 + ", " + x1 + " " + y1 + "))"; //NOXLATE
         }
 
         static string MakeWktCircle(double x, double y, double r)
         {
-            return "CURVEPOLYGON ((" + (x - r) + " " + y + " (CIRCULARARCSEGMENT (" + x + " " + (y - r) + ", " + (x + r) + " " + y + "), CIRCULARARCSEGMENT (" + x + " " + (y + r) + ", " + (x - r) + " " + y + "))))";
+            return "CURVEPOLYGON ((" + (x - r) + " " + y + " (CIRCULARARCSEGMENT (" + x + " " + (y - r) + ", " + (x + r) + " " + y + "), CIRCULARARCSEGMENT (" + x + " " + (y + r) + ", " + (x - r) + " " + y + "))))"; //NOXLATE
         }
     }
 

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgGenericInvokeComponent.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgGenericInvokeComponent.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgGenericInvokeComponent.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -13,8 +13,8 @@
             this.Icon = Properties.Resources.invoke_script;
         }
 
-        [Category("MapGuide Viewer")]
-        [Description("Indicates whether this component can be invoked without a loaded map")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("Indicates whether this component can be invoked without a loaded map")] //NOXLATE
         [MgComponentProperty]
         public bool CanInvokeWithoutLoadedMap
         {
@@ -30,8 +30,8 @@
             }
         }
 
-        [Category("MapGuide Viewer")]
-        [Description("Raised when this component has been invoked")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("Raised when this component has been invoked")] //NOXLATE
         public event EventHandler Invoked;
 
         public override void Invoke()

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgInvokeComponent.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgInvokeComponent.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgInvokeComponent.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -28,9 +28,9 @@
 
         protected ComponentInvokerBase() { _bindings = new Dictionary<T, MgComponent>(); }
 
-        [Category("MapGuide Viewer")]
-        [DisplayName("Target Component")]
-        [Description("The target MapGuide component to invoke when this item is clicked")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [DisplayName("Target Component")] //NOXLATE
+        [Description("The target MapGuide component to invoke when this item is clicked")] //NOXLATE
         [DefaultValue(null)]
         public MgComponent GetTargetComponent(T component)
         {
@@ -173,7 +173,7 @@
     }
 
     [ToolboxItem(true)]
-    [ProvideProperty("TargetComponent", typeof(ToolStripMenuItem))]
+    [ProvideProperty("TargetComponent", typeof(ToolStripMenuItem))] //NOXLATE
     public class MgMenuItemComponentInvoker : ComponentInvokerBase<ToolStripMenuItem>, IExtenderProvider
     {
         public bool CanExtend(object extendee)
@@ -202,7 +202,7 @@
     }
 
     [ToolboxItem(true)]
-    [ProvideProperty("TargetComponent", typeof(ToolStripButton))]
+    [ProvideProperty("TargetComponent", typeof(ToolStripButton))] //NOXLATE
     public class MgToolButtonComponentInvoker : ComponentInvokerBase<ToolStripButton>, IExtenderProvider
     {
         public bool CanExtend(object extendee)

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgLayerSelectionHandler.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgLayerSelectionHandler.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgLayerSelectionHandler.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -7,18 +7,18 @@
 {
     public delegate void MgLayerSelectionEventHandler(MgSelectionSet selectedFeatures);
 
-    [DefaultEvent("SelectionMade")]
+    [DefaultEvent("SelectionMade")] //NOXLATE
     [ToolboxItem(true)]
     public class MgLayerSelectionHandler : Component
     {
-        [Category("MapGuide Viewer")]
-        [Description("The map layers that this component will listen for selections")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("The map layers that this component will listen for selections")] //NOXLATE
         public string[] Layers { get; set; }
 
         private IMapViewer _viewer;
 
-        [Category("MapGuide Viewer")]
-        [Description("The map viewer instance")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("The map viewer instance")] //NOXLATE
         public IMapViewer Viewer
         {
             get { return _viewer; }
@@ -62,8 +62,8 @@
             }
         }
 
-        [Category("MapGuide Viewer")]
-        [Description("Raised when a selection on any of the specified layers has been made")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("Raised when a selection on any of the specified layers has been made")] //NOXLATE
         public event MgLayerSelectionEventHandler SelectionMade;
     }
 }

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgLegend.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgLegend.Designer.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgLegend.Designer.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -29,6 +29,7 @@
         private void InitializeComponent()
         {
             this.components = new System.ComponentModel.Container();
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MgLegend));
             this.trvLegend = new System.Windows.Forms.TreeView();
             this.imgLegend = new System.Windows.Forms.ImageList(this.components);
             this.bgLegendUpdate = new System.ComponentModel.BackgroundWorker();
@@ -37,17 +38,12 @@
             // trvLegend
             // 
             this.trvLegend.CheckBoxes = true;
-            this.trvLegend.Dock = System.Windows.Forms.DockStyle.Fill;
+            resources.ApplyResources(this.trvLegend, "trvLegend");
             this.trvLegend.DrawMode = System.Windows.Forms.TreeViewDrawMode.OwnerDrawAll;
-            this.trvLegend.ImageIndex = 0;
             this.trvLegend.ImageList = this.imgLegend;
-            this.trvLegend.Location = new System.Drawing.Point(0, 0);
             this.trvLegend.Name = "trvLegend";
-            this.trvLegend.SelectedImageIndex = 0;
             this.trvLegend.ShowLines = false;
             this.trvLegend.ShowNodeToolTips = true;
-            this.trvLegend.Size = new System.Drawing.Size(150, 150);
-            this.trvLegend.TabIndex = 0;
             this.trvLegend.AfterCheck += new System.Windows.Forms.TreeViewEventHandler(this.trvLegend_AfterCheck);
             this.trvLegend.AfterCollapse += new System.Windows.Forms.TreeViewEventHandler(this.trvLegend_AfterCollapse);
             this.trvLegend.DrawNode += new System.Windows.Forms.DrawTreeNodeEventHandler(this.trvLegend_DrawNode);
@@ -57,7 +53,7 @@
             // imgLegend
             // 
             this.imgLegend.ColorDepth = System.Windows.Forms.ColorDepth.Depth8Bit;
-            this.imgLegend.ImageSize = new System.Drawing.Size(16, 16);
+            resources.ApplyResources(this.imgLegend, "imgLegend");
             this.imgLegend.TransparentColor = System.Drawing.Color.Transparent;
             // 
             // bgLegendUpdate
@@ -67,7 +63,7 @@
             // 
             // MgLegend
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            resources.ApplyResources(this, "$this");
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.Controls.Add(this.trvLegend);
             this.Name = "MgLegend";

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgLegend.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgLegend.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgLegend.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -22,21 +22,18 @@
     {
         // TODO:
         // 
-        // 1. This should build the full client-side tree (w/ applicable scales) ala. legend.aspx in the AJAX viewer
-        // 2. This should be done in a background worker to avoid clogging up the UI thread.
-        // 3. Instead of refreshing the legend on save, just flip visibility of the client-side tree
-        // 4. Load layer icons on demand.
-        // 5. Do not refresh if toggling a layer whose parent group is not visible
-        // 6. Do not refresh if toggling a group whose parent group is not visible
+        // 1. Instead of refreshing the legend on save, just flip visibility of the client-side tree
+        // 2. Do not refresh if toggling a layer whose parent group is not visible
+        // 3. Do not refresh if toggling a group whose parent group is not visible
 
-        const string IMG_BROKEN = "lc_broken";
-        const string IMG_DWF = "lc_dwf";
-        const string IMG_GROUP = "lc_group";
-        const string IMG_RASTER = "lc_raster";
-        const string IMG_SELECT = "lc_select";
-        const string IMG_THEME = "lc_theme";
-        const string IMG_UNSELECT = "lc_unselect";
-        const string IMG_OTHER = "icon_etc";
+        const string IMG_BROKEN = "lc_broken"; //NOXLATE
+        const string IMG_DWF = "lc_dwf"; //NOXLATE
+        const string IMG_GROUP = "lc_group"; //NOXLATE
+        const string IMG_RASTER = "lc_raster"; //NOXLATE
+        const string IMG_SELECT = "lc_select"; //NOXLATE
+        const string IMG_THEME = "lc_theme"; //NOXLATE
+        const string IMG_UNSELECT = "lc_unselect"; //NOXLATE
+        const string IMG_OTHER = "icon_etc"; //NOXLATE
 
         // The thing that does all the heavy lifting and dirty work
         private MgLegendControlPresenter _presenter;
@@ -75,6 +72,7 @@
             trvLegend.BeginUpdate();
             _legendUpdateStopwatch.Start();
             this.IsBusy = true;
+            _currentCulture = System.Threading.Thread.CurrentThread.CurrentUICulture;
             bgLegendUpdate.RunWorkerAsync();
             /*
             //Synchronous version
@@ -100,13 +98,18 @@
                     return;
 
                 _busy = value;
-                Trace.TraceInformation("Legend IsBusy: {0}", this.IsBusy);
-                OnPropertyChanged("IsBusy");
+                Trace.TraceInformation("Legend IsBusy: {0}", this.IsBusy); //NOXLATE
+                OnPropertyChanged("IsBusy"); //NOXLATE
             }
         }
 
+        private System.Globalization.CultureInfo _currentCulture;
+
         private void bgLegendUpdate_DoWork(object sender, DoWorkEventArgs e)
         {
+            //This being on a different thread, needs to have its culture information synced up
+            System.Threading.Thread.CurrentThread.CurrentUICulture =
+                System.Threading.Thread.CurrentThread.CurrentCulture = _currentCulture;
             e.Result = _presenter.CreateNodes();
         }
 
@@ -138,7 +141,7 @@
             }
             trvLegend.EndUpdate();
             _legendUpdateStopwatch.Stop();
-            Trace.TraceInformation("RefreshLegend: Completed in {0}ms", _legendUpdateStopwatch.ElapsedMilliseconds);
+            Trace.TraceInformation("RefreshLegend: Completed in {0}ms", _legendUpdateStopwatch.ElapsedMilliseconds); //NOXLATE
             _legendUpdateStopwatch.Reset();
         }
 
@@ -273,8 +276,8 @@
         /// <summary>
         /// Gets or sets the context menu that is attached to group nodes
         /// </summary>
-        [Category("MapGuide Viewer")]
-        [Description("The context menu to attach to group nodes")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("The context menu to attach to group nodes")] //NOXLATE
         public ContextMenuStrip GroupContextMenu
         {
             get { return _grpContextMenu; }
@@ -299,8 +302,8 @@
         /// <summary>
         /// Gets or sets the context menu that is attached to layer nodes
         /// </summary>
-        [Category("MapGuide Viewer")]
-        [Description("The context menu to attach to layer nodes")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("The context menu to attach to layer nodes")] //NOXLATE
         public ContextMenuStrip LayerContextMenu
         {
             get { return _layerContextMenu; }
@@ -325,8 +328,8 @@
         /// <value>
         /// The theme compression limit.
         /// </value>
-        [Category("MapGuide Viewer")]
-        [Description("The number of rules a layer style must exceed in order to be displayed as a compressed theme")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("The number of rules a layer style must exceed in order to be displayed as a compressed theme")] //NOXLATE
         public int ThemeCompressionLimit
         {
             get { return _themeCompressionLimit; }
@@ -336,7 +339,7 @@
                     return;
 
                 _themeCompressionLimit = value;
-                OnPropertyChanged("ThemeCompressionLimit");
+                OnPropertyChanged("ThemeCompressionLimit"); //NOXLATE
             }
         }
         
@@ -417,7 +420,7 @@
                     return;
 
                 trvLegend.ShowNodeToolTips = value;
-                OnPropertyChanged("ShowTooltips");
+                OnPropertyChanged("ShowTooltips"); //NOXLATE
             }
         }
 

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgLegend.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgLegend.resx	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgLegend.resx	2012-09-17 13:40:40 UTC (rev 7019)
@@ -117,10 +117,70 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="trvLegend.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Fill</value>
+  </data>
+  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="trvLegend.ImageIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
   <metadata name="imgLegend.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="imgLegend.ImageSize" type="System.Drawing.Size, System.Drawing">
+    <value>16, 16</value>
+  </data>
+  <data name="trvLegend.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 0</value>
+  </data>
+  <data name="trvLegend.SelectedImageIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="trvLegend.Size" type="System.Drawing.Size, System.Drawing">
+    <value>150, 150</value>
+  </data>
+  <data name="trvLegend.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name=">>trvLegend.Name" xml:space="preserve">
+    <value>trvLegend</value>
+  </data>
+  <data name=">>trvLegend.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TreeView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>trvLegend.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>trvLegend.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
   <metadata name="bgLegendUpdate.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>130, 17</value>
   </metadata>
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+    <value>6, 13</value>
+  </data>
+  <data name=">>imgLegend.Name" xml:space="preserve">
+    <value>imgLegend</value>
+  </data>
+  <data name=">>imgLegend.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ImageList, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>bgLegendUpdate.Name" xml:space="preserve">
+    <value>bgLegendUpdate</value>
+  </data>
+  <data name=">>bgLegendUpdate.Type" xml:space="preserve">
+    <value>System.ComponentModel.BackgroundWorker, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>$this.Name" xml:space="preserve">
+    <value>MgLegend</value>
+  </data>
+  <data name=">>$this.Type" xml:space="preserve">
+    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
 </root>
\ No newline at end of file

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgLegendControlPresenter.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgLegendControlPresenter.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgLegendControlPresenter.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -14,8 +14,6 @@
 
     interface ILegendView
     {
-        //ContextMenuStrip LayerContextMenu { get; }
-        //ContextMenuStrip GroupContextMenu { get; }
         void AddLegendIcon(string id, Image icon);
         int ThemeCompressionLimit { get; }
         void OnRequestRefresh();
@@ -23,14 +21,14 @@
 
     class MgLegendControlPresenter
     {
-        const string IMG_BROKEN = "lc_broken";
-        const string IMG_DWF = "lc_dwf";
-        const string IMG_GROUP = "lc_group";
-        const string IMG_RASTER = "lc_raster";
-        const string IMG_SELECT = "lc_select";
-        const string IMG_THEME = "lc_theme";
-        const string IMG_UNSELECT = "lc_unselect";
-        const string IMG_OTHER = "icon_etc";
+        const string IMG_BROKEN = "lc_broken"; //NOXLATE
+        const string IMG_DWF = "lc_dwf"; //NOXLATE
+        const string IMG_GROUP = "lc_group"; //NOXLATE
+        const string IMG_RASTER = "lc_raster"; //NOXLATE
+        const string IMG_SELECT = "lc_select"; //NOXLATE
+        const string IMG_THEME = "lc_theme"; //NOXLATE
+        const string IMG_UNSELECT = "lc_unselect"; //NOXLATE
+        const string IMG_OTHER = "icon_etc"; //NOXLATE
 
         private MgResourceService _resSvc;
         private MgMapViewerProvider _provider;
@@ -97,7 +95,7 @@
             var fsId = layer.GetFeatureSourceId();
 
             LayerNodeMetadata layerMeta = null;
-            if (fsId.EndsWith("DrawingSource"))
+            if (fsId.EndsWith("DrawingSource")) //NOXLATE
             {
                 node.SelectedImageKey = node.ImageKey = IMG_DWF;
                 bool bInitiallySelectable = layer.Selectable;
@@ -112,7 +110,7 @@
                     _layers[layer.GetObjectId()] = layerMeta;
                 }
                 node.Tag = layerMeta;
-                node.ToolTipText = string.Format(Properties.Resources.DrawingLayerTooltip, Environment.NewLine, layer.Name, layer.FeatureSourceId);
+                node.ToolTipText = string.Format(Strings.DrawingLayerTooltip, Environment.NewLine, layer.Name, layer.FeatureSourceId);
             }
             else
             {
@@ -134,13 +132,13 @@
                 XmlDocument doc = new XmlDocument();
                 doc.LoadXml(layerMeta.LayerDefinitionContent);
                 int type = 0;
-                XmlNodeList scaleRanges = doc.GetElementsByTagName("VectorScaleRange");
+                XmlNodeList scaleRanges = doc.GetElementsByTagName("VectorScaleRange"); //NOXLATE
                 if (scaleRanges.Count == 0)
                 {
-                    scaleRanges = doc.GetElementsByTagName("GridScaleRange");
+                    scaleRanges = doc.GetElementsByTagName("GridScaleRange"); //NOXLATE
                     if (scaleRanges.Count == 0)
                     {
-                        scaleRanges = doc.GetElementsByTagName("DrawingLayerDefinition");
+                        scaleRanges = doc.GetElementsByTagName("DrawingLayerDefinition"); //NOXLATE
                         if (scaleRanges.Count == 0)
                             return null;
                         type = 2;
@@ -149,20 +147,20 @@
                         type = 1;
                 }
 
-                String[] typeStyles = new String[] { "PointTypeStyle", "LineTypeStyle", "AreaTypeStyle", "CompositeTypeStyle" };
-                String[] ruleNames = new String[] { "PointRule", "LineRule", "AreaRule", "CompositeRule" };
+                String[] typeStyles = new String[] { "PointTypeStyle", "LineTypeStyle", "AreaTypeStyle", "CompositeTypeStyle" }; //NOXLATE
+                String[] ruleNames = new String[] { "PointRule", "LineRule", "AreaRule", "CompositeRule" }; //NOXLATE
 
-                node.ToolTipText = string.Format(Properties.Resources.DefaultLayerTooltip, Environment.NewLine, layer.Name, layer.FeatureSourceId, layer.FeatureClassName);
+                node.ToolTipText = string.Format(Strings.DefaultLayerTooltip, Environment.NewLine, layer.Name, layer.FeatureSourceId, layer.FeatureClassName);
                 if (!layerMeta.HasTheme() || !layerMeta.HasDefaultIcons())
                 {
                     for (int sc = 0; sc < scaleRanges.Count; sc++)
                     {
                         XmlElement scaleRange = (XmlElement)scaleRanges[sc];
-                        XmlNodeList minElt = scaleRange.GetElementsByTagName("MinScale");
-                        XmlNodeList maxElt = scaleRange.GetElementsByTagName("MaxScale");
+                        XmlNodeList minElt = scaleRange.GetElementsByTagName("MinScale"); //NOXLATE
+                        XmlNodeList maxElt = scaleRange.GetElementsByTagName("MaxScale"); //NOXLATE
                         String minScale, maxScale;
-                        minScale = "0";
-                        maxScale = "1000000000000.0";   // as MDF's VectorScaleRange::MAX_MAP_SCALE
+                        minScale = "0"; //NOXLATE
+                        maxScale = "1000000000000.0";  //NOXLATE  // as MDF's VectorScaleRange::MAX_MAP_SCALE
                         if (minElt.Count > 0)
                             minScale = minElt[0].ChildNodes[0].Value;
                         if (maxElt.Count > 0)
@@ -185,7 +183,7 @@
                             for (int st = 0; st < typeStyle.Count; st++)
                             {
                                 // We will check if this typestyle is going to be shown in the legend
-                                XmlNodeList showInLegend = ((XmlElement)typeStyle[st]).GetElementsByTagName("ShowInLegend");
+                                XmlNodeList showInLegend = ((XmlElement)typeStyle[st]).GetElementsByTagName("ShowInLegend"); //NOXLATE
                                 if (showInLegend.Count > 0)
                                     if (!bool.Parse(showInLegend[0].ChildNodes[0].Value))
                                         continue;   // This typestyle does not need to be shown in the legend
@@ -194,7 +192,7 @@
                                 if (rules.Count > 1)
                                 {
                                     layerMeta.SetDefaultIcon(themeCat, Properties.Resources.lc_theme);
-                                    node.ToolTipText = string.Format(Properties.Resources.ThemedLayerTooltip, Environment.NewLine, layer.Name, layer.FeatureSourceId, layer.FeatureClassName, rules.Count);
+                                    node.ToolTipText = string.Format(Strings.ThemedLayerTooltip, Environment.NewLine, layer.Name, layer.FeatureSourceId, layer.FeatureClassName, rules.Count);
 
                                     if (_legend.ThemeCompressionLimit > 0 && rules.Count > _legend.ThemeCompressionLimit)
                                     {
@@ -218,7 +216,7 @@
                                                                                                    _map.ViewScale,
                                                                                                    16,
                                                                                                    16,
-                                                                                                   "PNG",
+                                                                                                   "PNG", //NOXLATE
                                                                                                    -1,
                                                                                                    -1);
                                         legendCallCount++;
@@ -231,7 +229,7 @@
                                                 using (var ms = new MemoryStream(b))
                                                 {
                                                     layerMeta.SetDefaultIcon(themeCat, Image.FromStream(ms));
-                                                    node.ToolTipText = string.Format(Properties.Resources.DefaultLayerTooltip, Environment.NewLine, layer.Name, layer.FeatureSourceId, layer.FeatureClassName);
+                                                    node.ToolTipText = string.Format(Strings.DefaultLayerTooltip, Environment.NewLine, layer.Name, layer.FeatureSourceId, layer.FeatureClassName);
                                                 }
                                             }
                                             finally
@@ -255,7 +253,7 @@
                 }
                 else //Already cached
                 {
-                    Trace.TraceInformation("Icons already cached for: " + layer.Name);
+                    Trace.TraceInformation("Icons already cached for: " + layer.Name); //NOXLATE
                     node.Nodes.AddRange(layerMeta.CreateThemeNodesFromCachedMetadata(_map.ViewScale));
                 }
             }
@@ -266,10 +264,10 @@
         private void AddThemeRuleNode(LayerNodeMetadata layerMeta, ThemeCategory themeCat, TreeNode node, int geomType, int catIndex, XmlNodeList rules, int r)
         {
             XmlElement rule = (XmlElement)rules[r];
-            XmlNodeList label = rule.GetElementsByTagName("LegendLabel");
-            XmlNodeList filter = rule.GetElementsByTagName("Filter");
+            XmlNodeList label = rule.GetElementsByTagName("LegendLabel"); //NOXLATE
+            XmlNodeList filter = rule.GetElementsByTagName("Filter"); //NOXLATE
 
-            String labelText = "";
+            String labelText = string.Empty;
             if (label != null && label.Count > 0 && label[0].ChildNodes.Count > 0)
                 labelText = label[0].ChildNodes[0].Value;
             //String filterText = "";
@@ -283,7 +281,7 @@
         private TreeNode CreateCompressedThemeNode(LayerNodeMetadata layer, ThemeCategory cat, int count)
         {
             TreeNode node = new TreeNode();
-            node.Text = (count + " other styles");
+            node.Text = string.Format(Strings.CountOtherStyles, count);
             node.ImageKey = node.SelectedImageKey = IMG_OTHER;
             var meta = new LayerThemeNodeMetadata(true, Properties.Resources.icon_etc, node.Text);
             node.Tag = meta;
@@ -298,7 +296,7 @@
                                                               viewScale,
                                                               16,
                                                               16,
-                                                              "PNG",
+                                                              "PNG", //NOXLATE
                                                               geomType,
                                                               categoryIndex);
             legendCallCount++;
@@ -459,7 +457,7 @@
                     }
                     meta.LayerDefinitionContent = layerContents.GetItem(i);
                 }
-                Trace.TraceInformation("CreateNodes: {0} layer contents added, {1} layer contents updated", added, updated);
+                Trace.TraceInformation("CreateNodes: {0} layer contents added, {1} layer contents updated", added, updated); //NOXLATE
             }
 
             List<MgLayerBase> remainingLayers = new List<MgLayerBase>();
@@ -534,7 +532,7 @@
                     }
                 }
             }
-            Trace.TraceInformation("{0} calls made to GenerateLegendImage", legendCallCount);
+            Trace.TraceInformation("{0} calls made to GenerateLegendImage", legendCallCount); //NOXLATE
             return output.ToArray();
         }
 
@@ -769,7 +767,7 @@
             public abstract string ObjectId { get; }
         }
 
-        [DebuggerDisplay("Name = {Layer.Name}, Label = {Layer.LegendLabel}")]
+        [DebuggerDisplay("Name = {Layer.Name}, Label = {Layer.LegendLabel}")] //NOXLATE
         class GroupNodeMetadata : LegendNodeMetadata
         {
             internal MgLayerGroup Group { get; private set; }
@@ -786,7 +784,7 @@
             }
         }
 
-        [DebuggerDisplay("Layer Theme Node")]
+        [DebuggerDisplay("Layer Theme Node")] //NOXLATE
         class LayerThemeNodeMetadata : LegendNodeMetadata
         {
             public LayerThemeNodeMetadata(bool bPlaceholder, Image themeIcon, string labelText)
@@ -843,7 +841,7 @@
             }
         }
 
-        [DebuggerDisplay("Name = {Layer.Name}, Label = {Layer.LegendLabel}")]
+        [DebuggerDisplay("Name = {Layer.Name}, Label = {Layer.LegendLabel}")] //NOXLATE
         class LayerNodeMetadata : LegendNodeMetadata
         {
             public LayerNodeMetadata(MgLayerBase layer, bool bInitiallySelectable)
@@ -873,12 +871,12 @@
                         return _isRaster.Value;
 
                     if (!string.IsNullOrEmpty(this.LayerDefinitionContent))
-                        _isRaster = this.LayerDefinitionContent.Contains("<GridLayerDefinition");
+                        _isRaster = this.LayerDefinitionContent.Contains("<GridLayerDefinition"); //NOXLATE
 
                     if (_isRaster.HasValue)
                         return _isRaster.Value;
 
-                    throw new Exception("Layer metadata not fully initialized"); //Shouldn't get to here
+                    throw new Exception(Strings.ErrorLayerMetadataNotFullyInitialized); //Shouldn't get to here
                 }
             }
 
@@ -892,12 +890,12 @@
                         return _isRaster.Value;
 
                     if (!string.IsNullOrEmpty(this.LayerDefinitionContent))
-                        _isDwf = this.LayerDefinitionContent.Contains("<DrawingLayerDefinition");
+                        _isDwf = this.LayerDefinitionContent.Contains("<DrawingLayerDefinition"); //NOXLATE
 
                     if (_isDwf.HasValue)
                         return _isRaster.Value;
 
-                    throw new Exception("Layer metadata not fully initialized"); //Shouldn't get to here
+                    throw new Exception(Strings.ErrorLayerMetadataNotFullyInitialized); //Shouldn't get to here
                 }
             }
 

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgLineMeasureControlImpl.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgLineMeasureControlImpl.Designer.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgLineMeasureControlImpl.Designer.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -28,6 +28,7 @@
         /// </summary>
         private void InitializeComponent()
         {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MgLineMeasureControlImpl));
             this.label1 = new System.Windows.Forms.Label();
             this.lstSegments = new System.Windows.Forms.ListBox();
             this.label2 = new System.Windows.Forms.Label();
@@ -41,90 +42,55 @@
             // 
             // label1
             // 
-            this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-            this.label1.AutoSize = true;
-            this.label1.Location = new System.Drawing.Point(15, 297);
+            resources.ApplyResources(this.label1, "label1");
             this.label1.Name = "label1";
-            this.label1.Size = new System.Drawing.Size(157, 13);
-            this.label1.TabIndex = 0;
-            this.label1.Text = "Click \"Start\" to begin measuring";
             // 
             // lstSegments
             // 
-            this.lstSegments.Dock = System.Windows.Forms.DockStyle.Fill;
+            resources.ApplyResources(this.lstSegments, "lstSegments");
             this.lstSegments.FormattingEnabled = true;
-            this.lstSegments.Location = new System.Drawing.Point(3, 16);
             this.lstSegments.Name = "lstSegments";
-            this.lstSegments.Size = new System.Drawing.Size(206, 192);
-            this.lstSegments.TabIndex = 1;
             // 
             // label2
             // 
-            this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-            this.label2.AutoSize = true;
-            this.label2.Location = new System.Drawing.Point(15, 270);
+            resources.ApplyResources(this.label2, "label2");
             this.label2.Name = "label2";
-            this.label2.Size = new System.Drawing.Size(79, 13);
-            this.label2.TabIndex = 2;
-            this.label2.Text = "Total Distance:";
             // 
             // lblUnits
             // 
-            this.lblUnits.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-            this.lblUnits.AutoSize = true;
-            this.lblUnits.Location = new System.Drawing.Point(100, 270);
+            resources.ApplyResources(this.lblUnits, "lblUnits");
             this.lblUnits.Name = "lblUnits";
-            this.lblUnits.Size = new System.Drawing.Size(0, 13);
-            this.lblUnits.TabIndex = 3;
             // 
             // label3
             // 
-            this.label3.AutoSize = true;
-            this.label3.Location = new System.Drawing.Point(15, 17);
+            resources.ApplyResources(this.label3, "label3");
             this.label3.Name = "label3";
-            this.label3.Size = new System.Drawing.Size(34, 13);
-            this.label3.TabIndex = 4;
-            this.label3.Text = "Units:";
             // 
             // cmbUnits
             // 
-            this.cmbUnits.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
+            resources.ApplyResources(this.cmbUnits, "cmbUnits");
             this.cmbUnits.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
             this.cmbUnits.FormattingEnabled = true;
-            this.cmbUnits.Location = new System.Drawing.Point(97, 14);
             this.cmbUnits.Name = "cmbUnits";
-            this.cmbUnits.Size = new System.Drawing.Size(127, 21);
-            this.cmbUnits.TabIndex = 5;
             this.cmbUnits.SelectedIndexChanged += new System.EventHandler(this.cmbUnits_SelectedIndexChanged);
             // 
             // btnStart
             // 
-            this.btnStart.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-            this.btnStart.Location = new System.Drawing.Point(18, 325);
+            resources.ApplyResources(this.btnStart, "btnStart");
             this.btnStart.Name = "btnStart";
-            this.btnStart.Size = new System.Drawing.Size(82, 23);
-            this.btnStart.TabIndex = 6;
-            this.btnStart.Text = "Start";
             this.btnStart.UseVisualStyleBackColor = true;
             this.btnStart.Click += new System.EventHandler(this.btnStart_Click);
             // 
             // groupBox1
             // 
-            this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
-            | System.Windows.Forms.AnchorStyles.Left) 
-            | System.Windows.Forms.AnchorStyles.Right)));
+            resources.ApplyResources(this.groupBox1, "groupBox1");
             this.groupBox1.Controls.Add(this.lstSegments);
-            this.groupBox1.Location = new System.Drawing.Point(15, 41);
             this.groupBox1.Name = "groupBox1";
-            this.groupBox1.Size = new System.Drawing.Size(212, 211);
-            this.groupBox1.TabIndex = 7;
             this.groupBox1.TabStop = false;
-            this.groupBox1.Text = "Segments";
             // 
-            // MgLineMeasureControl
+            // MgLineMeasureControlImpl
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            resources.ApplyResources(this, "$this");
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.Controls.Add(this.groupBox1);
             this.Controls.Add(this.btnStart);
@@ -133,8 +99,7 @@
             this.Controls.Add(this.lblUnits);
             this.Controls.Add(this.label2);
             this.Controls.Add(this.label1);
-            this.Name = "MgLineMeasureControl";
-            this.Size = new System.Drawing.Size(247, 360);
+            this.Name = "MgLineMeasureControlImpl";
             this.groupBox1.ResumeLayout(false);
             this.ResumeLayout(false);
             this.PerformLayout();

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgLineMeasureControlImpl.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgLineMeasureControlImpl.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgLineMeasureControlImpl.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -17,7 +17,7 @@
         public MgLineMeasureControlImpl(IMapViewer viewer, MeasurementUnit preferredUnit)
         {
             InitializeComponent();
-            this.Title = Properties.Resources.TitleMeasure;
+            this.Title = Strings.TitleMeasure;
             _viewer = viewer;
             _segments = new BindingList<MeasuredLineSegment>();
             cmbUnits.DataSource = Enum.GetValues(typeof(MeasurementUnit));
@@ -96,8 +96,8 @@
                     var h = this.PropertyChanged;
                     if (h != null) 
                     {
-                        h(this, new PropertyChangedEventArgs("Units"));
-                        h(this, new PropertyChangedEventArgs("DisplayUnits"));
+                        h(this, new PropertyChangedEventArgs("Units")); //NOXLATE
+                        h(this, new PropertyChangedEventArgs("DisplayUnits")); //NOXLATE
                     }
                 }
             }

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgLineMeasureControlImpl.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgLineMeasureControlImpl.resx	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgLineMeasureControlImpl.resx	2012-09-17 13:40:40 UTC (rev 7019)
@@ -112,9 +112,243 @@
     <value>2.0</value>
   </resheader>
   <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
   <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="label1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Bottom, Left</value>
+  </data>
+  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="label1.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="label1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>15, 297</value>
+  </data>
+  <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>157, 13</value>
+  </data>
+  <data name="label1.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Click "Start" to begin measuring</value>
+  </data>
+  <data name=">>label1.Name" xml:space="preserve">
+    <value>label1</value>
+  </data>
+  <data name=">>label1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label1.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>label1.ZOrder" xml:space="preserve">
+    <value>6</value>
+  </data>
+  <data name="lstSegments.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Fill</value>
+  </data>
+  <data name="lstSegments.Location" type="System.Drawing.Point, System.Drawing">
+    <value>3, 16</value>
+  </data>
+  <data name="lstSegments.Size" type="System.Drawing.Size, System.Drawing">
+    <value>206, 186</value>
+  </data>
+  <data name="lstSegments.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name=">>lstSegments.Name" xml:space="preserve">
+    <value>lstSegments</value>
+  </data>
+  <data name=">>lstSegments.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ListBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>lstSegments.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>lstSegments.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="label2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Bottom, Left</value>
+  </data>
+  <data name="label2.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>15, 270</value>
+  </data>
+  <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>79, 13</value>
+  </data>
+  <data name="label2.TabIndex" type="System.Int32, mscorlib">
+    <value>2</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Total Distance:</value>
+  </data>
+  <data name=">>label2.Name" xml:space="preserve">
+    <value>label2</value>
+  </data>
+  <data name=">>label2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label2.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>label2.ZOrder" xml:space="preserve">
+    <value>5</value>
+  </data>
+  <data name="lblUnits.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Bottom, Left</value>
+  </data>
+  <data name="lblUnits.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="lblUnits.Location" type="System.Drawing.Point, System.Drawing">
+    <value>100, 270</value>
+  </data>
+  <data name="lblUnits.Size" type="System.Drawing.Size, System.Drawing">
+    <value>0, 13</value>
+  </data>
+  <data name="lblUnits.TabIndex" type="System.Int32, mscorlib">
+    <value>3</value>
+  </data>
+  <data name=">>lblUnits.Name" xml:space="preserve">
+    <value>lblUnits</value>
+  </data>
+  <data name=">>lblUnits.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>lblUnits.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>lblUnits.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
+  <data name="label3.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label3.Location" type="System.Drawing.Point, System.Drawing">
+    <value>15, 17</value>
+  </data>
+  <data name="label3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>34, 13</value>
+  </data>
+  <data name="label3.TabIndex" type="System.Int32, mscorlib">
+    <value>4</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Units:</value>
+  </data>
+  <data name=">>label3.Name" xml:space="preserve">
+    <value>label3</value>
+  </data>
+  <data name=">>label3.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label3.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>label3.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="cmbUnits.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="cmbUnits.Location" type="System.Drawing.Point, System.Drawing">
+    <value>97, 14</value>
+  </data>
+  <data name="cmbUnits.Size" type="System.Drawing.Size, System.Drawing">
+    <value>127, 21</value>
+  </data>
+  <data name="cmbUnits.TabIndex" type="System.Int32, mscorlib">
+    <value>5</value>
+  </data>
+  <data name=">>cmbUnits.Name" xml:space="preserve">
+    <value>cmbUnits</value>
+  </data>
+  <data name=">>cmbUnits.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>cmbUnits.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>cmbUnits.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="btnStart.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Bottom, Left</value>
+  </data>
+  <data name="btnStart.Location" type="System.Drawing.Point, System.Drawing">
+    <value>18, 325</value>
+  </data>
+  <data name="btnStart.Size" type="System.Drawing.Size, System.Drawing">
+    <value>82, 23</value>
+  </data>
+  <data name="btnStart.TabIndex" type="System.Int32, mscorlib">
+    <value>6</value>
+  </data>
+  <data name="btnStart.Text" xml:space="preserve">
+    <value>Start</value>
+  </data>
+  <data name=">>btnStart.Name" xml:space="preserve">
+    <value>btnStart</value>
+  </data>
+  <data name=">>btnStart.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnStart.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>btnStart.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="groupBox1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Bottom, Left, Right</value>
+  </data>
+  <data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>15, 41</value>
+  </data>
+  <data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>212, 211</value>
+  </data>
+  <data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
+    <value>7</value>
+  </data>
+  <data name="groupBox1.Text" xml:space="preserve">
+    <value>Segments</value>
+  </data>
+  <data name=">>groupBox1.Name" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>groupBox1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>groupBox1.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>groupBox1.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+    <value>6, 13</value>
+  </data>
+  <data name="$this.Size" type="System.Drawing.Size, System.Drawing">
+    <value>247, 360</value>
+  </data>
+  <data name=">>$this.Name" xml:space="preserve">
+    <value>MgLineMeasureControlImpl</value>
+  </data>
+  <data name=">>$this.Type" xml:space="preserve">
+    <value>OSGeo.MapGuide.Viewer.MgControlView, OSGeo.MapGuide.Viewer, Version=2.4.0.6971, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f</value>
+  </data>
 </root>
\ No newline at end of file

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgLoadPackageComponent.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgLoadPackageComponent.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgLoadPackageComponent.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -11,7 +11,7 @@
     {
         public MgLoadPackageComponent() 
         {
-            this.Label = this.ToolTipText = Properties.Resources.TextLoadPackage;
+            this.Label = this.ToolTipText = Strings.TextLoadPackage;
             this.Icon = Properties.Resources.load_package;
         }
 
@@ -35,7 +35,7 @@
         {
             using (var open = new OpenFileDialog())
             {
-                open.Title = Properties.Resources.TextLoadPackage;
+                open.Title = Strings.TextLoadPackage;
                 open.Filter = "*.mgp|*.mgp";
                 if (open.ShowDialog() == DialogResult.OK)
                 {
@@ -46,7 +46,7 @@
                     var br = source.GetReader();
 
                     resSvc.ApplyResourcePackage(br);
-                    MessageBox.Show(Properties.Resources.TextPackageLoaded);
+                    MessageBox.Show(Strings.TextPackageLoaded);
                     if (this.InvokeOnPackageLoad != null)
                         this.InvokeOnPackageLoad.Invoke();
                 }

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgMapViewer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgMapViewer.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgMapViewer.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -86,17 +86,17 @@
 
         private void CreateDebugFeatureSource()
         {
-            var id = new MgDataPropertyDefinition("ID");
+            var id = new MgDataPropertyDefinition("ID"); //NOXLATE
             id.DataType = MgPropertyType.Int32;
             id.Nullable = false;
             id.SetAutoGeneration(true);
 
-            var geom = new MgGeometricPropertyDefinition("Geometry");
+            var geom = new MgGeometricPropertyDefinition("Geometry"); //NOXLATE
             geom.GeometryTypes = MgFeatureGeometricType.Point;
-            geom.SpatialContextAssociation = "MapCs";
+            geom.SpatialContextAssociation = "MapCs"; //NOXLATE
 
             var cls = new MgClassDefinition();
-            cls.Name = "Debug";
+            cls.Name = "Debug"; //NOXLATE
             var props = cls.GetProperties();
             props.Add(id);
             props.Add(geom);
@@ -104,30 +104,30 @@
             var idProps = cls.GetIdentityProperties();
             idProps.Add(id);
 
-            cls.DefaultGeometryPropertyName = "Geometry";
+            cls.DefaultGeometryPropertyName = "Geometry"; //NOXLATE
 
-            var schema = new MgFeatureSchema("Default", "Default schema");
+            var schema = new MgFeatureSchema("Default", "Default schema"); //NOXLATE
             var classes = schema.GetClasses();
             classes.Add(cls);
 
             //We can make anything up here, there's no real concept of sessions
             var sessionId = Guid.NewGuid().ToString();
 
-            var debugFsId = new MgResourceIdentifier("Session:" + sessionId + "//Debug" + Guid.NewGuid().ToString() + ".FeatureSource");
-            var createSdf = new MgCreateSdfParams("MapCs", _map.GetMapSRS(), schema);
+            var debugFsId = new MgResourceIdentifier("Session:" + sessionId + "//Debug" + Guid.NewGuid().ToString() + ".FeatureSource"); //NOXLATE
+            var createSdf = new MgCreateSdfParams("MapCs", _map.GetMapSRS(), schema); //NOXLATE
             var featureSvc = (MgdFeatureService)fact.CreateService(MgServiceType.FeatureService);
             var resSvc = (MgResourceService)fact.CreateService(MgServiceType.ResourceService);
             featureSvc.CreateFeatureSource(debugFsId, createSdf);
 
-            byte[] bytes = Encoding.UTF8.GetBytes(string.Format(Debug.DebugLayer, debugFsId.ToString(), "Default:Debug", "Geometry"));
+            byte[] bytes = Encoding.UTF8.GetBytes(string.Format(Debug.DebugLayer, debugFsId.ToString(), "Default:Debug", "Geometry")); //NOXLATE
             var source = new MgByteSource(bytes, bytes.Length);
 
-            var debugLayerId = new MgResourceIdentifier("Session:" + sessionId + "//" + debugFsId.Name + ".LayerDefinition");
+            var debugLayerId = new MgResourceIdentifier("Session:" + sessionId + "//" + debugFsId.Name + ".LayerDefinition"); //NOXLATE
             var breader = source.GetReader();
             resSvc.SetResource(debugLayerId, breader, null);
             
             _debugLayer = new MgdLayer(debugLayerId, resSvc);
-            _debugLayer.SetLegendLabel("Debug Layer");
+            _debugLayer.SetLegendLabel("Debug Layer"); //NOXLATE
             _debugLayer.SetVisible(true);
             _debugLayer.SetDisplayInLegend(true);
 
@@ -144,21 +144,21 @@
             if (_debugCenter == null)
                 _debugCenter = new MgPropertyCollection();
 
-            var center = _wktRW.Read("POINT (" + _map.ViewCenter.Coordinate.X + " " + _map.ViewCenter.Coordinate.Y + ")");
+            var center = _wktRW.Read("POINT (" + _map.ViewCenter.Coordinate.X + " " + _map.ViewCenter.Coordinate.Y + ")"); //NOXLATE
             var agf = _agfRW.Write(center);
-            if (!_debugCenter.Contains("Geometry"))
+            if (!_debugCenter.Contains("Geometry")) //NOXLATE
             {
-                MgGeometryProperty geom = new MgGeometryProperty("Geometry", agf);
+                MgGeometryProperty geom = new MgGeometryProperty("Geometry", agf); //NOXLATE
                 _debugCenter.Add(geom);
             }
             else
             {
-                MgGeometryProperty geom = (MgGeometryProperty)_debugCenter.GetItem("Geometry");
+                MgGeometryProperty geom = (MgGeometryProperty)_debugCenter.GetItem("Geometry"); //NOXLATE
                 geom.SetValue(agf);
             }
 
-            int deleted = _debugLayer.DeleteFeatures("");
-            Trace.TraceInformation("Deleted {0} debug points", deleted);
+            int deleted = _debugLayer.DeleteFeatures(string.Empty);
+            Trace.TraceInformation("Deleted {0} debug points", deleted); //NOXLATE
             var reader = _debugLayer.InsertFeatures(_debugCenter);
             int inserted = 0;
             while (reader.ReadNext())
@@ -166,7 +166,7 @@
                 inserted++;
             }
             reader.Close();
-            Trace.TraceInformation("Added {0} debug points", inserted);
+            Trace.TraceInformation("Added {0} debug points", inserted); //NOXLATE
             _debugLayer.ForceRefresh();
         }
 #endif
@@ -212,16 +212,16 @@
             SetStyle(ControlStyles.DoubleBuffer, true);
 
             _mapBgColor = Color.Transparent;
-
-            _defaultDigitizationInstructions = Properties.Resources.GeneralDigitizationInstructions;
-            _defaultMultiSegmentDigitizationInstructions = Properties.Resources.MultiSegmentDigitzationInstructions;
-            _defaultPointDigitizationPrompt = Properties.Resources.PointDigitizationPrompt;
-            _defaultLineDigitizationPrompt = Properties.Resources.LineDigitizationPrompt;
-            _defaultCircleDigitizationPrompt = Properties.Resources.CircleDigitizationPrompt;
-            _defaultLineStringDigitizationPrompt = Properties.Resources.LineStringDigitizationPrompt;
-            _defaultPolygonDigitizationPrompt = Properties.Resources.PolygonDigitizationPrompt;
-            _defaultRectangleDigitizationPrompt = Properties.Resources.RectangleDigitizationPrompt;
-
+            /*
+            _defaultDigitizationInstructions = Strings.GeneralDigitizationInstructions;
+            _defaultMultiSegmentDigitizationInstructions = Strings.MultiSegmentDigitzationInstructions;
+            _defaultPointDigitizationPrompt = Strings.PointDigitizationPrompt;
+            _defaultLineDigitizationPrompt = Strings.LineDigitizationPrompt;
+            _defaultCircleDigitizationPrompt = Strings.CircleDigitizationPrompt;
+            _defaultLineStringDigitizationPrompt = Strings.LineStringDigitizationPrompt;
+            _defaultPolygonDigitizationPrompt = Strings.PolygonDigitizationPrompt;
+            _defaultRectangleDigitizationPrompt = Strings.RectangleDigitizationPrompt;
+            */
             renderWorker = new BackgroundWorker();
 
             renderWorker.DoWork += renderWorker_DoWork;
@@ -367,29 +367,29 @@
         /// <summary>
         /// Gets or sets the minimum allowed zoom scale for this viewer
         /// </summary>
-        [Category("MapGuide Viewer")]
-        [Description("The minimum allowed zoom scale for this viewer")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("The minimum allowed zoom scale for this viewer")] //NOXLATE
         public int MinScale { get; set; }
 
         /// <summary>
         /// Gets or sets the maximum allowed zoom scale for this viewer
         /// </summary>
-        [Category("MapGuide Viewer")]
-        [Description("The maximum allowed zoom scale for this viewer")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("The maximum allowed zoom scale for this viewer")] //NOXLATE
         public int MaxScale { get; set; }
 
         /// <summary>
         /// The amount of time (in ms) to wait to re-render after a mouse wheel scroll
         /// </summary>
-        [Category("MapGuide Viewer")]
-        [Description("The amount of time (in ms) to wait to re-render after a mouse wheel scroll")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("The amount of time (in ms) to wait to re-render after a mouse wheel scroll")] //NOXLATE
         public int MouseWheelDelayRenderInterval { get; set; }
 
         /// <summary>
         /// The amount of time (in ms) to wait to re-render after a mouse wheel scroll
         /// </summary>
-        [Category("MapGuide Viewer")]
-        [Description("The amount of time (in ms) to wait to fire off a tooltip request after the mouse pointer becomes stationary")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("The amount of time (in ms) to wait to fire off a tooltip request after the mouse pointer becomes stationary")] //NOXLATE
         public int TooltipDelayInterval { get; set; }
 
         private Color _selColor;
@@ -397,15 +397,15 @@
         /// <summary>
         /// Gets or sets the color used to render selected features
         /// </summary>
-        [Category("MapGuide Viewer")]
-        [Description("The color to use for active selections")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("The color to use for active selections")] //NOXLATE
         public Color SelectionColor
         {
             get { return _selColor; }
             set 
             { 
                 _selColor = value;
-                OnPropertyChanged("SelectionColor");
+                OnPropertyChanged("SelectionColor"); //NOXLATE
             }
         }
 
@@ -417,8 +417,8 @@
         /// <value>
         /// The color of the tooltip fill.
         /// </value>
-        [Category("MapGuide Viewer")]
-        [Description("The color background for feature tooltips")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("The color background for feature tooltips")] //NOXLATE
         internal Color TooltipFillColor
         {
             get { return _tooltipFillColor; }
@@ -427,15 +427,15 @@
                 if (!value.Equals(_tooltipFillColor))
                 {
                     _tooltipFillColor = value;
-                    OnPropertyChanged("TooltipFillColor");
+                    OnPropertyChanged("TooltipFillColor"); //NOXLATE
                 }
             }
         }
 
         private int _tooltipFillTransparency;
 
-        [Category("MapGuide Viewer")]
-        [Description("The color background transparency for feature tooltips")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("The color background transparency for feature tooltips")] //NOXLATE
         [DefaultValue(200)]
         internal int TooltipFillTransparency
         {
@@ -445,7 +445,7 @@
                 if (!value.Equals(_tooltipFillTransparency))
                 {
                     _tooltipFillTransparency = value;
-                    OnPropertyChanged("TooltipFillTransparency");
+                    OnPropertyChanged("TooltipFillTransparency"); //NOXLATE
                 }
             }
         }
@@ -484,8 +484,8 @@
         /// <value>
         /// 	<c>true</c> if [show vertex coordinates when digitizing]; otherwise, <c>false</c>.
         /// </value>
-        [Category("MapGuide Viewer")]
-        [Description("Indicates whether coordinate values are shown when digitizing geometry")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("Indicates whether coordinate values are shown when digitizing geometry")] //NOXLATE
         [DefaultValue(false)]
         public bool ShowVertexCoordinatesWhenDigitizing
         {
@@ -495,11 +495,11 @@
                 if (!value.Equals(_showVertexCoords))
                 {
                     _showVertexCoords = value;
-                    OnPropertyChanged("ShowVertexCoordinatesWhenDigitizing");
+                    OnPropertyChanged("ShowVertexCoordinatesWhenDigitizing"); //NOXLATE
                 }
             }
         }
-
+        /*
         private string _defaultDigitizationInstructions;
         private string _defaultMultiSegmentDigitizationInstructions;
 
@@ -509,7 +509,7 @@
         private string _defaultLineStringDigitizationPrompt;
         private string _defaultPolygonDigitizationPrompt;
         private string _defaultRectangleDigitizationPrompt;
-
+        */
         private string _pointCustomDigitizationPrompt;
         private string _lineCustomDigitizationPrompt;
         private string _circleCustomDigitizationPrompt;
@@ -562,7 +562,7 @@
                 {
                     if (this.DigitizingType == MapDigitizationType.Point)
                     {
-                        string str = (_pointCustomDigitizationPrompt ?? _defaultPointDigitizationPrompt) + Environment.NewLine + _defaultDigitizationInstructions;
+                        string str = (_pointCustomDigitizationPrompt ?? Strings.PointDigitizationPrompt) + Environment.NewLine + Strings.GeneralDigitizationInstructions;
                         DrawTrackingTooltip(e, str);
                     }
                     else
@@ -629,22 +629,22 @@
 
         private Brush _digitizingOutline;
 
-        [Category("MapGuide Viewer")]
-        [Description("The outline color for geometries being digitized")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("The outline color for geometries being digitized")] //NOXLATE
         internal Brush DigitizingOutline
         {
             get { return _digitizingOutline; }
             set
             {
                 _digitizingOutline = value;
-                OnPropertyChanged("DigitizingOutline");
+                OnPropertyChanged("DigitizingOutline"); //NOXLATE
             }
         }
 
         private int _digitizingFillTransparency;
 
-        [Category("MapGuide Viewer")]
-        [Description("The fill color transparency for geometries being digitized")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("The fill color transparency for geometries being digitized")] //NOXLATE
         [DefaultValue(100)]
         internal int DigitizingFillTransparency
         {
@@ -654,26 +654,26 @@
                 if (!value.Equals(_digitizingFillTransparency))
                 {
                     _digitizingFillTransparency = value;
-                    OnPropertyChanged("DigitizingFillTransparency");
+                    OnPropertyChanged("DigitizingFillTransparency"); //NOXLATE
                 }
             }
         }
 
-        [Category("MapGuide Viewer")]
-        [Description("The amount of pixels to buffer out by when doing point-based selections with the Select tool")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("The amount of pixels to buffer out by when doing point-based selections with the Select tool")] //NOXLATE
         public int PointPixelBuffer { get; set; }
 
         private Color _digitizingFillColor;
 
-        [Category("MapGuide Viewer")]
-        [Description("The fill color for geometries being digitized")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("The fill color for geometries being digitized")] //NOXLATE
         internal Color DigitzingFillColor
         {
             get { return _digitizingFillColor; }
             set
             {
                 _digitizingFillColor = value;
-                OnPropertyChanged("DigitzingFillColor");
+                OnPropertyChanged("DigitzingFillColor"); //NOXLATE
             }
         }
 
@@ -697,15 +697,15 @@
             if (!this.ShowVertexCoordinatesWhenDigitizing)
                 return;
 
-            string text = "";
+            string text = string.Empty;
             if (mapSpace)
             {
                 var mapPt = ScreenToMapUnits(devX, devY);
-                text = string.Format("X: {0}, Y: {1}", mapPt.X, mapPt.Y);
+                text = string.Format("X: {0}, Y: {1}", mapPt.X, mapPt.Y); //NOXLATE
             }
             else
             {
-                text = string.Format("X: {0}, Y: {1}", devX, devY);
+                text = string.Format("X: {0}, Y: {1}", devX, devY); //NOXLATE
             }
 
             var f = Control.DefaultFont;
@@ -733,7 +733,7 @@
             
             int height = 0;
             int width = 0;
-            string [] tokens = text.Split(new string[] {"\\n", "\\r\\n", "\n", Environment.NewLine }, StringSplitOptions.None);
+            string[] tokens = text.Split(new string[] { "\\n", "\\r\\n", "\n", Environment.NewLine }, StringSplitOptions.None); //NOXLATE
             foreach(string t in tokens)
             {
                 var size = e.Graphics.MeasureString(t, f);
@@ -756,12 +756,12 @@
         {
             var pt2 = new Point(dPtStart.X, dPtStart.Y);
             var diameter = (float)GetDistanceBetween(dPtStart, new PointF(_mouseX, _mouseY)) * 2.0f;
-            //Trace.TraceInformation("Diameter ({0}, {1} -> {2}, {3}): {4}", dPtStart.X, dPtStart.Y, _mouseX, _mouseY, diameter);
+            //Trace.TraceInformation("Diameter ({0}, {1} -> {2}, {3}): {4}", dPtStart.X, dPtStart.Y, _mouseX, _mouseY, diameter); //NOXLATE
             pt2.Offset((int)-(diameter / 2), (int)-(diameter / 2));
             e.Graphics.DrawEllipse(CreateOutlinePen(), pt2.X, pt2.Y, diameter, diameter);
             e.Graphics.FillEllipse(CreateFillBrush(), pt2.X, pt2.Y, diameter, diameter);
 
-            string str = (_circleCustomDigitizationPrompt ?? _defaultCircleDigitizationPrompt) + Environment.NewLine + _defaultDigitizationInstructions;
+            string str = (_circleCustomDigitizationPrompt ?? Strings.CircleDigitizationPrompt) + Environment.NewLine + Strings.GeneralDigitizationInstructions;
             DrawTrackingTooltip(e, str);
         }
 
@@ -770,7 +770,7 @@
             e.Graphics.DrawLine(CreateOutlinePen(), dPtStart, new Point(_mouseX, _mouseY));
             DrawVertexCoordinates(e, dPtStart.X, dPtStart.Y, true);
             DrawVertexCoordinates(e, _mouseX, _mouseY, true);
-            string str = (_lineCustomDigitizationPrompt ?? _defaultLineDigitizationPrompt) + Environment.NewLine + _defaultDigitizationInstructions;
+            string str = (_lineCustomDigitizationPrompt ?? Strings.LineDigitizationPrompt) + Environment.NewLine + Strings.GeneralDigitizationInstructions;
             DrawTrackingTooltip(e, str);
         }
 
@@ -785,7 +785,7 @@
             {
                 DrawVertexCoordinates(e, pt.X, pt.Y, true);
             }
-            string str = (_lineStringCustomDigitizationPrompt ?? _defaultLineStringDigitizationPrompt) + Environment.NewLine + _defaultMultiSegmentDigitizationInstructions;
+            string str = (_lineStringCustomDigitizationPrompt ?? Strings.LineStringDigitizationPrompt) + Environment.NewLine + Strings.MultiSegmentDigitzationInstructions;
             DrawTrackingTooltip(e, str);
         }
 
@@ -801,7 +801,7 @@
             {
                 DrawVertexCoordinates(e, pt.X, pt.Y, true);
             }
-            string str = (_polygonCustomDigitizationPrompt ?? _defaultPolygonDigitizationPrompt) + Environment.NewLine + _defaultMultiSegmentDigitizationInstructions;
+            string str = (_polygonCustomDigitizationPrompt ?? Strings.PolygonDigitizationPrompt) + Environment.NewLine + Strings.MultiSegmentDigitzationInstructions;
             DrawTrackingTooltip(e, str);
         }
 
@@ -811,16 +811,16 @@
             if (rect.HasValue)
             {
                 var r = rect.Value;
-                //Trace.TraceInformation("Draw rangle ({0} {1}, {2} {3})", r.Left, r.Top, r.Right, r.Bottom);
+                //Trace.TraceInformation("Draw rangle ({0} {1}, {2} {3})", r.Left, r.Top, r.Right, r.Bottom); //NOXLATE
                 e.Graphics.DrawRectangle(CreateOutlinePen(), r);
-                //Trace.TraceInformation("Fill rangle ({0} {1}, {2} {3})", r.Left, r.Top, r.Right, r.Bottom);
+                //Trace.TraceInformation("Fill rangle ({0} {1}, {2} {3})", r.Left, r.Top, r.Right, r.Bottom); //NOXLATE
                 e.Graphics.FillRectangle(CreateFillBrush(), r);
 
                 DrawVertexCoordinates(e, r.Left, r.Top, true);
                 DrawVertexCoordinates(e, r.Left, r.Bottom, true);
                 DrawVertexCoordinates(e, r.Right, r.Top, true);
                 DrawVertexCoordinates(e, r.Right, r.Bottom, true);
-                string str = (_rectangleCustomDigitizationPrompt ?? _defaultRectangleDigitizationPrompt) + Environment.NewLine + _defaultDigitizationInstructions;
+                string str = (_rectangleCustomDigitizationPrompt ?? Strings.RectangleDigitizationPrompt) + Environment.NewLine + Strings.GeneralDigitizationInstructions;
                 DrawTrackingTooltip(e, str);
             }
         }
@@ -831,9 +831,9 @@
             if (rect.HasValue)
             {
                 var r = rect.Value;
-                //Trace.TraceInformation("Draw rangle ({0} {1}, {2} {3})", r.Left, r.Top, r.Right, r.Bottom);
+                //Trace.TraceInformation("Draw rangle ({0} {1}, {2} {3})", r.Left, r.Top, r.Right, r.Bottom); //NOXLATE
                 e.Graphics.DrawRectangle(CreateOutlinePen(), r);
-                //Trace.TraceInformation("Fill rangle ({0} {1}, {2} {3})", r.Left, r.Top, r.Right, r.Bottom);
+                //Trace.TraceInformation("Fill rangle ({0} {1}, {2} {3})", r.Left, r.Top, r.Right, r.Bottom); //NOXLATE
                 e.Graphics.FillRectangle(CreateFillBrush(), r);
             }
         }
@@ -861,7 +861,7 @@
                     Invalidate();
                 }
 
-                OnPropertyChanged("FeatureTooltipsEnabled");
+                OnPropertyChanged("FeatureTooltipsEnabled"); //NOXLATE
             }
         }
 
@@ -1153,18 +1153,18 @@
 
         static MgViewerRenderingOptions CreateMapRenderingOptions(short red, short green, short blue)
         {
-            return new MgViewerRenderingOptions("PNG", 2, new MgColor(red, green, blue));
+            return new MgViewerRenderingOptions("PNG", 2, new MgColor(red, green, blue)); //NOXLATE
         }
 
         static MgViewerRenderingOptions CreateSelectionRenderingOptions(short red, short green, short blue)
         {
-            return new MgViewerRenderingOptions("PNG", (1 | 4), new MgColor(red, green, blue));
+            return new MgViewerRenderingOptions("PNG", (1 | 4), new MgColor(red, green, blue)); //NOXLATE
         }
 
         public void LoadMap(MgMapBase map)
         {
             if (_provider == null)
-                throw new InvalidOperationException("Viewer not initialized via Init()");
+                throw new InvalidOperationException(Strings.ErrorViewerNotInitialized);
 
             _provider.LoadMap(map);
         }
@@ -1218,7 +1218,7 @@
             var bgColor = _map.GetBackgroundColor();
             if (bgColor.Length == 8 || bgColor.Length == 6)
             {
-                _mapBgColor = ColorTranslator.FromHtml("#" + bgColor);
+                _mapBgColor = ColorTranslator.FromHtml("#" + bgColor); //NOXLATE
                 this.BackColor = _mapBgColor;
             }
             _provider.SetDisplaySize(this.Width, this.Height);
@@ -1258,9 +1258,9 @@
 
             //Reset history stack
             _viewHistory.Clear();
-            OnPropertyChanged("ViewHistory");
+            OnPropertyChanged("ViewHistory"); //NOXLATE
             _viewHistoryIndex = -1;
-            OnPropertyChanged("ViewHistoryIndex");
+            OnPropertyChanged("ViewHistoryIndex"); //NOXLATE
             
             var handler = this.MapLoaded;
             if (handler != null)
@@ -1291,8 +1291,8 @@
         /// Gets or sets a value indicating whether tiled groups are converted to normal groups. Must be set before
         /// a map is loaded via the <see cref="Init"/> method
         /// </summary>
-        [Category("MapGuide Viewer")]
-        [Description("If true, the map being viewed will have all its tiled groups converted to non-tiled groups. Tiled groups are not supported by this viewer and are not rendered")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("If true, the map being viewed will have all its tiled groups converted to non-tiled groups. Tiled groups are not supported by this viewer and are not rendered")] //NOXLATE
         [DefaultValue(false)]
         public bool ConvertTiledGroupsToNonTiled
         {
@@ -1303,8 +1303,8 @@
         /// <summary>
         /// Raised when the viewer has been initialized
         /// </summary>
-        [Category("MapGuide Viewer")]
-        [Description("Raised when the viewer has been initialized with a runtime map")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("Raised when the viewer has been initialized with a runtime map")] //NOXLATE
         public event EventHandler MapLoaded;
 
         private System.Timers.Timer _delayedResizeTimer;
@@ -1316,13 +1316,13 @@
                 ResetMouseWheelPaintTransforms();
                 if (_map != null)
                 {
-                    //Trace.TraceInformation("Performing delayed resize to (" + this.Width + ", " + this.Height + ")");
+                    //Trace.TraceInformation("Performing delayed resize to (" + this.Width + ", " + this.Height + ")"); //NOXLATE
                     _provider.SetDisplaySize(this.Width, this.Height);
                     UpdateExtents();
                     RefreshMap(false);
                 }
                 _delayedResizeTimer.Stop();
-                //Trace.TraceInformation("Delayed resize timer stopped");
+                //Trace.TraceInformation("Delayed resize timer stopped"); //NOXLATE
             });
             if (this.InvokeRequired)
                 this.Invoke(action);
@@ -1336,17 +1336,17 @@
             {
                 _delayedResizeTimer = new System.Timers.Timer();
                 _delayedResizeTimer.Elapsed += OnDelayResizeTimerElapsed;
-                //Trace.TraceInformation("Delay resize timer initialized");
+                //Trace.TraceInformation("Delay resize timer initialized"); //NOXLATE
             }
             if (_delayedResizeTimer.Enabled)
             {
-                //Trace.TraceInformation("Stopped delayed resize");
+                //Trace.TraceInformation("Stopped delayed resize"); //NOXLATE
                 _delayedResizeTimer.Stop();
             }
 
             _delayedResizeTimer.Interval = 500;
             _delayedResizeTimer.Start();
-            //Trace.TraceInformation("Delayed resize re-scheduled");
+            //Trace.TraceInformation("Delayed resize re-scheduled"); //NOXLATE
         }
 
         /// <summary>
@@ -1445,7 +1445,7 @@
 
                 _digitizingType = value;
 
-                OnPropertyChanged("DigitizingType");
+                OnPropertyChanged("DigitizingType"); //NOXLATE
             }
         }
 
@@ -1594,8 +1594,8 @@
         /// <summary>
         /// Raised when the map has been refreshed
         /// </summary>
-        [Category("MapGuide Viewer")]
-        [Description("Raised after the viewer has refreshed")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("Raised after the viewer has refreshed")] //NOXLATE
         public event EventHandler MapRefreshed;
 
         private bool _busy = false;
@@ -1631,7 +1631,7 @@
                     //Trace.TraceInformation("Rendering operation took {0}ms", _renderSw.ElapsedMilliseconds);
                 }
 #endif
-                OnPropertyChanged("IsBusy");
+                OnPropertyChanged("IsBusy"); //NOXLATE
             }
         }
 
@@ -1769,7 +1769,7 @@
             var view = _viewHistory[newIndex];
             ZoomToView(view.X, view.Y, view.Scale, true, true, false);
             _viewHistoryIndex = newIndex;
-            OnPropertyChanged("ViewHistoryIndex");
+            OnPropertyChanged("ViewHistoryIndex"); //NOXLATE
         }
 
         /// <summary>
@@ -1788,7 +1788,7 @@
             var view = _viewHistory[newIndex];
             ZoomToView(view.X, view.Y, view.Scale, true, true, false);
             _viewHistoryIndex = newIndex;
-            OnPropertyChanged("ViewHistoryIndex");
+            OnPropertyChanged("ViewHistoryIndex"); //NOXLATE
         }
 
         /// <summary>
@@ -1816,9 +1816,9 @@
                     PruneHistoryEntriesFromCurrentView();
 
                 _viewHistory.Add(new MgMapViewHistoryEntry(x, y, scale));
-                OnPropertyChanged("ViewHistory");
+                OnPropertyChanged("ViewHistory"); //NOXLATE
                 _viewHistoryIndex = _viewHistory.Count - 1;
-                OnPropertyChanged("ViewHistoryIndex");
+                OnPropertyChanged("ViewHistoryIndex"); //NOXLATE
             }
 
             _provider.SetViewCenterXY(x, y);
@@ -1855,16 +1855,16 @@
         /// <summary>
         /// Raised when the scale of the current runtime map has changed
         /// </summary>
-        [Category("MapGuide Viewer")]
-        [Description("Raised when the zoom scale of the map has changed")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("Raised when the zoom scale of the map has changed")] //NOXLATE
         public event EventHandler MapScaleChanged;
 
         /// <summary>
         /// Raised when the selection has changed. Note that programmatic selection modifications
         /// will not raise this event.
         /// </summary>
-        [Category("MapGuide Viewer")]
-        [Description("Raised when active viewer selection has changed")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("Raised when active viewer selection has changed")] //NOXLATE
         public event EventHandler SelectionChanged;
 
         private void renderWorker_DoWork(object sender, DoWorkEventArgs e)
@@ -1900,7 +1900,7 @@
             this.IsBusy = AreWorkersBusy();
             if (e.Error != null)
             {
-                MessageBox.Show(e.Error.Message, "Error");
+                MessageBox.Show(e.Error.Message, Strings.TitleError); //NOXLATE
             }
             else
             {
@@ -1917,7 +1917,7 @@
                         this.Image.Dispose();
                         this.Image = null;
                     }
-                    //Trace.TraceInformation("Set map image");
+                    //Trace.TraceInformation("Set map image"); //NOXLATE
                     this.Image = res.Image;
                     bInvalidate = true;
                 }
@@ -1928,7 +1928,7 @@
                         _selectionImage.Dispose();
                         _selectionImage = null;
                     }
-                    //Trace.TraceInformation("Set selection image");
+                    //Trace.TraceInformation("Set selection image"); //NOXLATE
                     _selectionImage = res.SelectionImage;
                     bInvalidate = true;
                 }
@@ -1936,7 +1936,7 @@
                 //If there is a queued refresh action, execute it now
                 if (_queuedRefresh != null)
                 {
-                    //Trace.TraceInformation("Executing queued rendering operation");
+                    //Trace.TraceInformation("Executing queued rendering operation"); //NOXLATE
                     _queuedRefresh();
                     _queuedRefresh = null;
                 }
@@ -1949,7 +1949,7 @@
                     var center = _map.ViewCenter;
                     var ext = _map.DataExtent;
                     System.Diagnostics.Trace.TraceInformation(
-                        "**POST-RENDER**{2}Map Center: {0}, {1}{2}Lower left: {3}, {4}{2}Upper Right: {5}, {6}",
+                        "**POST-RENDER**{2}Map Center: {0}, {1}{2}Lower left: {3}, {4}{2}Upper Right: {5}, {6}", //NOXLATE
                         center.Coordinate.X,
                         center.Coordinate.Y,
                         Environment.NewLine,
@@ -2053,8 +2053,8 @@
         /// <summary>
         /// Gets or sets the factor by which to multiply the scale to zoom in
         /// </summary>
-        [Category("MapGuide Viewer")]
-        [Description("The zoom in factor")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("The zoom in factor")] //NOXLATE
         public double ZoomInFactor
         {
             get { return _zoomInFactor; }
@@ -2063,15 +2063,15 @@
                 if (value.Equals(_zoomInFactor))
                     return;
                 _zoomInFactor = value;
-                OnPropertyChanged("ZoomInFactor");
+                OnPropertyChanged("ZoomInFactor"); //NOXLATE
             }
         }
 
         /// <summary>
         /// Gets or sets the factor by which to multiply the scale to zoom out
         /// </summary>
-        [Category("MapGuide Viewer")]
-        [Description("The zoom out factor")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("The zoom out factor")] //NOXLATE
         public double ZoomOutFactor
         {
             get { return _zoomOutFactor; }
@@ -2080,13 +2080,13 @@
                 if (value.Equals(_zoomOutFactor))
                     return;
                 _zoomOutFactor = value;
-                OnPropertyChanged("ZoomOutFactor");
+                OnPropertyChanged("ZoomOutFactor"); //NOXLATE
             }
         }
 
         private static string MakeWktPolygon(double x1, double y1, double x2, double y2)
         {
-            return "POLYGON((" + x1 + " " + y1 + ", " + x2 + " " + y1 + ", " + x2 + " " + y2 + ", " + x1 + " " + y2 + ", " + x1 + " " + y1 + "))";
+            return "POLYGON((" + x1 + " " + y1 + ", " + x2 + " " + y1 + ", " + x2 + " " + y2 + ", " + x1 + " " + y2 + ", " + x1 + " " + y1 + "))"; //NOXLATE
         }
 
         
@@ -2098,7 +2098,7 @@
         {
             //No intialized map
             if (_map == null)
-                return "";
+                return string.Empty;
 
             //No change in position
             if (_lastTooltipX == x && _lastTooltipY == y && !string.IsNullOrEmpty(_activeTooltipText))
@@ -2204,7 +2204,7 @@
             }
             else
             {
-                _selection.FromXml("");
+                _selection.FromXml(string.Empty);
             }
 #if TRACE
             sw.Stop();
@@ -2322,8 +2322,8 @@
 
             delayRenderTimer.Stop();
             delayRenderTimer.Start();
-            //Trace.TraceInformation("Postponed delay render");
-            //Trace.TraceInformation("Mouse delta: " + e.Delta + " (" + (e.Delta > 0 ? "Zoom in" : "Zoom out") + ")");
+            //Trace.TraceInformation("Postponed delay render"); //NOXLATE
+            //Trace.TraceInformation("Mouse delta: " + e.Delta + " (" + (e.Delta > 0 ? "Zoom in" : "Zoom out") + ")"); //NOXLATE
             //Negative delta = zoom out, Positive delta = zoom in
             //deltas are in units of 120, so treat each multiple of 120 as a "zoom unit"
 
@@ -2351,7 +2351,7 @@
                 Invalidate();
             }
 
-            //Trace.TraceInformation("Delta units is: " + mouseWheelDelta);
+            //Trace.TraceInformation("Delta units is: " + mouseWheelDelta); //NOXLATE
 
             //Completely ripped the number crunching here from the AJAX viewer with no sense of shame whatsoever :)
             delayRenderScale = GetNewScale(_map.ViewScale, mouseWheelDelta.Value);
@@ -2379,7 +2379,7 @@
             mouseWheelSx = (float)(w / (double)this.Width);
             mouseWheelSy = (float)(h / (double)this.Height);
 
-            //Trace.TraceInformation("Paint transform (tx: " + mouseWheelTx + ", ty: " + mouseWheelTy + ", sx: " + mouseWheelSx + ", sy: " + mouseWheelSy + ")");
+            //Trace.TraceInformation("Paint transform (tx: " + mouseWheelTx + ", ty: " + mouseWheelTy + ", sx: " + mouseWheelSx + ", sy: " + mouseWheelSy + ")"); //NOXLATE
         }
 
         static double GetMetersPerPixel(int dpi)
@@ -2426,8 +2426,8 @@
 
         void OnDelayRender(object sender, System.Timers.ElapsedEventArgs e)
         {
-            //Trace.TraceInformation("Delay rendering");
-            //Trace.TraceInformation("Set new map coordinates to (" + delayRenderViewCenter.Value.X + ", " + delayRenderViewCenter.Value.Y + " at " + delayRenderScale.Value + ")");
+            //Trace.TraceInformation("Delay rendering"); //NOXLATE
+            //Trace.TraceInformation("Set new map coordinates to (" + delayRenderViewCenter.Value.X + ", " + delayRenderViewCenter.Value.Y + " at " + delayRenderScale.Value + ")"); //NOXLATE
             ResetMouseWheelPaintTransforms();
             MethodInvoker action = () => { ZoomToView(delayRenderViewCenter.Value.X, delayRenderViewCenter.Value.Y, delayRenderScale.Value, true); };
             if (this.InvokeRequired)
@@ -2565,18 +2565,18 @@
             if (e.Button == MouseButtons.Left)
             {
                 dragStart = e.Location;
-                //Trace.TraceInformation("Drag started at (" + dragStart.X + ", " + dragStart.Y + ")");
+                //Trace.TraceInformation("Drag started at (" + dragStart.X + ", " + dragStart.Y + ")"); //NOXLATE
 
                 switch (this.ActiveTool)
                 {
                     case MapActiveTool.Pan:
-                        //Trace.TraceInformation("START PANNING");
+                        //Trace.TraceInformation("START PANNING"); //NOXLATE
                         break;
                     case MapActiveTool.Select:
-                        //Trace.TraceInformation("START SELECT");
+                        //Trace.TraceInformation("START SELECT"); //NOXLATE
                         break;
                     case MapActiveTool.ZoomIn:
-                        //Trace.TraceInformation("START ZOOM");
+                        //Trace.TraceInformation("START ZOOM"); //NOXLATE
                         break;
                 }
             }
@@ -2590,49 +2590,6 @@
         private int _mouseX;
         private int _mouseY;
 
-        /*
-        class ToolTipWaitArgs
-        {
-            public int Interval { get; set; }
-
-            public int MouseX { get; set; }
-
-            public int MouseY { get; set; }
-        }
-
-        void TooltipWaitProc(ToolTipWaitArgs e)
-        {
-            Thread.Sleep(e.Interval);
-            this.BeginInvoke(new MethodInvoker(() =>
-            {
-                //Compare old position against current
-                if ((Math.Abs(e.MouseX - _mouseX) < 2) &&
-                    (Math.Abs(e.MouseY - _mouseY) < 2))
-                {
-                    FireTooltipQuery();
-                }
-            }));
-        }
-
-        private void FireTooltipQuery()
-        {
-            string tooltip = QueryFirstMatchingTooltip();
-            if (tooltip != null)
-            {
-                _tooltip.Show(tooltip, this);
-            }
-            else
-            {
-                _tooltip.Hide(this);
-            }
-        }
-
-        private string QueryFirstMatchingTooltip()
-        {
-            throw new NotImplementedException();
-        }
-        */
-
         private string _activeTooltipText;
 
         private int _mouseDx;
@@ -2716,7 +2673,7 @@
                     //Fix the last one, can't edit last one because points are value types
                     dPath.RemoveAt(dPath.Count - 1);
                     dPath.Add(new Point(e.X, e.Y));
-                    //Trace.TraceInformation("Updating last point of a {0} point path", dPath.Count);
+                    //Trace.TraceInformation("Updating last point of a {0} point path", dPath.Count); //NOXLATE
                 }
                 Invalidate();
             }
@@ -2750,7 +2707,7 @@
                 {
                     //FIXME: This is not perfect. The view will be slightly off of where you released the mouse button
 
-                    //System.Diagnostics.Trace.TraceInformation("Dragged screen distance (" + translate.X + ", " + translate.Y + ")");
+                    //System.Diagnostics.Trace.TraceInformation("Dragged screen distance (" + translate.X + ", " + translate.Y + ")"); //NOXLATE
 
                     int dx = e.X - dragStart.X;
                     int dy = e.Y - dragStart.Y;
@@ -2767,7 +2724,7 @@
                     double mdy = coord.Y - pt.Y;
 
                     ZoomToView(coord.X, coord.Y, _map.ViewScale, true);
-                    //Trace.TraceInformation("END PANNING");
+                    //Trace.TraceInformation("END PANNING"); //NOXLATE
                 }
                 else if (this.ActiveTool == MapActiveTool.Select)
                 {
@@ -2817,8 +2774,8 @@
         /// <summary>
         /// Raised when the map cursor position has changed
         /// </summary>
-        [Category("MapGuide Viewer")]
-        [Description("Raised when the map position as indicated by the current mouse pointer has changed")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("Raised when the map position as indicated by the current mouse pointer has changed")] //NOXLATE
         public event EventHandler<MapPointEventArgs> MouseMapPositionChanged;
 
         #endregion
@@ -2880,7 +2837,7 @@
                 if (value != MapActiveTool.None)
                     this.DigitizingType = MapDigitizationType.None;
 
-                OnPropertyChanged("ActiveTool");
+                OnPropertyChanged("ActiveTool"); //NOXLATE
             }
         }
 
@@ -2914,8 +2871,8 @@
         /// <summary>
         /// Occurs when a property value changes.
         /// </summary>
-        [Category("MapGuide Viewer")]
-        [Description("Raised when a public property of this component has changed")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("Raised when a public property of this component has changed")] //NOXLATE
         public event PropertyChangedEventHandler PropertyChanged;
 
         /// <summary>

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgMapViewerProvider.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgMapViewerProvider.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgMapViewerProvider.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -149,7 +149,7 @@
                 }
                 catch (MgException ex)
                 {
-                    Trace.TraceWarning("Failed to get geometry property for layer: " + layer.Name + Environment.NewLine + ex.ToString());
+                    Trace.TraceWarning("Failed to get geometry property for layer: " + layer.Name + Environment.NewLine + ex.ToString()); //NOXLATE
                     ex.Dispose();
                     continue;
                 }
@@ -175,13 +175,13 @@
 
                 _cachedLayerDefinitions[resIds.GetItem(i)] = doc;
 
-                XmlNodeList propMaps = doc.GetElementsByTagName("PropertyMapping");
+                XmlNodeList propMaps = doc.GetElementsByTagName("PropertyMapping"); //NOXLATE
                 if (propMaps.Count > 0)
                 {
                     NameValueCollection propertyMappings = new NameValueCollection();
                     foreach (XmlNode pm in propMaps)
                     {
-                        propertyMappings[pm["Name"].InnerText] = pm["Value"].InnerText;
+                        propertyMappings[pm["Name"].InnerText] = pm["Value"].InnerText; //NOXLATE
                     }
                     _propertyMappings[resIds.GetItem(i)] = propertyMappings;
                 }

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgMeasureComponent.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgMeasureComponent.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgMeasureComponent.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -14,7 +14,7 @@
         public MgMeasureComponent()
         {
             this.Icon = Properties.Resources.measure;
-            this.Label = this.ToolTipText = Properties.Resources.TitleMeasure;
+            this.Label = this.ToolTipText = Strings.TitleMeasure;
             this.MeasureMode = MeasureMode.Line;
             this.PreferredUnits = MeasurementUnit.Meters;
         }
@@ -30,8 +30,8 @@
             }
         }
 
-        [Category("MapGuide Component Properties")]
-        [Description("The default units to measure in")]
+        [Category("MapGuide Component Properties")] //NOXLATE
+        [Description("The default units to measure in")] //NOXLATE
         [DefaultValue(MeasurementUnit.Meters)]
         [MgComponentProperty]
         public MeasurementUnit PreferredUnits
@@ -42,10 +42,10 @@
 
         private MeasureMode _measureMode;
 
-        [Category("MapGuide Component Properties")]
+        [Category("MapGuide Component Properties")] //NOXLATE
         [DefaultValue(MeasureMode.Line)]
         [Browsable(true)]
-        [Description("The mode of measurement")]
+        [Description("The mode of measurement")] //NOXLATE
         [MgComponentProperty]
         public MeasureMode MeasureMode
         {
@@ -53,7 +53,7 @@
             set 
             {
                 if (value == MeasureMode.Area)
-                    throw new NotImplementedException("This mode is not yet implemented");
+                    throw new NotImplementedException(Strings.ErrorNotImplemented);
                 _measureMode = value; 
             }
         }

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgPrintComponent.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgPrintComponent.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgPrintComponent.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -10,7 +10,7 @@
     {
         public MgPrintComponent()
         {
-            this.Label = this.ToolTipText = Properties.Resources.TextPrint;
+            this.Label = this.ToolTipText = Strings.TextPrint;
             this.Icon = Properties.Resources.print;
         }
 

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgPrintControlImpl.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgPrintControlImpl.Designer.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgPrintControlImpl.Designer.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -44,30 +44,18 @@
             // 
             // label1
             // 
-            this.label1.AutoSize = true;
-            this.label1.Location = new System.Drawing.Point(14, 16);
+            resources.ApplyResources(this.label1, "label1");
             this.label1.Name = "label1";
-            this.label1.Size = new System.Drawing.Size(27, 13);
-            this.label1.TabIndex = 0;
-            this.label1.Text = "Title";
             // 
             // txtTitle
             // 
-            this.txtTitle.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
-            this.txtTitle.Location = new System.Drawing.Point(17, 32);
+            resources.ApplyResources(this.txtTitle, "txtTitle");
             this.txtTitle.Name = "txtTitle";
-            this.txtTitle.Size = new System.Drawing.Size(202, 20);
-            this.txtTitle.TabIndex = 1;
             // 
             // chkScale
             // 
-            this.chkScale.AutoSize = true;
-            this.chkScale.Location = new System.Drawing.Point(17, 103);
+            resources.ApplyResources(this.chkScale, "chkScale");
             this.chkScale.Name = "chkScale";
-            this.chkScale.Size = new System.Drawing.Size(83, 17);
-            this.chkScale.TabIndex = 2;
-            this.chkScale.Text = "Show Scale";
             this.chkScale.UseVisualStyleBackColor = true;
             // 
             // printDocument
@@ -78,33 +66,22 @@
             // 
             // printPreviewDialog
             // 
-            this.printPreviewDialog.AutoScrollMargin = new System.Drawing.Size(0, 0);
-            this.printPreviewDialog.AutoScrollMinSize = new System.Drawing.Size(0, 0);
-            this.printPreviewDialog.ClientSize = new System.Drawing.Size(400, 300);
+            resources.ApplyResources(this.printPreviewDialog, "printPreviewDialog");
             this.printPreviewDialog.Document = this.printDocument;
-            this.printPreviewDialog.Enabled = true;
-            this.printPreviewDialog.Icon = ((System.Drawing.Icon)(resources.GetObject("printPreviewDialog.Icon")));
             this.printPreviewDialog.Name = "printPreviewDialog1";
             this.printPreviewDialog.UseAntiAlias = true;
-            this.printPreviewDialog.Visible = false;
             // 
             // btnPrintPreview
             // 
-            this.btnPrintPreview.Location = new System.Drawing.Point(17, 126);
+            resources.ApplyResources(this.btnPrintPreview, "btnPrintPreview");
             this.btnPrintPreview.Name = "btnPrintPreview";
-            this.btnPrintPreview.Size = new System.Drawing.Size(83, 23);
-            this.btnPrintPreview.TabIndex = 3;
-            this.btnPrintPreview.Text = "Print Preview";
             this.btnPrintPreview.UseVisualStyleBackColor = true;
             this.btnPrintPreview.Click += new System.EventHandler(this.btnPrintPreview_Click);
             // 
             // btnPrint
             // 
-            this.btnPrint.Location = new System.Drawing.Point(106, 126);
+            resources.ApplyResources(this.btnPrint, "btnPrint");
             this.btnPrint.Name = "btnPrint";
-            this.btnPrint.Size = new System.Drawing.Size(75, 23);
-            this.btnPrint.TabIndex = 4;
-            this.btnPrint.Text = "Print";
             this.btnPrint.UseVisualStyleBackColor = true;
             this.btnPrint.Click += new System.EventHandler(this.btnPrint_Click);
             // 
@@ -117,15 +94,13 @@
             // 
             // numDPI
             // 
-            this.numDPI.Location = new System.Drawing.Point(17, 77);
+            resources.ApplyResources(this.numDPI, "numDPI");
             this.numDPI.Maximum = new decimal(new int[] {
             1410065407,
             2,
             0,
             0});
             this.numDPI.Name = "numDPI";
-            this.numDPI.Size = new System.Drawing.Size(120, 20);
-            this.numDPI.TabIndex = 5;
             this.numDPI.Value = new decimal(new int[] {
             96,
             0,
@@ -134,16 +109,12 @@
             // 
             // label2
             // 
-            this.label2.AutoSize = true;
-            this.label2.Location = new System.Drawing.Point(14, 61);
+            resources.ApplyResources(this.label2, "label2");
             this.label2.Name = "label2";
-            this.label2.Size = new System.Drawing.Size(25, 13);
-            this.label2.TabIndex = 6;
-            this.label2.Text = "DPI";
             // 
             // MgPrintControlImpl
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            resources.ApplyResources(this, "$this");
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.Controls.Add(this.label2);
             this.Controls.Add(this.numDPI);
@@ -153,7 +124,6 @@
             this.Controls.Add(this.txtTitle);
             this.Controls.Add(this.label1);
             this.Name = "MgPrintControlImpl";
-            this.Size = new System.Drawing.Size(236, 164);
             ((System.ComponentModel.ISupportInitialize)(this.numDPI)).EndInit();
             this.ResumeLayout(false);
             this.PerformLayout();

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgPrintControlImpl.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgPrintControlImpl.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgPrintControlImpl.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -15,7 +15,7 @@
         public MgPrintControlImpl(IMapViewer viewer)
         {
             InitializeComponent();
-            this.Title = Properties.Resources.TitlePrintSettings;
+            this.Title = Strings.TitlePrintSettings;
             this.ModalWindow = true;
             _viewer = viewer;
         }
@@ -67,7 +67,7 @@
             yPos += (sizeTitle.Height * 1.1f);
 
             var scaleFont = SystemFonts.CaptionFont;
-            var scaleStr = string.Format("{0} 1 : {1}", Properties.Resources.TextScale, _viewer.GetMap().ViewScale);
+            var scaleStr = string.Format("{0} 1 : {1}", Strings.TextScale, _viewer.GetMap().ViewScale); //NOXLATE
             var sizeScale = e.Graphics.MeasureString(scaleStr, scaleFont);
 
             //Scale to fit within this page
@@ -78,7 +78,7 @@
             {
                 var tempState = new MgMapDisplayParameters(coord.X, coord.Y, map.ViewScale, imgWidth, imgHeight, (int)numDPI.Value);
                 state.PushState(tempState);
-                MgByteReader br = provider.RenderMap(selection, "PNG");
+                MgByteReader br = provider.RenderMap(selection, "PNG"); //NOXLATE
                 using (MgReadOnlyStream stream = new MgReadOnlyStream(br))
                 {
                     Image img = Image.FromStream(stream);

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgPrintControlImpl.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgPrintControlImpl.resx	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgPrintControlImpl.resx	2012-09-17 13:40:40 UTC (rev 7019)
@@ -117,13 +117,105 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="label1.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="label1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>14, 16</value>
+  </data>
+  <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>27, 13</value>
+  </data>
+  <data name="label1.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Title</value>
+  </data>
+  <data name=">>label1.Name" xml:space="preserve">
+    <value>label1</value>
+  </data>
+  <data name=">>label1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label1.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>label1.ZOrder" xml:space="preserve">
+    <value>6</value>
+  </data>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="txtTitle.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="txtTitle.Location" type="System.Drawing.Point, System.Drawing">
+    <value>17, 32</value>
+  </data>
+  <data name="txtTitle.Size" type="System.Drawing.Size, System.Drawing">
+    <value>202, 20</value>
+  </data>
+  <data name="txtTitle.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name=">>txtTitle.Name" xml:space="preserve">
+    <value>txtTitle</value>
+  </data>
+  <data name=">>txtTitle.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>txtTitle.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>txtTitle.ZOrder" xml:space="preserve">
+    <value>5</value>
+  </data>
+  <data name="chkScale.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="chkScale.Location" type="System.Drawing.Point, System.Drawing">
+    <value>17, 103</value>
+  </data>
+  <data name="chkScale.Size" type="System.Drawing.Size, System.Drawing">
+    <value>83, 17</value>
+  </data>
+  <data name="chkScale.TabIndex" type="System.Int32, mscorlib">
+    <value>2</value>
+  </data>
+  <data name="chkScale.Text" xml:space="preserve">
+    <value>Show Scale</value>
+  </data>
+  <data name=">>chkScale.Name" xml:space="preserve">
+    <value>chkScale</value>
+  </data>
+  <data name=">>chkScale.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>chkScale.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>chkScale.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
   <metadata name="printDocument.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
   <metadata name="printPreviewDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>144, 16</value>
   </metadata>
-  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="printPreviewDialog.AutoScrollMargin" type="System.Drawing.Size, System.Drawing">
+    <value>0, 0</value>
+  </data>
+  <data name="printPreviewDialog.AutoScrollMinSize" type="System.Drawing.Size, System.Drawing">
+    <value>0, 0</value>
+  </data>
+  <data name="printPreviewDialog.ClientSize" type="System.Drawing.Size, System.Drawing">
+    <value>400, 300</value>
+  </data>
+  <data name="printPreviewDialog.Enabled" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
   <data name="printPreviewDialog.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
     <value>
         AAABAAYAICAQAAAAAADoAgAAZgAAABAQEAAAAAAAKAEAAE4DAAAgIAAAAQAIAKgIAAB2BAAAEBAAAAEA
@@ -297,7 +389,139 @@
         wf+0BQAAgAUAAIAFAACAAQAAgAHB/4ABAACAAQAAgAEAALwBAAC8AQAAvAHB/4ABbP///5H/
 </value>
   </data>
+  <data name="printPreviewDialog.Visible" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <data name=">>printPreviewDialog.Name" xml:space="preserve">
+    <value>printPreviewDialog</value>
+  </data>
+  <data name=">>printPreviewDialog.Type" xml:space="preserve">
+    <value>System.Windows.Forms.PrintPreviewDialog, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name="btnPrintPreview.Location" type="System.Drawing.Point, System.Drawing">
+    <value>17, 126</value>
+  </data>
+  <data name="btnPrintPreview.Size" type="System.Drawing.Size, System.Drawing">
+    <value>83, 23</value>
+  </data>
+  <data name="btnPrintPreview.TabIndex" type="System.Int32, mscorlib">
+    <value>3</value>
+  </data>
+  <data name="btnPrintPreview.Text" xml:space="preserve">
+    <value>Print Preview</value>
+  </data>
+  <data name=">>btnPrintPreview.Name" xml:space="preserve">
+    <value>btnPrintPreview</value>
+  </data>
+  <data name=">>btnPrintPreview.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnPrintPreview.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>btnPrintPreview.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="btnPrint.Location" type="System.Drawing.Point, System.Drawing">
+    <value>106, 126</value>
+  </data>
+  <data name="btnPrint.Size" type="System.Drawing.Size, System.Drawing">
+    <value>75, 23</value>
+  </data>
+  <data name="btnPrint.TabIndex" type="System.Int32, mscorlib">
+    <value>4</value>
+  </data>
+  <data name="btnPrint.Text" xml:space="preserve">
+    <value>Print</value>
+  </data>
+  <data name=">>btnPrint.Name" xml:space="preserve">
+    <value>btnPrint</value>
+  </data>
+  <data name=">>btnPrint.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnPrint.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>btnPrint.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
   <metadata name="printDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>299, 16</value>
   </metadata>
+  <data name="numDPI.Location" type="System.Drawing.Point, System.Drawing">
+    <value>17, 77</value>
+  </data>
+  <data name="numDPI.Size" type="System.Drawing.Size, System.Drawing">
+    <value>120, 20</value>
+  </data>
+  <data name="numDPI.TabIndex" type="System.Int32, mscorlib">
+    <value>5</value>
+  </data>
+  <data name=">>numDPI.Name" xml:space="preserve">
+    <value>numDPI</value>
+  </data>
+  <data name=">>numDPI.Type" xml:space="preserve">
+    <value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>numDPI.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>numDPI.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="label2.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>14, 61</value>
+  </data>
+  <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>25, 13</value>
+  </data>
+  <data name="label2.TabIndex" type="System.Int32, mscorlib">
+    <value>6</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>DPI</value>
+  </data>
+  <data name=">>label2.Name" xml:space="preserve">
+    <value>label2</value>
+  </data>
+  <data name=">>label2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label2.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>label2.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+    <value>6, 13</value>
+  </data>
+  <data name="$this.Size" type="System.Drawing.Size, System.Drawing">
+    <value>236, 164</value>
+  </data>
+  <data name=">>printDocument.Name" xml:space="preserve">
+    <value>printDocument</value>
+  </data>
+  <data name=">>printDocument.Type" xml:space="preserve">
+    <value>System.Drawing.Printing.PrintDocument, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name=">>printDialog.Name" xml:space="preserve">
+    <value>printDialog</value>
+  </data>
+  <data name=">>printDialog.Type" xml:space="preserve">
+    <value>System.Windows.Forms.PrintDialog, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>$this.Name" xml:space="preserve">
+    <value>MgPrintControlImpl</value>
+  </data>
+  <data name=">>$this.Type" xml:space="preserve">
+    <value>OSGeo.MapGuide.Viewer.MgControlView, OSGeo.MapGuide.Viewer, Version=2.4.0.6971, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f</value>
+  </data>
 </root>
\ No newline at end of file

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgPropertyPane.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgPropertyPane.Designer.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgPropertyPane.Designer.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -28,6 +28,7 @@
         /// </summary>
         private void InitializeComponent()
         {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MgPropertyPane));
             this.propGrid = new System.Windows.Forms.PropertyGrid();
             this.featureToolStrip = new System.Windows.Forms.ToolStrip();
             this.btnPrevFeature = new System.Windows.Forms.ToolStripButton();
@@ -45,13 +46,9 @@
             // propGrid
             // 
             this.propGrid.CommandsVisibleIfAvailable = false;
-            this.propGrid.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.propGrid.HelpVisible = false;
-            this.propGrid.Location = new System.Drawing.Point(0, 30);
+            resources.ApplyResources(this.propGrid, "propGrid");
             this.propGrid.Name = "propGrid";
             this.propGrid.PropertySort = System.Windows.Forms.PropertySort.NoSort;
-            this.propGrid.Size = new System.Drawing.Size(210, 347);
-            this.propGrid.TabIndex = 1;
             // 
             // featureToolStrip
             // 
@@ -61,43 +58,34 @@
             this.lblCount,
             this.btnNextFeature,
             this.btnZoomSelectedFeature});
-            this.featureToolStrip.Location = new System.Drawing.Point(0, 30);
+            resources.ApplyResources(this.featureToolStrip, "featureToolStrip");
             this.featureToolStrip.Name = "featureToolStrip";
-            this.featureToolStrip.Size = new System.Drawing.Size(210, 25);
-            this.featureToolStrip.TabIndex = 2;
-            this.featureToolStrip.Text = "toolStrip1";
-            this.featureToolStrip.Visible = false;
             // 
             // btnPrevFeature
             // 
             this.btnPrevFeature.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
             this.btnPrevFeature.Image = global::OSGeo.MapGuide.Viewer.Properties.Resources.control_180;
-            this.btnPrevFeature.ImageTransparentColor = System.Drawing.Color.Magenta;
+            resources.ApplyResources(this.btnPrevFeature, "btnPrevFeature");
             this.btnPrevFeature.Name = "btnPrevFeature";
-            this.btnPrevFeature.Size = new System.Drawing.Size(23, 22);
-            this.btnPrevFeature.Text = "Previous Feature";
             this.btnPrevFeature.Click += new System.EventHandler(this.btnPrevFeature_Click);
             // 
             // txtPosition
             // 
             this.txtPosition.Name = "txtPosition";
             this.txtPosition.ReadOnly = true;
-            this.txtPosition.Size = new System.Drawing.Size(50, 25);
+            resources.ApplyResources(this.txtPosition, "txtPosition");
             // 
             // lblCount
             // 
             this.lblCount.Name = "lblCount";
-            this.lblCount.Size = new System.Drawing.Size(35, 22);
-            this.lblCount.Text = "of {0}";
+            resources.ApplyResources(this.lblCount, "lblCount");
             // 
             // btnNextFeature
             // 
             this.btnNextFeature.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
             this.btnNextFeature.Image = global::OSGeo.MapGuide.Viewer.Properties.Resources.control;
-            this.btnNextFeature.ImageTransparentColor = System.Drawing.Color.Magenta;
+            resources.ApplyResources(this.btnNextFeature, "btnNextFeature");
             this.btnNextFeature.Name = "btnNextFeature";
-            this.btnNextFeature.Size = new System.Drawing.Size(23, 22);
-            this.btnNextFeature.Text = "Next Feature";
             this.btnNextFeature.Click += new System.EventHandler(this.btnNextFeature_Click);
             // 
             // btnZoomSelectedFeature
@@ -105,54 +93,37 @@
             this.btnZoomSelectedFeature.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
             this.btnZoomSelectedFeature.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
             this.btnZoomSelectedFeature.Image = global::OSGeo.MapGuide.Viewer.Properties.Resources.icon_zoomselect;
-            this.btnZoomSelectedFeature.ImageTransparentColor = System.Drawing.Color.Magenta;
+            resources.ApplyResources(this.btnZoomSelectedFeature, "btnZoomSelectedFeature");
             this.btnZoomSelectedFeature.Name = "btnZoomSelectedFeature";
-            this.btnZoomSelectedFeature.Size = new System.Drawing.Size(23, 22);
-            this.btnZoomSelectedFeature.Text = "Zoom to current feature";
             this.btnZoomSelectedFeature.Click += new System.EventHandler(this.btnZoomCurrent_Click);
             // 
             // controlToolStrip
             // 
             this.controlToolStrip.Controls.Add(this.cmbLayer);
             this.controlToolStrip.Controls.Add(this.label1);
-            this.controlToolStrip.Dock = System.Windows.Forms.DockStyle.Top;
-            this.controlToolStrip.Location = new System.Drawing.Point(0, 0);
+            resources.ApplyResources(this.controlToolStrip, "controlToolStrip");
             this.controlToolStrip.Name = "controlToolStrip";
-            this.controlToolStrip.Size = new System.Drawing.Size(210, 30);
-            this.controlToolStrip.TabIndex = 3;
-            this.controlToolStrip.Visible = false;
             // 
             // cmbLayer
             // 
-            this.cmbLayer.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
+            resources.ApplyResources(this.cmbLayer, "cmbLayer");
             this.cmbLayer.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
             this.cmbLayer.FormattingEnabled = true;
-            this.cmbLayer.Location = new System.Drawing.Point(65, 4);
             this.cmbLayer.Name = "cmbLayer";
-            this.cmbLayer.Size = new System.Drawing.Size(142, 21);
-            this.cmbLayer.TabIndex = 1;
             // 
             // label1
             // 
-            this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                        | System.Windows.Forms.AnchorStyles.Left)));
-            this.label1.Location = new System.Drawing.Point(13, 4);
+            resources.ApplyResources(this.label1, "label1");
             this.label1.Name = "label1";
-            this.label1.Size = new System.Drawing.Size(46, 23);
-            this.label1.TabIndex = 0;
-            this.label1.Text = "Layer";
-            this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
             // 
             // MgPropertyPane
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            resources.ApplyResources(this, "$this");
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.Controls.Add(this.propGrid);
             this.Controls.Add(this.featureToolStrip);
             this.Controls.Add(this.controlToolStrip);
             this.Name = "MgPropertyPane";
-            this.Size = new System.Drawing.Size(210, 377);
             this.featureToolStrip.ResumeLayout(false);
             this.featureToolStrip.PerformLayout();
             this.controlToolStrip.ResumeLayout(false);

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgPropertyPane.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgPropertyPane.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgPropertyPane.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -133,8 +133,8 @@
         /// <summary>
         /// Raised when a request to zoom to the current selected feature has been made
         /// </summary>
-        [Category("MapGuide Viewer")]
-        [Description("Raised when the zoom to current feature toolbar button is clicked")]
+        [Category("MapGuide Viewer")] //NOXLATE
+        [Description("Raised when the zoom to current feature toolbar button is clicked")] //NOXLATE
         public event EventHandler RequestZoomToCurrentFeature;
 
         private void btnZoomCurrent_Click(object sender, EventArgs e)
@@ -177,6 +177,28 @@
             }
             this.CurrentSelectedFeatureIndex = idx;
         }
+
+        internal void SetLanguage(System.Globalization.CultureInfo lang)
+        {
+            ComponentResourceManager resources = new ComponentResourceManager(this.GetType());
+            ApplyResourceToControl(resources, this, lang);
+            resources.ApplyResources(this, "$this", lang);
+
+            //NOTE: These will slip under the radar of the above call because they aren't direct children
+            resources.ApplyResources(btnNextFeature, btnNextFeature.Name, lang);
+            resources.ApplyResources(btnPrevFeature, btnPrevFeature.Name, lang);
+            resources.ApplyResources(lblCount, lblCount.Name, lang);
+            resources.ApplyResources(btnZoomSelectedFeature, btnZoomSelectedFeature.Name, lang);
+        }
+
+        private static void ApplyResourceToControl(ComponentResourceManager resources, Control control, System.Globalization.CultureInfo lang)
+        {
+            foreach (Control c in control.Controls)
+            {
+                ApplyResourceToControl(resources, c, lang);
+                resources.ApplyResources(c, c.Name, lang);
+            }
+        }
     }
 
     public class MgDictionaryPropertyGridAdapter : ICustomTypeDescriptor

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgPropertyPane.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgPropertyPane.resx	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgPropertyPane.resx	2012-09-17 13:40:40 UTC (rev 7019)
@@ -117,7 +117,226 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="propGrid.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Fill</value>
+  </data>
+  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="propGrid.HelpVisible" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="propGrid.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 55</value>
+  </data>
+  <data name="propGrid.Size" type="System.Drawing.Size, System.Drawing">
+    <value>210, 322</value>
+  </data>
+  <data name="propGrid.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name=">>propGrid.Name" xml:space="preserve">
+    <value>propGrid</value>
+  </data>
+  <data name=">>propGrid.Type" xml:space="preserve">
+    <value>System.Windows.Forms.PropertyGrid, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>propGrid.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>propGrid.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
   <metadata name="featureToolStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>156, 17</value>
+    <value>0, 0</value>
   </metadata>
+  <data name="btnPrevFeature.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
+    <value>Magenta</value>
+  </data>
+  <data name="btnPrevFeature.Size" type="System.Drawing.Size, System.Drawing">
+    <value>23, 22</value>
+  </data>
+  <data name="btnPrevFeature.Text" xml:space="preserve">
+    <value>Previous Feature</value>
+  </data>
+  <data name="txtPosition.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 25</value>
+  </data>
+  <data name="lblCount.Size" type="System.Drawing.Size, System.Drawing">
+    <value>35, 22</value>
+  </data>
+  <data name="lblCount.Text" xml:space="preserve">
+    <value>of {0}</value>
+  </data>
+  <data name="btnNextFeature.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
+    <value>Magenta</value>
+  </data>
+  <data name="btnNextFeature.Size" type="System.Drawing.Size, System.Drawing">
+    <value>23, 22</value>
+  </data>
+  <data name="btnNextFeature.Text" xml:space="preserve">
+    <value>Next Feature</value>
+  </data>
+  <data name="btnZoomSelectedFeature.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
+    <value>Magenta</value>
+  </data>
+  <data name="btnZoomSelectedFeature.Size" type="System.Drawing.Size, System.Drawing">
+    <value>23, 22</value>
+  </data>
+  <data name="btnZoomSelectedFeature.Text" xml:space="preserve">
+    <value>Zoom to current feature</value>
+  </data>
+  <data name="featureToolStrip.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 30</value>
+  </data>
+  <data name="featureToolStrip.Size" type="System.Drawing.Size, System.Drawing">
+    <value>210, 25</value>
+  </data>
+  <data name="featureToolStrip.TabIndex" type="System.Int32, mscorlib">
+    <value>2</value>
+  </data>
+  <data name="featureToolStrip.Text" xml:space="preserve">
+    <value>toolStrip1</value>
+  </data>
+  <data name="featureToolStrip.Visible" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <data name=">>featureToolStrip.Name" xml:space="preserve">
+    <value>featureToolStrip</value>
+  </data>
+  <data name=">>featureToolStrip.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>featureToolStrip.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>featureToolStrip.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="cmbLayer.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="cmbLayer.Location" type="System.Drawing.Point, System.Drawing">
+    <value>65, 4</value>
+  </data>
+  <data name="cmbLayer.Size" type="System.Drawing.Size, System.Drawing">
+    <value>142, 21</value>
+  </data>
+  <data name="cmbLayer.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name=">>cmbLayer.Name" xml:space="preserve">
+    <value>cmbLayer</value>
+  </data>
+  <data name=">>cmbLayer.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>cmbLayer.Parent" xml:space="preserve">
+    <value>controlToolStrip</value>
+  </data>
+  <data name=">>cmbLayer.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="label1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Bottom, Left</value>
+  </data>
+  <data name="label1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>13, 4</value>
+  </data>
+  <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>46, 23</value>
+  </data>
+  <data name="label1.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Layer</value>
+  </data>
+  <data name="label1.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
+    <value>MiddleLeft</value>
+  </data>
+  <data name=">>label1.Name" xml:space="preserve">
+    <value>label1</value>
+  </data>
+  <data name=">>label1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label1.Parent" xml:space="preserve">
+    <value>controlToolStrip</value>
+  </data>
+  <data name=">>label1.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="controlToolStrip.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Top</value>
+  </data>
+  <data name="controlToolStrip.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 0</value>
+  </data>
+  <data name="controlToolStrip.Size" type="System.Drawing.Size, System.Drawing">
+    <value>210, 30</value>
+  </data>
+  <data name="controlToolStrip.TabIndex" type="System.Int32, mscorlib">
+    <value>3</value>
+  </data>
+  <data name="controlToolStrip.Visible" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <data name=">>controlToolStrip.Name" xml:space="preserve">
+    <value>controlToolStrip</value>
+  </data>
+  <data name=">>controlToolStrip.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>controlToolStrip.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>controlToolStrip.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+    <value>6, 13</value>
+  </data>
+  <data name="$this.Size" type="System.Drawing.Size, System.Drawing">
+    <value>210, 377</value>
+  </data>
+  <data name=">>btnPrevFeature.Name" xml:space="preserve">
+    <value>btnPrevFeature</value>
+  </data>
+  <data name=">>btnPrevFeature.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>txtPosition.Name" xml:space="preserve">
+    <value>txtPosition</value>
+  </data>
+  <data name=">>txtPosition.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripTextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>lblCount.Name" xml:space="preserve">
+    <value>lblCount</value>
+  </data>
+  <data name=">>lblCount.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnNextFeature.Name" xml:space="preserve">
+    <value>btnNextFeature</value>
+  </data>
+  <data name=">>btnNextFeature.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnZoomSelectedFeature.Name" xml:space="preserve">
+    <value>btnZoomSelectedFeature</value>
+  </data>
+  <data name=">>btnZoomSelectedFeature.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>$this.Name" xml:space="preserve">
+    <value>MgPropertyPane</value>
+  </data>
+  <data name=">>$this.Type" xml:space="preserve">
+    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
 </root>
\ No newline at end of file

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgQueryComponent.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgQueryComponent.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgQueryComponent.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -14,7 +14,7 @@
         public MgQueryComponent()
         {
             this.Icon = Properties.Resources.search;
-            this.Label = this.ToolTipText = Properties.Resources.TitleQuery;
+            this.Label = this.ToolTipText = Strings.TitleQuery;
         }
 
         protected override MgControlView CreateControlView()

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgQueryControlImpl.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgQueryControlImpl.Designer.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgQueryControlImpl.Designer.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -28,6 +28,7 @@
         /// </summary>
         private void InitializeComponent()
         {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MgQueryControlImpl));
             this.groupBox1 = new System.Windows.Forms.GroupBox();
             this.lnkRefreshLayers = new System.Windows.Forms.LinkLabel();
             this.label1 = new System.Windows.Forms.Label();
@@ -62,45 +63,29 @@
             this.groupBox1.Controls.Add(this.lnkRefreshLayers);
             this.groupBox1.Controls.Add(this.label1);
             this.groupBox1.Controls.Add(this.cmbLayer);
-            this.groupBox1.Dock = System.Windows.Forms.DockStyle.Top;
-            this.groupBox1.Location = new System.Drawing.Point(0, 0);
+            resources.ApplyResources(this.groupBox1, "groupBox1");
             this.groupBox1.Name = "groupBox1";
-            this.groupBox1.Size = new System.Drawing.Size(266, 82);
-            this.groupBox1.TabIndex = 0;
             this.groupBox1.TabStop = false;
-            this.groupBox1.Text = "Layer";
             // 
             // lnkRefreshLayers
             // 
-            this.lnkRefreshLayers.AutoSize = true;
-            this.lnkRefreshLayers.Location = new System.Drawing.Point(97, 20);
+            resources.ApplyResources(this.lnkRefreshLayers, "lnkRefreshLayers");
             this.lnkRefreshLayers.Name = "lnkRefreshLayers";
-            this.lnkRefreshLayers.Size = new System.Drawing.Size(50, 13);
-            this.lnkRefreshLayers.TabIndex = 2;
             this.lnkRefreshLayers.TabStop = true;
-            this.lnkRefreshLayers.Text = "(Refresh)";
             this.lnkRefreshLayers.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.lnkRefreshLayers_LinkClicked);
             // 
             // label1
             // 
-            this.label1.AutoSize = true;
-            this.label1.Location = new System.Drawing.Point(16, 20);
+            resources.ApplyResources(this.label1, "label1");
             this.label1.Name = "label1";
-            this.label1.Size = new System.Drawing.Size(75, 13);
-            this.label1.TabIndex = 1;
-            this.label1.Text = "Select a Layer";
             // 
             // cmbLayer
             // 
-            this.cmbLayer.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
+            resources.ApplyResources(this.cmbLayer, "cmbLayer");
             this.cmbLayer.DisplayMember = "Name";
             this.cmbLayer.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
             this.cmbLayer.FormattingEnabled = true;
-            this.cmbLayer.Location = new System.Drawing.Point(16, 45);
             this.cmbLayer.Name = "cmbLayer";
-            this.cmbLayer.Size = new System.Drawing.Size(231, 21);
-            this.cmbLayer.TabIndex = 0;
             this.cmbLayer.SelectedIndexChanged += new System.EventHandler(this.cmbLayer_SelectedIndexChanged);
             // 
             // groupBox2
@@ -112,81 +97,49 @@
             this.groupBox2.Controls.Add(this.cmbProperty);
             this.groupBox2.Controls.Add(this.label2);
             this.groupBox2.Controls.Add(this.chkPropFilterEnabled);
-            this.groupBox2.Dock = System.Windows.Forms.DockStyle.Top;
-            this.groupBox2.Location = new System.Drawing.Point(0, 82);
+            resources.ApplyResources(this.groupBox2, "groupBox2");
             this.groupBox2.Name = "groupBox2";
-            this.groupBox2.Size = new System.Drawing.Size(266, 187);
-            this.groupBox2.TabIndex = 1;
             this.groupBox2.TabStop = false;
-            this.groupBox2.Text = "Property Filter";
             // 
             // txtValue
             // 
-            this.txtValue.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
-            this.txtValue.Location = new System.Drawing.Point(16, 145);
+            resources.ApplyResources(this.txtValue, "txtValue");
             this.txtValue.Name = "txtValue";
-            this.txtValue.Size = new System.Drawing.Size(231, 20);
-            this.txtValue.TabIndex = 6;
             // 
             // label4
             // 
-            this.label4.AutoSize = true;
-            this.label4.Location = new System.Drawing.Point(16, 129);
+            resources.ApplyResources(this.label4, "label4");
             this.label4.Name = "label4";
-            this.label4.Size = new System.Drawing.Size(34, 13);
-            this.label4.TabIndex = 5;
-            this.label4.Text = "Value";
             // 
             // cmbOperator
             // 
-            this.cmbOperator.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
+            resources.ApplyResources(this.cmbOperator, "cmbOperator");
             this.cmbOperator.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
             this.cmbOperator.FormattingEnabled = true;
-            this.cmbOperator.Location = new System.Drawing.Point(16, 101);
             this.cmbOperator.Name = "cmbOperator";
-            this.cmbOperator.Size = new System.Drawing.Size(231, 21);
-            this.cmbOperator.TabIndex = 4;
             // 
             // label3
             // 
-            this.label3.AutoSize = true;
-            this.label3.Location = new System.Drawing.Point(16, 85);
+            resources.ApplyResources(this.label3, "label3");
             this.label3.Name = "label3";
-            this.label3.Size = new System.Drawing.Size(48, 13);
-            this.label3.TabIndex = 3;
-            this.label3.Text = "Operator";
             // 
             // cmbProperty
             // 
-            this.cmbProperty.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
+            resources.ApplyResources(this.cmbProperty, "cmbProperty");
             this.cmbProperty.DisplayMember = "Name";
             this.cmbProperty.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
             this.cmbProperty.FormattingEnabled = true;
-            this.cmbProperty.Location = new System.Drawing.Point(16, 60);
             this.cmbProperty.Name = "cmbProperty";
-            this.cmbProperty.Size = new System.Drawing.Size(231, 21);
-            this.cmbProperty.TabIndex = 2;
             // 
             // label2
             // 
-            this.label2.AutoSize = true;
-            this.label2.Location = new System.Drawing.Point(16, 44);
+            resources.ApplyResources(this.label2, "label2");
             this.label2.Name = "label2";
-            this.label2.Size = new System.Drawing.Size(46, 13);
-            this.label2.TabIndex = 1;
-            this.label2.Text = "Property";
             // 
             // chkPropFilterEnabled
             // 
-            this.chkPropFilterEnabled.AutoSize = true;
-            this.chkPropFilterEnabled.Location = new System.Drawing.Point(19, 20);
+            resources.ApplyResources(this.chkPropFilterEnabled, "chkPropFilterEnabled");
             this.chkPropFilterEnabled.Name = "chkPropFilterEnabled";
-            this.chkPropFilterEnabled.Size = new System.Drawing.Size(65, 17);
-            this.chkPropFilterEnabled.TabIndex = 0;
-            this.chkPropFilterEnabled.Text = "Enabled";
             this.chkPropFilterEnabled.UseVisualStyleBackColor = true;
             // 
             // groupBox3
@@ -194,110 +147,72 @@
             this.groupBox3.Controls.Add(this.lblSpatialFilterGeomSet);
             this.groupBox3.Controls.Add(this.spatialFilterButtonPanel);
             this.groupBox3.Controls.Add(this.chkSpatialFilter);
-            this.groupBox3.Dock = System.Windows.Forms.DockStyle.Top;
-            this.groupBox3.Location = new System.Drawing.Point(0, 269);
+            resources.ApplyResources(this.groupBox3, "groupBox3");
             this.groupBox3.Name = "groupBox3";
-            this.groupBox3.Size = new System.Drawing.Size(266, 119);
-            this.groupBox3.TabIndex = 2;
             this.groupBox3.TabStop = false;
-            this.groupBox3.Text = "Spatial Filter";
             // 
             // lblSpatialFilterGeomSet
             // 
-            this.lblSpatialFilterGeomSet.AutoSize = true;
+            resources.ApplyResources(this.lblSpatialFilterGeomSet, "lblSpatialFilterGeomSet");
             this.lblSpatialFilterGeomSet.ForeColor = System.Drawing.Color.Red;
-            this.lblSpatialFilterGeomSet.Location = new System.Drawing.Point(90, 20);
             this.lblSpatialFilterGeomSet.Name = "lblSpatialFilterGeomSet";
-            this.lblSpatialFilterGeomSet.Size = new System.Drawing.Size(144, 13);
-            this.lblSpatialFilterGeomSet.TabIndex = 3;
-            this.lblSpatialFilterGeomSet.Text = "Spatial Filter Geometry drawn";
-            this.lblSpatialFilterGeomSet.Visible = false;
             // 
             // spatialFilterButtonPanel
             // 
-            this.spatialFilterButtonPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                        | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
+            resources.ApplyResources(this.spatialFilterButtonPanel, "spatialFilterButtonPanel");
             this.spatialFilterButtonPanel.Controls.Add(this.btnRectangle);
             this.spatialFilterButtonPanel.Controls.Add(this.btnPolygon);
             this.spatialFilterButtonPanel.Controls.Add(this.btnClear);
-            this.spatialFilterButtonPanel.Location = new System.Drawing.Point(19, 43);
             this.spatialFilterButtonPanel.Name = "spatialFilterButtonPanel";
-            this.spatialFilterButtonPanel.Size = new System.Drawing.Size(228, 60);
-            this.spatialFilterButtonPanel.TabIndex = 2;
             // 
             // btnRectangle
             // 
-            this.btnRectangle.Location = new System.Drawing.Point(3, 3);
+            resources.ApplyResources(this.btnRectangle, "btnRectangle");
             this.btnRectangle.Name = "btnRectangle";
-            this.btnRectangle.Size = new System.Drawing.Size(75, 23);
-            this.btnRectangle.TabIndex = 2;
-            this.btnRectangle.Text = "Rectangle";
             this.btnRectangle.UseVisualStyleBackColor = true;
             this.btnRectangle.Click += new System.EventHandler(this.btnRectangle_Click);
             // 
             // btnPolygon
             // 
-            this.btnPolygon.Location = new System.Drawing.Point(84, 3);
+            resources.ApplyResources(this.btnPolygon, "btnPolygon");
             this.btnPolygon.Name = "btnPolygon";
-            this.btnPolygon.Size = new System.Drawing.Size(75, 23);
-            this.btnPolygon.TabIndex = 3;
-            this.btnPolygon.Text = "Polygon";
             this.btnPolygon.UseVisualStyleBackColor = true;
             this.btnPolygon.Click += new System.EventHandler(this.btnPolygon_Click);
             // 
             // btnClear
             // 
-            this.btnClear.Location = new System.Drawing.Point(3, 32);
+            resources.ApplyResources(this.btnClear, "btnClear");
             this.btnClear.Name = "btnClear";
-            this.btnClear.Size = new System.Drawing.Size(75, 23);
-            this.btnClear.TabIndex = 4;
-            this.btnClear.Text = "Clear";
             this.btnClear.UseVisualStyleBackColor = true;
             this.btnClear.Click += new System.EventHandler(this.btnClear_Click);
             // 
             // chkSpatialFilter
             // 
-            this.chkSpatialFilter.AutoSize = true;
-            this.chkSpatialFilter.Location = new System.Drawing.Point(19, 19);
+            resources.ApplyResources(this.chkSpatialFilter, "chkSpatialFilter");
             this.chkSpatialFilter.Name = "chkSpatialFilter";
-            this.chkSpatialFilter.Size = new System.Drawing.Size(65, 17);
-            this.chkSpatialFilter.TabIndex = 1;
-            this.chkSpatialFilter.Text = "Enabled";
             this.chkSpatialFilter.UseVisualStyleBackColor = true;
             // 
             // btnExecute
             // 
-            this.btnExecute.Location = new System.Drawing.Point(16, 395);
+            resources.ApplyResources(this.btnExecute, "btnExecute");
             this.btnExecute.Name = "btnExecute";
-            this.btnExecute.Size = new System.Drawing.Size(75, 23);
-            this.btnExecute.TabIndex = 3;
-            this.btnExecute.Text = "Execute";
             this.btnExecute.UseVisualStyleBackColor = true;
             this.btnExecute.Click += new System.EventHandler(this.btnExecute_Click);
             // 
             // label5
             // 
-            this.label5.AutoSize = true;
-            this.label5.Location = new System.Drawing.Point(97, 400);
+            resources.ApplyResources(this.label5, "label5");
             this.label5.Name = "label5";
-            this.label5.Size = new System.Drawing.Size(42, 13);
-            this.label5.TabIndex = 4;
-            this.label5.Text = "Results";
             // 
             // numResults
             // 
-            this.numResults.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
-            this.numResults.Location = new System.Drawing.Point(143, 398);
+            resources.ApplyResources(this.numResults, "numResults");
             this.numResults.Maximum = new decimal(new int[] {
             10000,
             0,
             0,
             0});
             this.numResults.Name = "numResults";
-            this.numResults.Size = new System.Drawing.Size(104, 20);
-            this.numResults.TabIndex = 5;
             this.numResults.Value = new decimal(new int[] {
             100,
             0,
@@ -306,7 +221,7 @@
             // 
             // MgQueryControlImpl
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            resources.ApplyResources(this, "$this");
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.Controls.Add(this.numResults);
             this.Controls.Add(this.label5);
@@ -315,7 +230,6 @@
             this.Controls.Add(this.groupBox2);
             this.Controls.Add(this.groupBox1);
             this.Name = "MgQueryControlImpl";
-            this.Size = new System.Drawing.Size(266, 431);
             this.groupBox1.ResumeLayout(false);
             this.groupBox1.PerformLayout();
             this.groupBox2.ResumeLayout(false);

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgQueryControlImpl.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgQueryControlImpl.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgQueryControlImpl.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -20,7 +20,7 @@
         public MgQueryControlImpl(IMapViewer viewer)
         {
             InitializeComponent();
-            this.Title = Properties.Resources.TitleQuery;
+            this.Title = Strings.TitleQuery;
             this.Disposed += new EventHandler(OnDisposed);
             _viewer = viewer;
             _properties = new BindingList<MgDataPropertyDefinition>();
@@ -75,7 +75,7 @@
 
         static string MakeWktPolygon(double x1, double y1, double x2, double y2)
         {
-            return "POLYGON((" + x1 + " " + y1 + ", " + x2 + " " + y1 + ", " + x2 + " " + y2 + ", " + x1 + " " + y2 + ", " + x1 + " " + y1 + "))";
+            return "POLYGON((" + x1 + " " + y1 + ", " + x2 + " " + y1 + ", " + x2 + " " + y2 + ", " + x1 + " " + y2 + ", " + x1 + " " + y1 + "))"; //NOXLATE
         }
 
         private MgGeometry _filterGeometry;
@@ -140,49 +140,49 @@
         {
             var sb = new StringBuilder();
 
-            sb.Append(prop.Name + " ");
+            sb.Append(prop.Name + " "); //NOXLATE
 
             switch (op)
             {
                 case QueryOperator.EqualTo:
-                    sb.Append(" = ");
+                    sb.Append(" = "); //NOXLATE
                     break;
                 case QueryOperator.GreaterThan:
-                    sb.Append(" > ");
+                    sb.Append(" > "); //NOXLATE
                     break;
                 case QueryOperator.GreaterThanOrEqualTo:
-                    sb.Append(" >= ");
+                    sb.Append(" >= "); //NOXLATE
                     break;
                 case QueryOperator.In:
-                    sb.Append(" IN ");
+                    sb.Append(" IN "); //NOXLATE
                     break;
                 case QueryOperator.LessThan:
-                    sb.Append(" < ");
+                    sb.Append(" < "); //NOXLATE
                     break;
                 case QueryOperator.LessThanOrEqualTo:
-                    sb.Append(" <= ");
+                    sb.Append(" <= "); //NOXLATE
                     break;
                 case QueryOperator.Like:
-                    sb.Append(" LIKE ");
+                    sb.Append(" LIKE "); //NOXLATE
                     break;
                 case QueryOperator.NotEqualTo:
-                    sb.Append(" <> ");
+                    sb.Append(" <> "); //NOXLATE
                     break;
             }
 
             if (op == QueryOperator.In)
             {
-                sb.Append("(");
+                sb.Append("("); //NOXLATE
                 sb.Append(value);
-                sb.Append(")");
+                sb.Append(")"); //NOXLATE
             }
             else
             {
                 if (prop.DataType == MgPropertyType.String)
                 {
-                    sb.Append("'");
+                    sb.Append("'"); //NOXLATE
                     sb.Append(value);
-                    sb.Append("'");
+                    sb.Append("'"); //NOXLATE
                 }
                 else
                 {

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgQueryControlImpl.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgQueryControlImpl.resx	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgQueryControlImpl.resx	2012-09-17 13:40:40 UTC (rev 7019)
@@ -117,4 +117,589 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="lnkRefreshLayers.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="lnkRefreshLayers.Location" type="System.Drawing.Point, System.Drawing">
+    <value>97, 20</value>
+  </data>
+  <data name="lnkRefreshLayers.Size" type="System.Drawing.Size, System.Drawing">
+    <value>50, 13</value>
+  </data>
+  <data name="lnkRefreshLayers.TabIndex" type="System.Int32, mscorlib">
+    <value>2</value>
+  </data>
+  <data name="lnkRefreshLayers.Text" xml:space="preserve">
+    <value>(Refresh)</value>
+  </data>
+  <data name=">>lnkRefreshLayers.Name" xml:space="preserve">
+    <value>lnkRefreshLayers</value>
+  </data>
+  <data name=">>lnkRefreshLayers.Type" xml:space="preserve">
+    <value>System.Windows.Forms.LinkLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>lnkRefreshLayers.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>lnkRefreshLayers.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="label1.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>16, 20</value>
+  </data>
+  <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>75, 13</value>
+  </data>
+  <data name="label1.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Select a Layer</value>
+  </data>
+  <data name=">>label1.Name" xml:space="preserve">
+    <value>label1</value>
+  </data>
+  <data name=">>label1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label1.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>label1.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="cmbLayer.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="cmbLayer.Location" type="System.Drawing.Point, System.Drawing">
+    <value>16, 45</value>
+  </data>
+  <data name="cmbLayer.Size" type="System.Drawing.Size, System.Drawing">
+    <value>231, 21</value>
+  </data>
+  <data name="cmbLayer.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name=">>cmbLayer.Name" xml:space="preserve">
+    <value>cmbLayer</value>
+  </data>
+  <data name=">>cmbLayer.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>cmbLayer.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>cmbLayer.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Top</value>
+  </data>
+  <data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 0</value>
+  </data>
+  <data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>266, 82</value>
+  </data>
+  <data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="groupBox1.Text" xml:space="preserve">
+    <value>Layer</value>
+  </data>
+  <data name=">>groupBox1.Name" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>groupBox1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>groupBox1.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>groupBox1.ZOrder" xml:space="preserve">
+    <value>5</value>
+  </data>
+  <data name="txtValue.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="txtValue.Location" type="System.Drawing.Point, System.Drawing">
+    <value>16, 145</value>
+  </data>
+  <data name="txtValue.Size" type="System.Drawing.Size, System.Drawing">
+    <value>231, 20</value>
+  </data>
+  <data name="txtValue.TabIndex" type="System.Int32, mscorlib">
+    <value>6</value>
+  </data>
+  <data name=">>txtValue.Name" xml:space="preserve">
+    <value>txtValue</value>
+  </data>
+  <data name=">>txtValue.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>txtValue.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>txtValue.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="label4.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label4.Location" type="System.Drawing.Point, System.Drawing">
+    <value>16, 129</value>
+  </data>
+  <data name="label4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>34, 13</value>
+  </data>
+  <data name="label4.TabIndex" type="System.Int32, mscorlib">
+    <value>5</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Value</value>
+  </data>
+  <data name=">>label4.Name" xml:space="preserve">
+    <value>label4</value>
+  </data>
+  <data name=">>label4.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label4.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>label4.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="cmbOperator.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="cmbOperator.Location" type="System.Drawing.Point, System.Drawing">
+    <value>16, 101</value>
+  </data>
+  <data name="cmbOperator.Size" type="System.Drawing.Size, System.Drawing">
+    <value>231, 21</value>
+  </data>
+  <data name="cmbOperator.TabIndex" type="System.Int32, mscorlib">
+    <value>4</value>
+  </data>
+  <data name=">>cmbOperator.Name" xml:space="preserve">
+    <value>cmbOperator</value>
+  </data>
+  <data name=">>cmbOperator.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>cmbOperator.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>cmbOperator.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="label3.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label3.Location" type="System.Drawing.Point, System.Drawing">
+    <value>16, 85</value>
+  </data>
+  <data name="label3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>48, 13</value>
+  </data>
+  <data name="label3.TabIndex" type="System.Int32, mscorlib">
+    <value>3</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Operator</value>
+  </data>
+  <data name=">>label3.Name" xml:space="preserve">
+    <value>label3</value>
+  </data>
+  <data name=">>label3.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label3.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>label3.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="cmbProperty.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="cmbProperty.Location" type="System.Drawing.Point, System.Drawing">
+    <value>16, 60</value>
+  </data>
+  <data name="cmbProperty.Size" type="System.Drawing.Size, System.Drawing">
+    <value>231, 21</value>
+  </data>
+  <data name="cmbProperty.TabIndex" type="System.Int32, mscorlib">
+    <value>2</value>
+  </data>
+  <data name=">>cmbProperty.Name" xml:space="preserve">
+    <value>cmbProperty</value>
+  </data>
+  <data name=">>cmbProperty.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>cmbProperty.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>cmbProperty.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
+  <data name="label2.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>16, 44</value>
+  </data>
+  <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>46, 13</value>
+  </data>
+  <data name="label2.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Property</value>
+  </data>
+  <data name=">>label2.Name" xml:space="preserve">
+    <value>label2</value>
+  </data>
+  <data name=">>label2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label2.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>label2.ZOrder" xml:space="preserve">
+    <value>5</value>
+  </data>
+  <data name="chkPropFilterEnabled.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="chkPropFilterEnabled.Location" type="System.Drawing.Point, System.Drawing">
+    <value>19, 20</value>
+  </data>
+  <data name="chkPropFilterEnabled.Size" type="System.Drawing.Size, System.Drawing">
+    <value>65, 17</value>
+  </data>
+  <data name="chkPropFilterEnabled.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="chkPropFilterEnabled.Text" xml:space="preserve">
+    <value>Enabled</value>
+  </data>
+  <data name=">>chkPropFilterEnabled.Name" xml:space="preserve">
+    <value>chkPropFilterEnabled</value>
+  </data>
+  <data name=">>chkPropFilterEnabled.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>chkPropFilterEnabled.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>chkPropFilterEnabled.ZOrder" xml:space="preserve">
+    <value>6</value>
+  </data>
+  <data name="groupBox2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Top</value>
+  </data>
+  <data name="groupBox2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 82</value>
+  </data>
+  <data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>266, 187</value>
+  </data>
+  <data name="groupBox2.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name="groupBox2.Text" xml:space="preserve">
+    <value>Property Filter</value>
+  </data>
+  <data name=">>groupBox2.Name" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>groupBox2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>groupBox2.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>groupBox2.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
+  <data name="lblSpatialFilterGeomSet.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="lblSpatialFilterGeomSet.Location" type="System.Drawing.Point, System.Drawing">
+    <value>90, 20</value>
+  </data>
+  <data name="lblSpatialFilterGeomSet.Size" type="System.Drawing.Size, System.Drawing">
+    <value>144, 13</value>
+  </data>
+  <data name="lblSpatialFilterGeomSet.TabIndex" type="System.Int32, mscorlib">
+    <value>3</value>
+  </data>
+  <data name="lblSpatialFilterGeomSet.Text" xml:space="preserve">
+    <value>Spatial Filter Geometry drawn</value>
+  </data>
+  <data name="lblSpatialFilterGeomSet.Visible" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <data name=">>lblSpatialFilterGeomSet.Name" xml:space="preserve">
+    <value>lblSpatialFilterGeomSet</value>
+  </data>
+  <data name=">>lblSpatialFilterGeomSet.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>lblSpatialFilterGeomSet.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>lblSpatialFilterGeomSet.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="spatialFilterButtonPanel.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Bottom, Left, Right</value>
+  </data>
+  <data name="btnRectangle.Location" type="System.Drawing.Point, System.Drawing">
+    <value>3, 3</value>
+  </data>
+  <data name="btnRectangle.Size" type="System.Drawing.Size, System.Drawing">
+    <value>75, 23</value>
+  </data>
+  <data name="btnRectangle.TabIndex" type="System.Int32, mscorlib">
+    <value>2</value>
+  </data>
+  <data name="btnRectangle.Text" xml:space="preserve">
+    <value>Rectangle</value>
+  </data>
+  <data name=">>btnRectangle.Name" xml:space="preserve">
+    <value>btnRectangle</value>
+  </data>
+  <data name=">>btnRectangle.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnRectangle.Parent" xml:space="preserve">
+    <value>spatialFilterButtonPanel</value>
+  </data>
+  <data name=">>btnRectangle.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="btnPolygon.Location" type="System.Drawing.Point, System.Drawing">
+    <value>84, 3</value>
+  </data>
+  <data name="btnPolygon.Size" type="System.Drawing.Size, System.Drawing">
+    <value>75, 23</value>
+  </data>
+  <data name="btnPolygon.TabIndex" type="System.Int32, mscorlib">
+    <value>3</value>
+  </data>
+  <data name="btnPolygon.Text" xml:space="preserve">
+    <value>Polygon</value>
+  </data>
+  <data name=">>btnPolygon.Name" xml:space="preserve">
+    <value>btnPolygon</value>
+  </data>
+  <data name=">>btnPolygon.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnPolygon.Parent" xml:space="preserve">
+    <value>spatialFilterButtonPanel</value>
+  </data>
+  <data name=">>btnPolygon.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="btnClear.Location" type="System.Drawing.Point, System.Drawing">
+    <value>3, 32</value>
+  </data>
+  <data name="btnClear.Size" type="System.Drawing.Size, System.Drawing">
+    <value>75, 23</value>
+  </data>
+  <data name="btnClear.TabIndex" type="System.Int32, mscorlib">
+    <value>4</value>
+  </data>
+  <data name="btnClear.Text" xml:space="preserve">
+    <value>Clear</value>
+  </data>
+  <data name=">>btnClear.Name" xml:space="preserve">
+    <value>btnClear</value>
+  </data>
+  <data name=">>btnClear.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnClear.Parent" xml:space="preserve">
+    <value>spatialFilterButtonPanel</value>
+  </data>
+  <data name=">>btnClear.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="spatialFilterButtonPanel.Location" type="System.Drawing.Point, System.Drawing">
+    <value>19, 43</value>
+  </data>
+  <data name="spatialFilterButtonPanel.Size" type="System.Drawing.Size, System.Drawing">
+    <value>228, 60</value>
+  </data>
+  <data name="spatialFilterButtonPanel.TabIndex" type="System.Int32, mscorlib">
+    <value>2</value>
+  </data>
+  <data name=">>spatialFilterButtonPanel.Name" xml:space="preserve">
+    <value>spatialFilterButtonPanel</value>
+  </data>
+  <data name=">>spatialFilterButtonPanel.Type" xml:space="preserve">
+    <value>System.Windows.Forms.FlowLayoutPanel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>spatialFilterButtonPanel.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>spatialFilterButtonPanel.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="chkSpatialFilter.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="chkSpatialFilter.Location" type="System.Drawing.Point, System.Drawing">
+    <value>19, 19</value>
+  </data>
+  <data name="chkSpatialFilter.Size" type="System.Drawing.Size, System.Drawing">
+    <value>65, 17</value>
+  </data>
+  <data name="chkSpatialFilter.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name="chkSpatialFilter.Text" xml:space="preserve">
+    <value>Enabled</value>
+  </data>
+  <data name=">>chkSpatialFilter.Name" xml:space="preserve">
+    <value>chkSpatialFilter</value>
+  </data>
+  <data name=">>chkSpatialFilter.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>chkSpatialFilter.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>chkSpatialFilter.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="groupBox3.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Top</value>
+  </data>
+  <data name="groupBox3.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 269</value>
+  </data>
+  <data name="groupBox3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>266, 119</value>
+  </data>
+  <data name="groupBox3.TabIndex" type="System.Int32, mscorlib">
+    <value>2</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Spatial Filter</value>
+  </data>
+  <data name=">>groupBox3.Name" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>groupBox3.Type" xml:space="preserve">
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>groupBox3.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>groupBox3.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="btnExecute.Location" type="System.Drawing.Point, System.Drawing">
+    <value>16, 395</value>
+  </data>
+  <data name="btnExecute.Size" type="System.Drawing.Size, System.Drawing">
+    <value>75, 23</value>
+  </data>
+  <data name="btnExecute.TabIndex" type="System.Int32, mscorlib">
+    <value>3</value>
+  </data>
+  <data name="btnExecute.Text" xml:space="preserve">
+    <value>Execute</value>
+  </data>
+  <data name=">>btnExecute.Name" xml:space="preserve">
+    <value>btnExecute</value>
+  </data>
+  <data name=">>btnExecute.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnExecute.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>btnExecute.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="label5.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label5.Location" type="System.Drawing.Point, System.Drawing">
+    <value>97, 400</value>
+  </data>
+  <data name="label5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>42, 13</value>
+  </data>
+  <data name="label5.TabIndex" type="System.Int32, mscorlib">
+    <value>4</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Results</value>
+  </data>
+  <data name=">>label5.Name" xml:space="preserve">
+    <value>label5</value>
+  </data>
+  <data name=">>label5.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label5.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>label5.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="numResults.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="numResults.Location" type="System.Drawing.Point, System.Drawing">
+    <value>143, 398</value>
+  </data>
+  <data name="numResults.Size" type="System.Drawing.Size, System.Drawing">
+    <value>104, 20</value>
+  </data>
+  <data name="numResults.TabIndex" type="System.Int32, mscorlib">
+    <value>5</value>
+  </data>
+  <data name=">>numResults.Name" xml:space="preserve">
+    <value>numResults</value>
+  </data>
+  <data name=">>numResults.Type" xml:space="preserve">
+    <value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>numResults.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>numResults.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+    <value>6, 13</value>
+  </data>
+  <data name="$this.Size" type="System.Drawing.Size, System.Drawing">
+    <value>266, 431</value>
+  </data>
+  <data name=">>$this.Name" xml:space="preserve">
+    <value>MgQueryControlImpl</value>
+  </data>
+  <data name=">>$this.Type" xml:space="preserve">
+    <value>OSGeo.MapGuide.Viewer.MgControlView, OSGeo.MapGuide.Viewer, Version=2.4.0.6971, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f</value>
+  </data>
 </root>
\ No newline at end of file

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgQueryResultsDialog.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgQueryResultsDialog.Designer.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgQueryResultsDialog.Designer.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -28,6 +28,7 @@
         /// </summary>
         private void InitializeComponent()
         {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MgQueryResultsDialog));
             this.toolStrip1 = new System.Windows.Forms.ToolStrip();
             this.btnSelect = new System.Windows.Forms.ToolStripButton();
             this.btnZoom = new System.Windows.Forms.ToolStripButton();
@@ -45,58 +46,43 @@
             this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
             this.btnSelect,
             this.btnZoom});
-            this.toolStrip1.Location = new System.Drawing.Point(0, 0);
+            resources.ApplyResources(this.toolStrip1, "toolStrip1");
             this.toolStrip1.Name = "toolStrip1";
-            this.toolStrip1.Size = new System.Drawing.Size(904, 25);
-            this.toolStrip1.TabIndex = 0;
-            this.toolStrip1.Text = "toolStrip1";
             // 
             // btnSelect
             // 
-            this.btnSelect.Enabled = false;
+            resources.ApplyResources(this.btnSelect, "btnSelect");
             this.btnSelect.Image = global::OSGeo.MapGuide.Viewer.Properties.Resources.select_features;
-            this.btnSelect.ImageTransparentColor = System.Drawing.Color.Magenta;
             this.btnSelect.Name = "btnSelect";
-            this.btnSelect.Size = new System.Drawing.Size(58, 22);
-            this.btnSelect.Text = "Select";
             this.btnSelect.Click += new System.EventHandler(this.btnSelect_Click);
             // 
             // btnZoom
             // 
-            this.btnZoom.Enabled = false;
+            resources.ApplyResources(this.btnZoom, "btnZoom");
             this.btnZoom.Image = global::OSGeo.MapGuide.Viewer.Properties.Resources.search;
-            this.btnZoom.ImageTransparentColor = System.Drawing.Color.Magenta;
             this.btnZoom.Name = "btnZoom";
-            this.btnZoom.Size = new System.Drawing.Size(59, 22);
-            this.btnZoom.Text = "Zoom";
             this.btnZoom.Click += new System.EventHandler(this.btnZoom_Click);
             // 
             // statusStrip1
             // 
             this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
             this.lblResults});
-            this.statusStrip1.Location = new System.Drawing.Point(0, 302);
+            resources.ApplyResources(this.statusStrip1, "statusStrip1");
             this.statusStrip1.Name = "statusStrip1";
-            this.statusStrip1.Size = new System.Drawing.Size(904, 22);
-            this.statusStrip1.TabIndex = 1;
-            this.statusStrip1.Text = "statusStrip1";
             // 
             // lblResults
             // 
             this.lblResults.Name = "lblResults";
-            this.lblResults.Size = new System.Drawing.Size(0, 17);
+            resources.ApplyResources(this.lblResults, "lblResults");
             // 
             // grdResults
             // 
             this.grdResults.AllowUserToAddRows = false;
             this.grdResults.AllowUserToDeleteRows = false;
             this.grdResults.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
-            this.grdResults.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.grdResults.Location = new System.Drawing.Point(0, 25);
+            resources.ApplyResources(this.grdResults, "grdResults");
             this.grdResults.Name = "grdResults";
             this.grdResults.ReadOnly = true;
-            this.grdResults.Size = new System.Drawing.Size(904, 277);
-            this.grdResults.TabIndex = 2;
             this.grdResults.SelectionChanged += new System.EventHandler(this.grdResults_SelectionChanged);
             // 
             // bgGridLoader
@@ -108,16 +94,13 @@
             // 
             // MgQueryResultsDialog
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            resources.ApplyResources(this, "$this");
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-            this.ClientSize = new System.Drawing.Size(904, 324);
             this.Controls.Add(this.grdResults);
             this.Controls.Add(this.statusStrip1);
             this.Controls.Add(this.toolStrip1);
             this.Name = "MgQueryResultsDialog";
             this.ShowIcon = false;
-            this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
-            this.Text = "Query Results";
             this.TopMost = true;
             this.toolStrip1.ResumeLayout(false);
             this.toolStrip1.PerformLayout();

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgQueryResultsDialog.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgQueryResultsDialog.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgQueryResultsDialog.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -189,7 +189,7 @@
 
         private void bgGridLoader_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
         {
-            lblResults.Text = grdResults.Rows.Count + " results";
+            lblResults.Text = string.Format(Strings.CountResults, grdResults.Rows.Count);
         }
 
         static DateTime ToClrDateTime(MgDateTime dt)
@@ -305,7 +305,7 @@
             int idx = Array.IndexOf(_columns, _geomProp);
             if (idx < 0)
             {
-                MessageBox.Show("Could not find the geoemtry property: " + _geomProp);
+                MessageBox.Show(string.Format(Strings.ErrorGeometryPropertyNotFound, _geomProp));
                 return;
             }
 

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgQueryResultsDialog.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgQueryResultsDialog.resx	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgQueryResultsDialog.resx	2012-09-17 13:40:40 UTC (rev 7019)
@@ -120,10 +120,157 @@
   <metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
+  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="btnSelect.Enabled" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="btnSelect.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
+    <value>Magenta</value>
+  </data>
+  <data name="btnSelect.Size" type="System.Drawing.Size, System.Drawing">
+    <value>58, 22</value>
+  </data>
+  <data name="btnSelect.Text" xml:space="preserve">
+    <value>Select</value>
+  </data>
+  <data name="btnZoom.Enabled" type="System.Boolean, mscorlib">
+    <value>False</value>
+  </data>
+  <data name="btnZoom.ImageTransparentColor" type="System.Drawing.Color, System.Drawing">
+    <value>Magenta</value>
+  </data>
+  <data name="btnZoom.Size" type="System.Drawing.Size, System.Drawing">
+    <value>59, 22</value>
+  </data>
+  <data name="btnZoom.Text" xml:space="preserve">
+    <value>Zoom</value>
+  </data>
+  <data name="toolStrip1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 0</value>
+  </data>
+  <data name="toolStrip1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>904, 25</value>
+  </data>
+  <data name="toolStrip1.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="toolStrip1.Text" xml:space="preserve">
+    <value>toolStrip1</value>
+  </data>
+  <data name=">>toolStrip1.Name" xml:space="preserve">
+    <value>toolStrip1</value>
+  </data>
+  <data name=">>toolStrip1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>toolStrip1.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>toolStrip1.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
   <metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>122, 17</value>
   </metadata>
+  <data name="lblResults.Size" type="System.Drawing.Size, System.Drawing">
+    <value>0, 17</value>
+  </data>
+  <data name="statusStrip1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 302</value>
+  </data>
+  <data name="statusStrip1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>904, 22</value>
+  </data>
+  <data name="statusStrip1.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name="statusStrip1.Text" xml:space="preserve">
+    <value>statusStrip1</value>
+  </data>
+  <data name=">>statusStrip1.Name" xml:space="preserve">
+    <value>statusStrip1</value>
+  </data>
+  <data name=">>statusStrip1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.StatusStrip, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>statusStrip1.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>statusStrip1.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="grdResults.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Fill</value>
+  </data>
+  <data name="grdResults.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 25</value>
+  </data>
+  <data name="grdResults.Size" type="System.Drawing.Size, System.Drawing">
+    <value>904, 277</value>
+  </data>
+  <data name="grdResults.TabIndex" type="System.Int32, mscorlib">
+    <value>2</value>
+  </data>
+  <data name=">>grdResults.Name" xml:space="preserve">
+    <value>grdResults</value>
+  </data>
+  <data name=">>grdResults.Type" xml:space="preserve">
+    <value>System.Windows.Forms.DataGridView, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>grdResults.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>grdResults.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
   <metadata name="bgGridLoader.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>238, 17</value>
   </metadata>
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+    <value>6, 13</value>
+  </data>
+  <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
+    <value>904, 324</value>
+  </data>
+  <data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
+    <value>CenterParent</value>
+  </data>
+  <data name="$this.Text" xml:space="preserve">
+    <value>Query Results</value>
+  </data>
+  <data name=">>btnSelect.Name" xml:space="preserve">
+    <value>btnSelect</value>
+  </data>
+  <data name=">>btnSelect.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnZoom.Name" xml:space="preserve">
+    <value>btnZoom</value>
+  </data>
+  <data name=">>btnZoom.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripButton, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>lblResults.Name" xml:space="preserve">
+    <value>lblResults</value>
+  </data>
+  <data name=">>lblResults.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ToolStripStatusLabel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>bgGridLoader.Name" xml:space="preserve">
+    <value>bgGridLoader</value>
+  </data>
+  <data name=">>bgGridLoader.Type" xml:space="preserve">
+    <value>System.ComponentModel.BackgroundWorker, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>$this.Name" xml:space="preserve">
+    <value>MgQueryResultsDialog</value>
+  </data>
+  <data name=">>$this.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Form, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
 </root>
\ No newline at end of file

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgReadOnlyStream.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgReadOnlyStream.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgReadOnlyStream.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -213,7 +213,7 @@
         public override void Rewind()
         {
             if (!CanRewind)
-                throw new InvalidOperationException("This stream is not rewindable"); //LOCALIZEME
+                throw new InvalidOperationException(Strings.ErrorStreamNotRewindable);
 
             _reader.Rewind();
         }

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgTaskPane.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgTaskPane.Designer.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgTaskPane.Designer.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -28,6 +28,7 @@
         /// </summary>
         private void InitializeComponent()
         {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MgTaskPane));
             this.rootContainer = new System.Windows.Forms.Panel();
             this.panel1 = new System.Windows.Forms.Panel();
             this.lblTitle = new System.Windows.Forms.Label();
@@ -36,44 +37,30 @@
             // 
             // rootContainer
             // 
-            this.rootContainer.AutoScroll = true;
-            this.rootContainer.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.rootContainer.Location = new System.Drawing.Point(0, 26);
+            resources.ApplyResources(this.rootContainer, "rootContainer");
             this.rootContainer.Name = "rootContainer";
-            this.rootContainer.Size = new System.Drawing.Size(263, 513);
-            this.rootContainer.TabIndex = 1;
             // 
             // panel1
             // 
             this.panel1.BackColor = System.Drawing.SystemColors.ActiveCaption;
             this.panel1.Controls.Add(this.lblTitle);
-            this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
-            this.panel1.Location = new System.Drawing.Point(0, 0);
+            resources.ApplyResources(this.panel1, "panel1");
             this.panel1.Name = "panel1";
-            this.panel1.Size = new System.Drawing.Size(263, 26);
-            this.panel1.TabIndex = 2;
             // 
             // lblTitle
             // 
             this.lblTitle.BackColor = System.Drawing.Color.DarkGray;
-            this.lblTitle.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.lblTitle.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            resources.ApplyResources(this.lblTitle, "lblTitle");
             this.lblTitle.ForeColor = System.Drawing.SystemColors.ActiveCaptionText;
-            this.lblTitle.Location = new System.Drawing.Point(0, 0);
             this.lblTitle.Name = "lblTitle";
-            this.lblTitle.Size = new System.Drawing.Size(263, 26);
-            this.lblTitle.TabIndex = 0;
-            this.lblTitle.Text = "Task Pane";
-            this.lblTitle.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
             // 
             // MgTaskPane
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            resources.ApplyResources(this, "$this");
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.Controls.Add(this.rootContainer);
             this.Controls.Add(this.panel1);
             this.Name = "MgTaskPane";
-            this.Size = new System.Drawing.Size(263, 539);
             this.panel1.ResumeLayout(false);
             this.ResumeLayout(false);
 

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgTaskPane.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgTaskPane.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgTaskPane.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -36,7 +36,7 @@
             if (mgc != null)
                 lblTitle.Text = mgc.Title;
             else
-                lblTitle.Text = Properties.Resources.TextTaskPane;
+                lblTitle.Text = Strings.TextTaskPane;
         }
 
         protected override void OnLoad(EventArgs e)
@@ -57,7 +57,7 @@
         internal void SetInitialComponent(MgViewerComponent cmp)
         {
             if (cmp.Target != MgViewerTarget.TaskPane)
-                throw new InvalidOperationException("The specified component's target is not the Task Pane");
+                throw new InvalidOperationException(Strings.ErrorComponentTargetNotTaskPane);
             this.InitialTask = cmp.CreateControl();
         }
     }

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgTaskPane.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgTaskPane.resx	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgTaskPane.resx	2012-09-17 13:40:40 UTC (rev 7019)
@@ -117,4 +117,106 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="rootContainer.AutoScroll" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="rootContainer.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Fill</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="rootContainer.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 26</value>
+  </data>
+  <data name="rootContainer.Size" type="System.Drawing.Size, System.Drawing">
+    <value>263, 513</value>
+  </data>
+  <data name="rootContainer.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name=">>rootContainer.Name" xml:space="preserve">
+    <value>rootContainer</value>
+  </data>
+  <data name=">>rootContainer.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>rootContainer.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>rootContainer.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="lblTitle.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Fill</value>
+  </data>
+  <data name="lblTitle.Font" type="System.Drawing.Font, System.Drawing">
+    <value>Microsoft Sans Serif, 9pt, style=Bold</value>
+  </data>
+  <data name="lblTitle.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 0</value>
+  </data>
+  <data name="lblTitle.Size" type="System.Drawing.Size, System.Drawing">
+    <value>263, 26</value>
+  </data>
+  <data name="lblTitle.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="lblTitle.Text" xml:space="preserve">
+    <value>Task Pane</value>
+  </data>
+  <data name="lblTitle.TextAlign" type="System.Drawing.ContentAlignment, System.Drawing">
+    <value>MiddleLeft</value>
+  </data>
+  <data name=">>lblTitle.Name" xml:space="preserve">
+    <value>lblTitle</value>
+  </data>
+  <data name=">>lblTitle.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>lblTitle.Parent" xml:space="preserve">
+    <value>panel1</value>
+  </data>
+  <data name=">>lblTitle.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Top</value>
+  </data>
+  <data name="panel1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 0</value>
+  </data>
+  <data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>263, 26</value>
+  </data>
+  <data name="panel1.TabIndex" type="System.Int32, mscorlib">
+    <value>2</value>
+  </data>
+  <data name=">>panel1.Name" xml:space="preserve">
+    <value>panel1</value>
+  </data>
+  <data name=">>panel1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>panel1.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>panel1.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+    <value>6, 13</value>
+  </data>
+  <data name="$this.Size" type="System.Drawing.Size, System.Drawing">
+    <value>263, 539</value>
+  </data>
+  <data name=">>$this.Name" xml:space="preserve">
+    <value>MgTaskPane</value>
+  </data>
+  <data name=">>$this.Type" xml:space="preserve">
+    <value>System.Windows.Forms.UserControl, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
 </root>
\ No newline at end of file

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgThemeComponent.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgThemeComponent.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgThemeComponent.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -11,7 +11,7 @@
         public MgThemeComponent()
         {
             this.Icon = Properties.Resources.lc_theme;
-            this.Label = this.ToolTipText = Properties.Resources.TitleTheme;
+            this.Label = this.ToolTipText = Strings.TitleTheme;
         }
 
         protected override MgControlView CreateControlView()

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgThemeControlImpl.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgThemeControlImpl.Designer.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgThemeControlImpl.Designer.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -28,6 +28,7 @@
         /// </summary>
         private void InitializeComponent()
         {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MgThemeControlImpl));
             this.groupBox1 = new System.Windows.Forms.GroupBox();
             this.txtThemeName = new System.Windows.Forms.TextBox();
             this.label2 = new System.Windows.Forms.Label();
@@ -78,53 +79,33 @@
             this.groupBox1.Controls.Add(this.label2);
             this.groupBox1.Controls.Add(this.cmbLayer);
             this.groupBox1.Controls.Add(this.label1);
-            this.groupBox1.Dock = System.Windows.Forms.DockStyle.Top;
-            this.groupBox1.Location = new System.Drawing.Point(0, 0);
+            resources.ApplyResources(this.groupBox1, "groupBox1");
             this.groupBox1.Name = "groupBox1";
-            this.groupBox1.Size = new System.Drawing.Size(269, 112);
-            this.groupBox1.TabIndex = 0;
             this.groupBox1.TabStop = false;
-            this.groupBox1.Text = "General";
             // 
             // txtThemeName
             // 
-            this.txtThemeName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
-            this.txtThemeName.Location = new System.Drawing.Point(15, 79);
+            resources.ApplyResources(this.txtThemeName, "txtThemeName");
             this.txtThemeName.Name = "txtThemeName";
-            this.txtThemeName.Size = new System.Drawing.Size(237, 20);
-            this.txtThemeName.TabIndex = 3;
             // 
             // label2
             // 
-            this.label2.AutoSize = true;
-            this.label2.Location = new System.Drawing.Point(12, 63);
+            resources.ApplyResources(this.label2, "label2");
             this.label2.Name = "label2";
-            this.label2.Size = new System.Drawing.Size(71, 13);
-            this.label2.TabIndex = 2;
-            this.label2.Text = "Theme Name";
             // 
             // cmbLayer
             // 
-            this.cmbLayer.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
+            resources.ApplyResources(this.cmbLayer, "cmbLayer");
             this.cmbLayer.DisplayMember = "Name";
             this.cmbLayer.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
             this.cmbLayer.FormattingEnabled = true;
-            this.cmbLayer.Location = new System.Drawing.Point(15, 35);
             this.cmbLayer.Name = "cmbLayer";
-            this.cmbLayer.Size = new System.Drawing.Size(237, 21);
-            this.cmbLayer.TabIndex = 1;
             this.cmbLayer.SelectedIndexChanged += new System.EventHandler(this.cmbLayer_SelectedIndexChanged);
             // 
             // label1
             // 
-            this.label1.AutoSize = true;
-            this.label1.Location = new System.Drawing.Point(12, 19);
+            resources.ApplyResources(this.label1, "label1");
             this.label1.Name = "label1";
-            this.label1.Size = new System.Drawing.Size(57, 13);
-            this.label1.TabIndex = 0;
-            this.label1.Text = "Map Layer";
             // 
             // groupBox2
             // 
@@ -140,132 +121,80 @@
             this.groupBox2.Controls.Add(this.label5);
             this.groupBox2.Controls.Add(this.label4);
             this.groupBox2.Controls.Add(this.label3);
-            this.groupBox2.Dock = System.Windows.Forms.DockStyle.Top;
-            this.groupBox2.Location = new System.Drawing.Point(0, 112);
+            resources.ApplyResources(this.groupBox2, "groupBox2");
             this.groupBox2.Name = "groupBox2";
-            this.groupBox2.Size = new System.Drawing.Size(269, 276);
-            this.groupBox2.TabIndex = 1;
             this.groupBox2.TabStop = false;
-            this.groupBox2.Text = "Theme Conditions";
             // 
             // numRules
             // 
-            this.numRules.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
-            this.numRules.Location = new System.Drawing.Point(110, 198);
+            resources.ApplyResources(this.numRules, "numRules");
             this.numRules.Name = "numRules";
-            this.numRules.Size = new System.Drawing.Size(141, 20);
-            this.numRules.TabIndex = 12;
             // 
             // cmbScaleRange
             // 
-            this.cmbScaleRange.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
+            resources.ApplyResources(this.cmbScaleRange, "cmbScaleRange");
             this.cmbScaleRange.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
             this.cmbScaleRange.FormattingEnabled = true;
-            this.cmbScaleRange.Location = new System.Drawing.Point(15, 241);
             this.cmbScaleRange.Name = "cmbScaleRange";
-            this.cmbScaleRange.Size = new System.Drawing.Size(237, 21);
-            this.cmbScaleRange.TabIndex = 11;
             // 
             // label8
             // 
-            this.label8.AutoSize = true;
-            this.label8.Location = new System.Drawing.Point(12, 225);
+            resources.ApplyResources(this.label8, "label8");
             this.label8.Name = "label8";
-            this.label8.Size = new System.Drawing.Size(69, 13);
-            this.label8.TabIndex = 10;
-            this.label8.Text = "Scale Range";
             // 
             // txtMax
             // 
-            this.txtMax.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
-            this.txtMax.Location = new System.Drawing.Point(15, 123);
+            resources.ApplyResources(this.txtMax, "txtMax");
             this.txtMax.Name = "txtMax";
-            this.txtMax.Size = new System.Drawing.Size(237, 20);
-            this.txtMax.TabIndex = 9;
             // 
             // txtMin
             // 
-            this.txtMin.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
-            this.txtMin.Location = new System.Drawing.Point(15, 79);
+            resources.ApplyResources(this.txtMin, "txtMin");
             this.txtMin.Name = "txtMin";
-            this.txtMin.Size = new System.Drawing.Size(237, 20);
-            this.txtMin.TabIndex = 8;
             // 
             // cmbDistribution
             // 
-            this.cmbDistribution.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
+            resources.ApplyResources(this.cmbDistribution, "cmbDistribution");
             this.cmbDistribution.DisplayMember = "Value";
             this.cmbDistribution.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
             this.cmbDistribution.FormattingEnabled = true;
-            this.cmbDistribution.Location = new System.Drawing.Point(15, 167);
             this.cmbDistribution.Name = "cmbDistribution";
-            this.cmbDistribution.Size = new System.Drawing.Size(237, 21);
-            this.cmbDistribution.TabIndex = 7;
             this.cmbDistribution.ValueMember = "Key";
             this.cmbDistribution.SelectedIndexChanged += new System.EventHandler(this.cmbDistribution_SelectedIndexChanged);
             // 
             // cmbProperty
             // 
-            this.cmbProperty.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
+            resources.ApplyResources(this.cmbProperty, "cmbProperty");
             this.cmbProperty.DisplayMember = "Name";
             this.cmbProperty.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
             this.cmbProperty.FormattingEnabled = true;
-            this.cmbProperty.Location = new System.Drawing.Point(15, 36);
             this.cmbProperty.Name = "cmbProperty";
-            this.cmbProperty.Size = new System.Drawing.Size(237, 21);
-            this.cmbProperty.TabIndex = 6;
             this.cmbProperty.SelectedIndexChanged += new System.EventHandler(this.cmbProperty_SelectedIndexChanged);
             // 
             // label7
             // 
-            this.label7.AutoSize = true;
-            this.label7.Location = new System.Drawing.Point(12, 200);
+            resources.ApplyResources(this.label7, "label7");
             this.label7.Name = "label7";
-            this.label7.Size = new System.Drawing.Size(86, 13);
-            this.label7.TabIndex = 4;
-            this.label7.Text = "Number of Rules";
             // 
             // label6
             // 
-            this.label6.AutoSize = true;
-            this.label6.Location = new System.Drawing.Point(12, 151);
+            resources.ApplyResources(this.label6, "label6");
             this.label6.Name = "label6";
-            this.label6.Size = new System.Drawing.Size(59, 13);
-            this.label6.TabIndex = 3;
-            this.label6.Text = "Distribution";
             // 
             // label5
             // 
-            this.label5.AutoSize = true;
-            this.label5.Location = new System.Drawing.Point(12, 107);
+            resources.ApplyResources(this.label5, "label5");
             this.label5.Name = "label5";
-            this.label5.Size = new System.Drawing.Size(27, 13);
-            this.label5.TabIndex = 2;
-            this.label5.Text = "Max";
             // 
             // label4
             // 
-            this.label4.AutoSize = true;
-            this.label4.Location = new System.Drawing.Point(12, 63);
+            resources.ApplyResources(this.label4, "label4");
             this.label4.Name = "label4";
-            this.label4.Size = new System.Drawing.Size(24, 13);
-            this.label4.TabIndex = 1;
-            this.label4.Text = "Min";
             // 
             // label3
             // 
-            this.label3.AutoSize = true;
-            this.label3.Location = new System.Drawing.Point(12, 20);
+            resources.ApplyResources(this.label3, "label3");
             this.label3.Name = "label3";
-            this.label3.Size = new System.Drawing.Size(46, 13);
-            this.label3.TabIndex = 0;
-            this.label3.Text = "Property";
             // 
             // groupBox3
             // 
@@ -285,177 +214,118 @@
             this.groupBox3.Controls.Add(this.label10);
             this.groupBox3.Controls.Add(this.numFillTransparency);
             this.groupBox3.Controls.Add(this.label9);
-            this.groupBox3.Dock = System.Windows.Forms.DockStyle.Top;
-            this.groupBox3.Location = new System.Drawing.Point(0, 388);
+            resources.ApplyResources(this.groupBox3, "groupBox3");
             this.groupBox3.Name = "groupBox3";
-            this.groupBox3.Size = new System.Drawing.Size(269, 162);
-            this.groupBox3.TabIndex = 2;
             this.groupBox3.TabStop = false;
-            this.groupBox3.Text = "Style Ramp";
             // 
             // btnToBorderColor
             // 
-            this.btnToBorderColor.Location = new System.Drawing.Point(222, 123);
+            resources.ApplyResources(this.btnToBorderColor, "btnToBorderColor");
             this.btnToBorderColor.Name = "btnToBorderColor";
-            this.btnToBorderColor.Size = new System.Drawing.Size(29, 23);
-            this.btnToBorderColor.TabIndex = 13;
-            this.btnToBorderColor.Text = "...";
             this.btnToBorderColor.UseVisualStyleBackColor = true;
             this.btnToBorderColor.Click += new System.EventHandler(this.btnToBorderColor_Click);
             // 
             // pnlToBorderColor
             // 
             this.pnlToBorderColor.BackColor = System.Drawing.Color.Black;
-            this.pnlToBorderColor.Location = new System.Drawing.Point(178, 123);
+            resources.ApplyResources(this.pnlToBorderColor, "pnlToBorderColor");
             this.pnlToBorderColor.Name = "pnlToBorderColor";
-            this.pnlToBorderColor.Size = new System.Drawing.Size(38, 23);
-            this.pnlToBorderColor.TabIndex = 12;
             // 
             // btnFromBorderColor
             // 
-            this.btnFromBorderColor.Location = new System.Drawing.Point(110, 123);
+            resources.ApplyResources(this.btnFromBorderColor, "btnFromBorderColor");
             this.btnFromBorderColor.Name = "btnFromBorderColor";
-            this.btnFromBorderColor.Size = new System.Drawing.Size(29, 23);
-            this.btnFromBorderColor.TabIndex = 11;
-            this.btnFromBorderColor.Text = "...";
             this.btnFromBorderColor.UseVisualStyleBackColor = true;
             this.btnFromBorderColor.Click += new System.EventHandler(this.btnFromBorderColor_Click);
             // 
             // btnToFillColor
             // 
-            this.btnToFillColor.Location = new System.Drawing.Point(222, 71);
+            resources.ApplyResources(this.btnToFillColor, "btnToFillColor");
             this.btnToFillColor.Name = "btnToFillColor";
-            this.btnToFillColor.Size = new System.Drawing.Size(29, 23);
-            this.btnToFillColor.TabIndex = 11;
-            this.btnToFillColor.Text = "...";
             this.btnToFillColor.UseVisualStyleBackColor = true;
             this.btnToFillColor.Click += new System.EventHandler(this.btnToFillColor_Click);
             // 
             // pnlFromBorderColor
             // 
             this.pnlFromBorderColor.BackColor = System.Drawing.Color.Black;
-            this.pnlFromBorderColor.Location = new System.Drawing.Point(66, 123);
+            resources.ApplyResources(this.pnlFromBorderColor, "pnlFromBorderColor");
             this.pnlFromBorderColor.Name = "pnlFromBorderColor";
-            this.pnlFromBorderColor.Size = new System.Drawing.Size(38, 23);
-            this.pnlFromBorderColor.TabIndex = 10;
             // 
             // btnFromFillColor
             // 
-            this.btnFromFillColor.Location = new System.Drawing.Point(110, 71);
+            resources.ApplyResources(this.btnFromFillColor, "btnFromFillColor");
             this.btnFromFillColor.Name = "btnFromFillColor";
-            this.btnFromFillColor.Size = new System.Drawing.Size(29, 23);
-            this.btnFromFillColor.TabIndex = 9;
-            this.btnFromFillColor.Text = "...";
             this.btnFromFillColor.UseVisualStyleBackColor = true;
             this.btnFromFillColor.Click += new System.EventHandler(this.btnFromFillColor_Click);
             // 
             // pnlToFillColor
             // 
             this.pnlToFillColor.BackColor = System.Drawing.Color.Blue;
-            this.pnlToFillColor.Location = new System.Drawing.Point(178, 71);
+            resources.ApplyResources(this.pnlToFillColor, "pnlToFillColor");
             this.pnlToFillColor.Name = "pnlToFillColor";
-            this.pnlToFillColor.Size = new System.Drawing.Size(38, 23);
-            this.pnlToFillColor.TabIndex = 10;
             // 
             // pnlFromFillColor
             // 
             this.pnlFromFillColor.BackColor = System.Drawing.Color.Red;
-            this.pnlFromFillColor.Location = new System.Drawing.Point(66, 71);
+            resources.ApplyResources(this.pnlFromFillColor, "pnlFromFillColor");
             this.pnlFromFillColor.Name = "pnlFromFillColor";
-            this.pnlFromFillColor.Size = new System.Drawing.Size(38, 23);
-            this.pnlFromFillColor.TabIndex = 8;
             // 
             // label14
             // 
-            this.label14.AutoSize = true;
-            this.label14.Location = new System.Drawing.Point(152, 128);
+            resources.ApplyResources(this.label14, "label14");
             this.label14.Name = "label14";
-            this.label14.Size = new System.Drawing.Size(20, 13);
-            this.label14.TabIndex = 7;
-            this.label14.Text = "To";
             // 
             // label15
             // 
-            this.label15.AutoSize = true;
-            this.label15.Location = new System.Drawing.Point(30, 128);
+            resources.ApplyResources(this.label15, "label15");
             this.label15.Name = "label15";
-            this.label15.Size = new System.Drawing.Size(30, 13);
-            this.label15.TabIndex = 6;
-            this.label15.Text = "From";
             // 
             // label13
             // 
-            this.label13.AutoSize = true;
-            this.label13.Location = new System.Drawing.Point(152, 76);
+            resources.ApplyResources(this.label13, "label13");
             this.label13.Name = "label13";
-            this.label13.Size = new System.Drawing.Size(20, 13);
-            this.label13.TabIndex = 5;
-            this.label13.Text = "To";
             // 
             // label12
             // 
-            this.label12.AutoSize = true;
-            this.label12.Location = new System.Drawing.Point(30, 76);
+            resources.ApplyResources(this.label12, "label12");
             this.label12.Name = "label12";
-            this.label12.Size = new System.Drawing.Size(30, 13);
-            this.label12.TabIndex = 4;
-            this.label12.Text = "From";
             // 
             // label11
             // 
-            this.label11.AutoSize = true;
-            this.label11.Location = new System.Drawing.Point(12, 107);
+            resources.ApplyResources(this.label11, "label11");
             this.label11.Name = "label11";
-            this.label11.Size = new System.Drawing.Size(65, 13);
-            this.label11.TabIndex = 3;
-            this.label11.Text = "Border Color";
             // 
             // label10
             // 
-            this.label10.AutoSize = true;
-            this.label10.Location = new System.Drawing.Point(12, 52);
+            resources.ApplyResources(this.label10, "label10");
             this.label10.Name = "label10";
-            this.label10.Size = new System.Drawing.Size(46, 13);
-            this.label10.TabIndex = 2;
-            this.label10.Text = "Fill Color";
             // 
             // numFillTransparency
             // 
-            this.numFillTransparency.Location = new System.Drawing.Point(123, 25);
+            resources.ApplyResources(this.numFillTransparency, "numFillTransparency");
             this.numFillTransparency.Name = "numFillTransparency";
-            this.numFillTransparency.Size = new System.Drawing.Size(65, 20);
-            this.numFillTransparency.TabIndex = 1;
             // 
             // label9
             // 
-            this.label9.AutoSize = true;
-            this.label9.Location = new System.Drawing.Point(12, 27);
+            resources.ApplyResources(this.label9, "label9");
             this.label9.Name = "label9";
-            this.label9.Size = new System.Drawing.Size(104, 13);
-            this.label9.TabIndex = 0;
-            this.label9.Text = "Fill Transparency (%)";
             // 
             // btnApply
             // 
-            this.btnApply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-            this.btnApply.Location = new System.Drawing.Point(177, 556);
+            resources.ApplyResources(this.btnApply, "btnApply");
             this.btnApply.Name = "btnApply";
-            this.btnApply.Size = new System.Drawing.Size(75, 23);
-            this.btnApply.TabIndex = 3;
-            this.btnApply.Text = "Apply";
             this.btnApply.UseVisualStyleBackColor = true;
             this.btnApply.Click += new System.EventHandler(this.btnApply_Click);
             // 
             // MgThemeControlImpl
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            resources.ApplyResources(this, "$this");
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.Controls.Add(this.btnApply);
             this.Controls.Add(this.groupBox3);
             this.Controls.Add(this.groupBox2);
             this.Controls.Add(this.groupBox1);
             this.Name = "MgThemeControlImpl";
-            this.Size = new System.Drawing.Size(269, 593);
             this.groupBox1.ResumeLayout(false);
             this.groupBox1.PerformLayout();
             this.groupBox2.ResumeLayout(false);

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgThemeControlImpl.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgThemeControlImpl.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgThemeControlImpl.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -23,7 +23,7 @@
         public MgThemeControlImpl(IMapViewer viewer)
         {
             InitializeComponent();
-            this.Title = Properties.Resources.TitleTheme;
+            this.Title = Strings.TitleTheme;
             this.Disposed += new EventHandler(OnDisposed);
             _viewer = viewer;
             _properties = new BindingList<MgDataPropertyDefinition>();
@@ -34,11 +34,11 @@
 
             _distros = new Dictionary<string,string>() 
             {
-                { THEME_INDIVIDUAL, "Individual" },
-                { THEME_EQUAL, "Equal" },
-                { THEME_STDDEV, "Standard Deviation" },
-                { THEME_QUANT, "Quantile" },
-                { THEME_JENK, "Jenks (Natural Breaks)"}
+                { THEME_INDIVIDUAL, Strings.ThemeIndividual },
+                { THEME_EQUAL, Strings.ThemeEqual },
+                { THEME_STDDEV, Strings.ThemeStandardDeviation },
+                { THEME_QUANT, Strings.ThemeQuantile },
+                { THEME_JENK, Strings.ThemeJenks }
             };
 
             cmbLayer.DataSource = _layers;
@@ -126,31 +126,31 @@
 
             XmlDocument doc = new XmlDocument();
             doc.LoadXml(byteReader.ToString());
-            XmlNodeList nodeList = doc.GetElementsByTagName("VectorScaleRange");
+            XmlNodeList nodeList = doc.GetElementsByTagName("VectorScaleRange"); //NOXLATE
 
             var scaleRanges = new List<string>();
             foreach (XmlElement node in nodeList)
             {
                 String range = null;
 
-                XmlNodeList minNodeList = node.GetElementsByTagName("MinScale");
+                XmlNodeList minNodeList = node.GetElementsByTagName("MinScale"); //NOXLATE
                 if (minNodeList.Count > 0)
                 {
                     range = minNodeList.Item(0).FirstChild.Value;
                 }
                 else
                 {
-                    range = "0";
+                    range = "0"; //NOXLATE
                 }
 
-                XmlNodeList maxNodeList = node.GetElementsByTagName("MaxScale");
+                XmlNodeList maxNodeList = node.GetElementsByTagName("MaxScale"); //NOXLATE
                 if (maxNodeList.Count > 0)
                 {
-                    range = range + " - " + maxNodeList.Item(0).FirstChild.Value;
+                    range = range + " - " + maxNodeList.Item(0).FirstChild.Value; //NOXLATE
                 }
                 else
                 {
-                    range = range + " - Infinity";
+                    range = range + " - " + Strings.Infinity; //NOXLATE
                 }
 
                 scaleRanges.Add(range);
@@ -238,7 +238,7 @@
             };
             string name = ApplyTheme(tp);
             _viewer.RefreshMap();
-            MessageBox.Show("Theme layer (" + name + ") created");
+            MessageBox.Show(string.Format(Strings.MsgThemeLayerCreated, name));
         }
 
         private void SetPropertyMinMaxCount(MgLayerBase layer, MgDataPropertyDefinition prop)
@@ -321,11 +321,11 @@
             numRules.Value = featureCount = count;
         }
 
-        const string THEME_INDIVIDUAL = "INDIV_DIST";
-        const string THEME_EQUAL = "EQUAL_DIST";
-        const string THEME_STDDEV = "STDEV_DIST";
-        const string THEME_QUANT = "QUANT_DIST";
-        const string THEME_JENK = "JENK_DIST";
+        const string THEME_INDIVIDUAL = "INDIV_DIST"; //NOXLATE
+        const string THEME_EQUAL = "EQUAL_DIST"; //NOXLATE
+        const string THEME_STDDEV = "STDEV_DIST"; //NOXLATE
+        const string THEME_QUANT = "QUANT_DIST"; //NOXLATE
+        const string THEME_JENK = "JENK_DIST"; //NOXLATE
 
         class ThemeParams
         {
@@ -363,14 +363,14 @@
             XmlDocument doc = new XmlDocument();
             String xmlLayerDef = byteReader.ToString();
             doc.LoadXml(xmlLayerDef);
-            XmlNodeList nodeList = doc.GetElementsByTagName("VectorScaleRange");
+            XmlNodeList nodeList = doc.GetElementsByTagName("VectorScaleRange"); //NOXLATE
 
             XmlElement vectorScaleRangecElement = (XmlElement)nodeList.Item(themeParams.scaleRangeIndex);
-            XmlElement areaTypeStyle = (XmlElement)vectorScaleRangecElement.GetElementsByTagName("AreaTypeStyle").Item(0);
+            XmlElement areaTypeStyle = (XmlElement)vectorScaleRangecElement.GetElementsByTagName("AreaTypeStyle").Item(0); //NOXLATE
 
             // Remove any existing <AreaRule> elements.
 
-            XmlNodeList areaRuleList = areaTypeStyle.GetElementsByTagName("AreaRule");
+            XmlNodeList areaRuleList = areaTypeStyle.GetElementsByTagName("AreaRule"); //NOXLATE
             int count = areaRuleList.Count;
             for (int i = 0; i < count; i++)
             {
@@ -394,23 +394,21 @@
 
             if (THEME_INDIVIDUAL == themeParams.distro)
             {
-                //aggregateOptions.AddFeatureProperty(themeParams.property.Name);
-                //aggregateOptions.SelectDistinct(true);
-                aggregateOptions.AddComputedProperty("THEME_VALUE", "UNIQUE(\"" + themeParams.property.Name + "\")");
+                aggregateOptions.AddComputedProperty("THEME_VALUE", "UNIQUE(\"" + themeParams.property.Name + "\")"); //NOXLATE
 
                 MgDataReader dataReader = featureService.SelectAggregate(resId, themeParams.layer.GetFeatureClassName(), aggregateOptions);
                 while (dataReader.ReadNext())
                 {
-                    value = Util.GetFeaturePropertyValue(dataReader, "THEME_VALUE"); // themeParams.property.Name);
+                    value = Util.GetFeaturePropertyValue(dataReader, "THEME_VALUE"); //NOXLATE
 
-                    filterText = """ + themeParams.property.Name + "" = ";
+                    filterText = """ + themeParams.property.Name + "" = "; //NOXLATE
                     if (themeParams.property.DataType == MgPropertyType.String)
-                        filterText = filterText + "'" + value + "'";
+                        filterText = filterText + "'" + value + "'"; //NOXLATE
                     else
                         filterText = filterText + value;
 
                     areaRuleXML = String.Format(areaRuleTemplate,
-                                                themeParams.property.Name + ":" + value,
+                                                themeParams.property.Name + ":" + value, //NOXLATE
                                                 filterText,
                                                 Util.InterpolateColor(portion, themeParams.fillFrom, themeParams.fillTo, themeParams.fillTrans),
                                                 Util.InterpolateColor(portion, themeParams.borderFrom, themeParams.borderTo, 0));
@@ -427,26 +425,26 @@
             {
                 var values = new List<string>();
 
-                var expr = themeParams.distro + "(\"" + themeParams.property.Name + "\"," + themeParams.numRules + "," + themeParams.minValue + "," + themeParams.maxValue + ")";
-                aggregateOptions.AddComputedProperty("THEME_VALUE", expr);
+                var expr = themeParams.distro + "(\"" + themeParams.property.Name + "\"," + themeParams.numRules + "," + themeParams.minValue + "," + themeParams.maxValue + ")"; //NOXLATE
+                aggregateOptions.AddComputedProperty("THEME_VALUE", expr); //NOXLATE
                 MgDataReader dataReader = featureService.SelectAggregate(resId, themeParams.layer.GetFeatureClassName(), aggregateOptions);
                 while (dataReader.ReadNext())
                 {
-                    value = Util.GetFeaturePropertyValue(dataReader, "THEME_VALUE");
+                    value = Util.GetFeaturePropertyValue(dataReader, "THEME_VALUE"); //NOXLATE
                     values.Add(value);
                 }
                 dataReader.Close();
 
                 for (int i = 0; i < values.Count - 1; i++)
                 {
-                    filterText = """ + themeParams.property.Name + "" >= " + values[i] + " AND "" + themeParams.property.Name;
+                    filterText = """ + themeParams.property.Name + "" >= " + values[i] + " AND "" + themeParams.property.Name; //NOXLATE
                     if (i == values.Count - 1)
-                        filterText = filterText + "" <= " + values[i + 1];
+                        filterText = filterText + "" <= " + values[i + 1]; //NOXLATE
                     else
-                        filterText = filterText + "" < " + values[i + 1];
+                        filterText = filterText + "" < " + values[i + 1]; //NOXLATE
 
                     areaRuleXML = String.Format(areaRuleTemplate,
-                                                themeParams.property.Name + ":" + values[i] + " - " + values[i + 1],
+                                                themeParams.property.Name + ":" + values[i] + " - " + values[i + 1], //NOXLATE
                                                 filterText,
                                                 Util.InterpolateColor(portion, themeParams.fillFrom, themeParams.fillTo, themeParams.fillTrans),
                                                 Util.InterpolateColor(portion, themeParams.borderFrom, themeParams.borderTo, 0));
@@ -466,10 +464,10 @@
             String uniqueName = Util.MakeUniqueLayerName(map, themeParams.layer.Name, themeParams.themeName);
             String legendLabel = themeParams.layer.GetLegendLabel();
             if (!string.IsNullOrEmpty(themeParams.themeName))
-                legendLabel = legendLabel + " (" + themeParams.themeName + ")";
+                legendLabel = legendLabel + " (" + themeParams.themeName + ")"; //NOXLATE
 
-            MgResourceIdentifier layerResId = new MgResourceIdentifier("Session:" + _sessionId + "//" + uniqueName + ".LayerDefinition");
-            resourceService.SetResource(layerResId, new MgByteReader(xmlString, "text/xml"), null);
+            MgResourceIdentifier layerResId = new MgResourceIdentifier("Session:" + _sessionId + "//" + uniqueName + ".LayerDefinition"); //NOXLATE
+            resourceService.SetResource(layerResId, new MgByteReader(xmlString, "text/xml"), null); //NOXLATE
 
             var newLayer = provider.CreateLayer(layerResId);
             newLayer.SetName(uniqueName);

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgThemeControlImpl.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgThemeControlImpl.resx	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgThemeControlImpl.resx	2012-09-17 13:40:40 UTC (rev 7019)
@@ -117,7 +117,937 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="txtThemeName.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="txtThemeName.Location" type="System.Drawing.Point, System.Drawing">
+    <value>15, 79</value>
+  </data>
+  <data name="txtThemeName.Size" type="System.Drawing.Size, System.Drawing">
+    <value>237, 20</value>
+  </data>
+  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="txtThemeName.TabIndex" type="System.Int32, mscorlib">
+    <value>3</value>
+  </data>
+  <data name=">>txtThemeName.Name" xml:space="preserve">
+    <value>txtThemeName</value>
+  </data>
+  <data name=">>txtThemeName.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>txtThemeName.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>txtThemeName.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="label2.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 63</value>
+  </data>
+  <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>71, 13</value>
+  </data>
+  <data name="label2.TabIndex" type="System.Int32, mscorlib">
+    <value>2</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Theme Name</value>
+  </data>
+  <data name=">>label2.Name" xml:space="preserve">
+    <value>label2</value>
+  </data>
+  <data name=">>label2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label2.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>label2.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="cmbLayer.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="cmbLayer.Location" type="System.Drawing.Point, System.Drawing">
+    <value>15, 35</value>
+  </data>
+  <data name="cmbLayer.Size" type="System.Drawing.Size, System.Drawing">
+    <value>237, 21</value>
+  </data>
+  <data name="cmbLayer.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name=">>cmbLayer.Name" xml:space="preserve">
+    <value>cmbLayer</value>
+  </data>
+  <data name=">>cmbLayer.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>cmbLayer.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>cmbLayer.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="label1.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 19</value>
+  </data>
+  <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>57, 13</value>
+  </data>
+  <data name="label1.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Map Layer</value>
+  </data>
+  <data name=">>label1.Name" xml:space="preserve">
+    <value>label1</value>
+  </data>
+  <data name=">>label1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label1.Parent" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>label1.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="groupBox1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Top</value>
+  </data>
+  <data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 0</value>
+  </data>
+  <data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>269, 112</value>
+  </data>
+  <data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="groupBox1.Text" xml:space="preserve">
+    <value>General</value>
+  </data>
+  <data name=">>groupBox1.Name" xml:space="preserve">
+    <value>groupBox1</value>
+  </data>
+  <data name=">>groupBox1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>groupBox1.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>groupBox1.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="numRules.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="numRules.Location" type="System.Drawing.Point, System.Drawing">
+    <value>110, 198</value>
+  </data>
+  <data name="numRules.Size" type="System.Drawing.Size, System.Drawing">
+    <value>141, 20</value>
+  </data>
+  <data name="numRules.TabIndex" type="System.Int32, mscorlib">
+    <value>12</value>
+  </data>
+  <data name=">>numRules.Name" xml:space="preserve">
+    <value>numRules</value>
+  </data>
+  <data name=">>numRules.Type" xml:space="preserve">
+    <value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>numRules.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>numRules.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="cmbScaleRange.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="cmbScaleRange.Location" type="System.Drawing.Point, System.Drawing">
+    <value>15, 241</value>
+  </data>
+  <data name="cmbScaleRange.Size" type="System.Drawing.Size, System.Drawing">
+    <value>237, 21</value>
+  </data>
+  <data name="cmbScaleRange.TabIndex" type="System.Int32, mscorlib">
+    <value>11</value>
+  </data>
+  <data name=">>cmbScaleRange.Name" xml:space="preserve">
+    <value>cmbScaleRange</value>
+  </data>
+  <data name=">>cmbScaleRange.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>cmbScaleRange.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>cmbScaleRange.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="label8.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label8.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 225</value>
+  </data>
+  <data name="label8.Size" type="System.Drawing.Size, System.Drawing">
+    <value>69, 13</value>
+  </data>
+  <data name="label8.TabIndex" type="System.Int32, mscorlib">
+    <value>10</value>
+  </data>
+  <data name="label8.Text" xml:space="preserve">
+    <value>Scale Range</value>
+  </data>
+  <data name=">>label8.Name" xml:space="preserve">
+    <value>label8</value>
+  </data>
+  <data name=">>label8.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label8.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>label8.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="txtMax.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="txtMax.Location" type="System.Drawing.Point, System.Drawing">
+    <value>15, 123</value>
+  </data>
+  <data name="txtMax.Size" type="System.Drawing.Size, System.Drawing">
+    <value>237, 20</value>
+  </data>
+  <data name="txtMax.TabIndex" type="System.Int32, mscorlib">
+    <value>9</value>
+  </data>
+  <data name=">>txtMax.Name" xml:space="preserve">
+    <value>txtMax</value>
+  </data>
+  <data name=">>txtMax.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>txtMax.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>txtMax.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="txtMin.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="txtMin.Location" type="System.Drawing.Point, System.Drawing">
+    <value>15, 79</value>
+  </data>
+  <data name="txtMin.Size" type="System.Drawing.Size, System.Drawing">
+    <value>237, 20</value>
+  </data>
+  <data name="txtMin.TabIndex" type="System.Int32, mscorlib">
+    <value>8</value>
+  </data>
+  <data name=">>txtMin.Name" xml:space="preserve">
+    <value>txtMin</value>
+  </data>
+  <data name=">>txtMin.Type" xml:space="preserve">
+    <value>System.Windows.Forms.TextBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>txtMin.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>txtMin.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
+  <data name="cmbDistribution.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="cmbDistribution.Location" type="System.Drawing.Point, System.Drawing">
+    <value>15, 167</value>
+  </data>
+  <data name="cmbDistribution.Size" type="System.Drawing.Size, System.Drawing">
+    <value>237, 21</value>
+  </data>
+  <data name="cmbDistribution.TabIndex" type="System.Int32, mscorlib">
+    <value>7</value>
+  </data>
+  <data name=">>cmbDistribution.Name" xml:space="preserve">
+    <value>cmbDistribution</value>
+  </data>
+  <data name=">>cmbDistribution.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>cmbDistribution.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>cmbDistribution.ZOrder" xml:space="preserve">
+    <value>5</value>
+  </data>
+  <data name="cmbProperty.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="cmbProperty.Location" type="System.Drawing.Point, System.Drawing">
+    <value>15, 36</value>
+  </data>
+  <data name="cmbProperty.Size" type="System.Drawing.Size, System.Drawing">
+    <value>237, 21</value>
+  </data>
+  <data name="cmbProperty.TabIndex" type="System.Int32, mscorlib">
+    <value>6</value>
+  </data>
+  <data name=">>cmbProperty.Name" xml:space="preserve">
+    <value>cmbProperty</value>
+  </data>
+  <data name=">>cmbProperty.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>cmbProperty.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>cmbProperty.ZOrder" xml:space="preserve">
+    <value>6</value>
+  </data>
+  <data name="label7.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label7.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 200</value>
+  </data>
+  <data name="label7.Size" type="System.Drawing.Size, System.Drawing">
+    <value>86, 13</value>
+  </data>
+  <data name="label7.TabIndex" type="System.Int32, mscorlib">
+    <value>4</value>
+  </data>
+  <data name="label7.Text" xml:space="preserve">
+    <value>Number of Rules</value>
+  </data>
+  <data name=">>label7.Name" xml:space="preserve">
+    <value>label7</value>
+  </data>
+  <data name=">>label7.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label7.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>label7.ZOrder" xml:space="preserve">
+    <value>7</value>
+  </data>
+  <data name="label6.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label6.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 151</value>
+  </data>
+  <data name="label6.Size" type="System.Drawing.Size, System.Drawing">
+    <value>59, 13</value>
+  </data>
+  <data name="label6.TabIndex" type="System.Int32, mscorlib">
+    <value>3</value>
+  </data>
+  <data name="label6.Text" xml:space="preserve">
+    <value>Distribution</value>
+  </data>
+  <data name=">>label6.Name" xml:space="preserve">
+    <value>label6</value>
+  </data>
+  <data name=">>label6.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label6.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>label6.ZOrder" xml:space="preserve">
+    <value>8</value>
+  </data>
+  <data name="label5.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label5.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 107</value>
+  </data>
+  <data name="label5.Size" type="System.Drawing.Size, System.Drawing">
+    <value>27, 13</value>
+  </data>
+  <data name="label5.TabIndex" type="System.Int32, mscorlib">
+    <value>2</value>
+  </data>
+  <data name="label5.Text" xml:space="preserve">
+    <value>Max</value>
+  </data>
+  <data name=">>label5.Name" xml:space="preserve">
+    <value>label5</value>
+  </data>
+  <data name=">>label5.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label5.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>label5.ZOrder" xml:space="preserve">
+    <value>9</value>
+  </data>
+  <data name="label4.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label4.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 63</value>
+  </data>
+  <data name="label4.Size" type="System.Drawing.Size, System.Drawing">
+    <value>24, 13</value>
+  </data>
+  <data name="label4.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name="label4.Text" xml:space="preserve">
+    <value>Min</value>
+  </data>
+  <data name=">>label4.Name" xml:space="preserve">
+    <value>label4</value>
+  </data>
+  <data name=">>label4.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label4.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>label4.ZOrder" xml:space="preserve">
+    <value>10</value>
+  </data>
+  <data name="label3.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label3.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 20</value>
+  </data>
+  <data name="label3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>46, 13</value>
+  </data>
+  <data name="label3.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Property</value>
+  </data>
+  <data name=">>label3.Name" xml:space="preserve">
+    <value>label3</value>
+  </data>
+  <data name=">>label3.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label3.Parent" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>label3.ZOrder" xml:space="preserve">
+    <value>11</value>
+  </data>
+  <data name="groupBox2.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Top</value>
+  </data>
+  <data name="groupBox2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 112</value>
+  </data>
+  <data name="groupBox2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>269, 276</value>
+  </data>
+  <data name="groupBox2.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name="groupBox2.Text" xml:space="preserve">
+    <value>Theme Conditions</value>
+  </data>
+  <data name=">>groupBox2.Name" xml:space="preserve">
+    <value>groupBox2</value>
+  </data>
+  <data name=">>groupBox2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>groupBox2.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>groupBox2.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="btnToBorderColor.Location" type="System.Drawing.Point, System.Drawing">
+    <value>222, 123</value>
+  </data>
+  <data name="btnToBorderColor.Size" type="System.Drawing.Size, System.Drawing">
+    <value>29, 23</value>
+  </data>
+  <data name="btnToBorderColor.TabIndex" type="System.Int32, mscorlib">
+    <value>13</value>
+  </data>
+  <data name="btnToBorderColor.Text" xml:space="preserve">
+    <value>...</value>
+  </data>
+  <data name=">>btnToBorderColor.Name" xml:space="preserve">
+    <value>btnToBorderColor</value>
+  </data>
+  <data name=">>btnToBorderColor.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnToBorderColor.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>btnToBorderColor.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <data name="pnlToBorderColor.Location" type="System.Drawing.Point, System.Drawing">
+    <value>178, 123</value>
+  </data>
+  <data name="pnlToBorderColor.Size" type="System.Drawing.Size, System.Drawing">
+    <value>38, 23</value>
+  </data>
+  <data name="pnlToBorderColor.TabIndex" type="System.Int32, mscorlib">
+    <value>12</value>
+  </data>
+  <data name=">>pnlToBorderColor.Name" xml:space="preserve">
+    <value>pnlToBorderColor</value>
+  </data>
+  <data name=">>pnlToBorderColor.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>pnlToBorderColor.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>pnlToBorderColor.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="btnFromBorderColor.Location" type="System.Drawing.Point, System.Drawing">
+    <value>110, 123</value>
+  </data>
+  <data name="btnFromBorderColor.Size" type="System.Drawing.Size, System.Drawing">
+    <value>29, 23</value>
+  </data>
+  <data name="btnFromBorderColor.TabIndex" type="System.Int32, mscorlib">
+    <value>11</value>
+  </data>
+  <data name="btnFromBorderColor.Text" xml:space="preserve">
+    <value>...</value>
+  </data>
+  <data name=">>btnFromBorderColor.Name" xml:space="preserve">
+    <value>btnFromBorderColor</value>
+  </data>
+  <data name=">>btnFromBorderColor.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnFromBorderColor.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>btnFromBorderColor.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="btnToFillColor.Location" type="System.Drawing.Point, System.Drawing">
+    <value>222, 71</value>
+  </data>
+  <data name="btnToFillColor.Size" type="System.Drawing.Size, System.Drawing">
+    <value>29, 23</value>
+  </data>
+  <data name="btnToFillColor.TabIndex" type="System.Int32, mscorlib">
+    <value>11</value>
+  </data>
+  <data name="btnToFillColor.Text" xml:space="preserve">
+    <value>...</value>
+  </data>
+  <data name=">>btnToFillColor.Name" xml:space="preserve">
+    <value>btnToFillColor</value>
+  </data>
+  <data name=">>btnToFillColor.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnToFillColor.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>btnToFillColor.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="pnlFromBorderColor.Location" type="System.Drawing.Point, System.Drawing">
+    <value>66, 123</value>
+  </data>
+  <data name="pnlFromBorderColor.Size" type="System.Drawing.Size, System.Drawing">
+    <value>38, 23</value>
+  </data>
+  <data name="pnlFromBorderColor.TabIndex" type="System.Int32, mscorlib">
+    <value>10</value>
+  </data>
+  <data name=">>pnlFromBorderColor.Name" xml:space="preserve">
+    <value>pnlFromBorderColor</value>
+  </data>
+  <data name=">>pnlFromBorderColor.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>pnlFromBorderColor.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>pnlFromBorderColor.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
+  <data name="btnFromFillColor.Location" type="System.Drawing.Point, System.Drawing">
+    <value>110, 71</value>
+  </data>
+  <data name="btnFromFillColor.Size" type="System.Drawing.Size, System.Drawing">
+    <value>29, 23</value>
+  </data>
+  <data name="btnFromFillColor.TabIndex" type="System.Int32, mscorlib">
+    <value>9</value>
+  </data>
+  <data name="btnFromFillColor.Text" xml:space="preserve">
+    <value>...</value>
+  </data>
+  <data name=">>btnFromFillColor.Name" xml:space="preserve">
+    <value>btnFromFillColor</value>
+  </data>
+  <data name=">>btnFromFillColor.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnFromFillColor.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>btnFromFillColor.ZOrder" xml:space="preserve">
+    <value>5</value>
+  </data>
+  <data name="pnlToFillColor.Location" type="System.Drawing.Point, System.Drawing">
+    <value>178, 71</value>
+  </data>
+  <data name="pnlToFillColor.Size" type="System.Drawing.Size, System.Drawing">
+    <value>38, 23</value>
+  </data>
+  <data name="pnlToFillColor.TabIndex" type="System.Int32, mscorlib">
+    <value>10</value>
+  </data>
+  <data name=">>pnlToFillColor.Name" xml:space="preserve">
+    <value>pnlToFillColor</value>
+  </data>
+  <data name=">>pnlToFillColor.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>pnlToFillColor.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>pnlToFillColor.ZOrder" xml:space="preserve">
+    <value>6</value>
+  </data>
+  <data name="pnlFromFillColor.Location" type="System.Drawing.Point, System.Drawing">
+    <value>66, 71</value>
+  </data>
+  <data name="pnlFromFillColor.Size" type="System.Drawing.Size, System.Drawing">
+    <value>38, 23</value>
+  </data>
+  <data name="pnlFromFillColor.TabIndex" type="System.Int32, mscorlib">
+    <value>8</value>
+  </data>
+  <data name=">>pnlFromFillColor.Name" xml:space="preserve">
+    <value>pnlFromFillColor</value>
+  </data>
+  <data name=">>pnlFromFillColor.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Panel, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>pnlFromFillColor.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>pnlFromFillColor.ZOrder" xml:space="preserve">
+    <value>7</value>
+  </data>
+  <data name="label14.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label14.Location" type="System.Drawing.Point, System.Drawing">
+    <value>152, 128</value>
+  </data>
+  <data name="label14.Size" type="System.Drawing.Size, System.Drawing">
+    <value>20, 13</value>
+  </data>
+  <data name="label14.TabIndex" type="System.Int32, mscorlib">
+    <value>7</value>
+  </data>
+  <data name="label14.Text" xml:space="preserve">
+    <value>To</value>
+  </data>
+  <data name=">>label14.Name" xml:space="preserve">
+    <value>label14</value>
+  </data>
+  <data name=">>label14.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label14.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>label14.ZOrder" xml:space="preserve">
+    <value>8</value>
+  </data>
+  <data name="label15.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label15.Location" type="System.Drawing.Point, System.Drawing">
+    <value>30, 128</value>
+  </data>
+  <data name="label15.Size" type="System.Drawing.Size, System.Drawing">
+    <value>30, 13</value>
+  </data>
+  <data name="label15.TabIndex" type="System.Int32, mscorlib">
+    <value>6</value>
+  </data>
+  <data name="label15.Text" xml:space="preserve">
+    <value>From</value>
+  </data>
+  <data name=">>label15.Name" xml:space="preserve">
+    <value>label15</value>
+  </data>
+  <data name=">>label15.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label15.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>label15.ZOrder" xml:space="preserve">
+    <value>9</value>
+  </data>
+  <data name="label13.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label13.Location" type="System.Drawing.Point, System.Drawing">
+    <value>152, 76</value>
+  </data>
+  <data name="label13.Size" type="System.Drawing.Size, System.Drawing">
+    <value>20, 13</value>
+  </data>
+  <data name="label13.TabIndex" type="System.Int32, mscorlib">
+    <value>5</value>
+  </data>
+  <data name="label13.Text" xml:space="preserve">
+    <value>To</value>
+  </data>
+  <data name=">>label13.Name" xml:space="preserve">
+    <value>label13</value>
+  </data>
+  <data name=">>label13.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label13.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>label13.ZOrder" xml:space="preserve">
+    <value>10</value>
+  </data>
+  <data name="label12.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label12.Location" type="System.Drawing.Point, System.Drawing">
+    <value>30, 76</value>
+  </data>
+  <data name="label12.Size" type="System.Drawing.Size, System.Drawing">
+    <value>30, 13</value>
+  </data>
+  <data name="label12.TabIndex" type="System.Int32, mscorlib">
+    <value>4</value>
+  </data>
+  <data name="label12.Text" xml:space="preserve">
+    <value>From</value>
+  </data>
+  <data name=">>label12.Name" xml:space="preserve">
+    <value>label12</value>
+  </data>
+  <data name=">>label12.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label12.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>label12.ZOrder" xml:space="preserve">
+    <value>11</value>
+  </data>
+  <data name="label11.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label11.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 107</value>
+  </data>
+  <data name="label11.Size" type="System.Drawing.Size, System.Drawing">
+    <value>65, 13</value>
+  </data>
+  <data name="label11.TabIndex" type="System.Int32, mscorlib">
+    <value>3</value>
+  </data>
+  <data name="label11.Text" xml:space="preserve">
+    <value>Border Color</value>
+  </data>
+  <data name=">>label11.Name" xml:space="preserve">
+    <value>label11</value>
+  </data>
+  <data name=">>label11.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label11.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>label11.ZOrder" xml:space="preserve">
+    <value>12</value>
+  </data>
+  <data name="label10.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label10.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 52</value>
+  </data>
+  <data name="label10.Size" type="System.Drawing.Size, System.Drawing">
+    <value>46, 13</value>
+  </data>
+  <data name="label10.TabIndex" type="System.Int32, mscorlib">
+    <value>2</value>
+  </data>
+  <data name="label10.Text" xml:space="preserve">
+    <value>Fill Color</value>
+  </data>
+  <data name=">>label10.Name" xml:space="preserve">
+    <value>label10</value>
+  </data>
+  <data name=">>label10.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label10.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>label10.ZOrder" xml:space="preserve">
+    <value>13</value>
+  </data>
+  <data name="numFillTransparency.Location" type="System.Drawing.Point, System.Drawing">
+    <value>123, 25</value>
+  </data>
+  <data name="numFillTransparency.Size" type="System.Drawing.Size, System.Drawing">
+    <value>65, 20</value>
+  </data>
+  <data name="numFillTransparency.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name=">>numFillTransparency.Name" xml:space="preserve">
+    <value>numFillTransparency</value>
+  </data>
+  <data name=">>numFillTransparency.Type" xml:space="preserve">
+    <value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>numFillTransparency.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>numFillTransparency.ZOrder" xml:space="preserve">
+    <value>14</value>
+  </data>
+  <data name="label9.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label9.Location" type="System.Drawing.Point, System.Drawing">
+    <value>12, 27</value>
+  </data>
+  <data name="label9.Size" type="System.Drawing.Size, System.Drawing">
+    <value>104, 13</value>
+  </data>
+  <data name="label9.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="label9.Text" xml:space="preserve">
+    <value>Fill Transparency (%)</value>
+  </data>
+  <data name=">>label9.Name" xml:space="preserve">
+    <value>label9</value>
+  </data>
+  <data name=">>label9.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label9.Parent" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>label9.ZOrder" xml:space="preserve">
+    <value>15</value>
+  </data>
+  <data name="groupBox3.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
+    <value>Top</value>
+  </data>
+  <data name="groupBox3.Location" type="System.Drawing.Point, System.Drawing">
+    <value>0, 388</value>
+  </data>
+  <data name="groupBox3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>269, 162</value>
+  </data>
+  <data name="groupBox3.TabIndex" type="System.Int32, mscorlib">
+    <value>2</value>
+  </data>
+  <data name="groupBox3.Text" xml:space="preserve">
+    <value>Style Ramp</value>
+  </data>
+  <data name=">>groupBox3.Name" xml:space="preserve">
+    <value>groupBox3</value>
+  </data>
+  <data name=">>groupBox3.Type" xml:space="preserve">
+    <value>System.Windows.Forms.GroupBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>groupBox3.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>groupBox3.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="btnApply.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Right</value>
+  </data>
+  <data name="btnApply.Location" type="System.Drawing.Point, System.Drawing">
+    <value>177, 556</value>
+  </data>
+  <data name="btnApply.Size" type="System.Drawing.Size, System.Drawing">
+    <value>75, 23</value>
+  </data>
+  <data name="btnApply.TabIndex" type="System.Int32, mscorlib">
+    <value>3</value>
+  </data>
+  <data name="btnApply.Text" xml:space="preserve">
+    <value>Apply</value>
+  </data>
+  <data name=">>btnApply.Name" xml:space="preserve">
+    <value>btnApply</value>
+  </data>
+  <data name=">>btnApply.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnApply.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>btnApply.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
   <metadata name="colorDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+    <value>6, 13</value>
+  </data>
+  <data name="$this.Size" type="System.Drawing.Size, System.Drawing">
+    <value>269, 593</value>
+  </data>
+  <data name=">>colorDialog.Name" xml:space="preserve">
+    <value>colorDialog</value>
+  </data>
+  <data name=">>colorDialog.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ColorDialog, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>$this.Name" xml:space="preserve">
+    <value>MgThemeControlImpl</value>
+  </data>
+  <data name=">>$this.Type" xml:space="preserve">
+    <value>OSGeo.MapGuide.Viewer.MgControlView, OSGeo.MapGuide.Viewer, Version=2.4.0.6971, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f</value>
+  </data>
 </root>
\ No newline at end of file

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgTransientMapState.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgTransientMapState.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgTransientMapState.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -41,7 +41,7 @@
         public void PushState(MgMapDisplayParameters state)
         {
             if (state == null)
-                throw new ArgumentNullException("state");
+                throw new ArgumentNullException("state"); //NOXLATE
 
             var oldState = GetCurrentState();
             ApplyState(state);

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsComponent.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsComponent.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsComponent.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -14,12 +14,12 @@
     {
         public MgViewerOptionsComponent()
         {
-            this.Label = this.ToolTipText = Properties.Resources.TextViewerOptions;
+            this.Label = this.ToolTipText = Strings.TextViewerOptions;
             this.Icon = Properties.Resources.options;
             this.PreferencesDirectory = string.Empty;
         }
-        
-        [Description("The directory where the preferences are saved to and loaded from")]
+
+        [Description("The directory where the preferences are saved to and loaded from")] //NOXLATE
         [MgComponentProperty]
         public string PreferencesDirectory
         {
@@ -46,14 +46,14 @@
                         viewer.ZoomInFactor = options.ZoomInFactor;
                         viewer.ZoomOutFactor = options.ZoomOutFactor;
                         viewer.ConvertTiledGroupsToNonTiled = options.ConvertTiledLayersToNonTiled;
-                        Trace.TraceInformation("Applied viewer settings from: " + path);
+                        Trace.TraceInformation("Applied viewer settings from: " + path); //NOXLATE
                     }
                     catch { }
                 }
             }
             else
             {
-                Trace.TraceInformation("No viewer settings found in " + path + ". Doing nothing");
+                Trace.TraceInformation("No viewer settings found in " + path + ". Doing nothing"); //NOXLATE
             }
         }
 

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsControlImpl.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsControlImpl.Designer.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsControlImpl.Designer.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -28,6 +28,7 @@
         /// </summary>
         private void InitializeComponent()
         {
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MgViewerOptionsControlImpl));
             this.label1 = new System.Windows.Forms.Label();
             this.lblSelectionColor = new System.Windows.Forms.Label();
             this.btnPickSelectionColor = new System.Windows.Forms.Button();
@@ -45,115 +46,75 @@
             // 
             // label1
             // 
-            this.label1.AutoSize = true;
-            this.label1.Location = new System.Drawing.Point(19, 16);
+            resources.ApplyResources(this.label1, "label1");
             this.label1.Name = "label1";
-            this.label1.Size = new System.Drawing.Size(113, 13);
-            this.label1.TabIndex = 0;
-            this.label1.Text = "Viewer Selection Color";
             // 
             // lblSelectionColor
             // 
-            this.lblSelectionColor.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
-            this.lblSelectionColor.Location = new System.Drawing.Point(157, 16);
+            resources.ApplyResources(this.lblSelectionColor, "lblSelectionColor");
             this.lblSelectionColor.Name = "lblSelectionColor";
-            this.lblSelectionColor.Size = new System.Drawing.Size(82, 13);
-            this.lblSelectionColor.TabIndex = 1;
-            this.lblSelectionColor.Text = "                         ";
             // 
             // btnPickSelectionColor
             // 
-            this.btnPickSelectionColor.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-            this.btnPickSelectionColor.Location = new System.Drawing.Point(250, 11);
+            resources.ApplyResources(this.btnPickSelectionColor, "btnPickSelectionColor");
             this.btnPickSelectionColor.Name = "btnPickSelectionColor";
-            this.btnPickSelectionColor.Size = new System.Drawing.Size(27, 23);
-            this.btnPickSelectionColor.TabIndex = 2;
-            this.btnPickSelectionColor.Text = "...";
             this.btnPickSelectionColor.UseVisualStyleBackColor = true;
             this.btnPickSelectionColor.Click += new System.EventHandler(this.btnPickSelectionColor_Click);
             // 
             // label2
             // 
-            this.label2.AutoSize = true;
-            this.label2.Location = new System.Drawing.Point(19, 42);
+            resources.ApplyResources(this.label2, "label2");
             this.label2.Name = "label2";
-            this.label2.Size = new System.Drawing.Size(79, 13);
-            this.label2.TabIndex = 3;
-            this.label2.Text = "Zoom In Factor";
             // 
             // label3
             // 
-            this.label3.AutoSize = true;
-            this.label3.Location = new System.Drawing.Point(19, 68);
+            resources.ApplyResources(this.label3, "label3");
             this.label3.Name = "label3";
-            this.label3.Size = new System.Drawing.Size(87, 13);
-            this.label3.TabIndex = 4;
-            this.label3.Text = "Zoom Out Factor";
             // 
             // chkConvertTiledToNonTiled
             // 
-            this.chkConvertTiledToNonTiled.AutoSize = true;
-            this.chkConvertTiledToNonTiled.Location = new System.Drawing.Point(22, 92);
+            resources.ApplyResources(this.chkConvertTiledToNonTiled, "chkConvertTiledToNonTiled");
             this.chkConvertTiledToNonTiled.Name = "chkConvertTiledToNonTiled";
-            this.chkConvertTiledToNonTiled.Size = new System.Drawing.Size(247, 17);
-            this.chkConvertTiledToNonTiled.TabIndex = 5;
-            this.chkConvertTiledToNonTiled.Text = "Display tiled layers as non-tiled (requires restart)";
             this.chkConvertTiledToNonTiled.UseVisualStyleBackColor = true;
             // 
             // numZoomInFactor
             // 
-            this.numZoomInFactor.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
+            resources.ApplyResources(this.numZoomInFactor, "numZoomInFactor");
             this.numZoomInFactor.DecimalPlaces = 7;
-            this.numZoomInFactor.Location = new System.Drawing.Point(157, 40);
             this.numZoomInFactor.Maximum = new decimal(new int[] {
             1000,
             0,
             0,
             0});
             this.numZoomInFactor.Name = "numZoomInFactor";
-            this.numZoomInFactor.Size = new System.Drawing.Size(120, 20);
-            this.numZoomInFactor.TabIndex = 6;
             // 
             // numZoomOutFactor
             // 
-            this.numZoomOutFactor.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
+            resources.ApplyResources(this.numZoomOutFactor, "numZoomOutFactor");
             this.numZoomOutFactor.DecimalPlaces = 7;
-            this.numZoomOutFactor.Location = new System.Drawing.Point(157, 66);
             this.numZoomOutFactor.Maximum = new decimal(new int[] {
             1000,
             0,
             0,
             0});
             this.numZoomOutFactor.Name = "numZoomOutFactor";
-            this.numZoomOutFactor.Size = new System.Drawing.Size(120, 20);
-            this.numZoomOutFactor.TabIndex = 7;
             // 
             // chkShowVertexCoordinates
             // 
-            this.chkShowVertexCoordinates.AutoSize = true;
-            this.chkShowVertexCoordinates.Location = new System.Drawing.Point(22, 116);
+            resources.ApplyResources(this.chkShowVertexCoordinates, "chkShowVertexCoordinates");
             this.chkShowVertexCoordinates.Name = "chkShowVertexCoordinates";
-            this.chkShowVertexCoordinates.Size = new System.Drawing.Size(217, 17);
-            this.chkShowVertexCoordinates.TabIndex = 8;
-            this.chkShowVertexCoordinates.Text = "Show Vertex Coordinates when digitizing";
             this.chkShowVertexCoordinates.UseVisualStyleBackColor = true;
             // 
             // btnSave
             // 
-            this.btnSave.Location = new System.Drawing.Point(22, 149);
+            resources.ApplyResources(this.btnSave, "btnSave");
             this.btnSave.Name = "btnSave";
-            this.btnSave.Size = new System.Drawing.Size(75, 23);
-            this.btnSave.TabIndex = 9;
-            this.btnSave.Text = "Save Changes";
             this.btnSave.UseVisualStyleBackColor = true;
             this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
             // 
             // MgViewerOptionsControlImpl
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            resources.ApplyResources(this, "$this");
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.Controls.Add(this.btnSave);
             this.Controls.Add(this.chkShowVertexCoordinates);
@@ -166,7 +127,6 @@
             this.Controls.Add(this.lblSelectionColor);
             this.Controls.Add(this.label1);
             this.Name = "MgViewerOptionsControlImpl";
-            this.Size = new System.Drawing.Size(295, 183);
             ((System.ComponentModel.ISupportInitialize)(this.numZoomInFactor)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.numZoomOutFactor)).EndInit();
             this.ResumeLayout(false);

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsControlImpl.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsControlImpl.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsControlImpl.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -18,7 +18,7 @@
         internal MgViewerOptionsControlImpl(IMapViewer viewer, string saveDirectory)
         {
             InitializeComponent();
-            this.Title = Properties.Resources.TitleViewerOptions;
+            this.Title = Strings.TitleViewerOptions;
             this.ModalWindow = true;
             _viewer = viewer;
             _saveDirectory = saveDirectory;
@@ -53,7 +53,7 @@
             {
                 ser.Serialize(stream, options);
             }
-            MessageBox.Show(Properties.Resources.TextOptionsSaved);
+            MessageBox.Show(Strings.TextOptionsSaved);
             base.Close();
         }
     }
@@ -61,7 +61,7 @@
     [Serializable]
     public class MgViewerOptions
     {
-        public const string FILENAME = "MgViewerOptions.xml";
+        public const string FILENAME = "MgViewerOptions.xml"; //NOXLATE
 
         [XmlElement]
         public string SelectionColor { get; set; }

Modified: branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsControlImpl.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsControlImpl.resx	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/MgViewerOptionsControlImpl.resx	2012-09-17 13:40:40 UTC (rev 7019)
@@ -117,7 +117,292 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="label1.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="label1.Location" type="System.Drawing.Point, System.Drawing">
+    <value>19, 16</value>
+  </data>
+  <data name="label1.Size" type="System.Drawing.Size, System.Drawing">
+    <value>113, 13</value>
+  </data>
+  <data name="label1.TabIndex" type="System.Int32, mscorlib">
+    <value>0</value>
+  </data>
+  <data name="label1.Text" xml:space="preserve">
+    <value>Viewer Selection Color</value>
+  </data>
+  <data name=">>label1.Name" xml:space="preserve">
+    <value>label1</value>
+  </data>
+  <data name=">>label1.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label1.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>label1.ZOrder" xml:space="preserve">
+    <value>9</value>
+  </data>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="lblSelectionColor.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="lblSelectionColor.Location" type="System.Drawing.Point, System.Drawing">
+    <value>157, 16</value>
+  </data>
+  <data name="lblSelectionColor.Size" type="System.Drawing.Size, System.Drawing">
+    <value>82, 13</value>
+  </data>
+  <data name="lblSelectionColor.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
+  <data name="lblSelectionColor.Text" xml:space="preserve">
+    <value>                         </value>
+  </data>
+  <data name=">>lblSelectionColor.Name" xml:space="preserve">
+    <value>lblSelectionColor</value>
+  </data>
+  <data name=">>lblSelectionColor.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>lblSelectionColor.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>lblSelectionColor.ZOrder" xml:space="preserve">
+    <value>8</value>
+  </data>
+  <data name="btnPickSelectionColor.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Right</value>
+  </data>
+  <data name="btnPickSelectionColor.Location" type="System.Drawing.Point, System.Drawing">
+    <value>250, 11</value>
+  </data>
+  <data name="btnPickSelectionColor.Size" type="System.Drawing.Size, System.Drawing">
+    <value>27, 23</value>
+  </data>
+  <data name="btnPickSelectionColor.TabIndex" type="System.Int32, mscorlib">
+    <value>2</value>
+  </data>
+  <data name="btnPickSelectionColor.Text" xml:space="preserve">
+    <value>...</value>
+  </data>
+  <data name=">>btnPickSelectionColor.Name" xml:space="preserve">
+    <value>btnPickSelectionColor</value>
+  </data>
+  <data name=">>btnPickSelectionColor.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnPickSelectionColor.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>btnPickSelectionColor.ZOrder" xml:space="preserve">
+    <value>7</value>
+  </data>
   <metadata name="colorDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
+  <data name="label2.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>19, 42</value>
+  </data>
+  <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>79, 13</value>
+  </data>
+  <data name="label2.TabIndex" type="System.Int32, mscorlib">
+    <value>3</value>
+  </data>
+  <data name="label2.Text" xml:space="preserve">
+    <value>Zoom In Factor</value>
+  </data>
+  <data name=">>label2.Name" xml:space="preserve">
+    <value>label2</value>
+  </data>
+  <data name=">>label2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label2.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>label2.ZOrder" xml:space="preserve">
+    <value>6</value>
+  </data>
+  <data name="label3.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="label3.Location" type="System.Drawing.Point, System.Drawing">
+    <value>19, 68</value>
+  </data>
+  <data name="label3.Size" type="System.Drawing.Size, System.Drawing">
+    <value>87, 13</value>
+  </data>
+  <data name="label3.TabIndex" type="System.Int32, mscorlib">
+    <value>4</value>
+  </data>
+  <data name="label3.Text" xml:space="preserve">
+    <value>Zoom Out Factor</value>
+  </data>
+  <data name=">>label3.Name" xml:space="preserve">
+    <value>label3</value>
+  </data>
+  <data name=">>label3.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label3.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>label3.ZOrder" xml:space="preserve">
+    <value>5</value>
+  </data>
+  <data name="chkConvertTiledToNonTiled.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="chkConvertTiledToNonTiled.Location" type="System.Drawing.Point, System.Drawing">
+    <value>22, 92</value>
+  </data>
+  <data name="chkConvertTiledToNonTiled.Size" type="System.Drawing.Size, System.Drawing">
+    <value>247, 17</value>
+  </data>
+  <data name="chkConvertTiledToNonTiled.TabIndex" type="System.Int32, mscorlib">
+    <value>5</value>
+  </data>
+  <data name="chkConvertTiledToNonTiled.Text" xml:space="preserve">
+    <value>Display tiled layers as non-tiled (requires restart)</value>
+  </data>
+  <data name=">>chkConvertTiledToNonTiled.Name" xml:space="preserve">
+    <value>chkConvertTiledToNonTiled</value>
+  </data>
+  <data name=">>chkConvertTiledToNonTiled.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>chkConvertTiledToNonTiled.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>chkConvertTiledToNonTiled.ZOrder" xml:space="preserve">
+    <value>4</value>
+  </data>
+  <data name="numZoomInFactor.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="numZoomInFactor.Location" type="System.Drawing.Point, System.Drawing">
+    <value>157, 40</value>
+  </data>
+  <data name="numZoomInFactor.Size" type="System.Drawing.Size, System.Drawing">
+    <value>120, 20</value>
+  </data>
+  <data name="numZoomInFactor.TabIndex" type="System.Int32, mscorlib">
+    <value>6</value>
+  </data>
+  <data name=">>numZoomInFactor.Name" xml:space="preserve">
+    <value>numZoomInFactor</value>
+  </data>
+  <data name=">>numZoomInFactor.Type" xml:space="preserve">
+    <value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>numZoomInFactor.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>numZoomInFactor.ZOrder" xml:space="preserve">
+    <value>3</value>
+  </data>
+  <data name="numZoomOutFactor.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Left, Right</value>
+  </data>
+  <data name="numZoomOutFactor.Location" type="System.Drawing.Point, System.Drawing">
+    <value>157, 66</value>
+  </data>
+  <data name="numZoomOutFactor.Size" type="System.Drawing.Size, System.Drawing">
+    <value>120, 20</value>
+  </data>
+  <data name="numZoomOutFactor.TabIndex" type="System.Int32, mscorlib">
+    <value>7</value>
+  </data>
+  <data name=">>numZoomOutFactor.Name" xml:space="preserve">
+    <value>numZoomOutFactor</value>
+  </data>
+  <data name=">>numZoomOutFactor.Type" xml:space="preserve">
+    <value>System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>numZoomOutFactor.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>numZoomOutFactor.ZOrder" xml:space="preserve">
+    <value>2</value>
+  </data>
+  <data name="chkShowVertexCoordinates.AutoSize" type="System.Boolean, mscorlib">
+    <value>True</value>
+  </data>
+  <data name="chkShowVertexCoordinates.Location" type="System.Drawing.Point, System.Drawing">
+    <value>22, 116</value>
+  </data>
+  <data name="chkShowVertexCoordinates.Size" type="System.Drawing.Size, System.Drawing">
+    <value>217, 17</value>
+  </data>
+  <data name="chkShowVertexCoordinates.TabIndex" type="System.Int32, mscorlib">
+    <value>8</value>
+  </data>
+  <data name="chkShowVertexCoordinates.Text" xml:space="preserve">
+    <value>Show Vertex Coordinates when digitizing</value>
+  </data>
+  <data name=">>chkShowVertexCoordinates.Name" xml:space="preserve">
+    <value>chkShowVertexCoordinates</value>
+  </data>
+  <data name=">>chkShowVertexCoordinates.Type" xml:space="preserve">
+    <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>chkShowVertexCoordinates.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>chkShowVertexCoordinates.ZOrder" xml:space="preserve">
+    <value>1</value>
+  </data>
+  <data name="btnSave.Location" type="System.Drawing.Point, System.Drawing">
+    <value>22, 149</value>
+  </data>
+  <data name="btnSave.Size" type="System.Drawing.Size, System.Drawing">
+    <value>75, 23</value>
+  </data>
+  <data name="btnSave.TabIndex" type="System.Int32, mscorlib">
+    <value>9</value>
+  </data>
+  <data name="btnSave.Text" xml:space="preserve">
+    <value>Save Changes</value>
+  </data>
+  <data name=">>btnSave.Name" xml:space="preserve">
+    <value>btnSave</value>
+  </data>
+  <data name=">>btnSave.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Button, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>btnSave.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>btnSave.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+    <value>6, 13</value>
+  </data>
+  <data name="$this.Size" type="System.Drawing.Size, System.Drawing">
+    <value>295, 183</value>
+  </data>
+  <data name=">>colorDialog.Name" xml:space="preserve">
+    <value>colorDialog</value>
+  </data>
+  <data name=">>colorDialog.Type" xml:space="preserve">
+    <value>System.Windows.Forms.ColorDialog, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>$this.Name" xml:space="preserve">
+    <value>MgViewerOptionsControlImpl</value>
+  </data>
+  <data name=">>$this.Type" xml:space="preserve">
+    <value>OSGeo.MapGuide.Viewer.MgControlView, OSGeo.MapGuide.Viewer, Version=2.4.0.6971, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f</value>
+  </data>
 </root>
\ No newline at end of file

Modified: branches/2.4/MgDev/Desktop/MapViewer/Properties/Resources.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Properties/Resources.Designer.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/Properties/Resources.Designer.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -1,7 +1,7 @@
 //------------------------------------------------------------------------------
 // <auto-generated>
 //     This code was generated by a tool.
-//     Runtime Version:2.0.50727.4971
+//     Runtime Version:2.0.50727.5420
 //
 //     Changes to this file may cause incorrect behavior and will be lost if
 //     the code is regenerated.
@@ -122,15 +122,6 @@
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Click to finish.
-        /// </summary>
-        internal static string CircleDigitizationPrompt {
-            get {
-                return ResourceManager.GetString("CircleDigitizationPrompt", resourceCulture);
-            }
-        }
-        
         internal static System.Drawing.Bitmap control {
             get {
                 object obj = ResourceManager.GetObject("control", resourceCulture);
@@ -145,33 +136,6 @@
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to {0} features in layer.
-        /// </summary>
-        internal static string CountFormat {
-            get {
-                return ResourceManager.GetString("CountFormat", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Name: {1}{0}Feature Source: {2}{0}Feature Class: {3}.
-        /// </summary>
-        internal static string DefaultLayerTooltip {
-            get {
-                return ResourceManager.GetString("DefaultLayerTooltip", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Name: {1}{0}Feature Source: {2}.
-        /// </summary>
-        internal static string DrawingLayerTooltip {
-            get {
-                return ResourceManager.GetString("DrawingLayerTooltip", resourceCulture);
-            }
-        }
-        
         internal static System.Drawing.Bitmap edit_copy {
             get {
                 object obj = ResourceManager.GetObject("edit_copy", resourceCulture);
@@ -228,15 +192,6 @@
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Press ESC to cancel.
-        /// </summary>
-        internal static string GeneralDigitizationInstructions {
-            get {
-                return ResourceManager.GetString("GeneralDigitizationInstructions", resourceCulture);
-            }
-        }
-        
         internal static byte[] grab {
             get {
                 object obj = ResourceManager.GetObject("grab", resourceCulture);
@@ -426,24 +381,6 @@
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Click to finish.
-        /// </summary>
-        internal static string LineDigitizationPrompt {
-            get {
-                return ResourceManager.GetString("LineDigitizationPrompt", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Click again to add a new vertex.\nDouble-click to finish.
-        /// </summary>
-        internal static string LineStringDigitizationPrompt {
-            get {
-                return ResourceManager.GetString("LineStringDigitizationPrompt", resourceCulture);
-            }
-        }
-        
         internal static System.Drawing.Bitmap load_package {
             get {
                 object obj = ResourceManager.GetObject("load_package", resourceCulture);
@@ -465,15 +402,6 @@
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Press Ctrl-Z to undo last point.\nPress ESC to cancel.
-        /// </summary>
-        internal static string MultiSegmentDigitzationInstructions {
-            get {
-                return ResourceManager.GetString("MultiSegmentDigitzationInstructions", resourceCulture);
-            }
-        }
-        
         internal static System.Drawing.Bitmap options {
             get {
                 object obj = ResourceManager.GetObject("options", resourceCulture);
@@ -488,24 +416,6 @@
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Click to finish.
-        /// </summary>
-        internal static string PointDigitizationPrompt {
-            get {
-                return ResourceManager.GetString("PointDigitizationPrompt", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Click again to add a new vertex.\nDouble-click to finish.
-        /// </summary>
-        internal static string PolygonDigitizationPrompt {
-            get {
-                return ResourceManager.GetString("PolygonDigitizationPrompt", resourceCulture);
-            }
-        }
-        
         internal static System.Drawing.Bitmap PoweredBy_en {
             get {
                 object obj = ResourceManager.GetObject("PoweredBy_en", resourceCulture);
@@ -527,15 +437,6 @@
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Click to finish.
-        /// </summary>
-        internal static string RectangleDigitizationPrompt {
-            get {
-                return ResourceManager.GetString("RectangleDigitizationPrompt", resourceCulture);
-            }
-        }
-        
         internal static System.Drawing.Bitmap search {
             get {
                 object obj = ResourceManager.GetObject("search", resourceCulture);
@@ -585,384 +486,6 @@
             }
         }
         
-        /// <summary>
-        ///   Looks up a localized string similar to Clear Selection.
-        /// </summary>
-        internal static string TextClearSelection {
-            get {
-                return ResourceManager.GetString("TextClearSelection", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Copy map to clipboard.
-        /// </summary>
-        internal static string TextCopyMap {
-            get {
-                return ResourceManager.GetString("TextCopyMap", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Digitize Circle.
-        /// </summary>
-        internal static string TextDigitizeCircle {
-            get {
-                return ResourceManager.GetString("TextDigitizeCircle", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Digitize Line.
-        /// </summary>
-        internal static string TextDigitizeLine {
-            get {
-                return ResourceManager.GetString("TextDigitizeLine", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Digitize Line String.
-        /// </summary>
-        internal static string TextDigitizeLineString {
-            get {
-                return ResourceManager.GetString("TextDigitizeLineString", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Digitize Point.
-        /// </summary>
-        internal static string TextDigitizePoint {
-            get {
-                return ResourceManager.GetString("TextDigitizePoint", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Digitize Polygon.
-        /// </summary>
-        internal static string TextDigitizePolygon {
-            get {
-                return ResourceManager.GetString("TextDigitizePolygon", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Digitize Rectangle.
-        /// </summary>
-        internal static string TextDigitizeRectangle {
-            get {
-                return ResourceManager.GetString("TextDigitizeRectangle", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Disable Tooltips.
-        /// </summary>
-        internal static string TextDisableTooltips {
-            get {
-                return ResourceManager.GetString("TextDisableTooltips", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Enable Tooltips.
-        /// </summary>
-        internal static string TextEnableTooltips {
-            get {
-                return ResourceManager.GetString("TextEnableTooltips", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Exit.
-        /// </summary>
-        internal static string TextExitApplication {
-            get {
-                return ResourceManager.GetString("TextExitApplication", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Layers.
-        /// </summary>
-        internal static string TextLayers {
-            get {
-                return ResourceManager.GetString("TextLayers", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Layers (Refreshing...).
-        /// </summary>
-        internal static string TextLayersRefreshing {
-            get {
-                return ResourceManager.GetString("TextLayersRefreshing", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Load Package.
-        /// </summary>
-        internal static string TextLoadPackage {
-            get {
-                return ResourceManager.GetString("TextLoadPackage", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Nothing is selected.
-        /// </summary>
-        internal static string TextNoSelection {
-            get {
-                return ResourceManager.GetString("TextNoSelection", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Options Saved.
-        /// </summary>
-        internal static string TextOptionsSaved {
-            get {
-                return ResourceManager.GetString("TextOptionsSaved", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Package Loaded.
-        /// </summary>
-        internal static string TextPackageLoaded {
-            get {
-                return ResourceManager.GetString("TextPackageLoaded", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Pan.
-        /// </summary>
-        internal static string TextPan {
-            get {
-                return ResourceManager.GetString("TextPan", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Plot to DWF.
-        /// </summary>
-        internal static string TextPlotToDwf {
-            get {
-                return ResourceManager.GetString("TextPlotToDwf", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Print.
-        /// </summary>
-        internal static string TextPrint {
-            get {
-                return ResourceManager.GetString("TextPrint", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Refresh Map.
-        /// </summary>
-        internal static string TextRefreshMap {
-            get {
-                return ResourceManager.GetString("TextRefreshMap", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Scale.
-        /// </summary>
-        internal static string TextScale {
-            get {
-                return ResourceManager.GetString("TextScale", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Select.
-        /// </summary>
-        internal static string TextSelect {
-            get {
-                return ResourceManager.GetString("TextSelect", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Select Polygon.
-        /// </summary>
-        internal static string TextSelectPolygon {
-            get {
-                return ResourceManager.GetString("TextSelectPolygon", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Select Radius.
-        /// </summary>
-        internal static string TextSelectRadius {
-            get {
-                return ResourceManager.GetString("TextSelectRadius", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Task Pane.
-        /// </summary>
-        internal static string TextTaskPane {
-            get {
-                return ResourceManager.GetString("TextTaskPane", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Viewer Options.
-        /// </summary>
-        internal static string TextViewerOptions {
-            get {
-                return ResourceManager.GetString("TextViewerOptions", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Zoom Extents.
-        /// </summary>
-        internal static string TextZoomExtents {
-            get {
-                return ResourceManager.GetString("TextZoomExtents", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Zoom In.
-        /// </summary>
-        internal static string TextZoomIn {
-            get {
-                return ResourceManager.GetString("TextZoomIn", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Zoom Next.
-        /// </summary>
-        internal static string TextZoomNext {
-            get {
-                return ResourceManager.GetString("TextZoomNext", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Zoom Out.
-        /// </summary>
-        internal static string TextZoomOut {
-            get {
-                return ResourceManager.GetString("TextZoomOut", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Zoom Previous.
-        /// </summary>
-        internal static string TextZoomPrevious {
-            get {
-                return ResourceManager.GetString("TextZoomPrevious", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Zoom to Selection.
-        /// </summary>
-        internal static string TextZoomToSelection {
-            get {
-                return ResourceManager.GetString("TextZoomToSelection", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Name: {1}{0}Feature Source: {2}{0}Feature Class: {3}{0}Number of Rules: {4}.
-        /// </summary>
-        internal static string ThemedLayerTooltip {
-            get {
-                return ResourceManager.GetString("ThemedLayerTooltip", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Buffer.
-        /// </summary>
-        internal static string TitleBuffer {
-            get {
-                return ResourceManager.GetString("TitleBuffer", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Measure.
-        /// </summary>
-        internal static string TitleMeasure {
-            get {
-                return ResourceManager.GetString("TitleMeasure", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Print Settings.
-        /// </summary>
-        internal static string TitlePrintSettings {
-            get {
-                return ResourceManager.GetString("TitlePrintSettings", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Query.
-        /// </summary>
-        internal static string TitleQuery {
-            get {
-                return ResourceManager.GetString("TitleQuery", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Theme.
-        /// </summary>
-        internal static string TitleTheme {
-            get {
-                return ResourceManager.GetString("TitleTheme", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Viewer Options.
-        /// </summary>
-        internal static string TitleViewerOptions {
-            get {
-                return ResourceManager.GetString("TitleViewerOptions", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Tooltips are enabled. Click to disable.
-        /// </summary>
-        internal static string TooltipDisableTooltips {
-            get {
-                return ResourceManager.GetString("TooltipDisableTooltips", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Tooltips are disabled. Click to enable.
-        /// </summary>
-        internal static string TooltipEnableTooltips {
-            get {
-                return ResourceManager.GetString("TooltipEnableTooltips", resourceCulture);
-            }
-        }
-        
         internal static System.Drawing.Bitmap ui_tooltip_balloon_bottom {
             get {
                 object obj = ResourceManager.GetObject("ui_tooltip_balloon_bottom", resourceCulture);

Modified: branches/2.4/MgDev/Desktop/MapViewer/Properties/Resources.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Properties/Resources.resx	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/Properties/Resources.resx	2012-09-17 13:40:40 UTC (rev 7019)
@@ -127,9 +127,6 @@
   <data name="layer_shape_line" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\layer-shape-line.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="TextZoomOut" xml:space="preserve">
-    <value>Zoom Out</value>
-  </data>
   <data name="info" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\info.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -142,9 +139,6 @@
   <data name="initial_center" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\initial-center.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="TextDigitizeCircle" xml:space="preserve">
-    <value>Digitize Circle</value>
-  </data>
   <data name="edit_copy" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\edit-copy.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -160,81 +154,42 @@
   <data name="select_radius" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\select-radius.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="TextDigitizePolygon" xml:space="preserve">
-    <value>Digitize Polygon</value>
-  </data>
   <data name="zoom_out_fixed" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\zoom-out-fixed.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="TextSelectRadius" xml:space="preserve">
-    <value>Select Radius</value>
-  </data>
   <data name="control" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\control.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
   <data name="view_forward" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\view-forward.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="TextPan" xml:space="preserve">
-    <value>Pan</value>
-  </data>
   <data name="lc_dwf" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\lc_dwf.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="TextDigitizeLine" xml:space="preserve">
-    <value>Digitize Line</value>
-  </data>
-  <data name="TextZoomIn" xml:space="preserve">
-    <value>Zoom In</value>
-  </data>
-  <data name="TextDigitizeLineString" xml:space="preserve">
-    <value>Digitize Line String</value>
-  </data>
   <data name="overview_map" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\overview-map.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="TextDisableTooltips" xml:space="preserve">
-    <value>Disable Tooltips</value>
-  </data>
   <data name="icon_etc" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\icon_etc.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
   <data name="lc_broken" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\lc_broken.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="TextSelectPolygon" xml:space="preserve">
-    <value>Select Polygon</value>
-  </data>
   <data name="icon_tasks" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\icon_tasks.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
   <data name="print" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\print.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="TitleViewerOptions" xml:space="preserve">
-    <value>Viewer Options</value>
-  </data>
   <data name="lc_raster" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\lc_raster.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="TextPlotToDwf" xml:space="preserve">
-    <value>Plot to DWF</value>
-  </data>
   <data name="layer_shape_polyline" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\layer-shape-polyline.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
   <data name="measure" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\measure.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="TextDigitizePoint" xml:space="preserve">
-    <value>Digitize Point</value>
-  </data>
-  <data name="TextCopyMap" xml:space="preserve">
-    <value>Copy map to clipboard</value>
-  </data>
-  <data name="CountFormat" xml:space="preserve">
-    <value>{0} features in layer</value>
-  </data>
   <data name="select_centre" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\select-centre.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -259,9 +214,6 @@
   <data name="grab" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\grab.cur;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </data>
-  <data name="TooltipDisableTooltips" xml:space="preserve">
-    <value>Tooltips are enabled. Click to disable</value>
-  </data>
   <data name="select_features" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\select-features.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -271,18 +223,9 @@
   <data name="layer_shape_polygon" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\layer-shape-polygon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="TextClearSelection" xml:space="preserve">
-    <value>Clear Selection</value>
-  </data>
-  <data name="TextEnableTooltips" xml:space="preserve">
-    <value>Enable Tooltips</value>
-  </data>
   <data name="control-180" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\control-180.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="TextDigitizeRectangle" xml:space="preserve">
-    <value>Digitize Rectangle</value>
-  </data>
   <data name="view_back" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\view-back.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -298,21 +241,9 @@
   <data name="layer_shape_ellipse" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\layer-shape-ellipse.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="TextRefreshMap" xml:space="preserve">
-    <value>Refresh Map</value>
-  </data>
-  <data name="TextZoomExtents" xml:space="preserve">
-    <value>Zoom Extents</value>
-  </data>
   <data name="ui_tooltip_balloon_bottom" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\ui-tooltip-balloon-bottom.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="TextSelect" xml:space="preserve">
-    <value>Select</value>
-  </data>
-  <data name="TitleQuery" xml:space="preserve">
-    <value>Query</value>
-  </data>
   <data name="lc_group" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\lc_group.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -328,9 +259,6 @@
   <data name="edit_duplicate" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\edit-duplicate.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="TitleBuffer" xml:space="preserve">
-    <value>Buffer</value>
-  </data>
   <data name="edit_xml" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\edit-xml.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -340,9 +268,6 @@
   <data name="edit_cut" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\edit-cut.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="TitleMeasure" xml:space="preserve">
-    <value>Measure</value>
-  </data>
   <data name="PoweredBy_en" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\PoweredBy_en.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -352,9 +277,6 @@
   <data name="invoke_url" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\invoke-url.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="TooltipEnableTooltips" xml:space="preserve">
-    <value>Tooltips are disabled. Click to enable</value>
-  </data>
   <data name="error" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\error.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
@@ -394,91 +316,10 @@
   <data name="monitor_status" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\monitor_status.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="TextLoadPackage" xml:space="preserve">
-    <value>Load Package</value>
-  </data>
-  <data name="TextPackageLoaded" xml:space="preserve">
-    <value>Package Loaded</value>
-  </data>
-  <data name="TextTaskPane" xml:space="preserve">
-    <value>Task Pane</value>
-  </data>
-  <data name="TextViewerOptions" xml:space="preserve">
-    <value>Viewer Options</value>
-  </data>
   <data name="view_log" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\view_log.gif;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
-  <data name="TextOptionsSaved" xml:space="preserve">
-    <value>Options Saved</value>
-  </data>
-  <data name="TextNoSelection" xml:space="preserve">
-    <value>Nothing is selected</value>
-  </data>
-  <data name="TextZoomToSelection" xml:space="preserve">
-    <value>Zoom to Selection</value>
-  </data>
-  <data name="TextPrint" xml:space="preserve">
-    <value>Print</value>
-  </data>
-  <data name="TitlePrintSettings" xml:space="preserve">
-    <value>Print Settings</value>
-  </data>
-  <data name="TextScale" xml:space="preserve">
-    <value>Scale</value>
-  </data>
-  <data name="TitleTheme" xml:space="preserve">
-    <value>Theme</value>
-  </data>
   <data name="AreaRuleTemplate" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\AreaRuleTemplate.txt;System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
   </data>
-  <data name="TextExitApplication" xml:space="preserve">
-    <value>Exit</value>
-  </data>
-  <data name="DefaultLayerTooltip" xml:space="preserve">
-    <value>Name: {1}{0}Feature Source: {2}{0}Feature Class: {3}</value>
-  </data>
-  <data name="DrawingLayerTooltip" xml:space="preserve">
-    <value>Name: {1}{0}Feature Source: {2}</value>
-  </data>
-  <data name="ThemedLayerTooltip" xml:space="preserve">
-    <value>Name: {1}{0}Feature Source: {2}{0}Feature Class: {3}{0}Number of Rules: {4}</value>
-  </data>
-  <data name="TextZoomNext" xml:space="preserve">
-    <value>Zoom Next</value>
-  </data>
-  <data name="TextZoomPrevious" xml:space="preserve">
-    <value>Zoom Previous</value>
-  </data>
-  <data name="CircleDigitizationPrompt" xml:space="preserve">
-    <value>Click to finish</value>
-  </data>
-  <data name="LineDigitizationPrompt" xml:space="preserve">
-    <value>Click to finish</value>
-  </data>
-  <data name="LineStringDigitizationPrompt" xml:space="preserve">
-    <value>Click again to add a new vertex.\nDouble-click to finish</value>
-  </data>
-  <data name="PointDigitizationPrompt" xml:space="preserve">
-    <value>Click to finish</value>
-  </data>
-  <data name="PolygonDigitizationPrompt" xml:space="preserve">
-    <value>Click again to add a new vertex.\nDouble-click to finish</value>
-  </data>
-  <data name="GeneralDigitizationInstructions" xml:space="preserve">
-    <value>Press ESC to cancel</value>
-  </data>
-  <data name="MultiSegmentDigitzationInstructions" xml:space="preserve">
-    <value>Press Ctrl-Z to undo last point.\nPress ESC to cancel</value>
-  </data>
-  <data name="RectangleDigitizationPrompt" xml:space="preserve">
-    <value>Click to finish</value>
-  </data>
-  <data name="TextLayers" xml:space="preserve">
-    <value>Layers</value>
-  </data>
-  <data name="TextLayersRefreshing" xml:space="preserve">
-    <value>Layers (Refreshing...)</value>
-  </data>
 </root>
\ No newline at end of file

Added: branches/2.4/MgDev/Desktop/MapViewer/Strings.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Strings.Designer.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Strings.Designer.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -0,0 +1,855 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.5420
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace OSGeo.MapGuide.Viewer {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Strings {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Strings() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("OSGeo.MapGuide.Viewer.Strings", typeof(Strings).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Click to finish.
+        /// </summary>
+        internal static string CircleDigitizationPrompt {
+            get {
+                return ResourceManager.GetString("CircleDigitizationPrompt", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to {0} features in layer.
+        /// </summary>
+        internal static string CountFormat {
+            get {
+                return ResourceManager.GetString("CountFormat", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to {0} other styles.
+        /// </summary>
+        internal static string CountOtherStyles {
+            get {
+                return ResourceManager.GetString("CountOtherStyles", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to {0} results.
+        /// </summary>
+        internal static string CountResults {
+            get {
+                return ResourceManager.GetString("CountResults", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Name: {1}{0}Feature Source: {2}{0}Feature Class: {3}.
+        /// </summary>
+        internal static string DefaultLayerTooltip {
+            get {
+                return ResourceManager.GetString("DefaultLayerTooltip", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Name: {1}{0}Feature Source: {2}.
+        /// </summary>
+        internal static string DrawingLayerTooltip {
+            get {
+                return ResourceManager.GetString("DrawingLayerTooltip", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to A component with ID ({0}) already exists.
+        /// </summary>
+        internal static string ErrorComponentAlreadyExists {
+            get {
+                return ResourceManager.GetString("ErrorComponentAlreadyExists", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Component ({0}) does not exist.
+        /// </summary>
+        internal static string ErrorComponentNotFound {
+            get {
+                return ResourceManager.GetString("ErrorComponentNotFound", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to The specified component's target is not the Task Pane.
+        /// </summary>
+        internal static string ErrorComponentTargetNotTaskPane {
+            get {
+                return ResourceManager.GetString("ErrorComponentTargetNotTaskPane", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to EndInit: No Task Pane assigned.
+        /// </summary>
+        internal static string ErrorEndInitNoTaskPaneAssigned {
+            get {
+                return ResourceManager.GetString("ErrorEndInitNoTaskPaneAssigned", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Could not find the geometry property: {0}.
+        /// </summary>
+        internal static string ErrorGeometryPropertyNotFound {
+            get {
+                return ResourceManager.GetString("ErrorGeometryPropertyNotFound", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Property {0} is not a valid component property as it has not been marked with the MgComponentProperty attribute.
+        /// </summary>
+        internal static string ErrorInvalidComponentProperty {
+            get {
+                return ResourceManager.GetString("ErrorInvalidComponentProperty", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Layer metadata not fully initialized.
+        /// </summary>
+        internal static string ErrorLayerMetadataNotFullyInitialized {
+            get {
+                return ResourceManager.GetString("ErrorLayerMetadataNotFullyInitialized", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Malformed enum string. Expected enum:className:value.
+        /// </summary>
+        internal static string ErrorMalformedEnumString {
+            get {
+                return ResourceManager.GetString("ErrorMalformedEnumString", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to This feature is not yet implemented.
+        /// </summary>
+        internal static string ErrorNotImplemented {
+            get {
+                return ResourceManager.GetString("ErrorNotImplemented", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to The stream is not rewindable.
+        /// </summary>
+        internal static string ErrorStreamNotRewindable {
+            get {
+                return ResourceManager.GetString("ErrorStreamNotRewindable", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Target: No Task Pane assigned.
+        /// </summary>
+        internal static string ErrorTargetNoTaskPaneAssigned {
+            get {
+                return ResourceManager.GetString("ErrorTargetNoTaskPaneAssigned", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Unsupported item type: {0}.
+        /// </summary>
+        internal static string ErrorUnsupportedItemType {
+            get {
+                return ResourceManager.GetString("ErrorUnsupportedItemType", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Viewer not initialized via Init().
+        /// </summary>
+        internal static string ErrorViewerNotInitialized {
+            get {
+                return ResourceManager.GetString("ErrorViewerNotInitialized", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Press ESC to cancel.
+        /// </summary>
+        internal static string GeneralDigitizationInstructions {
+            get {
+                return ResourceManager.GetString("GeneralDigitizationInstructions", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Infinity.
+        /// </summary>
+        internal static string Infinity {
+            get {
+                return ResourceManager.GetString("Infinity", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Click to finish.
+        /// </summary>
+        internal static string LineDigitizationPrompt {
+            get {
+                return ResourceManager.GetString("LineDigitizationPrompt", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Click again to add a new vertex.\nDouble-click to finish.
+        /// </summary>
+        internal static string LineStringDigitizationPrompt {
+            get {
+                return ResourceManager.GetString("LineStringDigitizationPrompt", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to File.
+        /// </summary>
+        internal static string MenuFile {
+            get {
+                return ResourceManager.GetString("MenuFile", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Help.
+        /// </summary>
+        internal static string MenuHelp {
+            get {
+                return ResourceManager.GetString("MenuHelp", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Tools.
+        /// </summary>
+        internal static string MenuTools {
+            get {
+                return ResourceManager.GetString("MenuTools", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Buffer Layer ({0}) created.
+        /// </summary>
+        internal static string MsgBufferLayerCreated {
+            get {
+                return ResourceManager.GetString("MsgBufferLayerCreated", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Buffer Layer ({0}) updated.
+        /// </summary>
+        internal static string MsgBufferLayerUpdated {
+            get {
+                return ResourceManager.GetString("MsgBufferLayerUpdated", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Please enter a name for this layer.
+        /// </summary>
+        internal static string MsgEnterNameForLayer {
+            get {
+                return ResourceManager.GetString("MsgEnterNameForLayer", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Please include one or more layers to create a buffer from.
+        /// </summary>
+        internal static string MsgIncludeLayersToBuffer {
+            get {
+                return ResourceManager.GetString("MsgIncludeLayersToBuffer", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Theme Layer ({0}) created.
+        /// </summary>
+        internal static string MsgThemeLayerCreated {
+            get {
+                return ResourceManager.GetString("MsgThemeLayerCreated", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Press Ctrl-Z to undo last point.\nPress ESC to cancel.
+        /// </summary>
+        internal static string MultiSegmentDigitzationInstructions {
+            get {
+                return ResourceManager.GetString("MultiSegmentDigitzationInstructions", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Click to finish.
+        /// </summary>
+        internal static string PointDigitizationPrompt {
+            get {
+                return ResourceManager.GetString("PointDigitizationPrompt", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Click again to add a new vertex.\nDouble-click to finish.
+        /// </summary>
+        internal static string PolygonDigitizationPrompt {
+            get {
+                return ResourceManager.GetString("PolygonDigitizationPrompt", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Click to finish.
+        /// </summary>
+        internal static string RectangleDigitizationPrompt {
+            get {
+                return ResourceManager.GetString("RectangleDigitizationPrompt", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to {0} features selected.
+        /// </summary>
+        internal static string StatFeaturesSelected {
+            get {
+                return ResourceManager.GetString("StatFeaturesSelected", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to [unsupported data type].
+        /// </summary>
+        internal static string StrUnsupportedDataType {
+            get {
+                return ResourceManager.GetString("StrUnsupportedDataType", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Clear Selection.
+        /// </summary>
+        internal static string TextClearSelection {
+            get {
+                return ResourceManager.GetString("TextClearSelection", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Copy map to clipboard.
+        /// </summary>
+        internal static string TextCopyMap {
+            get {
+                return ResourceManager.GetString("TextCopyMap", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Digitize Circle.
+        /// </summary>
+        internal static string TextDigitizeCircle {
+            get {
+                return ResourceManager.GetString("TextDigitizeCircle", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Digitize Line.
+        /// </summary>
+        internal static string TextDigitizeLine {
+            get {
+                return ResourceManager.GetString("TextDigitizeLine", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Digitize Line String.
+        /// </summary>
+        internal static string TextDigitizeLineString {
+            get {
+                return ResourceManager.GetString("TextDigitizeLineString", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Digitize Point.
+        /// </summary>
+        internal static string TextDigitizePoint {
+            get {
+                return ResourceManager.GetString("TextDigitizePoint", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Digitize Polygon.
+        /// </summary>
+        internal static string TextDigitizePolygon {
+            get {
+                return ResourceManager.GetString("TextDigitizePolygon", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Digitize Rectangle.
+        /// </summary>
+        internal static string TextDigitizeRectangle {
+            get {
+                return ResourceManager.GetString("TextDigitizeRectangle", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Disable Tooltips.
+        /// </summary>
+        internal static string TextDisableTooltips {
+            get {
+                return ResourceManager.GetString("TextDisableTooltips", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Enable Tooltips.
+        /// </summary>
+        internal static string TextEnableTooltips {
+            get {
+                return ResourceManager.GetString("TextEnableTooltips", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Exit.
+        /// </summary>
+        internal static string TextExitApplication {
+            get {
+                return ResourceManager.GetString("TextExitApplication", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Layers.
+        /// </summary>
+        internal static string TextLayers {
+            get {
+                return ResourceManager.GetString("TextLayers", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Layers (Refreshing...).
+        /// </summary>
+        internal static string TextLayersRefreshing {
+            get {
+                return ResourceManager.GetString("TextLayersRefreshing", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Load Package.
+        /// </summary>
+        internal static string TextLoadPackage {
+            get {
+                return ResourceManager.GetString("TextLoadPackage", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Nothing is selected.
+        /// </summary>
+        internal static string TextNoSelection {
+            get {
+                return ResourceManager.GetString("TextNoSelection", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Options Saved.
+        /// </summary>
+        internal static string TextOptionsSaved {
+            get {
+                return ResourceManager.GetString("TextOptionsSaved", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Package Loaded.
+        /// </summary>
+        internal static string TextPackageLoaded {
+            get {
+                return ResourceManager.GetString("TextPackageLoaded", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Pan.
+        /// </summary>
+        internal static string TextPan {
+            get {
+                return ResourceManager.GetString("TextPan", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Plot to DWF.
+        /// </summary>
+        internal static string TextPlotToDwf {
+            get {
+                return ResourceManager.GetString("TextPlotToDwf", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Print.
+        /// </summary>
+        internal static string TextPrint {
+            get {
+                return ResourceManager.GetString("TextPrint", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Refresh Map.
+        /// </summary>
+        internal static string TextRefreshMap {
+            get {
+                return ResourceManager.GetString("TextRefreshMap", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Scale.
+        /// </summary>
+        internal static string TextScale {
+            get {
+                return ResourceManager.GetString("TextScale", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Select.
+        /// </summary>
+        internal static string TextSelect {
+            get {
+                return ResourceManager.GetString("TextSelect", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Select Polygon.
+        /// </summary>
+        internal static string TextSelectPolygon {
+            get {
+                return ResourceManager.GetString("TextSelectPolygon", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Select Radius.
+        /// </summary>
+        internal static string TextSelectRadius {
+            get {
+                return ResourceManager.GetString("TextSelectRadius", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Task Pane.
+        /// </summary>
+        internal static string TextTaskPane {
+            get {
+                return ResourceManager.GetString("TextTaskPane", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Viewer Options.
+        /// </summary>
+        internal static string TextViewerOptions {
+            get {
+                return ResourceManager.GetString("TextViewerOptions", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Zoom Extents.
+        /// </summary>
+        internal static string TextZoomExtents {
+            get {
+                return ResourceManager.GetString("TextZoomExtents", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Zoom In.
+        /// </summary>
+        internal static string TextZoomIn {
+            get {
+                return ResourceManager.GetString("TextZoomIn", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Zoom Next.
+        /// </summary>
+        internal static string TextZoomNext {
+            get {
+                return ResourceManager.GetString("TextZoomNext", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Zoom Out.
+        /// </summary>
+        internal static string TextZoomOut {
+            get {
+                return ResourceManager.GetString("TextZoomOut", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Zoom Previous.
+        /// </summary>
+        internal static string TextZoomPrevious {
+            get {
+                return ResourceManager.GetString("TextZoomPrevious", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Zoom to Selection.
+        /// </summary>
+        internal static string TextZoomToSelection {
+            get {
+                return ResourceManager.GetString("TextZoomToSelection", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Name: {1}{0}Feature Source: {2}{0}Feature Class: {3}{0}Number of Rules: {4}.
+        /// </summary>
+        internal static string ThemedLayerTooltip {
+            get {
+                return ResourceManager.GetString("ThemedLayerTooltip", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Equal.
+        /// </summary>
+        internal static string ThemeEqual {
+            get {
+                return ResourceManager.GetString("ThemeEqual", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Individual.
+        /// </summary>
+        internal static string ThemeIndividual {
+            get {
+                return ResourceManager.GetString("ThemeIndividual", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Jenks (Natural Breaks).
+        /// </summary>
+        internal static string ThemeJenks {
+            get {
+                return ResourceManager.GetString("ThemeJenks", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Quantile.
+        /// </summary>
+        internal static string ThemeQuantile {
+            get {
+                return ResourceManager.GetString("ThemeQuantile", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Standard Deviation.
+        /// </summary>
+        internal static string ThemeStandardDeviation {
+            get {
+                return ResourceManager.GetString("ThemeStandardDeviation", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Buffer.
+        /// </summary>
+        internal static string TitleBuffer {
+            get {
+                return ResourceManager.GetString("TitleBuffer", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Error.
+        /// </summary>
+        internal static string TitleError {
+            get {
+                return ResourceManager.GetString("TitleError", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Measure.
+        /// </summary>
+        internal static string TitleMeasure {
+            get {
+                return ResourceManager.GetString("TitleMeasure", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Print Settings.
+        /// </summary>
+        internal static string TitlePrintSettings {
+            get {
+                return ResourceManager.GetString("TitlePrintSettings", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Query.
+        /// </summary>
+        internal static string TitleQuery {
+            get {
+                return ResourceManager.GetString("TitleQuery", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to About the Task Pane.
+        /// </summary>
+        internal static string TitleTaskPaneAbout {
+            get {
+                return ResourceManager.GetString("TitleTaskPaneAbout", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Theme.
+        /// </summary>
+        internal static string TitleTheme {
+            get {
+                return ResourceManager.GetString("TitleTheme", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Viewer Options.
+        /// </summary>
+        internal static string TitleViewerOptions {
+            get {
+                return ResourceManager.GetString("TitleViewerOptions", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Tooltips are enabled. Click to disable.
+        /// </summary>
+        internal static string TooltipDisableTooltips {
+            get {
+                return ResourceManager.GetString("TooltipDisableTooltips", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Tooltips are disabled. Click to enable.
+        /// </summary>
+        internal static string TooltipEnableTooltips {
+            get {
+                return ResourceManager.GetString("TooltipEnableTooltips", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to WARNING: The specified initial task component id ({0}) does not exist in the AppLayout.
+        /// </summary>
+        internal static string WarnInitialTaskComponentNotFound {
+            get {
+                return ResourceManager.GetString("WarnInitialTaskComponentNotFound", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to WARNING: Attempted to invoke the component with ID ({0}), but could not find any component with this ID.
+        /// </summary>
+        internal static string WarnInvokeNonExistentComponent {
+            get {
+                return ResourceManager.GetString("WarnInvokeNonExistentComponent", resourceCulture);
+            }
+        }
+    }
+}

Added: branches/2.4/MgDev/Desktop/MapViewer/Strings.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Strings.resx	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer/Strings.resx	2012-09-17 13:40:40 UTC (rev 7019)
@@ -0,0 +1,384 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="CircleDigitizationPrompt" xml:space="preserve">
+    <value>Click to finish</value>
+  </data>
+  <data name="CountFormat" xml:space="preserve">
+    <value>{0} features in layer</value>
+  </data>
+  <data name="CountOtherStyles" xml:space="preserve">
+    <value>{0} other styles</value>
+  </data>
+  <data name="CountResults" xml:space="preserve">
+    <value>{0} results</value>
+  </data>
+  <data name="DefaultLayerTooltip" xml:space="preserve">
+    <value>Name: {1}{0}Feature Source: {2}{0}Feature Class: {3}</value>
+  </data>
+  <data name="DrawingLayerTooltip" xml:space="preserve">
+    <value>Name: {1}{0}Feature Source: {2}</value>
+  </data>
+  <data name="ErrorComponentAlreadyExists" xml:space="preserve">
+    <value>A component with ID ({0}) already exists</value>
+  </data>
+  <data name="ErrorComponentNotFound" xml:space="preserve">
+    <value>Component ({0}) does not exist</value>
+  </data>
+  <data name="ErrorComponentTargetNotTaskPane" xml:space="preserve">
+    <value>The specified component's target is not the Task Pane</value>
+  </data>
+  <data name="ErrorEndInitNoTaskPaneAssigned" xml:space="preserve">
+    <value>EndInit: No Task Pane assigned</value>
+  </data>
+  <data name="ErrorGeometryPropertyNotFound" xml:space="preserve">
+    <value>Could not find the geometry property: {0}</value>
+  </data>
+  <data name="ErrorInvalidComponentProperty" xml:space="preserve">
+    <value>Property {0} is not a valid component property as it has not been marked with the MgComponentProperty attribute</value>
+  </data>
+  <data name="ErrorLayerMetadataNotFullyInitialized" xml:space="preserve">
+    <value>Layer metadata not fully initialized</value>
+  </data>
+  <data name="ErrorMalformedEnumString" xml:space="preserve">
+    <value>Malformed enum string. Expected enum:className:value</value>
+  </data>
+  <data name="ErrorNotImplemented" xml:space="preserve">
+    <value>This feature is not yet implemented</value>
+  </data>
+  <data name="ErrorStreamNotRewindable" xml:space="preserve">
+    <value>The stream is not rewindable</value>
+  </data>
+  <data name="ErrorTargetNoTaskPaneAssigned" xml:space="preserve">
+    <value>Target: No Task Pane assigned</value>
+  </data>
+  <data name="ErrorUnsupportedItemType" xml:space="preserve">
+    <value>Unsupported item type: {0}</value>
+  </data>
+  <data name="ErrorViewerNotInitialized" xml:space="preserve">
+    <value>Viewer not initialized via Init()</value>
+  </data>
+  <data name="GeneralDigitizationInstructions" xml:space="preserve">
+    <value>Press ESC to cancel</value>
+  </data>
+  <data name="Infinity" xml:space="preserve">
+    <value>Infinity</value>
+  </data>
+  <data name="LineDigitizationPrompt" xml:space="preserve">
+    <value>Click to finish</value>
+  </data>
+  <data name="LineStringDigitizationPrompt" xml:space="preserve">
+    <value>Click again to add a new vertex.\nDouble-click to finish</value>
+  </data>
+  <data name="MenuFile" xml:space="preserve">
+    <value>File</value>
+  </data>
+  <data name="MenuHelp" xml:space="preserve">
+    <value>Help</value>
+  </data>
+  <data name="MenuTools" xml:space="preserve">
+    <value>Tools</value>
+  </data>
+  <data name="MsgBufferLayerCreated" xml:space="preserve">
+    <value>Buffer Layer ({0}) created</value>
+  </data>
+  <data name="MsgBufferLayerUpdated" xml:space="preserve">
+    <value>Buffer Layer ({0}) updated</value>
+  </data>
+  <data name="MsgEnterNameForLayer" xml:space="preserve">
+    <value>Please enter a name for this layer</value>
+  </data>
+  <data name="MsgIncludeLayersToBuffer" xml:space="preserve">
+    <value>Please include one or more layers to create a buffer from</value>
+  </data>
+  <data name="MsgThemeLayerCreated" xml:space="preserve">
+    <value>Theme Layer ({0}) created</value>
+  </data>
+  <data name="MultiSegmentDigitzationInstructions" xml:space="preserve">
+    <value>Press Ctrl-Z to undo last point.\nPress ESC to cancel</value>
+  </data>
+  <data name="PointDigitizationPrompt" xml:space="preserve">
+    <value>Click to finish</value>
+  </data>
+  <data name="PolygonDigitizationPrompt" xml:space="preserve">
+    <value>Click again to add a new vertex.\nDouble-click to finish</value>
+  </data>
+  <data name="RectangleDigitizationPrompt" xml:space="preserve">
+    <value>Click to finish</value>
+  </data>
+  <data name="StatFeaturesSelected" xml:space="preserve">
+    <value>{0} features selected</value>
+  </data>
+  <data name="TextClearSelection" xml:space="preserve">
+    <value>Clear Selection</value>
+  </data>
+  <data name="TextCopyMap" xml:space="preserve">
+    <value>Copy map to clipboard</value>
+  </data>
+  <data name="TextDigitizeCircle" xml:space="preserve">
+    <value>Digitize Circle</value>
+  </data>
+  <data name="TextDigitizeLine" xml:space="preserve">
+    <value>Digitize Line</value>
+  </data>
+  <data name="TextDigitizeLineString" xml:space="preserve">
+    <value>Digitize Line String</value>
+  </data>
+  <data name="TextDigitizePoint" xml:space="preserve">
+    <value>Digitize Point</value>
+  </data>
+  <data name="TextDigitizePolygon" xml:space="preserve">
+    <value>Digitize Polygon</value>
+  </data>
+  <data name="TextDigitizeRectangle" xml:space="preserve">
+    <value>Digitize Rectangle</value>
+  </data>
+  <data name="TextDisableTooltips" xml:space="preserve">
+    <value>Disable Tooltips</value>
+  </data>
+  <data name="TextEnableTooltips" xml:space="preserve">
+    <value>Enable Tooltips</value>
+  </data>
+  <data name="TextExitApplication" xml:space="preserve">
+    <value>Exit</value>
+  </data>
+  <data name="TextLoadPackage" xml:space="preserve">
+    <value>Load Package</value>
+  </data>
+  <data name="TextNoSelection" xml:space="preserve">
+    <value>Nothing is selected</value>
+  </data>
+  <data name="TextOptionsSaved" xml:space="preserve">
+    <value>Options Saved</value>
+  </data>
+  <data name="TextPackageLoaded" xml:space="preserve">
+    <value>Package Loaded</value>
+  </data>
+  <data name="TextPan" xml:space="preserve">
+    <value>Pan</value>
+  </data>
+  <data name="TextPlotToDwf" xml:space="preserve">
+    <value>Plot to DWF</value>
+  </data>
+  <data name="TextPrint" xml:space="preserve">
+    <value>Print</value>
+  </data>
+  <data name="TextRefreshMap" xml:space="preserve">
+    <value>Refresh Map</value>
+  </data>
+  <data name="TextScale" xml:space="preserve">
+    <value>Scale</value>
+  </data>
+  <data name="TextSelect" xml:space="preserve">
+    <value>Select</value>
+  </data>
+  <data name="TextSelectPolygon" xml:space="preserve">
+    <value>Select Polygon</value>
+  </data>
+  <data name="TextSelectRadius" xml:space="preserve">
+    <value>Select Radius</value>
+  </data>
+  <data name="TextTaskPane" xml:space="preserve">
+    <value>Task Pane</value>
+  </data>
+  <data name="TextViewerOptions" xml:space="preserve">
+    <value>Viewer Options</value>
+  </data>
+  <data name="TextZoomExtents" xml:space="preserve">
+    <value>Zoom Extents</value>
+  </data>
+  <data name="TextZoomIn" xml:space="preserve">
+    <value>Zoom In</value>
+  </data>
+  <data name="TextZoomNext" xml:space="preserve">
+    <value>Zoom Next</value>
+  </data>
+  <data name="TextZoomOut" xml:space="preserve">
+    <value>Zoom Out</value>
+  </data>
+  <data name="TextZoomPrevious" xml:space="preserve">
+    <value>Zoom Previous</value>
+  </data>
+  <data name="TextZoomToSelection" xml:space="preserve">
+    <value>Zoom to Selection</value>
+  </data>
+  <data name="ThemedLayerTooltip" xml:space="preserve">
+    <value>Name: {1}{0}Feature Source: {2}{0}Feature Class: {3}{0}Number of Rules: {4}</value>
+  </data>
+  <data name="ThemeEqual" xml:space="preserve">
+    <value>Equal</value>
+  </data>
+  <data name="ThemeIndividual" xml:space="preserve">
+    <value>Individual</value>
+  </data>
+  <data name="ThemeJenks" xml:space="preserve">
+    <value>Jenks (Natural Breaks)</value>
+  </data>
+  <data name="ThemeQuantile" xml:space="preserve">
+    <value>Quantile</value>
+  </data>
+  <data name="ThemeStandardDeviation" xml:space="preserve">
+    <value>Standard Deviation</value>
+  </data>
+  <data name="TitleBuffer" xml:space="preserve">
+    <value>Buffer</value>
+  </data>
+  <data name="TitleError" xml:space="preserve">
+    <value>Error</value>
+  </data>
+  <data name="TitleMeasure" xml:space="preserve">
+    <value>Measure</value>
+  </data>
+  <data name="TitlePrintSettings" xml:space="preserve">
+    <value>Print Settings</value>
+  </data>
+  <data name="TitleQuery" xml:space="preserve">
+    <value>Query</value>
+  </data>
+  <data name="TitleTheme" xml:space="preserve">
+    <value>Theme</value>
+  </data>
+  <data name="TitleViewerOptions" xml:space="preserve">
+    <value>Viewer Options</value>
+  </data>
+  <data name="TooltipDisableTooltips" xml:space="preserve">
+    <value>Tooltips are enabled. Click to disable</value>
+  </data>
+  <data name="TooltipEnableTooltips" xml:space="preserve">
+    <value>Tooltips are disabled. Click to enable</value>
+  </data>
+  <data name="WarnInitialTaskComponentNotFound" xml:space="preserve">
+    <value>WARNING: The specified initial task component id ({0}) does not exist in the AppLayout</value>
+  </data>
+  <data name="WarnInvokeNonExistentComponent" xml:space="preserve">
+    <value>WARNING: Attempted to invoke the component with ID ({0}), but could not find any component with this ID</value>
+  </data>
+  <data name="StrUnsupportedDataType" xml:space="preserve">
+    <value>[unsupported data type]</value>
+  </data>
+  <data name="TitleTaskPaneAbout" xml:space="preserve">
+    <value>About the Task Pane</value>
+  </data>
+  <data name="TextLayers" xml:space="preserve">
+    <value>Layers</value>
+  </data>
+  <data name="TextLayersRefreshing" xml:space="preserve">
+    <value>Layers (Refreshing...)</value>
+  </data>
+</root>
\ No newline at end of file

Modified: branches/2.4/MgDev/Desktop/MapViewer/Tasks/MgTaskPaneStub.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Tasks/MgTaskPaneStub.Designer.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/Tasks/MgTaskPaneStub.Designer.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -34,22 +34,15 @@
             // 
             // label2
             // 
-            this.label2.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                        | System.Windows.Forms.AnchorStyles.Left)
-                        | System.Windows.Forms.AnchorStyles.Right)));
-            this.label2.Location = new System.Drawing.Point(17, 15);
+            resources.ApplyResources(this.label2, "label2");
             this.label2.Name = "label2";
-            this.label2.Size = new System.Drawing.Size(208, 427);
-            this.label2.TabIndex = 1;
-            this.label2.Text = resources.GetString("label2.Text");
             // 
             // MgTaskPaneStub
             // 
-            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+            resources.ApplyResources(this, "$this");
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.Controls.Add(this.label2);
             this.Name = "MgTaskPaneStub";
-            this.Size = new System.Drawing.Size(243, 465);
             this.ResumeLayout(false);
 
         }

Modified: branches/2.4/MgDev/Desktop/MapViewer/Tasks/MgTaskPaneStub.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Tasks/MgTaskPaneStub.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/Tasks/MgTaskPaneStub.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -14,7 +14,7 @@
         public MgTaskPaneStub()
         {
             InitializeComponent();
-            this.Title = "About the Task Pane";
+            this.Title = Strings.TitleTaskPaneAbout;
         }
     }
 }

Modified: branches/2.4/MgDev/Desktop/MapViewer/Tasks/MgTaskPaneStub.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Tasks/MgTaskPaneStub.resx	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/Tasks/MgTaskPaneStub.resx	2012-09-17 13:40:40 UTC (rev 7019)
@@ -117,10 +117,52 @@
   <resheader name="writer">
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="label2.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
+    <value>Top, Bottom, Left, Right</value>
+  </data>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="label2.Location" type="System.Drawing.Point, System.Drawing">
+    <value>17, 15</value>
+  </data>
+  <data name="label2.Size" type="System.Drawing.Size, System.Drawing">
+    <value>208, 427</value>
+  </data>
+  <assembly alias="mscorlib" name="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="label2.TabIndex" type="System.Int32, mscorlib">
+    <value>1</value>
+  </data>
   <data name="label2.Text" xml:space="preserve">
     <value>The Task Pane is a generic contextual container that UI-based MapGuide Viewer Components can load their views into
 
 Such components can be configured to load their content into this container by simply specifying the "Target" property of the component to "TaskPane" and setting the "TaskPane" property to this control
 </value>
   </data>
+  <data name=">>label2.Name" xml:space="preserve">
+    <value>label2</value>
+  </data>
+  <data name=">>label2.Type" xml:space="preserve">
+    <value>System.Windows.Forms.Label, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </data>
+  <data name=">>label2.Parent" xml:space="preserve">
+    <value>$this</value>
+  </data>
+  <data name=">>label2.ZOrder" xml:space="preserve">
+    <value>0</value>
+  </data>
+  <metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
+    <value>True</value>
+  </metadata>
+  <data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
+    <value>6, 13</value>
+  </data>
+  <data name="$this.Size" type="System.Drawing.Size, System.Drawing">
+    <value>243, 465</value>
+  </data>
+  <data name=">>$this.Name" xml:space="preserve">
+    <value>MgTaskPaneStub</value>
+  </data>
+  <data name=">>$this.Type" xml:space="preserve">
+    <value>OSGeo.MapGuide.Viewer.MgControlView, OSGeo.MapGuide.Viewer, Version=2.4.0.6971, Culture=neutral, PublicKeyToken=e75f9fd7cf82dc3f</value>
+  </data>
 </root>
\ No newline at end of file

Modified: branches/2.4/MgDev/Desktop/MapViewer/Util.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer/Util.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer/Util.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -10,12 +10,12 @@
     {
         public static string ToHtmlColor(Color color)
         {
-            return String.Format("{0:X2}{1:X2}{2:X2}", color.R, color.G, color.B);
+            return String.Format("{0:X2}{1:X2}{2:X2}", color.R, color.G, color.B); //NOXLATE
         }
 
         public static string ToHtmlColorWithAlpha(Color color)
         {
-            return String.Format("{0:X2}{1:X2}{2:X2}{3:X2}", color.A, color.R, color.G, color.B);
+            return String.Format("{0:X2}{1:X2}{2:X2}{3:X2}", color.A, color.R, color.G, color.B); //NOXLATE
         }
 
         public static Color FromHtmlColor(string html)
@@ -46,7 +46,7 @@
             try
             {
                 String srs = map.GetMapSRS();
-                if (srs != "")
+                if (srs != string.Empty)
                     return srs;
             }
             catch (MgException e)
@@ -55,12 +55,12 @@
 
             //No SRS, set to ArbitrayXY meters
             //
-            return "LOCALCS[\"Non-Earth (Meter)\",LOCAL_DATUM[\"Local Datum\",0],UNIT[\"Meter\", 1],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]]";
+            return "LOCALCS[\"Non-Earth (Meter)\",LOCAL_DATUM[\"Local Datum\",0],UNIT[\"Meter\", 1],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]]"; //NOXLATE
         }
 
         public static void ClearDataSource(MgFeatureService featSvc, MgResourceIdentifier fsId, String featureName)
         {
-            MgDeleteFeatures deleteCmd = new MgDeleteFeatures(featureName, "ID >= 0");
+            MgDeleteFeatures deleteCmd = new MgDeleteFeatures(featureName, "ID >= 0"); //NOXLATE
             MgFeatureCommandCollection commands = new MgFeatureCommandCollection();
             commands.Add(deleteCmd);
             featSvc.UpdateFeatures(fsId, commands, false);
@@ -91,17 +91,17 @@
         public static void AddFeatureToCollection(MgBatchPropertyCollection propCollection, MgAgfReaderWriter agfRW, int featureId, MgGeometry featureGeom)
         {
             MgPropertyCollection bufferProps = new MgPropertyCollection();
-            MgInt32Property idProp = new MgInt32Property("ID", featureId);
+            MgInt32Property idProp = new MgInt32Property("ID", featureId); //NOXLATE
             bufferProps.Add(idProp);
             MgByteReader geomReader = agfRW.Write(featureGeom);
-            MgGeometryProperty geomProp = new MgGeometryProperty("GEOM", geomReader);
+            MgGeometryProperty geomProp = new MgGeometryProperty("GEOM", geomReader); //NOXLATE
             bufferProps.Add(geomProp);
             propCollection.Add(bufferProps);
         }
 
         public static String GetFeaturePropertyValue(MgReader featureReader, String propName)
         {
-            String value = "";
+            String value = string.Empty;
             int propertyType = featureReader.GetPropertyType(propName);
             switch (propertyType)
             {
@@ -136,7 +136,7 @@
                 case MgPropertyType.Feature:
                 case MgPropertyType.Geometry:
                 case MgPropertyType.Raster:
-                    value = "[unsupported data type]";
+                    value = Strings.StrUnsupportedDataType; //NOXLATE
                     break;
             }
             return value;
@@ -144,7 +144,7 @@
 
         public static String MakeUniqueLayerName(MgMapBase map, String layerName, String themeName)
         {
-            String desiredName = "_" + layerName + themeName;
+            String desiredName = "_" + layerName + themeName; //NOXLATE
             String uniqueName = desiredName;
             int index = 1;
 
@@ -160,17 +160,17 @@
         public static String InterpolateColor(double portion, String startColor, String endColor, int percentTransparent)
         {
             int alpha = (int)(255 * (100.0 - percentTransparent) / 100.0);
-            String result = "";
+            String result = string.Empty;
             if (startColor.Equals(endColor))
             {
-                result = String.Format("{0:X2}{1}", alpha, startColor);
+                result = String.Format("{0:X2}{1}", alpha, startColor); //NOXLATE
             }
             else
             {
                 int red = CalculateRGB(portion, startColor.Substring(0, 2), endColor.Substring(0, 2));
                 int green = CalculateRGB(portion, startColor.Substring(2, 2), endColor.Substring(2, 2));
                 int blue = CalculateRGB(portion, startColor.Substring(4, 2), endColor.Substring(4, 2));
-                result = String.Format("{0:X2}{1:X2}{2:X2}{3:X2}", alpha, red, green, blue);
+                result = String.Format("{0:X2}{1:X2}{2:X2}{3:X2}", alpha, red, green, blue); //NOXLATE
             }
             return result;
         }

Modified: branches/2.4/MgDev/Desktop/MapViewer.Desktop/MapViewer.Desktop.csproj
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer.Desktop/MapViewer.Desktop.csproj	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer.Desktop/MapViewer.Desktop.csproj	2012-09-17 13:40:40 UTC (rev 7019)
@@ -59,6 +59,11 @@
     <Compile Include="MgDesktopMapViewerProvider.cs" />
     <Compile Include="MgdTransientMapState.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Strings.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>Strings.resx</DependentUpon>
+    </Compile>
   </ItemGroup>
   <ItemGroup>
     <ProjectReference Include="..\MapViewer\MapViewer.csproj">
@@ -66,6 +71,12 @@
       <Name>MapViewer</Name>
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="Strings.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Strings.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.

Modified: branches/2.4/MgDev/Desktop/MapViewer.Desktop/MgDesktopMapViewerProvider.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer.Desktop/MgDesktopMapViewerProvider.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MapViewer.Desktop/MgDesktopMapViewerProvider.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -122,7 +122,7 @@
             if (layerImpl != null)
                 return layerImpl.HasTooltips();
 
-            throw new InvalidOperationException("The given layer is not of the expected implementation (" + typeof(MgdLayer).FullName + ")");
+            throw new InvalidOperationException(string.Format(Strings.ErrorLayerIncorrectImpl, typeof(MgdLayer).FullName));
         }
 
         public override bool IsLayerPotentiallyVisibleAtScale(MgLayerBase layer, bool bConsiderParentGroupVisibility)
@@ -131,7 +131,7 @@
             if (layerImpl != null)
                 return layerImpl.IsPotentiallyVisibleAtScale(_implMap.ViewScale, bConsiderParentGroupVisibility);
 
-            throw new InvalidOperationException("The given layer is not of the expected implementation (" + typeof(MgdLayer).FullName + ")");
+            throw new InvalidOperationException(string.Format(Strings.ErrorLayerIncorrectImpl, typeof(MgdLayer).FullName));
         }
 
         public override MgLayerBase CreateLayer(MgResourceIdentifier layerDefId)

Added: branches/2.4/MgDev/Desktop/MapViewer.Desktop/Strings.Designer.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer.Desktop/Strings.Designer.cs	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer.Desktop/Strings.Designer.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -0,0 +1,72 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.5420
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace OSGeo.MapGuide.Viewer.Desktop {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Strings {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Strings() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("OSGeo.MapGuide.Viewer.Desktop.Strings", typeof(Strings).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to The given layer is not of the expected implementation ({0}).
+        /// </summary>
+        internal static string ErrorLayerIncorrectImpl {
+            get {
+                return ResourceManager.GetString("ErrorLayerIncorrectImpl", resourceCulture);
+            }
+        }
+    }
+}

Added: branches/2.4/MgDev/Desktop/MapViewer.Desktop/Strings.resx
===================================================================
--- branches/2.4/MgDev/Desktop/MapViewer.Desktop/Strings.resx	                        (rev 0)
+++ branches/2.4/MgDev/Desktop/MapViewer.Desktop/Strings.resx	2012-09-17 13:40:40 UTC (rev 7019)
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="ErrorLayerIncorrectImpl" xml:space="preserve">
+    <value>The given layer is not of the expected implementation ({0})</value>
+  </data>
+</root>
\ No newline at end of file

Modified: branches/2.4/MgDev/Desktop/MgAppLayout/Properties/AssemblyInfo.cs
===================================================================
--- branches/2.4/MgDev/Desktop/MgAppLayout/Properties/AssemblyInfo.cs	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MgAppLayout/Properties/AssemblyInfo.cs	2012-09-17 13:40:40 UTC (rev 7019)
@@ -1,4 +1,4 @@
-using System.Reflection;
+using System.Reflection;
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
 
@@ -31,6 +31,6 @@
 //
 // You can specify all the values or you can default the Build and Revision Numbers 
 // by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+// [assembly: AssemblyVersion("2.4.0.6971")]
+[assembly: AssemblyVersion("2.4.0.6971")]
+[assembly: AssemblyFileVersion("2.4.0.6971")]

Modified: branches/2.4/MgDev/Desktop/MgAppLayout/Sheboygan.AppLayout
===================================================================
--- branches/2.4/MgDev/Desktop/MgAppLayout/Sheboygan.AppLayout	2012-09-14 13:17:23 UTC (rev 7018)
+++ branches/2.4/MgDev/Desktop/MgAppLayout/Sheboygan.AppLayout	2012-09-17 13:40:40 UTC (rev 7019)
@@ -2,6 +2,7 @@
 <AppLayout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <Title>MapGuide Desktop App Layout Example</Title>
   <Icon>app.ico</Icon>
+  <Language>zh-CN</Language>
   <Settings>
     <InvokeOnStartup>Startup</InvokeOnStartup>
     <SelectionColor>0000FF</SelectionColor>



More information about the mapguide-commits mailing list