home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / drsgrouped.tcl < prev    next >
Text File  |  1997-03-07  |  5KB  |  138 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)drsgrouped.tcl    /main/hindenburg/9
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)drsgrouped.tcl    /main/hindenburg/9   7 Mar 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14. require "drslinkabl.tcl"
  15.  
  16. #Class DrsGroupedObject : {DrsLinkableObject} {
  17. #    constructor
  18. #    method destructor
  19. #    method deleteLevel
  20. #    method getDoorsParObjId
  21. #    method removeRefObject
  22. #    method saveReference
  23. #    method show
  24. #    method synObjects
  25. #}
  26.  
  27. constructor DrsGroupedObject {class this level levelVersion pLevel pVersion} {
  28.     set this [DrsLinkableObject::constructor $class $this $level $levelVersion $pLevel $pVersion]
  29.     # Start constructor user section
  30.     # End constructor user section
  31.     return $this
  32. }
  33.  
  34. method DrsGroupedObject::destructor {this} {
  35.     # Start destructor user section
  36.     # End destructor user section
  37.     $this DrsLinkableObject::destructor
  38. }
  39.  
  40. method DrsGroupedObject::deleteLevel {this fileLevel parChilds} {
  41.     $this DrsLevelObject::deleteLevel $fileLevel ""
  42.     set levelType [$this levelType]
  43.     set parLevel [$this getParentPropertyObject]
  44.     set doorsObjId [$parLevel getPropertyValue ${FORMALMODULE}_$levelType]
  45.     if ![llength $doorsObjId] {
  46.         return
  47.     }
  48.     set selectedFilesDict [Dictionary new]
  49.     $selectedFilesDict contents $parChilds
  50.     set typeAvailable 0
  51.     $selectedFilesDict foreach fileName systemVersions {
  52.         if { [lindex [split $fileName .] 1] == $levelType } {
  53.         set typeAvailable 1
  54.         break
  55.         }
  56.     }
  57.     if !$typeAvailable {
  58.         set dxlCommand [$this dxlCommand]
  59.         set doorsObject [$dxlCommand doorsObjectFind $doorsObjId]
  60.         $dxlCommand doorsObjectDelete $doorsObject
  61.     }
  62. }
  63.  
  64.  
  65. method DrsGroupedObject::getDoorsParObjId {this } {
  66.     set parLevel [$this getParentPropertyObject]
  67.     set levelType [$this levelType]
  68.     set parDrsObjId [$parLevel getPropertyValue ${FORMALMODULE}_$levelType]
  69.     if ![llength $parDrsObjId] {
  70.         set dxlCommand [$this dxlCommand]
  71.         set doorsObject [$dxlCommand doorsObjectFind \
  72.                             [$parLevel getPropertyValue ${FORMALMODULE}]]
  73.         # for external files do a filtering
  74.         regsub -all {\.|\(|\)|\:|\\|\||\]|\[|\*|\+|\#|\-|\!|\=} $levelType "" filteredName
  75.         set doorsObject [$dxlCommand doorsObjectCreateChild \
  76.                                         $doorsObject $levelType $filteredName]
  77.         $dxlCommand doorsObjectAttrSave $doorsObject "Absolute Number"
  78.  
  79.     } else {
  80.         set dxlCommand [$this dxlCommand]
  81.         set doorsObject [$dxlCommand doorsObjectFind $parDrsObjId]
  82.         $dxlCommand doorsObjectShow $doorsObject
  83.     }
  84.     return $doorsObject
  85. }
  86.  
  87. method DrsGroupedObject::removeRefObject {this fileObject} {
  88.     set levelType [$this levelType]
  89.     set systemLevel [$this parentLevel]
  90.     set selectedFilesDict [Dictionary new]
  91.     $selectedFilesDict contents [$systemLevel getPropertyValue \
  92.                 ${FORMALMODULE}_SelectedItems]
  93.     set selectedFilesOfType [$selectedFilesDict set $levelType]
  94.     if ![llength $selectedFilesOfType] {
  95.         $this DrsLevelObject::removeRefObject $fileObject
  96.         $systemLevel removeProperty ${FORMALMODULE}_$levelType
  97.     }
  98. }
  99.  
  100. method DrsGroupedObject::saveReference {this fLevel drsRefs parOTVers selIts} {
  101.     if {[llength $drsRefs] > 1 } {
  102.         # group object created
  103.         set ownDRef [lreplace $drsRefs 0 0]
  104.         # file section created
  105.         set levelType [$this levelType]
  106.         set parentLevel [$this parentLevel]
  107.         set doorsObjId  [lindex $drsRefs 0]
  108.         $parentLevel setProperty ${FORMALMODULE}_$levelType  $doorsObjId
  109.         #$this addDoorsRefToCorp [[[$this level] project] name] $doorsObjId
  110.     } else {
  111.         # group object already exists
  112.         set ownDRef [lindex $drsRefs 0]
  113.     }
  114.     $this DrsLinkableObject::saveReference $fLevel $ownDRef \
  115.                             $parOTVers $selIts
  116.  
  117. }
  118.  
  119. method DrsGroupedObject::show {this majorOper minorOper} {
  120.     set parentLevel [$this parentLevel]
  121.         set levelType [$this levelType]
  122.         set myTypeObjId [$parentLevel getPropertyValue \
  123.                         ${FORMALMODULE}_$levelType]
  124.         set dxlCommand [$this dxlCommand]
  125.         if {[llength $myTypeObjId] && $myTypeObjId > 0 } {
  126.             set doorsObject [$dxlCommand doorsObjectFind $myTypeObjId]
  127.             $dxlCommand doorsObject$majorOper $doorsObject $minorOper
  128.         }
  129.         $this DrsTreeObject::show $majorOper $minorOper
  130. }
  131.  
  132. method DrsGroupedObject::synObjects {this} {
  133.     return "1"
  134. }
  135.  
  136. # Do not delete this line -- regeneration end marker
  137.  
  138.