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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cadre Technologies Inc.    1996
  4. #
  5. #      File:           @(#)edpropcont.tcl    /main/titanic/3
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)edpropcont.tcl    /main/titanic/3   15 Sep 1997 Copyright 1996 Cadre Technologies Inc.
  10.  
  11. # Start user added include file section
  12. require "itempropin.tcl"
  13. # End user added include file section
  14.  
  15. require "propcontai.tcl"
  16.  
  17. Class EdPropContainer : {PropContainer} {
  18.     constructor
  19.     method destructor
  20.     method existPropertyHolder
  21.     method createPropertyHolder
  22.     method loadProperties
  23.     method editProperties
  24.     method saveProperties
  25.     method quitProperties
  26.     method changeProperty
  27.     method getPropertyValue
  28.     method isPropertyEditable
  29.     method removeProperties
  30.     method removeProperty
  31.     method addSpecificPropDef
  32.     method fillPropInfoMethod
  33.     method getPropInfoMethods
  34.     method storePropInfoMethods
  35.     method startLabel
  36.     method endLabel
  37.     method getPropInfoMethod
  38.     method setPropInfoMethod
  39.     method removePropInfoMethod
  40.     attribute holderComp
  41.     attribute itemRef
  42.     attribute workItem
  43.     attribute itemProperties
  44.     attribute itemPropInfo
  45.     attribute diagPropInfo
  46.     attribute propInfoMethod
  47. }
  48.  
  49. global EdPropContainer::propInfoMethodDicts
  50. set EdPropContainer::propInfoMethodDicts [Dictionary new]
  51.  
  52.  
  53. constructor EdPropContainer {class this} {
  54.     set this [PropContainer::constructor $class $this]
  55.     $this propInfoMethod [Dictionary new]
  56.     # Start constructor user section
  57.     # End constructor user section
  58.     return $this
  59. }
  60.  
  61. method EdPropContainer::destructor {this} {
  62.     # Start destructor user section
  63.     set info [$this itemPropInfo]
  64.     if [isCommand $info] {
  65.         $info delete
  66.     }
  67.     # End destructor user section
  68.     $this PropContainer::destructor
  69. }
  70.  
  71. method EdPropContainer::existPropertyHolder {this} {
  72.     if {[$this itemPropInfo] != "" || [$this itemRef] == ""} {
  73.         return 1
  74.     }
  75.     if [catch {
  76.         set workItem [[$this itemRef] workItem \
  77.                 [[ClientContext::global] currentConfig]]
  78.     } msg] {
  79.         wmtkerror $msg
  80.         return 1
  81.     }
  82.     $this workItem $workItem
  83.     if [$workItem isNil] {
  84.         return 0
  85.     }
  86.     set itemProperties [$workItem properties]
  87.     if [$itemProperties isNil] {
  88.         return 0
  89.     }
  90.     $this itemPropInfo [ItemPropInfo::getPropInfo $itemProperties]
  91.     $this itemProperties $itemProperties
  92.     return 1
  93. }
  94.  
  95. method EdPropContainer::createPropertyHolder {this} {
  96.     set workItem [$this workItem]
  97.     if {$workItem == ""} {
  98.         return
  99.     }
  100.     [[ClientContext::global] currentSystem] \
  101.             declareItem [$workItem item] scopePhaseDef
  102.     $this itemProperties [$workItem properties]
  103.     $this itemPropInfo [ItemPropInfo::getPropInfo [$this itemProperties]]
  104. }
  105.  
  106. method EdPropContainer::loadProperties {this} {
  107.     set info [$this itemPropInfo]
  108.     if {$info != ""} {
  109.         $info load
  110.     }
  111. }
  112.  
  113. method EdPropContainer::editProperties {this} {
  114.     set info [$this itemPropInfo]
  115.     if {$info != ""} {
  116.         $info edit
  117.     }
  118. }
  119.  
  120. method EdPropContainer::saveProperties {this} {
  121.     set info [$this itemPropInfo]
  122.     if [isCommand $info] {
  123.         $info save
  124.     }
  125.     set info [$this diagPropInfo]
  126.     if [isCommand $info] {
  127.         $info save
  128.     }
  129. }
  130.  
  131. method EdPropContainer::quitProperties {this} {
  132.     set info [$this itemPropInfo]
  133.     if [isCommand $info] {
  134.         $info quit
  135.     }
  136. }
  137.  
  138. method EdPropContainer::changeProperty {this name value defVal} {
  139.     set info [$this [$this getPropInfoMethod $name]]
  140.     if {$info != ""} {
  141.         if [string compare $value $defVal] {
  142.             $info changeProperty $name $value
  143.         } else {
  144.             $info removeProperty $name
  145.         }
  146.     }
  147. }
  148.  
  149. method EdPropContainer::getPropertyValue {this name} {
  150.     set info [$this [$this getPropInfoMethod $name]]
  151.     if {$info != ""} {
  152.         return [$info getProperty $name]
  153.     }
  154.     return ""
  155. }
  156.  
  157. method EdPropContainer::isPropertyEditable {this name} {
  158.     if {[$this [$this getPropInfoMethod $name]] != ""} {
  159.         return [$this editable]
  160.     }
  161.     return 0
  162. }
  163.  
  164. method EdPropContainer::removeProperties {this} {
  165.     set info ""
  166.     if [$this existPropertyHolder] {
  167.         set info [$this itemPropInfo]
  168.     }
  169.     if {$info != ""} {
  170.         $info edit
  171.     }
  172.     [$this propDefinitionSet] foreach propDef {
  173.         $this removeProperty $propDef
  174.     }
  175.     if {$info != ""} {
  176.         $info save
  177.         $info quit
  178.     }
  179. }
  180.  
  181. method EdPropContainer::removeProperty {this def} {
  182.     set info [$this [$this getPropInfoMethod [$def name]]]
  183.     if {$info != ""} {
  184.         $info removeProperty [$def name]
  185.     }
  186.     foreach member [$def memberSet] {
  187.         $this removeProperty $member
  188.     }
  189. }
  190.  
  191. method EdPropContainer::addSpecificPropDef {this def propInfoMethod} {
  192.     $this addPropDefinition $def
  193.     $this fillPropInfoMethod $def $propInfoMethod
  194. }
  195.  
  196. method EdPropContainer::fillPropInfoMethod {this def propInfoMethod} {
  197.     $this setPropInfoMethod [$def name] $propInfoMethod
  198.     foreach member [$def memberSet] {
  199.         $this fillPropInfoMethod $member $propInfoMethod
  200.     }
  201. }
  202.  
  203. method EdPropContainer::getPropInfoMethods {this} {
  204.     global EdPropContainer::propInfoMethodDicts
  205.     set infoMethods [${EdPropContainer::propInfoMethodDicts} set \
  206.                 [$this propertyKey]]
  207.     if {$infoMethods == ""} {
  208.         return 0
  209.     }
  210.     $this propInfoMethod $infoMethods
  211.     return 1
  212. }
  213.  
  214. method EdPropContainer::storePropInfoMethods {this} {
  215.     global EdPropContainer::propInfoMethodDicts
  216.     ${EdPropContainer::propInfoMethodDicts} set [$this propertyKey] \
  217.                             [$this propInfoMethod]
  218. }
  219.  
  220. method EdPropContainer::startLabel {this} {
  221.     set holderComp [$this holderComp]
  222.     if {![$holderComp isA ExtConnector]} {
  223.         return Start
  224.     }
  225.     set startComp [$holderComp compAtStart]
  226.     set startItem [$startComp nameItem]
  227.     if {$startItem != ""} {
  228.         return [$startItem name]
  229.     }
  230.     return [$startComp longName]
  231. }
  232.  
  233. method EdPropContainer::endLabel {this} {
  234.     set holderComp [$this holderComp]
  235.     if {![$holderComp isA ExtConnector]} {
  236.         return End
  237.     }
  238.     set endComp [$holderComp compAtEnd]
  239.     set endItem [$endComp nameItem]
  240.     if {$endItem != ""} {
  241.         return [$endItem name]
  242.     }
  243.     return [$endComp longName]
  244. }
  245.  
  246. # Do not delete this line -- regeneration end marker
  247.  
  248. method EdPropContainer::getPropInfoMethod {this name} {
  249.     return [[$this propInfoMethod] set $name]
  250. }
  251.  
  252. method EdPropContainer::setPropInfoMethod {this name newPropInfoMethod} {
  253.     [$this propInfoMethod] set $name $newPropInfoMethod
  254. }
  255.  
  256. method EdPropContainer::removePropInfoMethod {this name} {
  257.     [$this propInfoMethod] unset $name
  258. }
  259.  
  260.