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

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