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

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