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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)repmodelbr.tcl    /main/titanic/6
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)repmodelbr.tcl    /main/titanic/6   14 Nov 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. require modelreser.tcl
  13. require modelunres.tcl
  14. # End user added include file section
  15.  
  16. require "repobjbrow.tcl"
  17.  
  18. Class RepModelBrowser : {RepObjBrowser} {
  19.     constructor
  20.     method destructor
  21.     method fillList
  22.     method selectionChanged
  23.     method changeStatus
  24.     method statusChanged
  25. }
  26.  
  27. constructor RepModelBrowser {class this name view} {
  28.     set this [RepObjBrowser::constructor $class $this $name $view]
  29.     # Start constructor user section
  30.  
  31.         $this config \
  32.             -title "Model Browser" \
  33.             -helpPressed { [%this view] helpOnName modelBrowser }
  34.  
  35.         set corp [[[$this view] rep] currentCorporate]
  36.         [$this objLabel] text "Models in corporate '[$corp name]'"
  37.  
  38.         [$this statusLabel] text "Reserved:"
  39.         [$this statusValue] text ""
  40.         [$this statusChange] label "Change..."
  41.         [$this statusChange] activated "busy { $this changeStatus }"
  42.  
  43.         $this selectionChanged
  44.  
  45.     # End constructor user section
  46.     return $this
  47. }
  48.  
  49. method RepModelBrowser::destructor {this} {
  50.     # Start destructor user section
  51.     # End destructor user section
  52.     $this RepObjBrowser::destructor
  53. }
  54.  
  55. proc RepModelBrowser::splitModelName {name} {
  56.     set nt [splitFileName $name]
  57.  
  58.     set name [lindex $nt 0]
  59.     set type [lindex $nt 1]
  60.     if {$name == "" || $type == ""} {
  61.         error "Invalid model name '$name'; must have format <name>.<type>."
  62.     }
  63.  
  64.     return $nt
  65. }
  66.  
  67. method RepModelBrowser::fillList {this} {
  68.     set corp [[[$this view] rep] currentCorporate]
  69.  
  70.     [$this objList] setHeaderLabels { Name Type Reserved By At Comments }
  71.  
  72.     foreach model [$corp models] {
  73.     set name [$model name]
  74.     set type [$model type]
  75.         set nameType ${name}-${type}
  76.         regsub -all {[\. ]} $nameType {___} nameType
  77.  
  78.     if [$model reserved] {
  79.         set status "Yes"
  80.             set user [$model reserveUser]
  81.             set date [clock format [$model reserveTime]]
  82.             set comments [$model reserveComments]
  83.     } else {
  84.         set status "No"
  85.             set date ""
  86.             set user ""
  87.             set comments ""
  88.     }
  89.  
  90.     [$this objMap] set $nameType $model
  91.     BrowsObject new [$this objList].$nameType \
  92.         -smallIcon model_16 \
  93.         -label $name \
  94.         -details [list $type $status $user $date $comments]\
  95.             -activated "$this doubleClicked"
  96.     }
  97. }
  98.  
  99. method RepModelBrowser::selectionChanged {this} {
  100.     set model [$this selectedObject]
  101.     if [$model isNil] {
  102.     [$this dirField] text ""
  103.     [$this statusValue] text ""
  104.     [$this statusChange] sensitive 0
  105.     } else {
  106.     [$this dirField] text [$model repositoryDirectory]
  107.         if [$model reserved] {
  108.         [$this statusValue] text "Yes"
  109.         } else {
  110.         [$this statusValue] text "No"
  111.         }
  112.     [$this statusChange] sensitive 1
  113.     }
  114. }
  115.  
  116. method RepModelBrowser::changeStatus {this} {
  117.     set model [$this selectedObject]
  118.     if [$model isNil] {
  119.         return
  120.     }
  121.  
  122.     if ![$model reserved] {
  123.     set dlg [ModelReserveDialog new [$this view].modreserve \
  124.             -model $model]
  125.     } else {
  126.     set dlg [ModelUnreserveDialog new [$this view].modunreserve \
  127.             -model $model]
  128.     }
  129.     $dlg okPressed "[$dlg okPressed]; $this statusChanged"
  130.     $dlg popUp
  131. }
  132.  
  133. method RepModelBrowser::statusChanged {this} {
  134.     set model [$this selectedObject]
  135.     if [$model isNil] {
  136.         return
  137.     }
  138.  
  139.     if [$model reserved] {
  140.         [$this statusValue] text "Yes"
  141.     } else {
  142.         [$this statusValue] text "No"
  143.     }
  144.  
  145.     set currSel [[$this objList] selectedSet]
  146.     $this update
  147.     [$this objList] selectedSet $currSel
  148. }
  149.  
  150. # Do not delete this line -- regeneration end marker
  151.  
  152.