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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Westmount Technology    1994
  4. #
  5. #      File:           @(#)qualopenby.tcl    /main/titanic/4
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)qualopenby.tcl    /main/titanic/4   11 Sep 1997 Copyright 1994 Westmount Technology
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14.  
  15. Class QualOpenByName : {TemplateDialog} {
  16.     constructor
  17.     method destructor
  18.     method handleSelectionChanged
  19.     method popUp
  20.     method handleOk
  21.     attribute filevList
  22.     attribute fileNameList
  23.     attribute editor
  24. }
  25.  
  26. constructor QualOpenByName {class this name editor} {
  27.     set this [TemplateDialog::constructor $class $this $name]
  28.     $this editor $editor
  29.     # Start constructor user section
  30.     interface DlgColumn $this.c {
  31.         Label l1 {
  32.             text "Diagrams:"
  33.         }
  34.         TextList list {
  35.             rowCount 10
  36.         }
  37.         Label l2 {
  38.             text "Classifier:"
  39.         }
  40.         SingleLineText className {}
  41.         Label l3 {
  42.             text "Name:"
  43.         }
  44.         SingleLineText diagName {}
  45.     }
  46.     $this config -okPressed {%this handleOk} -title "Open By Name"
  47.     $this.c.list config \
  48.         -selectionChanged "$this handleSelectionChanged" \
  49.         -activated "$this popDown; $this handleOk"
  50.     # End constructor user section
  51.     return $this
  52. }
  53.  
  54. method QualOpenByName::destructor {this} {
  55.     # Start destructor user section
  56.     # End destructor user section
  57. }
  58.  
  59. method QualOpenByName::handleSelectionChanged {this} {
  60.     set qualDiag [split [$this.c.list selectedSet] :]
  61.     $this.c.className text [lindex $qualDiag 0]
  62.     $this.c.diagName text [lindex $qualDiag 1]
  63. }
  64.  
  65. method QualOpenByName::popUp {this} {
  66.     set ed [$this editor]
  67.     set cc [ClientContext::global]
  68.     set sysV [$cc currentSystem]
  69.     set type [$ed diagramType]
  70.     set fileVersions [$sysV localFileVersions]
  71.     set myTypeFileList ""
  72.     set myTypeNameList ""
  73.     foreach fv $fileVersions {
  74.         if {[[$fv file] type] == "$type"} {
  75.             lappend myTypeFileList $fv
  76.             lappend myTypeNameList [[$fv file] qualifiedName :]
  77.         }
  78.     }
  79.     $this filevList $myTypeFileList
  80.     $this fileNameList $myTypeNameList
  81.     $this.c.list entrySet [lsort $myTypeNameList]
  82.     $this TemplateDialog::popUp
  83. }
  84.  
  85. method QualOpenByName::handleOk {this} {
  86.     set className [rmWhiteSpace [$this.c.className text]]
  87.     set diagName [rmWhiteSpace [$this.c.diagName text]]
  88.     if {$className == "" || $diagName == ""} {
  89.         wmtkerror "Both class name and diagram name must be specified"
  90.         return
  91.     }
  92.     set cc [ClientContext::global]
  93.     set ed [$this editor]
  94.     set selected $className:$diagName
  95.     set index [lsearch -exact [$this fileNameList] $selected]
  96.     if {$index == -1} {
  97.         busy {
  98.             wmtkmessage "Creating '$selected.$type'"
  99.             set sysV [$cc currentSystem]
  100.             set configV [$cc currentConfig]
  101.             set type [$ed diagramType]
  102.             set scopePhase [fileHasScopePhase $type]
  103.             set itemType [file2itemtype $type]
  104.             if {$scopePhase} {
  105.                 set scope scopePhaseDef
  106.             } else {
  107.                 set scope scopeSystem
  108.             }
  109.             set qualItem [[$sysV findDeclareItem -byName \
  110.                     $className cl $scope] item]
  111.             set diagItem \
  112.                 [$qualItem findCreateItem $diagName $itemType]
  113.             set newFile [$sysV createFileVersion $diagItem \
  114.                     $scopePhase $type graph $configV]
  115.         }
  116.     } else {
  117.         set newFile [lindex [$this filevList] $index]
  118.     }
  119.     $ed doEdit [$cc createPath $newFile]
  120. }
  121.  
  122. # Do not delete this line -- regeneration end marker
  123.  
  124.