Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method DeleteDataset ( 
 | 
  structured[LibOpt_SnapshotReplannableCopyDataset] snapshots 
 | 
) id:Method_LibOpt_GlobalState_DeleteDataset 
 | 
{ 
 | 
  #keys: '[141860.2.581295660]' 
 | 
  Body: 
 | 
  [* 
 | 
    // Delete the datasets that are attached to the LibOpt_SnapshotReplannableCopyDatasets 
 | 
    loadedobjectinfos := ExternalMDSEditor::Editor().LoadedObjectInfos(); 
 | 
    infocurrentdataset := loadedobjectinfos.Find( snapshots.First().MDSID() ); 
 | 
     
 | 
    // Show a popup with a warning if you are trying to delete the currently selected dataset. 
 | 
    // Show a different popup for each dataset that is currently loaded.  
 | 
    traverse( snapshots, 
 | 
              Elements, 
 | 
              snapshot, 
 | 
              not snapshot.IsDatasetDeleted() 
 | 
              ) 
 | 
    { 
 | 
      if( infocurrentdataset.Name() = snapshot.DatasetName() ) 
 | 
      { 
 | 
        if ( MessageBox::Question( this, Translations::LibOpt_SnapshotReplannable_MessageBox_DeleteCurrentDataset(), '&Yes|&No' ) <> 0 ) 
 | 
        { 
 | 
          snapshots.Remove( snapshot ); 
 | 
        } 
 | 
      } 
 | 
      else if( not isnull( loadedobjectinfos.Find( snapshot.DatasetName() ) ) ) 
 | 
      { 
 | 
        if ( MessageBox::Question( this, Translations::LibOpt_SnapshotReplannable_MessageBox_DeleteLoadedDataset( snapshot ), '&Yes|&No' ) <> 0 ) 
 | 
        { 
 | 
          snapshots.Remove( snapshot ); 
 | 
        } 
 | 
      } 
 | 
     
 | 
    } 
 | 
     
 | 
    // The DeleteDatasetCopiesAndUpdateSnapshotStatus unloads all dataset copies. 
 | 
    // When a dataset copy cannot be found, then the DeleteDatasetCopiesAndUpdateSnapshotStatus also updates all snapshots.  
 | 
    // We both delete the datasets and update the snapshots in a single method to ensure that we only start 1 server transaction. 
 | 
    // We cannot use the 'Group server calls in 1 transaction' checkbox, because UI methods (like this one) cannot be used when that checkbox is checked. 
 | 
    isanydatasetdeleted := LibOpt_SnapshotReplannableCopyDataset::DeleteDatasetCopiesAndUpdateSnapshotStatus( snapshots ) 
 | 
    if( isanydatasetdeleted ) 
 | 
    { 
 | 
      // Show a popup warning explaining that the status of the snapshots has been updated. 
 | 
      MessageBox::Warning( this, 
 | 
                           Translations::LibOpt_SnapshotReplannable_MessageBox_UnexpectedStatus(), 
 | 
                           Translations::LibOpt_MessageBox_OK() 
 | 
                           ); 
 | 
    } 
 | 
  *] 
 | 
} 
 |