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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)contsysvdb.tcl    /main/titanic/9
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)contsysvdb.tcl    /main/titanic/9   20 Nov 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. require_module_file "newcontinu.tcl" continuus
  13. require_module_file "contsysdia.tcl" continuus
  14. require_module_file "contchange.tcl" continuus
  15. require_module_file "vssyswarni.tcl" vcm
  16. # End user added include file section
  17.  
  18. require_module_file "contsystem.tcl" continuus
  19. require_module_file "vssysvdbob.tcl" vcm
  20.  
  21. # This class represents a system with Continuus files in the browser.
  22.  
  23. Class ContSysVDbObj : {ContSystem VSSysVDbObj} {
  24.     constructor
  25.     method destructor
  26.     method promoter
  27.     method promoteFile
  28.     method path
  29.     method localFileVersions
  30.     method copy
  31.     method vsFiles
  32.     method fileList
  33.     method addContFile
  34.     method checkOutFiles
  35.     method checkInFiles
  36.     method checkInTask
  37.     method findUse
  38.     method useVersion
  39.     method unUseVersions
  40.     method deleteVersions
  41.     method history
  42.     method editProperties
  43.     method updateWorkArea
  44.     method startQuery
  45.     method startObjectMake
  46.     method startSelectTask
  47.     method startProblemTracking
  48.     method showProjectVersion
  49.     method changeProjectVersion
  50.     method initializeVCMVars
  51.  
  52.     # Used to hold information about files in this system:
  53.     # Version, Owner, Status, Continuus Type, Created,
  54.     # Modified, Platform, Release, Task.
  55.     # For performance reasons.
  56.     #
  57.     attribute continuusFileInfoDict
  58. }
  59.  
  60. constructor ContSysVDbObj {class this name i_name} {
  61.     set this [ContSystem::constructor $class $this $name]
  62.     set this [VSSysVDbObj::constructor $class $this $i_name]
  63.     # Start constructor user section
  64.     # End constructor user section
  65.     return $this
  66. }
  67.  
  68. method ContSysVDbObj::destructor {this} {
  69.     # Start destructor user section
  70.     # End destructor user section
  71.     $this ContSystem::destructor
  72.     $this VSSysVDbObj::destructor
  73. }
  74.  
  75.  
  76. # Reuse associations of VSSysVDbObj.
  77. #
  78. proc ContSysVDbObj::associations {} {
  79.     return [VSSysVDbObj::associations]
  80. }
  81.  
  82.  
  83. # Reuse childTypes of VSSysVDbObj.
  84. #
  85. proc ContSysVDbObj::childTypes {assoc} {
  86.     return [VSSysVDbObj::childTypes $assoc]
  87. }
  88.  
  89.  
  90. # Reuse controlledLists of VSSysVDbObj.
  91. #
  92. proc ContSysVDbObj::controlledLists {} {
  93.     return [VSSysVDbObj::controlledLists]
  94. }
  95.  
  96.  
  97. # Reuse infoProperties of VSSysVDbObj.
  98. #
  99. proc ContSysVDbObj::infoProperties {} {
  100.     return [VSSysVDbObj::infoProperties]
  101. }
  102.  
  103. method ContSysVDbObj::promoter {this} {
  104.     $this continuusFileInfoDict [Dictionary new]
  105.     $this VSSysVDbObj::promoter
  106. }
  107.  
  108.  
  109. # Promotes file to a ContFileUiObj.
  110. #
  111. method ContSysVDbObj::promoteFile {this file} {
  112.     ContFileUiObj promote $file
  113. }
  114.  
  115.  
  116. # Call path in ContSystem.
  117. #
  118. method ContSysVDbObj::path {this} {
  119.     return [$this ContSystem::path]
  120. }
  121.  
  122.  
  123. # Resolve ambiguity: call localFileVersions of ContSystem.
  124. #
  125. method ContSysVDbObj::localFileVersions {this} {
  126.     return [$this ContSystem::localFileVersions]
  127. }
  128.  
  129.  
  130. # Call copy of VSSysDbObj.
  131. #
  132. method ContSysVDbObj::copy {this args} {
  133.     eval $this VSSysVDbObj::copy $args
  134. }
  135.  
  136.  
  137. # Redefine to perform initialization and cache updates.
  138. #
  139. method ContSysVDbObj::vsFiles {this} {
  140.     # read customization files for this system
  141.     if { ![$this initializedCustomization] } {
  142.     $this initializeCustomization
  143.     }
  144.     eval [[ClientContext::global] getCustomFileContents u_vcm tcl tcl]
  145.     $this initializeVCMVars
  146.  
  147.     set files [$this ContSystem::vsFiles]
  148.     $this updateFileInfo $files
  149.     return $files
  150. }
  151.  
  152.  
  153. # Returns a list of Continuus controlled file names in
  154. # the directories specified in pathList and
  155. # fills continuusFileInfoDict with additional
  156. # info about the files.
  157. #
  158. method ContSysVDbObj::fileList {this pathList} {
  159.     # refresh continuusFileInfoDict
  160.     foreach name [[$this continuusFileInfoDict] names]  {
  161.     [$this continuusFileInfoDict] unset $name
  162.     }
  163.  
  164.     ContCommand::longListing $pathList [$this continuusFileInfoDict]
  165.     set fileList {}
  166.     foreach fileName [[$this continuusFileInfoDict] names] {
  167.     # cache types of extensionless files for the type mapper
  168.     # for better performance
  169.     if { [path_name type $fileName] == "" } {
  170.         set propertyList [[$this continuusFileInfoDict] set $fileName]
  171.         set name [path_name base $fileName]
  172.         if { [llength $propertyList] > 3 } {
  173.         set vcmType [lindex $propertyList 3]
  174.         [[$this typeMapper] nameToVsType] set $name $vcmType
  175.         }
  176.     }
  177.     lappend fileList $fileName
  178.     }
  179.  
  180.     return $fileList
  181. }
  182.  
  183.  
  184. # Pop up dialog to create new Continuus file.
  185. #
  186. method ContSysVDbObj::addContFile {this} {
  187.     if { ![isCommand .main.newContFile] } {
  188.     NewContinuusFileDialog new .main.newContFile
  189.     }
  190.  
  191.     .main.newContFile popUp
  192. }
  193.  
  194. method ContSysVDbObj::checkOutFiles {this} {
  195.     if { ![isCommand .main.cont.checkout] } {
  196.     ContSysDialog new .main.cont.checkout
  197.     .main.cont.checkout contDialogCommand [ContCommand::checkOutDialog]
  198.     .main.cont.checkout needsUpdate 1
  199.     }
  200.  
  201.     .main.cont.checkout popUpContinuusDialog 
  202. }
  203.  
  204. method ContSysVDbObj::checkInFiles {this} {
  205.     if { ![isCommand .main.cont.checkin] } {
  206.     ContSysDialog new .main.cont.checkin
  207.     .main.cont.checkin contDialogCommand [ContCommand::checkInDialog]
  208.     .main.cont.checkin needsUpdate 1
  209.     }
  210.  
  211.     .main.cont.checkin popUpContinuusDialog 
  212. }
  213.  
  214.  
  215. # Checks in the task related with the selected file in the browser.
  216. # Generates warning if no task is associated.
  217. #
  218. method ContSysVDbObj::checkInTask {this} {
  219.     set selectedFile [lindex [.main selectedObjSet] 0]
  220.     set task [$selectedFile getInfo Task]
  221.     set fileVersion "[file tail [$selectedFile path]]-[$selectedFile getInfo Version]"
  222.     if { "$task" == "<void>" } {
  223.     wmtkwarning "No tasks associated with $fileVersion"
  224.     return
  225.     }
  226.     vsCommandHandler execute [ContCommand::checkInTaskDialog $task]
  227.     .main updateView
  228. }
  229.  
  230.  
  231. # Pop up the find use dialog for the selected object.
  232. #
  233. method ContSysVDbObj::findUse {this} {
  234.     if { ![isCommand .main.cont.finduse] } {
  235.     ContSysDialog new .main.cont.finduse
  236.     .main.cont.finduse contDialogCommand [ContCommand::findUseDialog]
  237.     .main.cont.finduse needsUpdate 0
  238.     }
  239.  
  240.     .main.cont.finduse popUpContinuusDialog 
  241. }
  242.  
  243. method ContSysVDbObj::useVersion {this} {
  244.     if { ![isCommand .main.cont.use] } {
  245.     ContSysDialog new .main.cont.use
  246.     .main.cont.use contDialogCommand [ContCommand::useDialog]
  247.     .main.cont.use needsUpdate 1
  248.     }
  249.  
  250.     .main.cont.use popUpContinuusDialog 
  251. }
  252.  
  253. method ContSysVDbObj::unUseVersions {this} {
  254.     if { ![isCommand .main.contUnuse] } {
  255.     VSSysWarningDialog new .main.contUnuse
  256.     .main.contUnuse vsMethod { $file unuseVersion }
  257.     .main.contUnuse action "Unuse and replace current version of"
  258.     }
  259.  
  260.     .main.contUnuse popUp
  261. }
  262.  
  263. method ContSysVDbObj::deleteVersions {this} {
  264.     if { ![isCommand .main.contDelete] } {
  265.     VSSysWarningDialog new .main.contDelete
  266.     .main.contDelete vsMethod { $file deleteVersion }
  267.     .main.contDelete action "Delete and replace current version of"
  268.     }
  269.  
  270.     .main.contDelete popUp
  271. }
  272.  
  273. method ContSysVDbObj::history {this} {
  274.     if { ![isCommand .main.cont.history] } {
  275.     ContSysDialog new .main.cont.history
  276.     .main.cont.history contDialogCommand [ContCommand::historyDialog]
  277.     .main.cont.history needsUpdate 0
  278.     }
  279.  
  280.     .main.cont.history popUpContinuusDialog 
  281. }
  282.  
  283. method ContSysVDbObj::editProperties {this} {
  284.     if { ![isCommand .main.cont.properties] } {
  285.     ContSysDialog new .main.cont.properties
  286.     .main.cont.properties contDialogCommand [ContCommand::propertyDialog]
  287.     .main.cont.properties needsUpdate 0
  288.     }
  289.  
  290.     .main.cont.properties popUpContinuusDialog 
  291. }
  292.  
  293. method ContSysVDbObj::updateWorkArea {this} {
  294.     set reconfigCommand [ContCommand::reconfigure [$this path]]
  295.     vsCommandHandler execute $reconfigCommand
  296.  
  297.     .main updateView
  298. }
  299.  
  300. method ContSysVDbObj::startQuery {this} {
  301.     set queryDialog [ContCommand::queryDialog]
  302.     vsCommandHandler execute $queryDialog
  303. }
  304.  
  305. method ContSysVDbObj::startObjectMake {this} {
  306.     set objectMakeDialog [ContCommand::objectMakeDialog]
  307.  
  308.     # invoke from current directory
  309.     set oldDir [pwd]
  310.     cd [$this makeFilePath]
  311.     vsCommandHandler execute $objectMakeDialog
  312.     cd $oldDir
  313. }
  314.  
  315. method ContSysVDbObj::startSelectTask {this} {
  316.     set selectTaskDialog [ContCommand::selectTaskDialog]
  317.     vsCommandHandler execute $selectTaskDialog
  318. }
  319.  
  320. method ContSysVDbObj::startProblemTracking {this} {
  321.     set problemTrackingDialog [ContCommand::problemTrackingBrowser]
  322.     vsCommandHandler execute $problemTrackingDialog
  323. }
  324.  
  325.  
  326. # Show the project version currently in use in
  327. # an info dialog box.
  328. #
  329. method ContSysVDbObj::showProjectVersion {this} {
  330.     InfoDialog new .main.versionInfo \
  331.         -title "Current Project Version" \
  332.         -message "[$this currentProjectVersion]" \
  333.         -okPressed { %this delete }
  334.  
  335.     .main.versionInfo delHelpButton
  336.     .main.versionInfo popUp
  337. }
  338.  
  339.  
  340. # Change the current project version:
  341. # allow selection of the working versions
  342. # or selection of the latest working version.
  343. #
  344. method ContSysVDbObj::changeProjectVersion {this} {
  345.     if { ![isCommand .main.changeprojectversion] } {
  346.     ContChangeProjectVersionDialog new .main.changeprojectversion
  347.     }
  348.  
  349.     # pass current version
  350.     set currentProjectVersion [$this currentProjectVersion]
  351.     .main.changeprojectversion currentVersion $currentProjectVersion
  352.  
  353.     # make list of project versions and pass to dialog
  354.     regsub {\-[^-]*$} $currentProjectVersion "" project
  355.     set projectVersions {}
  356.     foreach version [ContCommand::getWorkingProjectVersions $project] {
  357.     lappend projectVersions "$project-$version"
  358.     }
  359.     .main.changeprojectversion workingVersions $projectVersions
  360.     .main.changeprojectversion currentSystem $this
  361.  
  362.     .main.changeprojectversion popUp
  363. }
  364.  
  365.  
  366. # Initialize work area variable.
  367. #
  368. method ContSysVDbObj::initializeVCMVars {this} {
  369.     # initialize Continuus vars, always at system level
  370.     global ContCommand::ccmWorkArea
  371.     if { ${ContCommand::ccmWorkArea} == "" } {
  372.     if { ![ContCommand::initializeCcmVars] } {
  373.         return
  374.     }
  375.     }
  376. }
  377.  
  378. # Do not delete this line -- regeneration end marker
  379.  
  380.  
  381.