home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / groupvdbob.tcl < prev    next >
Text File  |  1997-11-26  |  9KB  |  327 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)groupvdbob.tcl    /main/titanic/20
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)groupvdbob.tcl    /main/titanic/20   26 Nov 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14. require "browsdbobj.tcl"
  15. require "versionobj.tcl"
  16.  
  17. Class GroupVDbObj : {GroupVersion VersionObj BrowsDbObj} {
  18.     method destructor
  19.     constructor
  20.     method promoter
  21.     method canBeDragged
  22.     method changeLinks
  23.     method copyVersion
  24.     method customLevelVersion
  25.     method directFileVersions
  26.     method directSubgroupVersions
  27.     method editFile
  28.     method filterFileVersions
  29.     method filterItems
  30.     method filterSubgroupVersions
  31.     method group
  32.     method initializeInfo
  33.     method linkStatus
  34.     method makeUpToDate
  35.     method name
  36.     method newObjects
  37.     method openFile
  38.     method printObjects
  39.     method removeObjects
  40.     method removeVersion
  41.     method savedGroupVersions
  42.     method showFile
  43.     method snapshotObjects
  44.     attribute savedGroupVersionSet
  45. }
  46.  
  47. method GroupVDbObj::destructor {this} {
  48.     # Start destructor user section
  49.     # End destructor user section
  50.     $this VersionObj::destructor
  51.     $this BrowsDbObj::destructor
  52. }
  53.  
  54. constructor GroupVDbObj {class this name} {
  55.     set this [GroupVersion::constructor $class $this $name]
  56.     set this [BrowsDbObj::constructor $class $this $name]
  57.     set this [VersionObj::constructor $class $this $name]
  58.     return $this
  59. }
  60.  
  61. selfPromoter GroupVersion {this} {
  62.     GroupVDbObj promote $this
  63. }
  64.  
  65. method GroupVDbObj::promoter {this} {
  66.     $this BrowsDbObj::promoter
  67.     module_promoter GroupVDbObj $this
  68. }
  69.  
  70. proc GroupVDbObj::associations {} {
  71.     return {directFileVersions directSubgroupVersions savedGroupVersionSet}
  72. }
  73.  
  74. method GroupVDbObj::canBeDragged {this} {
  75.     return 1
  76. }
  77.  
  78. method GroupVDbObj::changeLinks {this} {
  79.     [$this getParent SystemVersion] changeLinks
  80. }
  81.  
  82. proc GroupVDbObj::childTypes {assoc} {
  83.     if {[lsearch -exact "[GroupVDbObj::associations]" "$assoc"] == -1} {
  84.     return ""
  85.     }
  86.     set childTypes [BrowserProcs::childTypes "$assoc"]
  87.     case "$childTypes" in {
  88.     {DirectFileVersion} {
  89.         return [concat \
  90.         ${BrowserProcs::diagramFileTypes} \
  91.         ${BrowserProcs::programmerFileTypes}]
  92.     }
  93.     {DirectSubgroupVersion} {
  94.         return "GroupVersion"
  95.     }
  96.     {default} {
  97.         return "$childTypes"
  98.     }
  99.     }
  100. }
  101.  
  102. proc GroupVDbObj::controlledLists {} {
  103.     return {"[[$this group] groupVersionList]"}
  104. }
  105.  
  106. method GroupVDbObj::copyVersion {this} {
  107.     set versionList ""
  108.     foreach system [[$this phase] systems] {
  109.     foreach group [$system groups] {
  110.         foreach version [$group groupVersions] {
  111.         if {"$version" == "$this"} continue
  112.         lappend versionList [list $version "[$group name]"]
  113.         }
  114.     }
  115.     }
  116.     BrowserProcs::copyVersion $this $versionList
  117. }
  118.  
  119. method GroupVDbObj::customLevelVersion {this} {
  120.     set confV [[ClientContext::global] currentConfig]
  121.     if [$confV isNil] {
  122.     return $confV
  123.     }
  124.     if {[$confV ConfigVersion::config] != [$this GroupVersion::config]} {
  125.     return [ORB::nil]
  126.     }
  127.     return [[$this system] selectedVersion $confV]
  128. }
  129.  
  130. method GroupVDbObj::directFileVersions {this} {
  131.     set link [[$this info] set SystemGroupLink]
  132.     if {(! [isCommand $link]) || [catch {set sysV [$link systemVersion]}]} {
  133.     resetErrorVars
  134.     set sysV [$this getParent SystemVersion]
  135.     }
  136.     foreach fileV [$this explicitFileVersions $sysV] {
  137.     set directFileVersions($fileV) 1
  138.     }
  139.     foreach fileV [$this GroupVersion::filterFileVersions $sysV] {
  140.     set directFileVersions($fileV) 1
  141.     }
  142.     if [info exists directFileVersions] {
  143.     return [array names directFileVersions]
  144.     }
  145.     return ""
  146. }
  147.  
  148. method GroupVDbObj::directSubgroupVersions {this} {
  149.     set link [[$this info] set SystemGroupLink]
  150.     if {(! [isCommand $link]) || [catch {set sysV [$link systemVersion]}]} {
  151.     resetErrorVars
  152.     set sysV [$this getParent SystemVersion]
  153.     }
  154.     foreach subgroupV [$this explicitSubgroupVersions $sysV] {
  155.     set directSubgroupVersions($subgroupV) 1
  156.     }
  157.     foreach subgroupV [$this GroupVersion::filterSubgroupVersions $sysV] {
  158.     set directSubgroupVersions($subgroupV) 1
  159.     }
  160.     if [info exists directSubgroupVersions] {
  161.     return [array names directSubgroupVersions]
  162.     }
  163.     return ""
  164. }
  165.  
  166. method GroupVDbObj::editFile {this} {
  167.     require_module_file groupvstrd.tcl corpmodelling
  168.  
  169.     if {[$this getInfo Status] != "working"} {
  170.     $this showFile
  171.     return
  172.     }
  173.     global classCount
  174.     set box .main.groupVStructureDialog$classCount
  175.     incr classCount
  176.     GroupVStrDlg new $box $this \
  177.     -editable 1 \
  178.     -title "Edit Group Structure" \
  179.     -helpPressed {.main helpOnName groupVStructureDialog}
  180.     $box popUp
  181. }
  182.  
  183. method GroupVDbObj::filterFileVersions {this filter {sysV ""}} {
  184.     if {"$sysV" == ""} {
  185.     set sysV [[[$this info] set SystemGroupLink] systemVersion]
  186.     }
  187.     if {"$filter" == ""} {
  188.     return [$this GroupVersion::filterFileVersions $sysV]
  189.     }
  190.     return [$sysV filterResult $filter]
  191. }
  192.  
  193. method GroupVDbObj::filterItems {this filter {sysV ""}} {
  194.     if {"$sysV" == ""} {
  195.     set sysV [[[$this info] set SystemGroupLink] systemVersion]
  196.     }
  197.     if {"$filter" == ""} {
  198.     return [$this GroupVersion::filterItems $sysV]
  199.     }
  200.     return [$sysV filterResult $filter]
  201. }
  202.  
  203. method GroupVDbObj::filterSubgroupVersions {this filter {sysV ""}} {
  204.     if {"$sysV" == ""} {
  205.     set sysV [[[$this info] set SystemGroupLink] systemVersion]
  206.     }
  207.     if {"$filter" == ""} {
  208.     return [$this GroupVersion::filterSubgroupVersions $sysV]
  209.     }
  210.     return [$sysV filterResult $filter]
  211. }
  212.  
  213. method GroupVDbObj::group {this} {
  214.     if {[catch {set group [[[$this info] set SystemGroupLink] group]}] ||
  215.     [$group isNil]} {
  216.     resetErrorVars
  217.     return [$this GroupVersion::group]
  218.     }
  219.     return $group
  220. }
  221.  
  222. proc GroupVDbObj::infoProperties {} {
  223.     return [concat \
  224.     [BrowserProcs::infoProperties] \
  225.     {Status Link Version Comments Created Updated Frozen \
  226.      "Controlled Actions" "Created By" "Updated By"} \
  227.     ]
  228. }
  229.  
  230. method GroupVDbObj::initializeInfo {this dummy} {
  231.     set oldLink [[$this info] set SystemGroupLink]
  232.     [$this info] contents ""
  233.     $this setInfo SystemGroupLink $oldLink
  234. }
  235.  
  236. method GroupVDbObj::linkStatus {this} {
  237.     return [[[$this info] set SystemGroupLink] status]
  238. }
  239.  
  240. method GroupVDbObj::makeUpToDate {this} {
  241.     $this VersionObj::makeUpToDate
  242. }
  243.  
  244. method GroupVDbObj::name {this} {
  245.     return "[[$this group] name]"
  246. }
  247.  
  248. method GroupVDbObj::newObjects {this} {
  249.     [$this getParent SystemVersion] newObjects
  250. }
  251.  
  252. method GroupVDbObj::openFile {this} {
  253.     case [$this getInfo Status] in {
  254.     backGround {
  255.         set treeNode [$this treeNode]
  256.         if {"$treeNode" != ""} {
  257.         $treeNode open
  258.         } else {
  259.         [$this infoObject] open
  260.         }
  261.     }
  262.     working {
  263.         $this editFile
  264.     }
  265.     default {
  266.         $this showFile
  267.     }
  268.     }
  269. }
  270.  
  271. method GroupVDbObj::printObjects {this} {
  272.     set asciiFiles ""
  273.     set topostObjects ""
  274.     foreach obj [$wmttoolObj selectedObjSet] {
  275.     if [$obj isA Graph] {
  276.         lappend topostObjects $obj
  277.     } elseif [$obj isA ExternalFileVersion] {
  278.         $obj synchWithFileSystem
  279.         lappend asciiFiles [$obj path]
  280.     }
  281.     }
  282.     BrowserProcs::printObjects $asciiFiles $topostObjects
  283. }
  284.  
  285. method GroupVDbObj::removeObjects {this} {
  286.     [$this getParent SystemVersion] removeObjects
  287. }
  288.  
  289. method GroupVDbObj::removeVersion {this} {
  290.     set versionList ""
  291.     foreach version [[$this group] groupVersions] {
  292.     if [$version isLeaf] {
  293.         lappend versionList $version
  294.     }
  295.     }
  296.     BrowserProcs::removeVersion \
  297.     [$this getParent SystemVersion] "[$this group]" "$versionList"
  298. }
  299.  
  300. method GroupVDbObj::savedGroupVersions {this} {
  301.     set savedGroup [[$this group] savedGroup]
  302.     if [$savedGroup isNil] {
  303.     return ""
  304.     }
  305.     return [$savedGroup savedGroupVersions]
  306. }
  307.  
  308. method GroupVDbObj::showFile {this} {
  309.     require_module_file groupvstrd.tcl corpmodelling
  310.  
  311.     global classCount
  312.     set box .main.groupVStructureDialog$classCount
  313.     incr classCount
  314.     GroupVStrDlg new $box $this \
  315.     -editable 0 \
  316.     -title "Show Group Structure" \
  317.     -helpPressed {.main helpOnName groupVStructureDialog}
  318.     $box popUp
  319. }
  320.  
  321. method GroupVDbObj::snapshotObjects {this} {
  322.     [$this getParent SystemVersion] snapshotObjects
  323. }
  324.  
  325. # Do not delete this line -- regeneration end marker
  326.  
  327.