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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)filevobj.tcl    /main/titanic/11
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)filevobj.tcl    /main/titanic/11   3 Oct 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 FileVObj : {VersionObj BrowsDbObj} {
  18.     method destructor
  19.     constructor
  20.     method promoter
  21.     method browserType
  22.     method canBeDragged
  23.     method compareVersion
  24.     method compareVersionAllowed
  25.     method copyVersion
  26.     method customLevelVersion
  27.     method file
  28.     method hasChildren
  29.     method inCorporate2String
  30.     method initializeInfo
  31.     method linkStatus
  32.     method makeUpToDate
  33.     method name
  34.     method openFile
  35.     method removeVersion
  36. }
  37.  
  38. method FileVObj::destructor {this} {
  39.     # Start destructor user section
  40.     # End destructor user section
  41.     $this VersionObj::destructor
  42.     $this BrowsDbObj::destructor
  43. }
  44.  
  45. constructor FileVObj {class this name} {
  46.     set this [BrowsDbObj::constructor $class $this $name]
  47.     set this [VersionObj::constructor $class $this $name]
  48.     return $this
  49. }
  50.  
  51. selfPromoter FileVersion {this} {
  52.     [$this ORB_class] new [$this identity]
  53. }
  54.  
  55. method FileVObj::promoter {this} {
  56.     $this BrowsDbObj::promoter
  57.     module_promoter FileVObj $this
  58. }
  59.  
  60. proc FileVObj::associations {} {
  61.     return {}
  62. }
  63.  
  64. method FileVObj::browserType {this} {
  65.     return "[[$this file] type]"
  66. }
  67.  
  68. method FileVObj::canBeDragged {this} {
  69.     return 1
  70. }
  71.  
  72. method FileVObj::compareVersion {this} {
  73.     set versionList ""
  74.     foreach version [[$this file] fileVersions] {
  75.     if {"$version" == "$this"} continue
  76.     lappend versionList $version
  77.     }
  78.     BrowserProcs::compareVersion $this [$this file] $versionList
  79. }
  80.  
  81. method FileVObj::compareVersionAllowed {this} {
  82.     if {"[$this getParent CorpGVDbObj]" != ""} {
  83.     return 0
  84.     }
  85.     return 1
  86. }
  87.  
  88. proc FileVObj::controlledLists {} {
  89.     return {"[[$this file] fileVersionList]"}
  90. }
  91.  
  92. method FileVObj::copyVersion {this} {
  93.     set versionList ""
  94.     set myType [[$this file] type]
  95.     foreach system [[$this phase] systems] {
  96.     foreach file [$system files] {
  97.         if {"[$file type]" != "$myType"} continue
  98.         foreach version [$file fileVersions] {
  99.         if {"$version" == "$this"} continue
  100.         lappend versionList [list $version "[$file qualifiedName :]"]
  101.         }
  102.     }
  103.     }
  104.     BrowserProcs::copyVersion $this $versionList
  105. }
  106.  
  107. method FileVObj::customLevelVersion {this} {
  108.     set confV [[ClientContext::global] currentConfig]
  109.     if [$confV isNil] {
  110.     if [$this inCorporate] {
  111.         return [$this corporate]
  112.     }
  113.     return $confV
  114.     }
  115.     if {[$confV ConfigVersion::config] != [$this FileVersion::config]} {
  116.     return [ORB::nil]
  117.     }
  118.     return [[$this system] selectedVersion $confV]
  119. }
  120.  
  121. method FileVObj::file {this} {
  122.     if {[catch {set file [[[$this info] set SystemFileLink] file]}] ||
  123.     [$file isNil]} {
  124.     global errorInfo
  125.     set errorInfo ""
  126.     global errorCode
  127.     set errorCode ""
  128.     return [$this FileVersion::file]
  129.     }
  130.     return $file
  131. }
  132.  
  133. method FileVObj::hasChildren {this} {
  134.     return 0
  135. }
  136.  
  137. method FileVObj::inCorporate2String {this} {
  138.     if {[$this inCorporate] || "[$this getInfo Status]" == "reused"} {
  139.     return "Yes"
  140.     }
  141.     return "No"
  142. }
  143.  
  144. proc FileVObj::infoProperties {} {
  145.     return [concat \
  146.     [BrowserProcs::infoProperties] \
  147.     {Status Link Version Comments Created Updated Frozen \
  148.      "In Corporate" "Controlled Actions" "Created By" "Updated By"} \
  149.     ]
  150. }
  151.  
  152. method FileVObj::initializeInfo {this dummy} {
  153.     set oldLink [[$this info] set SystemFileLink]
  154.     [$this info] contents ""
  155.     $this setInfo SystemFileLink $oldLink
  156. }
  157.  
  158. method FileVObj::linkStatus {this} {
  159.     return [[[$this info] set SystemFileLink] status]
  160. }
  161.  
  162. method FileVObj::makeUpToDate {this} {
  163.     $this VersionObj::makeUpToDate
  164. }
  165.  
  166. method FileVObj::name {this {qualifier ":"}} {
  167.     case [$this getInfo Type] in {
  168.     {cod etd std} {
  169.         return "[[$this file] qualifiedName $qualifier]"
  170.     }
  171.     default {
  172.         return "[[$this file] name]"
  173.     }
  174.     }
  175. }
  176.  
  177. method FileVObj::openFile {this} {
  178.     if {"[$this getParent CorporateGroupVersion]" != "" ||
  179.     [$this getInfo Status] == "backGround"} {
  180.     set treeNode [$this treeNode]
  181.     if {"$treeNode" != ""} {
  182.         $treeNode open
  183.     } else {
  184.         [$this infoObject] open
  185.     }
  186.     } elseif {[$this getInfo "In Corporate"] == "Yes" ||
  187.           [$this getInfo Status] != "working"} {
  188.     $this showFile
  189.     } else {
  190.     $this editFile
  191.     }
  192. }
  193.  
  194. method FileVObj::removeVersion {this} {
  195.     set sysV [$this getParent SystemVersion]
  196.     if {"$sysV" == ""} {
  197.     wmtkerror "Cannot access corporate FileVersion(s)"
  198.     return
  199.     }
  200.     set versionList ""
  201.     foreach version [[$this file] fileVersions] {
  202.     if [$version isLeaf] {
  203.         lappend versionList $version
  204.     }
  205.     }
  206.     BrowserProcs::removeVersion "$sysV" "[$this file]" "$versionList"
  207. }
  208.  
  209. # Do not delete this line -- regeneration end marker
  210.  
  211.