home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / diagramsel.tcl < prev    next >
Text File  |  1996-10-08  |  4KB  |  149 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cadre Technologies Inc.    1996
  4. #
  5. #      File:           @(#)diagramsel.tcl    /main/hindenburg/2
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)diagramsel.tcl    /main/hindenburg/2   8 Oct 1996 Copyright 1996 Cadre Technologies Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14.  
  15. Class DiagramSelHandler : {ListDialog} {
  16.     constructor
  17.     method destructor
  18.     method handle
  19.     method handleOkPressed
  20.     method popUp
  21.     method editCAD
  22.     method browser
  23.     method addDecomposition
  24.     method removeDecomposition
  25.     attribute command
  26.     attribute _browser
  27.     attribute decompositionSet
  28. }
  29.  
  30. constructor DiagramSelHandler {class this name} {
  31.     set this [ListDialog::constructor $class $this $name]
  32.     $this decompositionSet [List new]
  33.     # Start constructor user section
  34.     $this config \
  35.         -okPressed {%this handleOkPressed} \
  36.         -helpPressed ".main helpOnName selectDiagram" \
  37.         -selectionPolicy BROWSE \
  38.         -rowCount 4 \
  39.         -font "courier-normal-12"
  40.     # End constructor user section
  41.     return $this
  42. }
  43.  
  44. method DiagramSelHandler::destructor {this} {
  45.     set ref [$this _browser]
  46.     if {$ref != ""} {
  47.         $ref _startEditCADHandler ""
  48.     }
  49.     # Start destructor user section
  50.     # End destructor user section
  51. }
  52.  
  53. method DiagramSelHandler::handle {this sysV item} {
  54.     set configV [[[$this browser] ccontext] currentConfig]
  55.     if [$sysV isNil] {
  56.         set phaseV [[[$this browser] ccontext] currentPhase]
  57.         $phaseV getDecompositions $item $configV \
  58.             decompComponents $CAD_TYPE systems files
  59.     } else {
  60.         $sysV getDecompositions $item $configV \
  61.             decompComponents $CAD_TYPE systems files
  62.     }
  63.     [$this decompositionSet] contents $files
  64.     if {[llength $files]  == 0} {
  65.         wmtkerror "Item '[$item name]' does not have decompositions"
  66.         return
  67.     }
  68.     if {[llength $files] == 1} {
  69.         $this [$this command] [lindex $files 0]
  70.         return
  71.     }
  72.     $this popUp
  73. }
  74.  
  75. method DiagramSelHandler::handleOkPressed {this} {
  76.     set idx [lsearch [$this entrySet] [lindex [$this selectedSet] 0]]
  77.     if {$idx != -1} {
  78.         $this [$this command] \
  79.             [lindex [[$this decompositionSet] contents] $idx]
  80.     }
  81. }
  82.  
  83. method DiagramSelHandler::popUp {this} {
  84.     set maxNameLength [string length "Name"]
  85.     [$this decompositionSet] foreach fileV {
  86.         set length [string length [[$fileV file] name]]
  87.         if {$maxNameLength < $length} {
  88.             set maxNameLength $length
  89.         }
  90.     }
  91.     set formatString "%-${maxNameLength}.${maxNameLength}s  %s"
  92.     $this message "Select CAD:\n\n[\
  93.         format $formatString "Name" "System Name"]"
  94.     set entrySet ""
  95.     [$this decompositionSet] foreach fileV {
  96.         lappend entrySet [format $formatString \
  97.             [[$fileV file] name] [[$fileV system] name]]
  98.     }
  99.     $this entrySet $entrySet
  100.     $this ListDialog::popUp
  101. }
  102.  
  103. method DiagramSelHandler::editCAD {this fileV} {
  104.     set CContext [$classBrowser ccontext]
  105.     set orgCContext [$CContext currentLevelString]
  106.     set confV [$CContext currentConfig]
  107.     set phaseV [$CContext currentPhase]
  108.     set sysV [$phaseV findSystemVersion -bySystem [$fileV system]]
  109.     while {[$CContext currentLevel] != "Phase"} {
  110.         $CContext upLevel
  111.     }
  112.     $CContext downLevelId $sysV
  113.     $CContext downLevelId $fileV
  114.     set script "SystemUtilities::fork otk ude \
  115.         -c [list [get_comm_name]] \
  116.         [$fileV identity] [$sysV identity] [$confV identity]"
  117.     $classBrowser startCommand tcl "$script" "" \
  118.         "Starting ude for '[[$fileV file] name].$CAD_TYPE'" \
  119.         {0 0} 1
  120.     $CContext setLevelPath $orgCContext
  121. }
  122.  
  123. # Do not delete this line -- regeneration end marker
  124.  
  125. method DiagramSelHandler::browser {this args} {
  126.     if {$args == ""} {
  127.         return [$this _browser]
  128.     }
  129.     set ref [$this _browser]
  130.     if {$ref != ""} {
  131.         $ref _startEditCADHandler ""
  132.     }
  133.     set obj [lindex $args 0]
  134.     if {$obj != ""} {
  135.         $obj _startEditCADHandler $this
  136.     }
  137.     $this _browser $obj
  138. }
  139.  
  140. method DiagramSelHandler::addDecomposition {this newDecomposition} {
  141.     [$this decompositionSet] append $newDecomposition
  142.  
  143. }
  144.  
  145. method DiagramSelHandler::removeDecomposition {this oldDecomposition} {
  146.     [$this decompositionSet] removeValue $oldDecomposition
  147. }
  148.  
  149.