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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)mtproperty.tcl    /main/titanic/3
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)mtproperty.tcl    /main/titanic/3   29 Aug 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14. require "mergeobjec.tcl"
  15.  
  16. Class MTProperty : {MergeObject} {
  17.     constructor
  18.     method destructor
  19.     method hasConflict
  20.     method getInfo
  21.     method merge
  22.     method import
  23.     method copy
  24.     method overwrite
  25.     attribute baseValue
  26. }
  27.  
  28. constructor MTProperty {class this name fromRepObj toRepObj} {
  29.     set this [MergeObject::constructor $class $this $name $fromRepObj $toRepObj]
  30.     # Start constructor user section
  31.     # End constructor user section
  32.     return $this
  33. }
  34.  
  35. method MTProperty::destructor {this} {
  36.     # Start destructor user section
  37.     # End destructor user section
  38.     $this MergeObject::destructor
  39. }
  40.  
  41. method MTProperty::hasConflict {this} {
  42.  
  43.     set to [$this toRepObj]
  44.  
  45.     # check if 'to' element does not exist
  46.     if {$to == ""} {
  47.         return 0
  48.     }
  49.  
  50.     # if 'to' value == 'base' value
  51.     set toValue [[$this toRepObj] value]
  52.     if {[$this baseValue] == $toValue} {
  53.         return 0
  54.     }
  55.  
  56.     # now it's clear there's a conflict
  57.     return 1
  58. }
  59.  
  60. method MTProperty::getInfo {this} {
  61.  
  62.     # show the values
  63.     lappend info "Source value"
  64.     lappend info [[$this fromRepObj] value]
  65.     if {[$this toRepObj] != ""} {
  66.         lappend info "Target value"
  67.         lappend info [[$this toRepObj] value]
  68.     }
  69.     return $info
  70. }
  71.  
  72. method MTProperty::merge {this} {
  73.  
  74.     if ![$this hasConflict] {
  75.         return [$this copy]
  76.     }
  77.  
  78.     # conflicting properties can not be merged (automaticly)
  79.     return 0
  80.  
  81. }
  82.  
  83. method MTProperty::import {this} {
  84.  
  85.     return [$this copy]
  86. }
  87.  
  88. method MTProperty::copy {this} {
  89.     
  90.     set parentObj [MTProcs::makeToWorking [$this parent]]
  91.  
  92.     if {$parentObj == ""} {
  93.         return 0
  94.     }
  95.  
  96.     set name [[$this fromRepObj] name]
  97.     set value [[$this fromRepObj] value]
  98.     # set property in the PropertyObject
  99.     if [[$this fromRepObj] isA MTItemPropRepObj] {
  100.  
  101.         # search the item in the target 
  102.         set item [[[$this fromRepObj] item] item]
  103.         set toWorkItem [$parentObj findDeclaration $item \
  104.             [.main toConfig]]
  105.     
  106.          if [$toWorkItem isNil] {
  107.             return 0
  108.         }
  109.         $toWorkItem setProperty $name $value
  110.     } else {
  111.         $parentObj setProperty $name $value
  112.     }
  113.     return 1
  114. }
  115.  
  116. method MTProperty::overwrite {this} {
  117.     
  118.     return [$this copy]
  119. }
  120.  
  121. # Do not delete this line -- regeneration end marker
  122.  
  123.