home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / qualopenby.tcl < prev    next >
Text File  |  1996-09-17  |  3KB  |  122 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Westmount Technology    1994
  4. #
  5. #      File:           @(#)qualopenby.tcl    /main/hindenburg/2
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)qualopenby.tcl    /main/hindenburg/2   17 Sep 1996 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 "Class Name:"
  39.         }
  40.         SingleLineText className {}
  41.         Label l3 {
  42.             text "Diagram 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 sysV [$ed systemVersion]
  68.     set type [$ed diagramType]
  69.     set fileVersions [$sysV localFileVersions]
  70.     set myTypeFileList ""
  71.     set myTypeNameList ""
  72.     foreach fv $fileVersions {
  73.         if {[[$fv file] type] == "$type"} {
  74.             lappend myTypeFileList $fv
  75.             lappend myTypeNameList [[$fv file] qualifiedName :]
  76.         }
  77.     }
  78.     $this filevList $myTypeFileList
  79.     $this fileNameList $myTypeNameList
  80.     $this.c.list entrySet [lsort $myTypeNameList]
  81.     $this TemplateDialog::popUp
  82. }
  83.  
  84. method QualOpenByName::handleOk {this} {
  85.     set className [rmWhiteSpace [$this.c.className text]]
  86.     set diagName [rmWhiteSpace [$this.c.diagName text]]
  87.     if {$className == "" || $diagName == ""} {
  88.         wmtkerror "Both class name and diagram name must be specified"
  89.         return
  90.     }
  91.     set selected $className:$diagName
  92.     set index [lsearch -exact [$this fileNameList] $selected]
  93.     if {$index == -1} {
  94.         busy {
  95.             set ed [$this editor]
  96.             wmtkmessage "Creating '$selected.$type'"
  97.             set sysV [$ed systemVersion]
  98.             set configV [$ed configVersion]
  99.             set type [$ed diagramType]
  100.             set scopePhase [fileHasScopePhase $type]
  101.             set itemType [file2itemtype $type]
  102.             if {$scopePhase} {
  103.                 set scope scopePhaseDef
  104.             } else {
  105.                 set scope scopeSystem
  106.             }
  107.             set qualItem [[$sysV findDeclareItem -byName \
  108.                     $className cl $scope] item]
  109.             set diagItem \
  110.                 [$qualItem findCreateItem $diagName $itemType]
  111.             set newFile [$sysV createFileVersion $diagItem \
  112.                     $scopePhase $type graph $configV]
  113.             $ed doEdit $newFile
  114.         }
  115.     } else {
  116.         [$this editor] doEdit [lindex [$this filevList] $index]
  117.     }
  118. }
  119.  
  120. # Do not delete this line -- regeneration end marker
  121.  
  122.