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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)cbclass.tcl    /main/titanic/3
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)cbclass.tcl    /main/titanic/3   29 Aug 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. require "cbattribut.tcl"
  13. require "cbmethod.tcl"
  14.  
  15. require "cbpropcomp.tcl"
  16. require "cbproplabe.tcl"
  17. require "cbpropitem.tcl"
  18. # End user added include file section
  19.  
  20. require "cadclass.tcl"
  21. require "cbtlentry.tcl"
  22.  
  23. Class CBClass : {CADClass CBTLEntry} {
  24.     method destructor
  25.     constructor
  26.     method createFeature
  27.     method compareName
  28.     method is
  29.     method isCurrentOpenedClass
  30.     method doOpen
  31.     method open
  32.     method editCAD
  33.     method getCBClass
  34.     method collectClasses
  35.     method collectWorkItems
  36.     method collectPropComps
  37.     method format
  38. }
  39.  
  40. method CBClass::destructor {this} {
  41.     # Start destructor user section
  42.     # End destructor user section
  43.     $this CADClass::destructor
  44.     $this CBTLEntry::destructor
  45. }
  46.  
  47. constructor CBClass {class this inModel} {
  48.     set this [CADClass::constructor $class $this $inModel]
  49.     set this [CBTLEntry::constructor $class $this $this]
  50.     return $this
  51. }
  52.  
  53. method CBClass::createFeature {this row} {
  54.     if {[$row type] == $CDM_ATTR} {
  55.         return [CBAttribute new $this $row]
  56.     }
  57.     if {[$row type] == $CDM_METHOD} {
  58.         return [CBMethod new $this $row]
  59.     }
  60.     return ""
  61. }
  62.  
  63. method CBClass::compareName {this other} {
  64.     if {[m4_var get M4_sort_case_sensitive] == "1"} {
  65.         return [string compare [$this name] [$other name]]
  66.     } else {
  67.         set lowerName [string tolower [$this name]]
  68.         set lowerOtherName [string tolower [$other name]]
  69.         return [string compare $lowerName $lowerOtherName]
  70.     }
  71. }
  72.  
  73. method CBClass::is {this other} {
  74.     if {$this == $other} {
  75.         return 1
  76.     }
  77.     return 0
  78. }
  79.  
  80. method CBClass::isCurrentOpenedClass {this} {
  81.     set currentOpenedClass [[$this getClassBrowser] currentOpenedClass]
  82.     if {$currentOpenedClass == "" } {
  83.         return 0
  84.     }
  85.  
  86.     return [$this is $currentOpenedClass]
  87. }
  88.  
  89. method CBClass::doOpen {this} {
  90.     set classBrowser [$this getClassBrowser]
  91.     wmtkmessage "Opening class '[$this name]' ..."
  92.     $classBrowser currentOpenedClass $this
  93.     $classBrowser updateTitle $this
  94.     $classBrowser updateWmtAreaClass $this
  95.  
  96.     $classBrowser addFileHistory $this
  97.     $this load
  98.  
  99.     [$classBrowser superClassTL] updateView $this
  100.     [$classBrowser subClassTL] updateView $this
  101.     [$classBrowser featureTL] updateView $this
  102.     [$classBrowser assocTL] updateView $this
  103.  
  104.     [$classBrowser classTL] selectEntry $this
  105.     $classBrowser selTextListChanged [$classBrowser classTL]
  106.     wmtkmessage ""
  107. }
  108.  
  109. method CBClass::open {this} {
  110.     if {[$this isCurrentOpenedClass]} {
  111.         return
  112.     }
  113.     set classBrowser [$this getClassBrowser]
  114.     set currentOpenedClass [$classBrowser currentOpenedClass]
  115.     if {$currentOpenedClass != ""} {
  116.         [$classBrowser openHistory] push $currentOpenedClass
  117.     }
  118.     $this doOpen
  119. }
  120.  
  121. method CBClass::editCAD {this} {
  122.     set nameItem [$this getNameItem]
  123.     if {[$nameItem isNil]} {
  124.         return ""
  125.     }
  126.     set systemV [$this getDefiningSystemVersion]
  127.     [[$this getClassBrowser] startEditCADHandler] handle $systemV $nameItem
  128. }
  129.  
  130. method CBClass::getCBClass {this} {
  131.     return $this
  132. }
  133.  
  134. method CBClass::collectClasses {this classList} {
  135.     $classList append $this
  136. }
  137.  
  138. method CBClass::collectWorkItems {this workItemList} {
  139.     set workItem [$this getNameWorkItem]
  140.     if {![$workItem isNil]} {
  141.         $workItemList append $workItem
  142.     }
  143. }
  144.  
  145. method CBClass::collectPropComps {this propCompList} {
  146.     # A CBClass can have more than 1 component: take the first one.
  147.     set comps [$this getComponents]
  148.     if {[llength $comps] == 0} {
  149.         return
  150.     }
  151.     $propCompList addComponent [lindex $comps 0] [$this getNameLabel] \
  152.         [$this getNameItem] [$this getNameWorkItem]
  153. }
  154.  
  155. method CBClass::format {this} {
  156.     if {[$this formattedText] != ""} {
  157.         return [$this formattedText]
  158.     }
  159.     $this formattedText [$this name]
  160.     return [$this formattedText]
  161. }
  162.  
  163. # Do not delete this line -- regeneration end marker
  164.  
  165.