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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cadre Technologies Inc.    1996
  4. #
  5. #      File:           @(#)diagramsel.tcl    /main/titanic/4
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)diagramsel.tcl    /main/titanic/4   29 Aug 1997 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 cc [ClientContext::global]
  55.     set configV [$cc currentConfig]
  56.     if [$sysV isNil] {
  57.         set phaseV [$cc currentPhase]
  58.         $phaseV getDecompositions $item $configV \
  59.             decompComponents $CAD_TYPE systems files
  60.     } else {
  61.         $sysV getDecompositions $item $configV \
  62.             decompComponents $CAD_TYPE systems files
  63.     }
  64.     [$this decompositionSet] contents $files
  65.     if {[llength $files]  == 0} {
  66.         wmtkerror "Item '[$item name]' does not have decompositions"
  67.         return
  68.     }
  69.     if {[llength $files] == 1} {
  70.         $this [$this command] [lindex $files 0]
  71.         return
  72.     }
  73.     $this popUp
  74. }
  75.  
  76. method DiagramSelHandler::handleOkPressed {this} {
  77.     set idx [lsearch [$this entrySet] [lindex [$this selectedSet] 0]]
  78.     if {$idx != -1} {
  79.         $this [$this command] \
  80.             [lindex [[$this decompositionSet] contents] $idx]
  81.     }
  82. }
  83.  
  84. method DiagramSelHandler::popUp {this} {
  85.     set maxNameLength [string length "Name"]
  86.     [$this decompositionSet] foreach fileV {
  87.         set length [string length [[$fileV file] name]]
  88.         if {$maxNameLength < $length} {
  89.             set maxNameLength $length
  90.         }
  91.     }
  92.     set formatString "%-${maxNameLength}.${maxNameLength}s  %s"
  93.     $this message "Select [ShortLongName::longName $CAD_TYPE]:\n\n[\
  94.         format $formatString "Name" "System Name"]"
  95.     set entrySet ""
  96.     [$this decompositionSet] foreach fileV {
  97.         lappend entrySet [format $formatString \
  98.             [[$fileV file] name] [[$fileV system] name]]
  99.     }
  100.     $this entrySet $entrySet
  101.     $this ListDialog::popUp
  102. }
  103.  
  104. method DiagramSelHandler::editCAD {this fileV} {
  105.     set cc [ClientContext::global]
  106.     set levelPathObj [LevelPath new [$cc currentLevelString]]
  107.     # would like to use LevelPath::parentAt ... (not available in TCL!!)
  108.     while {[$levelPathObj depth] != "Phase"} {
  109.         $levelPathObj removeTail
  110.     }
  111.     $levelPathObj append "[[$fileV system] name].[[$fileV system] type]"
  112.     $levelPathObj append "[[$fileV file] name].[[$fileV file] type]"
  113.     
  114.     set script "SystemUtilities::fork otk ude \
  115.         -c [list [get_comm_name]] [$levelPathObj asString]"
  116.     $classBrowser startCommand tcl "$script" "" "Starting editor for [\
  117.         ShortLongName::longName $CAD_TYPE] '[[$fileV file] name]'" \
  118.         {0 0} 1
  119. }
  120.  
  121. # Do not delete this line -- regeneration end marker
  122.  
  123. method DiagramSelHandler::browser {this args} {
  124.     if {$args == ""} {
  125.         return [$this _browser]
  126.     }
  127.     set ref [$this _browser]
  128.     if {$ref != ""} {
  129.         $ref _startEditCADHandler ""
  130.     }
  131.     set obj [lindex $args 0]
  132.     if {$obj != ""} {
  133.         $obj _startEditCADHandler $this
  134.     }
  135.     $this _browser $obj
  136. }
  137.  
  138. method DiagramSelHandler::addDecomposition {this newDecomposition} {
  139.     [$this decompositionSet] append $newDecomposition
  140.  
  141. }
  142.  
  143. method DiagramSelHandler::removeDecomposition {this oldDecomposition} {
  144.     [$this decompositionSet] removeValue $oldDecomposition
  145. }
  146.  
  147.