home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / drsgrouped.tcl < prev    next >
Text File  |  1997-09-23  |  5KB  |  137 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)drsgrouped.tcl    /main/titanic/5
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)drsgrouped.tcl    /main/titanic/5   23 Sep 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 ${DrsDriver::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. method DrsGroupedObject::getDoorsParObjId {this} {
  65.     set parLevel [$this getParentPropertyObject]
  66.     set levelType [$this levelType]
  67.     set parDrsObjId [$parLevel getPropertyValue ${DrsDriver::FORMALMODULE}_$levelType]
  68.     if ![llength $parDrsObjId] {
  69.         set dxlCommand [$this dxlCommand]
  70.         set doorsObject [$dxlCommand doorsObjectFind \
  71.                             [$parLevel getPropertyValue ${DrsDriver::FORMALMODULE}]]
  72.         # for external files do a filtering
  73.         regsub -all {\&|\$|\%|\^|\.|\(|\)|\:|\\|\||\]|\[|\*|\+|\#|\-|\!|\=} $levelType "" filteredName
  74.         set doorsObject [$dxlCommand doorsObjectCreateChild \
  75.                                         $doorsObject $levelType $filteredName]
  76.         $dxlCommand doorsObjectAttrSave $doorsObject "Absolute Number"
  77.  
  78.     } else {
  79.         set dxlCommand [$this dxlCommand]
  80.         set doorsObject [$dxlCommand doorsObjectFind $parDrsObjId]
  81.         $dxlCommand doorsObjectShow $doorsObject
  82.     }
  83.     return $doorsObject
  84. }
  85.  
  86. method DrsGroupedObject::removeRefObject {this fileObject} {
  87.     set levelType [$this levelType]
  88.     set systemLevel [$this parentLevel]
  89.     set selectedFilesDict [Dictionary new]
  90.     $selectedFilesDict contents [$systemLevel getPropertyValue \
  91.                 ${DrsDriver::FORMALMODULE}_SelectedItems]
  92.     set selectedFilesOfType [$selectedFilesDict set $levelType]
  93.     if ![llength $selectedFilesOfType] {
  94.         $this DrsLevelObject::removeRefObject $fileObject
  95.         $systemLevel removeProperty ${DrsDriver::FORMALMODULE}_$levelType
  96.     }
  97. }
  98.  
  99. method DrsGroupedObject::saveReference {this fLevel drsRefs parOTVers selIts} {
  100.     if {[llength $drsRefs] > 1 } {
  101.         # group object created
  102.         set ownDRef [lreplace $drsRefs 0 0]
  103.         # file section created
  104.         set levelType [$this levelType]
  105.         set parentLevel [$this parentLevel]
  106.         set doorsObjId  [lindex $drsRefs 0]
  107.         $parentLevel setProperty ${DrsDriver::FORMALMODULE}_$levelType  $doorsObjId
  108.         #$this addDoorsRefToCorp [[[$this level] project] name] $doorsObjId
  109.     } else {
  110.         # group object already exists
  111.         set ownDRef [lindex $drsRefs 0]
  112.     }
  113.     $this DrsLinkableObject::saveReference $fLevel $ownDRef \
  114.                             $parOTVers $selIts
  115.  
  116. }
  117.  
  118. method DrsGroupedObject::show {this majorOper minorOper} {
  119.     set parentLevel [$this parentLevel]
  120.         set levelType [$this levelType]
  121.         set myTypeObjId [$parentLevel getPropertyValue \
  122.                         ${DrsDriver::FORMALMODULE}_$levelType]
  123.         set dxlCommand [$this dxlCommand]
  124.         if {[llength $myTypeObjId] && $myTypeObjId > 0 } {
  125.             set doorsObject [$dxlCommand doorsObjectFind $myTypeObjId]
  126.             $dxlCommand doorsObject$majorOper $doorsObject $minorOper
  127.         }
  128.         $this DrsTreeObject::show $majorOper $minorOper
  129. }
  130.  
  131. method DrsGroupedObject::synObjects {this} {
  132.     return "1"
  133. }
  134.  
  135. # Do not delete this line -- regeneration end marker
  136.  
  137.