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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)duallook.tcl    /main/titanic/4
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)duallook.tcl    /main/titanic/4   21 Aug 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14.  
  15. Class DualLook : {Object} {
  16.     constructor
  17.     method destructor
  18.     method initialize
  19.     method initializeSymbolSets
  20.     method convertSymbolSet
  21.     method convertToUML
  22.     method convertToOMT
  23.     method convertSymbol
  24.     method supportedSymbolSet
  25.  
  26.     # Maps diagram types to dual symbols they contain:
  27.     # symbols with a different look in OMT and UML.
  28.     #
  29.     attribute dualSymbols
  30.  
  31.     # Maps diagram types to OMT only symbols they contain.
  32.     #
  33.     attribute OMTOnlySymbols
  34.  
  35.     # UML or OMT
  36.     #
  37.     attribute currentLook
  38. }
  39.  
  40. constructor DualLook {class this name} {
  41.     set this [Object::constructor $class $this $name]
  42.     # Start constructor user section
  43.     $this initialize
  44.     # End constructor user section
  45.     return $this
  46. }
  47.  
  48. method DualLook::destructor {this} {
  49.     # Start destructor user section
  50.     # End destructor user section
  51. }
  52.  
  53. method DualLook::initialize {this} {
  54.     if { [m4_var get M4_diagram_look] == "UML" } {
  55.     $this currentLook "UML"
  56.     } else {
  57.     $this currentLook "OMT"
  58.     }
  59.     $this OMTOnlySymbols [Dictionary new]
  60.     $this dualSymbols [Dictionary new]
  61.     $this initializeSymbolSets
  62. }
  63.  
  64. method DualLook::initializeSymbolSets {this} {
  65.     [$this dualSymbols] set cad "loop generalization_conn overlap_gen_conn"
  66.     [$this dualSymbols] set etd "etd_initiator etd_object"
  67.     [$this dualSymbols] set std "state"
  68. }
  69.  
  70.  
  71. # Convert to symbol set for currentLook.
  72. #
  73. method DualLook::convertSymbolSet {this diagramType symbolSet} {
  74.     return [$this convertTo[$this currentLook] $diagramType $symbolSet]
  75. }
  76.  
  77.  
  78. # Remove OMT only symbols.
  79. #
  80. method DualLook::convertToUML {this diagramType symbolSet} {
  81.     foreach symbol [[$this OMTOnlySymbols] set $diagramType] {
  82.     set index [lsearch -exact $symbolSet $symbol]
  83.     if { $index != -1 } {
  84.         set symbolSet [lreplace $symbolSet $index $index]
  85.     }
  86.     }
  87.     return $symbolSet    
  88. }
  89.  
  90.  
  91. # Add omt suffix to dual symbols.
  92. #
  93. method DualLook::convertToOMT {this diagramType symbolSet} {
  94.     foreach symbol [[$this dualSymbols] set $diagramType] {
  95.     set index [lsearch -exact $symbolSet $symbol]
  96.     if { $index != -1 } {
  97.         set symbolSet [lreplace $symbolSet $index $index "${symbol}_omt"]
  98.     }
  99.     }
  100.     return $symbolSet
  101. }
  102.  
  103.  
  104. # Remove omt suffix from symbol name.
  105. #
  106. method DualLook::convertSymbol {this symbol} {
  107.     regsub _omt$ $symbol "" result
  108.     return $result
  109. }
  110.  
  111.  
  112. # Remove symbols that are not supported
  113. # by current look from symbolSet.
  114. #
  115. method DualLook::supportedSymbolSet {this diagramType symbolSet} {
  116.     if { [$this currentLook] == "UML" } {
  117.     return [$this convertToUML $diagramType $symbolSet]
  118.     }
  119.     return $symbolSet
  120. }
  121.  
  122. # Do not delete this line -- regeneration end marker
  123.  
  124.