home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / cbbinaryas.tcl < prev    next >
Text File  |  1996-06-11  |  6KB  |  217 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cadre Technologies Inc.    1996
  4. #
  5. #      File:           @(#)cbbinaryas.tcl    /main/2
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)cbbinaryas.tcl    /main/2   11 Jun 1996 Copyright 1996 Cadre Technologies Inc.
  10.  
  11. # Start user added include file section
  12. require "cbpropname.tcl"
  13.  
  14. require "cbpropcomp.tcl"
  15. require "cbproplabe.tcl"
  16. require "cbpropitem.tcl"
  17. # End user added include file section
  18.  
  19. require "cadbinarya.tcl"
  20. require "cbassociat.tcl"
  21.  
  22. Class CBBinaryAssoc : {CBAssociation CADBinaryAssoc} {
  23.     method destructor
  24.     constructor
  25.     method collectClasses
  26.     method collectWorkItems
  27.     method collectPropComps
  28.     method format
  29.     attribute isInComing
  30.     attribute inComingFormattedText
  31.     attribute outGoingFormattedText
  32. }
  33.  
  34. method CBBinaryAssoc::destructor {this} {
  35.     # Start destructor user section
  36.     # End destructor user section
  37.     $this CBAssociation::destructor
  38.     $this CADBinaryAssoc::destructor
  39. }
  40.  
  41. constructor CBBinaryAssoc {class this inModel} {
  42.     set this [CADBinaryAssoc::constructor $class $this $inModel]
  43.     set this [CBAssociation::constructor $class $this $this]
  44.     $this isInComing 0
  45.     $this inComingFormattedText ""
  46.     $this outGoingFormattedText ""
  47.     return $this
  48. }
  49.  
  50. method CBBinaryAssoc::collectClasses {this classList} {
  51.     if {[$this isInComing]} {
  52.         set oppositeClass [$this fromClass]
  53.         set thisClass [$this toClass]
  54.     } else {
  55.         set oppositeClass [$this toClass]
  56.         set thisClass [$this fromClass]
  57.     }
  58.     if {[[$this getClassBrowser] isInFlatViewMode]} {
  59.         $classList append $thisClass
  60.     }
  61.     $classList append $oppositeClass
  62. }
  63.  
  64. method CBBinaryAssoc::collectWorkItems {this workItemList} {
  65.     if {[$this isInComing]} {
  66.         set oppositeClass [$this fromClass]
  67.         set thisClass [$this toClass]
  68.     } else {
  69.         set oppositeClass [$this toClass]
  70.         set thisClass [$this fromClass]
  71.     }
  72.     if {[[$this getClassBrowser] isInFlatViewMode]} {
  73.         $thisClass collectWorkItems $workItemList
  74.     }
  75.  
  76.     if {![$this isInComing]} {
  77.         set workItem [$this getQualifierWorkItem]
  78.         if {![$workItem isNil]} {
  79.             $workItemList append $workItem
  80.         }
  81.     }
  82.     set workItem [$this getNameWorkItem]
  83.     if {![$workItem isNil]} {
  84.         $workItemList append $workItem
  85.     }
  86.     if {[$this isInComing]} {
  87.         set workItem [$this getFromRoleWorkItem]
  88.     } else {
  89.         set workItem [$this getToRoleWorkItem]
  90.     }
  91.     if {![$workItem isNil]} {
  92.         $workItemList append $workItem
  93.     }
  94.     $oppositeClass collectWorkItems $workItemList
  95. }
  96.  
  97. method CBBinaryAssoc::collectPropComps {this propCompList} {
  98.     if {[$this isInComing]} {
  99.         set oppositeClass [$this fromClass]
  100.         set thisClass [$this toClass]
  101.     } else {
  102.         set oppositeClass [$this toClass]
  103.         set thisClass [$this fromClass]
  104.     }
  105.     if {[[$this getClassBrowser] isInFlatViewMode]} {
  106.         $thisClass collectPropComps $propCompList
  107.     }
  108.  
  109.     set cbPropComp [CBPropComponent new [lindex [$this getComponents] 0]]
  110.     $propCompList addPropComponent $cbPropComp
  111.  
  112.     # Qualifier part
  113.     if {![$this isInComing]} {
  114.         $cbPropComp addLabel [$this getQualifierLabel] \
  115.             [$this getQualifierItem] [$this getQualifierWorkItem]
  116.     }
  117.  
  118.     # Name part
  119.     $cbPropComp addLabel [$this getNameLabel] [$this getNameItem] \
  120.         [$this getNameWorkItem]
  121.  
  122.     # Opposite class role part
  123.     if {[$this isInComing]} {
  124.         $cbPropComp addLabel [$this getFromRoleLabel] \
  125.             [$this getFromRoleItem] [$this getFromRoleWorkItem]
  126.     } else {
  127.         $cbPropComp addLabel [$this getToRoleLabel] \
  128.             [$this getToRoleItem] [$this getToRoleWorkItem]
  129.     }
  130.  
  131.     # Opposite class name
  132.     $oppositeClass collectPropComps $propCompList
  133. }
  134.  
  135. method CBBinaryAssoc::format {this} {
  136.     set prefix ""
  137.     if {[[$this getClassBrowser] isInFlatViewMode]} {
  138.         if {[$this isInComing]} {
  139.             set prefix "[[$this toClass] name]: "
  140.         } else {
  141.             set prefix "[[$this fromClass] name]: "
  142.         }
  143.     }
  144.     if {[$this isInComing]} {
  145.         if {[$this inComingFormattedText] != ""} {
  146.             $this formattedText [$this inComingFormattedText]
  147.             return $prefix[$this formattedText]
  148.         }
  149.     } else {
  150.         if {[$this outGoingFormattedText] != ""} {
  151.             $this formattedText [$this outGoingFormattedText]
  152.             return $prefix[$this formattedText]
  153.         }
  154.     }
  155.     
  156.     set result ""
  157.  
  158.     # Qualifier part
  159.     if {![$this isInComing]} {
  160.         set qualifier [$this qualifier]
  161.         if {$qualifier != ""} {
  162.             set result "\[$qualifier\]"
  163.         }
  164.     }
  165.  
  166.     set result "${result}---"
  167.  
  168.     # Name part
  169.     set isDerived [$this getPropertyValue $COMP_DERIVED_ATTR]
  170.     if {$isDerived == "1"} {
  171.         set result "${result}/"
  172.     }
  173.     set result "${result}[$this name]"
  174.  
  175.     set result "${result}---"
  176.  
  177.     # Opposite class role part
  178.     if {[$this isInComing]} {
  179.         set role [$this fromRole]
  180.     } else {
  181.         set role [$this toRole]
  182.     }
  183.     if {$role != ""} {
  184.         set result "${result}<$role>"
  185.     }
  186.  
  187.     set result "${result}--"
  188.  
  189.     if {[$this isInComing]} {
  190.         set propertyId $COMP_START_MULT_KIND
  191.     } else {
  192.         set propertyId $COMP_END_MULT_KIND
  193.     }
  194.     set propVal [$this getPropertyValue $propertyId]
  195.     set result "${result}[CBAssociation::multKindToString $propVal]"
  196.  
  197.     #Opposite class name
  198.     if {[$this isInComing]} {
  199.         set oppositeClass [$this fromClass]
  200.     } else {
  201.         set oppositeClass [$this toClass]
  202.     }
  203.     set result "${result} [$oppositeClass format]"
  204.  
  205.  
  206.     if {[$this isInComing]} {
  207.         $this inComingFormattedText $result
  208.     } else {
  209.         $this outGoingFormattedText $result
  210.     }
  211.     $this formattedText $result
  212.     return $prefix$result
  213. }
  214.  
  215. # Do not delete this line -- regeneration end marker
  216.  
  217.