Quintiq file version 2.0
#parent: #root
Method EditUnit (
  internal[GUIComponent] parent,
  Unit selection
) id:Method_DialogCreateEditUnit_EditUnit
{
  #keys: '[11660.0.16642470]'
  Body:
  [*
    // Edit a unit
    
    data := shadow( selection );
    
    Dialog.Data( data );
    
    this.SetDefaultValue( selection.Parent(), selection.Group() );
    
    DataHolderUnitSelection.Data( selection );
    
    if( not isnull( data ) )
    {
      CheckBoxHasStart.Checked( selection.StartDate().IsFinite() )
      CheckBoxHasEnd.Checked( selection.EndDate().IsFinite() )
    }
    
    Dialog.SetUI();
    Dialog.SetDefaultCapacity();
    Dialog.SetTooltip();
    
    result := this.DoModal( parent );
    
    if( result > 0 )
    {
      parentunit := null( Unit );
      if( CheckBoxParent.Checked() )
      {
        parentunit := SelectionParent.Data();
      }
    
      start := Date::MinDate();
      end := Date::MaxDate();
      if( CheckBoxHasStart.Checked() )
      {
        start := GUIDateTimeSelectorStart.DateTime().Date();
      }
      if( CheckBoxHasEnd.Checked() )
      {
        end := GUIDateTimeSelectorEnd.DateTime().Date();
      }
    
      data.Parent( relset, parentunit );
      if( CheckBoxHasUserFrozenFutureDuration.Checked() )
      {
        GUIDurationSelectorUserFrozenFutureDuration.Enabled( false );
        data.UserFrozenFutureDuration( GUIDurationSelectorUserFrozenFutureDuration.Duration() );     
      }
      
      data.StartDate( start );
      data.EndDate( end );
      selection.UpdateTypeIndex( EditorID.Text() );      // Read-only, apply changes to shadow is not taking place for read-only attribute when editing.
      data.Commit();
    }
  *]
}
