<RefactorLibrary>
<!--
Description: RefactorLibrary to migrte MSComCtl2 controls to WinForms controls
Note: the refactor block declares migration event mscomct2 and attaches a migration handler
Migrates UpDownControl to a gmRTL wrapper control
-->
<Refactor id="[mscomct2.ocx]" event="mscomct2" >
<!--
********************************************************** 
* Library                   
********************************************************** 
-->
   <Migrate migName="System.Windows.Forms" libType="Native" AssemblyName="gmRTL.MSComCtl2" />
   <!-- <Migrate LibType="Internal" location="DoNotDeclare" migName="System.Windows.Forms" /> -->

<!--
********************************************************** 
* Classes
********************************************************** 
-->
   <Migrate  id="DataObject"       migStatus="UsesCOM"/>
   <Migrate  id="DataObjectFiles"  migStatus="UsesCOM"/>
   <Migrate id="MonthView" migName="MonthCalendar" role="control" />
   <Migrate id="UpDown" migName="gmRTL.MSComCtl2.UpDownControl" role="control" migStatus="External"/>
   <Migrate id="DTPicker" migName="DateTimePicker" role="Control" />
   <Migrate id="Animation"  migName="gmRTL.MSComCtl2.Animation" migstatus="External" role="Control" />
   <!-- TODO: migrate to VScrollBar or HScrollBar depending on Orientation -->
   <Migrate id="FlatScrollBar"  migName="VScrollBar" role="Control"/>
<!--
********************************************************** 
* Enums
********************************************************** 
-->
   <Migrate id="AlignmentConstants" migName="LeftRightAlignment" />
   <Migrate id="AlignmentConstants.cc2AlignmentLeft" migName="Left" />
   <Migrate id="AlignmentConstants.cc2AlignmentRight" migName="Right" />

   <Migrate id="BackStyleConstants" migName="gmRTL.GUI.Enums.BackStyleConstants" migStatus="external" />

   <Migrate id="FormatConstants" migName="DateTimePickerFormat"  />
   <Migrate id="FormatConstants.dtpLongDate" migName="Long"  />
   <Migrate id="FormatConstants.dtpShortDate" migName="Short"  />
   <Migrate id="FormatConstants.dtpTime" migName="Time"  />
   <Migrate id="FormatConstants.dtpCustom" migName="Custom"  />

   <Migrate id="DayConstants" migName="Day" />
   <Migrate id="DayConstants.mvwSunday" migName="Sunday" />
   <Migrate id="DayConstants.mvwMonday" migName="Monday" />
   <Migrate id="DayConstants.mvwTuesday" migName="Tuesday" />
   <Migrate id="DayConstants.mvwWednesday" migName="Wednesday" />
   <Migrate id="DayConstants.mvwThursday" migName="Thursday" />
   <Migrate id="DayConstants.mvwFriday" migName="Friday" />
   <Migrate id="DayConstants.mvwSaturday" migName="Saturday" />

<!--
********************************************************** 
* Properties              
********************************************************** 
-->
   <Extend id="IDTPicker">
      <Property id="DateIsNull" type="Boolean" />
   </Extend>
   <Migrate id="IDTPicker.CheckBox" migName="ShowCheckBox" />
   <Migrate id="IDTPicker.CalendarBackColor" migName="CalendarMonthBackground" />
   <Migrate id="IDTPicker.Day" type="Integer" status="GetSetLet">
         <Get npram="1" migPattern="%1d.Value.Day"/>
         <Let npram="2" migPattern="gmRTL.MSComCtl2.DTPickerHelper.SetDay(%2d,%1d)\c"/>
   </Migrate>
   <Migrate id="IDTPicker.DayOfWeek" migName="Value.DayOfWeek.ToInt()" type="Integer" />
   <Migrate id="IDTPicker.Hour" migName="Value.Hour" type="Integer" />
   <Migrate id="IDTPicker.Month" type="Integer" status="GetSetLet">
         <Get npram="1" migPattern="%1d.Value.Month"/>
         <Let npram="2" migPattern="gmRTL.MSComCtl2.DTPickerHelper.SetMonth(%2d,%1d)\c"/>
   </Migrate>
   <Migrate id="IDTPicker.Minute" migName="Value.Minute" type="Integer" />
   <Migrate id="IDTPicker.Second" migName="Value.Second" type="Integer" />
   <Migrate id="IDTPicker.UpDown" migName="ShowUpDown"  />
   <!-- 
   IDTPicker.Value may require special processing due to the special 
   semantics of Value = Null.  In VB6 this means the Value was not set
   by the user.
   
   Note that Value is a Date and cannot be null in .NET.  In .NET, 
   Checked=off means "null". See PRM-1579.

   <Migrate id="IDTPicker.Value" status="GetSet" type="Date" migStatus="extension" >
      <get migPattern="%1d.Value" nPram="1" />
      <set migPattern="%2d.SetValue(%1d)\c" nPram="2" /> 
      or
      <set migPattern="gmRTL.MSCOMCt2.SetValue(%2d,%1d)\c" nPram="2" /> 
   </Migrate>   
   
   If you want to use this function as extension, you will need to 
   configure the tool to also add a using for the namespace
   containing the user.
   
   Note, using this migration may cause issues with Date comparisons.
   
   If this is not needed, the GetSet migration may be commented out and 
   simply migrate Value type to Date.
  
   <Migrate id="IDTPicker._Value" migName="Value" type="Date" />
   <Migrate id="IDTPicker.Value" migName="Value" type="Date" />
   -->   
   <Migrate id="IDTPicker.Year" type="Integer" status="GetSetLet">
         <Get npram="1" migPattern="%1d.Value.Year"/>
         <Let npram="2" migPattern="gmRTL.MSComCtl2.DTPickerHelper.SetYear(%2d,%1d)\c"/>
   </Migrate>
   <Migrate id="IDTPicker.Value" status="GetSet" type="Object" >
      <get migPattern="gmRTL.MSComCtl2.DTPickerHelper.GetValue(%1d)" nPram="1" /> 
      <set migPattern="gmRTL.MSComCtl2.DTPickerHelper.SetValue(%2d,%1d)\c" nPram="2" /> 
   </Migrate>
   <Migrate id="IDTPicker._Value" status="GetSet" type="Object" >
      <get migPattern="gmRTL.MSComCtl2.DTPickerHelper.GetValue(%1d)" nPram="1" /> 
      <set migPattern="gmRTL.MSComCtl2.DTPickerHelper.SetValue(%2d,%1d)\c" nPram="2" /> 
   </Migrate>   

   <Migrate id="IFlatSB.Min" migName="Minimum"  />
   <Migrate id="IFlatSB.Max" migName="Maximum"  />

   <Migrate id="IMonthView.MaxSelCount"  migName="MaxSelectionCount" />
   <Migrate id="IMonthView.Value" status="GetSet" >
       <Get nPram="1" migPattern="%1d.SelectionStart" />
       <Let nPram="2" migPattern="%2d.SetDate(%1d)\c" />
   </Migrate>

   <Migrate id="IUpDown.Alignment" migName="UpDownAlign" type="AlignmentConstants" />
   <Migrate id="IUpDown.Min" migName="Minimum"  />
   <Migrate id="IUpDown.Max" migName="Maximum"  />
   <Migrate id="IUpDown.Value" type="Currency"  />
   
   <!-- connection to other control has changed -->
   
   <Migrate id="IUpDown.AutoBuddy" />
   <Migrate id="IUpDown.BuddyControl" type="TextBox" />
   <Migrate id="IUpDown.BuddyControl.Let" type="TextBox" npram="3" migPattern="%3d.BuddyControl = %2d\c" />
   <Migrate id="IUpDown.BuddyProperty"  />
   <Migrate id="IUpDown.SyncBuddy" migStatus="NotImplemented" />
   <Migrate id="IUpDown.Wrap" migStatus="NotImplemented" />   
<!-- 
********************************************************** 
* EventHandlers           
********************************************************** 
-->
   <Migrate id="DMonthViewEvents.DateClick" role="event" specializedHookup="on"  netHandler="System.Windows.Forms.DateRangeEventHandler" netArgs="DateRangeEventArgs" migPattern="DateSelected" />
   <Migrate id="DMonthViewEvents.DateClick.DateClicked" migPattern="%1d = e.Start" />
   <Migrate id="DMonthViewEvents.KeyDown" migPattern="KeyDown" nPram="3" Role="Event" specializedHookup="on"  netHandler="System.Windows.Forms.KeyEventHandler" netArgs="KeyEventArgs" />
   <Migrate id="DMonthViewEvents.KeyDown.keyCode" cshPattern="%1d = (int)e.KeyCode" nPram="0" vbnPattern="%1d = e.KeyCode" status="ByVal" type="Integer" />
   <Migrate id="DMonthViewEvents.KeyDown.shift" migPattern="%1d = e.Shift" nPram="0" type="Boolean" />
   <Migrate id="DMonthViewEvents.SelChange" role="event" specializedHookup="on"  netHandler="System.Windows.Forms.DateRangeEventHandler" netArgs="DateRangeEventArgs" migPattern="DateSelected" />
   <Migrate id="DMonthViewEvents.SelChange.StartDate" migPattern="%1d = e.Start" />
   <Migrate id="DMonthViewEvents.SelChange.EndDate" migPattern="%1d = e.End" />
   
   <Migrate id="DUpDownEvents.Change" role="event" specializedHookup="on"  netHandler="System.EventHandler" netArgs="System.EventArgs" migPattern="ValueChanged" />
   <Migrate id="DUpDownEvents.DownClick" role="event" specializedHookup="on"  netHandler="System.EventHandler" netArgs="System.EventArgs" migPattern="DownClick" />
   <Migrate id="DUpDownEvents.UpClick" role="event" specializedHookup="on"  netHandler="System.EventHandler" netArgs="System.EventArgs" migPattern="UpClick" />
   
   <Migrate id="DDTPickerEvents.Change" role="event" specializedHookup="on"  netHandler="System.EventHandler" netArgs="System.EventArgs" migName="ValueChanged" />
   <Migrate id="DDTPickerEvents.Click" specializedHookup="on" migName="Click" />
   <Migrate id="DDTPickerEvents.CloseUp" specializedHookup="on" />
   <Migrate id="DDTPickerEvents.KeyDown" migPattern="KeyDown" nPram="3" Role="Event" specializedHookup="on"  netHandler="System.Windows.Forms.KeyEventHandler" netArgs="KeyEventArgs" />
   <Migrate id="DDTPickerEvents.KeyDown.keyCode" cshPattern="%1d = (int)e.KeyCode" nPram="0" vbnPattern="%1d = e.KeyCode" status="ByVal" type="Integer" />
   <Migrate id="DDTPickerEvents.KeyDown.shift" migPattern="%1d = e.Shift" nPram="0" type="Boolean" />
   <Migrate id="DDTPickerEvents.KeyUp" migPattern="KeyUp" nPram="3" Role="Event" specializedHookup="on"  netHandler="System.Windows.Forms.KeyEventHandler" netArgs="KeyEventArgs" />
   <Migrate id="DDTPickerEvents.KeyUp.keyCode" migPattern="%1d = (int)e.KeyCode" nPram="0" status="ByVal" type="Integer" />
   <Migrate id="DDTPickerEvents.KeyUp.shift" migPattern="%1d = e.Shift" nPram="0" type="Boolean" />
   <Migrate id="DDTPickerEvents.KeyPress" migPattern="KeyPress" nPram="2" Role="Event" specializedHookup="on"  netHandler="System.Windows.Forms.KeyPressEventHandler" netArgs="System.Windows.Forms.KeyPressEventArgs" />
   <Migrate id="DDTPickerEvents.KeyPress.keyAscii" migPattern="%1d = (int)e.KeyChar" nPram="0" status="ByVal" type="Integer" />
   
   <Migrate id="DFlatSBEvents.Change" role="event" specializedHookup="on"  netHandler="System.EventHandler" netArgs="System.EventArgs" migPattern="ValueChanged" />
   <Migrate id="DFlatSBEvents.Scroll" role="event" specializedHookup="on"  netHandler="System.Windows.Forms.ScrollEventHandler" netArgs="System.Windows.Forms.ScrollEventArgs" migPattern="Scroll" />
<!--
********************************************************** 
* Designer Code 
********************************************************** 
-->
   <migClass id="NetControl.Animation" migName="gmRTL.MSComCtl2.Animation" parent="Animation">
      <property id="Enabled" value="Enabled" />
      <property id="Location" value="(Left,Top)" nPram="2" migPattern="new System.Drawing.Point(%1d, %2d)"/>
      <property id="Name" type="string" value="SYM.name" />
      <property id="Size" value="(Width,Height)" nPram="2" migPattern="new System.Drawing.Size(%1d, %2d)" />
      <property id="TabIndex" type="Integer" value="TabIndex" default="0" />
      <property id="Visible" value="Visible" />
   </migClass>
   
   <migClass id="NetControl.DTPicker" migName="System.Windows.Forms.DateTimePicker" parent="DTPicker">
      <!--
      TOOL_TODO: This needs to be done post Initialize
      <property id="Checked" value="IDTPicker.DateIsNull" nPram="1" migPattern = "!%1d" />
      -->
      <property id="Checked_gmsl" value="IDTPicker.DateIsNull" type="boolean" />
      <property id="CustomFormat" value="IDTPicker.CustomFormat" />
      <property id="Enabled" value="IDTPicker.Enabled" />
      <property id="Font" value="Font" type="FontInfo" nPram="3"
                vbnPattern="New System.Drawing.Font(\s%1d\s, %2d!, %3d, System.Drawing.GraphicsUnit.Point, CType(0,Byte))"
                cshPattern="new System.Drawing.Font(\s%1d\s, %2dF, %3d, System.Drawing.GraphicsUnit.Point, (System.Byte)(0))" />
      <property id="Format" value="IDTPicker.Format" />
      <property id="Location" value="(Left,Top)" nPram="2" migPattern="new System.Drawing.Point(%1d, %2d)"/>
      <property id="Name" type="string" value="SYM.name" />
      <property id="ShowCheckBox" value="IDTPicker.CheckBox" />
      <property id="ShowUpDown" value="IDTPicker.UpDown" />
      <property id="Size" value="(Width,Height)" nPram="2" migPattern="new System.Drawing.Size(%1d, %2d)" />
      <property id="TabIndex" type="Integer" value="TabIndex" default="0" />
      <property id="Visible" value="Visible" />
   </migClass>

   <migClass id="NetControl.FlatScrollbar" migName="System.Windows.Forms.VScrollBar" parent="FlatScrollbar">
      <property id="Enabled" value="IFlatSB.Enabled" />
      <property id="Location" value="(Left,Top)" nPram="2" migPattern="new System.Drawing.Point(%1d, %2d)"/>
      <property id="Name" type="string" value="SYM.name" />
      <property id="Maximum" type="Integer" value="IFlatSB.Max" />
      <property id="Size" value="(Width,Height)" nPram="2" migPattern="new System.Drawing.Size(%1d, %2d)" />
      <property id="TabIndex" type="Integer" value="TabIndex" default="0" />
      <property id="Visible" value="Visible" />
   </migClass>

   <migClass id="NetControl.MonthView" migName="System.Windows.Forms.MonthView" parent="MonthView">
      <property id="Enabled" value="IMonthView.Enabled" />
      <property id="FirstDayOfWeek" type="MSComCtl2.DayConstants" value="IMonthView.StartOfWeek" default="Day.Sunday"/>
      <property id="Font" value="Font" type="FontInfo" nPram="3"
                vbnPattern="New System.Drawing.Font(\s%1d\s, %2d!, %3d, System.Drawing.GraphicsUnit.Point, CType(0,Byte))"
                cshPattern="new System.Drawing.Font(\s%1d\s, %2dF, %3d, System.Drawing.GraphicsUnit.Point, (System.Byte)(0))" />
      <property id="ForeColor" type="OLE_COLOR" value="IMonthView.ForeColor" nPram="3" default="System.Drawing.SystemColors.ControlText"
                migPattern="System.Drawing.Color.FromArgb(%3d, %2d, %1d)"  />
      <property id="Location" value="(Left,Top)" nPram="2" migPattern="new System.Drawing.Point(%1d, %2d)"/>
      <property id="MaxSelectionCount" type="Integer" value="IMonthView.MaxSelCount" default="1" />
      <property id="Name" type="string" value="SYM.name" />
      <property id="Size" value="(Width,Height)" nPram="2" migPattern="new System.Drawing.Size(%1d, %2d)" />
      <property id="TabIndex" type="Integer" value="TabIndex" default="0" />
      <property id="Visible" value="Visible" />
   </migClass>

   <migClass id="NetControl.UpDown" migName="gmRTL.MSComCtl2.UpDownControl" parent="UpDown">
      <property id="AutoBuddy" value="IUpDown.AutoBuddy" />
      <property id="BuddyControl" type="Variant" value="IUpDown.BuddyControl" />
      <property id="BuddyProperty" value="IUpDown.BuddyProperty" />
      <property id="Enabled" value="Enabled" />
      <property id="Increment" value="IUpDown.Increment" />
      <property id="Location" value="(Left,Top)" nPram="2" migPattern="new System.Drawing.Point(%1d, %2d)"/>
      <property id="Maximum" value="IUpDown.Max" />
      <property id="Minimum" value="IUpDown.Min" />
      <property id="Name" type="string" value="SYM.name" />
      <property id="Size" value="(Width,Height)" nPram="2" migPattern="new System.Drawing.Size(%1d, %2d)" />
      <property id="SyncBuddy" value="IUpDown.SyncBuddy" />
      <property id="TabIndex" type="Integer" value="TabIndex" default="0" />
      <property id="UpDownAlign" value="IUpDown.Alignment" />
      <property id="Value" Value="IUpDown.Value" />
      <property id="Wrap" Value="IUpDown.Wrap" />
      <property id="Visible" value="Visible" />
   </migClass>

<!--
********************************************************** 
* Logic Migration
********************************************************** 
Assigning DTPicker.Value to Null is a special operation 
This is only needed if we are migrating Value to an extension method      
-->
   <!-- <migClass id="DotNet"> -->
      <!-- <method id="AssignDtPickerNull" type="void" nPram="1" migPattern="%1d.Checked = false\c" /> -->
   <!-- </migClass> -->
   <!-- <gmSL NameSpace="mscomct2" Class="Transform" Source="Mscomct2.ocx.WinForms.gmsl" /> -->
</Refactor>
</RefactorLibrary>