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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cadre Technologies Inc.    1996
  4. #
  5. #      File:           @(#)edpropcont.tcl    /main/hindenburg/1
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)edpropcont.tcl    /main/hindenburg/1   12 Sep 1996 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.     set workItem [[$this itemRef] workItem \
  76.             [[ClientContext::global] currentConfig]]
  77.     $this workItem $workItem
  78.     if [$workItem isNil] {
  79.         return 0
  80.     }
  81.     set itemProperties [$workItem properties]
  82.     if [$itemProperties isNil] {
  83.         return 0
  84.     }
  85.     $this itemPropInfo [ItemPropInfo::getPropInfo $itemProperties]
  86.     $this itemProperties $itemProperties
  87.     return 1
  88. }
  89.  
  90. method EdPropContainer::createPropertyHolder {this} {
  91.     set workItem [$this workItem]
  92.     if {$workItem == ""} {
  93.         return
  94.     }
  95.     [[ClientContext::global] currentSystem] \
  96.             declareItem [$workItem item] scopePhaseDef
  97.     $this itemProperties [$workItem properties]
  98.     $this itemPropInfo [ItemPropInfo::getPropInfo [$this itemProperties]]
  99. }
  100.  
  101. method EdPropContainer::loadProperties {this} {
  102.     set info [$this itemPropInfo]
  103.     if {$info != ""} {
  104.         $info load
  105.     }
  106. }
  107.  
  108. method EdPropContainer::editProperties {this} {
  109.     set info [$this itemPropInfo]
  110.     if {$info != ""} {
  111.         $info edit
  112.     }
  113. }
  114.  
  115. method EdPropContainer::saveProperties {this} {
  116.     set info [$this itemPropInfo]
  117.     if [isCommand $info] {
  118.         $info save
  119.     }
  120.     set info [$this diagPropInfo]
  121.     if [isCommand $info] {
  122.         $info save
  123.     }
  124. }
  125.  
  126. method EdPropContainer::quitProperties {this} {
  127.     set info [$this itemPropInfo]
  128.     if [isCommand $info] {
  129.         $info quit
  130.     }
  131. }
  132.  
  133. method EdPropContainer::changeProperty {this name value defVal} {
  134.     set info [$this [$this getPropInfoMethod $name]]
  135.     if {$info != ""} {
  136.         if [string compare $value $defVal] {
  137.             $info changeProperty $name $value
  138.         } else {
  139.             $info removeProperty $name
  140.         }
  141.     }
  142. }
  143.  
  144. method EdPropContainer::getPropertyValue {this name} {
  145.     set info [$this [$this getPropInfoMethod $name]]
  146.     if {$info != ""} {
  147.         return [$info getProperty $name]
  148.     }
  149.     return ""
  150. }
  151.  
  152. method EdPropContainer::isPropertyEditable {this name} {
  153.     if {[$this [$this getPropInfoMethod $name]] != ""} {
  154.         return [$this editable]
  155.     }
  156.     return 0
  157. }
  158.  
  159. method EdPropContainer::removeProperties {this} {
  160.     set info ""
  161.     if [$this existPropertyHolder] {
  162.         set info [$this itemPropInfo]
  163.     }
  164.     if {$info != ""} {
  165.         $info edit
  166.     }
  167.     [$this propDefinitionSet] foreach propDef {
  168.         $this removeProperty $propDef
  169.     }
  170.     if {$info != ""} {
  171.         $info save
  172.         $info quit
  173.     }
  174. }
  175.  
  176. method EdPropContainer::removeProperty {this def} {
  177.     set info [$this [$this getPropInfoMethod [$def name]]]
  178.     if {$info != ""} {
  179.         $info removeProperty [$def name]
  180.     }
  181.     foreach member [$def memberSet] {
  182.         $this removeProperty $member
  183.     }
  184. }
  185.  
  186. method EdPropContainer::addSpecificPropDef {this def propInfoMethod} {
  187.     $this addPropDefinition $def
  188.     $this fillPropInfoMethod $def $propInfoMethod
  189. }
  190.  
  191. method EdPropContainer::fillPropInfoMethod {this def propInfoMethod} {
  192.     $this setPropInfoMethod [$def name] $propInfoMethod
  193.     foreach member [$def memberSet] {
  194.         $this fillPropInfoMethod $member $propInfoMethod
  195.     }
  196. }
  197.  
  198. method EdPropContainer::getPropInfoMethods {this} {
  199.     global EdPropContainer::propInfoMethodDicts
  200.     set infoMethods [${EdPropContainer::propInfoMethodDicts} set \
  201.                 [$this propertyKey]]
  202.     if {$infoMethods == ""} {
  203.         return 0
  204.     }
  205.     $this propInfoMethod $infoMethods
  206.     return 1
  207. }
  208.  
  209. method EdPropContainer::storePropInfoMethods {this} {
  210.     global EdPropContainer::propInfoMethodDicts
  211.     ${EdPropContainer::propInfoMethodDicts} set [$this propertyKey] \
  212.                             [$this propInfoMethod]
  213. }
  214.  
  215. method EdPropContainer::startLabel {this} {
  216.     set holderComp [$this holderComp]
  217.     if {![$holderComp isA EditorConnector]} {
  218.         return Start
  219.     }
  220.     set startComp [$holderComp compAtStart]
  221.     set startItem [$startComp nameItem]
  222.     if {$startItem != ""} {
  223.         return [$startItem name]
  224.     }
  225.     return [$startComp longName]
  226. }
  227.  
  228. method EdPropContainer::endLabel {this} {
  229.     set holderComp [$this holderComp]
  230.     if {![$holderComp isA EditorConnector]} {
  231.         return End
  232.     }
  233.     set endComp [$holderComp compAtEnd]
  234.     set endItem [$endComp nameItem]
  235.     if {$endItem != ""} {
  236.         return [$endItem name]
  237.     }
  238.     return [$endComp longName]
  239. }
  240.  
  241. # Do not delete this line -- regeneration end marker
  242.  
  243. method EdPropContainer::getPropInfoMethod {this name} {
  244.     return [[$this propInfoMethod] set $name]
  245. }
  246.  
  247. method EdPropContainer::setPropInfoMethod {this name newPropInfoMethod} {
  248.     [$this propInfoMethod] set $name $newPropInfoMethod
  249. }
  250.  
  251. method EdPropContainer::removePropInfoMethod {this name} {
  252.     [$this propInfoMethod] unset $name
  253. }
  254.  
  255.