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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)vbtrareano.tcl    /main/titanic/23
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)vbtrareano.tcl    /main/titanic/23   28 Nov 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14.  
  15. Class VBTrAreaNode : {TrAreaNode} {
  16.     method destructor
  17.     constructor
  18.     method open
  19.     method editShow
  20.     method edit
  21.     method show
  22.     method update
  23.     method setVersion
  24.     method getOwners
  25.     attribute version
  26. }
  27.  
  28. method VBTrAreaNode::destructor {this} {
  29.     # Start destructor user section
  30.     # remove first all registrated merge links
  31.     set newList ""
  32.     set list [[$this area] mergeArrowSet]
  33.     for {set i 0} {$i+1 < [llength $list]} {incr i +2} {
  34.         set from [lindex $list $i]
  35.         set to [lindex $list [expr {$i+1}]]
  36.         if {$to == $this || $from == $this} {
  37.             continue
  38.         }
  39.         set newList " $newList $from $to "
  40.     }
  41.     [$this area] mergeArrowSet $newList
  42.     [$this area] removeNode $this
  43.     # End destructor user section
  44. }
  45.  
  46. constructor VBTrAreaNode {class this name parent} {
  47.     set this [TrAreaNode::constructor $class $this $name $parent]
  48.  
  49.     $this activated {%this open}
  50.  
  51.     return $this
  52. }
  53.  
  54. method VBTrAreaNode::open {this} {
  55.  
  56.     if {[[$this version] isA ConfigVersion] ||
  57.         [[$this version] isA PhaseVersion] ||
  58.         [[$this version] isA SystemVersion] } {
  59.         VBFileMenuProcs::showInfo
  60.         return
  61.     }
  62.  
  63.     set status [[$this version] getInfo Status]
  64.     if {$status != "backGround"} {
  65.         if {$status == "frozen"} {
  66.             $this editShow show
  67.         } else {
  68.             $this editShow edit
  69.         }
  70.     }
  71. }
  72.  
  73. method VBTrAreaNode::editShow {this action} {
  74.  
  75.     set version [$this version]
  76.  
  77.     # save current clientContext
  78.     set clientContext [ClientContext::global]
  79.     set levelIds [$clientContext currentLevelIdString]
  80.  
  81.     # find the owners of this version
  82.     set context ""
  83.     foreach inSystem [VBProcs::getOwners $version] {
  84.         foreach inPhase [VBProcs::getOwners $inSystem] {
  85.             foreach inConfig [VBProcs::getOwners $inPhase] {
  86.                 lappend context "$inConfig $inPhase $inSystem"
  87.             }
  88.         }
  89.     }
  90.  
  91.     if [lempty $context] {
  92.         set err "Can not find configuration information of "
  93.         set err "$err selected object."
  94.         set err "$err\n(Update view with View->Refresh)"
  95.         wmtkwarning $err
  96.         return
  97.     }
  98.  
  99.     if {[llength $context] == 1} {
  100.         set context [lindex $context 0]
  101.         # there's only one configuration go there
  102.         $clientContext upLevel
  103.         $clientContext upLevel
  104.         $clientContext upLevel
  105.         $clientContext downLevelId [lindex $context 0]
  106.         $clientContext downLevelId [lindex $context 1]
  107.         $clientContext downLevelId [lindex $context 2]
  108.         $version ${action}File
  109.         # reset right clientcontext
  110.         $clientContext setLevelIds $levelIds
  111.         return
  112.     }
  113.  
  114.     foreach elm $context {
  115.         set confV [lindex $elm 0]
  116.         set name [[$confV ConfigVersion::config] name]
  117.         set version [$confV versionName]
  118.         lappend lst "$name (V$version)"
  119.     }
  120.  
  121.     # let user make selection of the right configuration
  122.     ClassMaker::extend ListDialog SelConfigDialog {version configList
  123.         action}
  124.     SelConfigDialog new .main.selConfigDialog \
  125.         -title "Select configuration to start $action from" \
  126.         -entrySet $lst \
  127.         -version $version \
  128.         -configList $context \
  129.         -action $action \
  130.         -okPressed {
  131.             set index [lindex [%this selectedIndexSet] 0]
  132.             set config [lindex [%this configList] $index]
  133.             set clientContext [ClientContext::global]
  134.             set levelIds [$clientContext currentLevelIdString]
  135.             $clientContext upLevel
  136.             $clientContext upLevel
  137.             $clientContext upLevel
  138.             $clientContext downLevelId [lindex $config 0]
  139.             $clientContext downLevelId [lindex $config 1]
  140.             $clientContext downLevelId [lindex $config 2]
  141.             $version [%this action]File
  142.             $clientContext setLevelIds $levelIds
  143.         }
  144.  
  145.     .main.selConfigDialog popUp
  146. }
  147.  
  148. method VBTrAreaNode::edit {this} {
  149.     $this editShow edit
  150. }
  151.  
  152. method VBTrAreaNode::show {this} {
  153.     $this editShow show
  154. }
  155.  
  156. method VBTrAreaNode::update {this} {
  157.  
  158.     set version [$this version]
  159.  
  160.     # Reset cache
  161.     BrowserProcs::initializeInfo $version $version
  162.  
  163.     set status [$version getInfo Status]
  164.     $this labelA [$version getInfo Version]
  165.     $this labelB [$version getInfo "Created By"]
  166.  
  167.     case $status {
  168.         {frozen} {
  169.             $this state A
  170.         }
  171.         {backGround} {
  172.             $this state B
  173.         }
  174.         {working default} {
  175.             $this state C
  176.         }
  177.     }
  178.  
  179.     set configs {}
  180.     foreach owner [$this getOwners] {
  181.         # Reset parent cache
  182.         BrowserProcs::initializeInfo $owner $owner
  183.  
  184.         append configs "- "
  185.         set status [$owner getInfo Status]
  186.         if {"$status" != ""} {
  187.         append configs "$status "
  188.         }
  189.         append configs "[$owner text]\n"
  190.     }
  191.     $version setInfo  "Selected In"  $configs
  192.  
  193.     set mergers ""
  194.     foreach link [$version mergeLinks] {
  195.         set from [$link from]
  196.         if [$from isA ConfigVersion] {
  197.         append mergers " [$from text]"
  198.         } elseif [$from isA CustomFileVersion] {
  199.         set customLevel [[$from customFile] customLevel]
  200.         if [$customLevel isA Phase] {
  201.             append mergers "[$from versionName] ([$customLevel name])"
  202.         } elseif [catch {set phaseName [[$customLevel phase] name]}] {
  203.             resetErrorVars
  204.             append mergers "[$from versionName] ([$customLevel text])"
  205.         } else {
  206.             append mergers "[$from versionName] ($phaseName)"
  207.         }
  208.         } else {
  209.         set phaseName [[$from phase] name]
  210.         append mergers "[$from versionName] ($phaseName)"
  211.         }
  212.         append mergers " -> [$link comments]\n"
  213.     }
  214.     $version setInfo  "Merged From"  $mergers
  215. }
  216.  
  217. method VBTrAreaNode::setVersion {this version} {
  218.  
  219.     $this version $version
  220.     $this update
  221. }
  222.  
  223. method VBTrAreaNode::getOwners {this} {
  224.     return [VBProcs::getOwners [$this version]]
  225. }
  226.  
  227. # Do not delete this line -- regeneration end marker
  228.  
  229.