home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / contu_uce.tcl < prev    next >
Text File  |  1997-05-16  |  5KB  |  181 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)contu_uce.tcl    /main/hindenburg/6
  6. #      Author:         Lex Warners
  7. #      Description:    VCM integration file
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)contu_uce.tcl    /main/hindenburg/6 18 Mar 1997 
  10.  
  11. require vcm_compat.tcl
  12. require_module_file contsysvdb.tcl continuus-vcm
  13. require_module_file contfileui.tcl continuus-vcm
  14.  
  15. require viewdefine.tcl
  16.  
  17. method ViewDefineDialog::associationChanged {this} {
  18.  
  19.     set typeList ""
  20.     set orgSelectedSet [[$this iPage].typesTL selectedSet]
  21.     set selAsso [[$this iPage].associationsTL selectedSet]
  22.     set class /
  23.  
  24.     foreach asso $selAsso {
  25.         set object [$this curObject]
  26.         set objClass [.main getBrowsObj [$object repositoryType]]
  27.  
  28.         # determine the right system type
  29.         if {$objClass == "SSysVDbObj"} {
  30.             # assocs are different for a Document
  31.             if {[$object browserType] == "DocumentVersion"} {
  32.                 set types [DSysVDbObj::childTypes $asso]
  33.             } elseif {[$object browserType] == "VCMSystemVersion" } {
  34.                                 set types [concat \
  35.                                         [ContSysVDbObj::childTypes $asso] \
  36.                                         [SSysVDbObj::childTypes $asso]]
  37.             } else {
  38.                 # because if not possible to determine
  39.                 # the right phase, take all the possibilities
  40.                 set types [concat \
  41.                     [PSysVDbObj::childTypes $asso] \
  42.                     [SSysVDbObj::childTypes $asso]]
  43.             }
  44.         } else {
  45.             set types [$objClass::childTypes $asso]
  46.         }
  47.         foreach i $types {
  48.             set idx [lsearch $typeList $i]
  49.             # if this type is not in the current list, add it
  50.             if {$idx == -1} {
  51.                 set typeList [concat $typeList $i]
  52.             }
  53.         }
  54.     }
  55.  
  56.     [$this iPage].typesTL entrySet $typeList
  57.     [$this iPage].typesTL selectedSet $orgSelectedSet
  58. }
  59.  
  60. method ViewDefineDialog::load {this object} {
  61.  
  62.     set associations ""
  63.     # get all the associations of the current loaded object
  64.     set objClass [.main getBrowsObj [$object repositoryType]]
  65.  
  66.     if {$objClass == "SSysVDbObj"} {
  67.         # assocs are different for a Document
  68.         if {[$object browserType] == "DocumentVersion"} {
  69.             set objClass DSysVDbObj
  70.         } elseif { [$object browserType] == "VCMSystemVersion"} {
  71.             set objClass ContSysVDbObj
  72.          } else {
  73.             set objClass PSysVDbObj
  74.         }
  75.     }
  76.  
  77.     if {![isCommand $objClass]} {
  78.         wmtkmessage "No associations found for type \
  79.             '[$object repositoryType]'"
  80.     } else {
  81.         foreach i [$objClass::associations] {
  82.             #if this associations is not in the current list, add it
  83.             if { [lsearch $associations $i] == -1} {
  84.                 lappend associations $i
  85.             }
  86.         }
  87.     }
  88.  
  89.     # get the associationsClasses of the objClass
  90.     # from these classes the infoProperties must be shown
  91.     
  92.     set infoProps ""
  93.     set assocClasses ""
  94.     # get all the infoProps of the associationsClasses
  95.     foreach association $associations {
  96.         case "$association" in {
  97.             {vsFiles} {
  98.             set assocClasses {ContFileUiObj}
  99.             }
  100.             {customFileVersions} {
  101.             set assocClasses {CustFVDbObj} 
  102.             }
  103.             {directFileVersions fileVersions localFileVersions} {
  104.             set assocClasses {ExtFVDbObj GraphVDbObj MtrxVDbObj}
  105.             }
  106.             {definedItems} {
  107.             set assocClasses {WItemDbObj}
  108.             }
  109.             {externalFiles} {
  110.             set assocClasses {ExtFUiObj}
  111.             }
  112.             {externalLinks} {
  113.             set assocClasses {ExtLDbObj}
  114.             }
  115.             {fileVersionReferences} {
  116.             set assocClasses {SFileLDbObj}
  117.             }
  118.             {phaseVersions} {
  119.             set assocClasses {PhaseVDbObj}
  120.             }
  121.             {roleLinks userLinks} {
  122.             set assocClasses {UsrLDbObj}
  123.             }
  124.             {rules} {
  125.             set assocClasses {RuleUiObj} 
  126.             }
  127.             {sections} {
  128.             set assocClasses \
  129.                 {ExtFVDbObj SFileLDbObj FilePRDbObj ItemPRDbObj} 
  130.             }
  131.             {default} {
  132.             set childTypes [$objClass::childTypes $association]
  133.             set assocClasses ""
  134.             foreach childType $childTypes {
  135.                 lappend assocClasses [.main getBrowsObj $childType]
  136.             }
  137.             }
  138.         }
  139.  
  140.         foreach class $assocClasses {
  141.             if {![isCommand $class::infoProperties]} {
  142.                 continue
  143.             }
  144.             foreach prop [$class::infoProperties] {
  145.                 # if this infoProp is not in the current list, 
  146.                 # add it
  147.                 if { [lsearch $infoProps $prop] == -1} {
  148.                     lappend infoProps $prop
  149.                 }
  150.             }
  151.         }
  152.     }
  153.  
  154.     [$this iPage].associationsTL entrySet $associations
  155.     # refresh the types that belongs to the new associations
  156.     $this associationChanged
  157.  
  158.     set props [$this pPage].propertiesBV
  159.  
  160.     # delete the old propertyList 
  161.     foreach row [[$this pPage].propertiesBV objectSet] {
  162.         $row delete
  163.     }
  164.     foreach row [[$this pPage].hidpropertiesBV objectSet] {
  165.         $row delete
  166.     }
  167.  
  168.     # build the new propertyList
  169.     set index 0
  170.     set props [$this pPage].hidpropertiesBV
  171.     foreach i $infoProps {
  172.         PropViewObject new $props.$index
  173.         $props.$index label $i
  174.         $props.$index details "10 ascii none {}"
  175.         incr index
  176.     }
  177.  
  178.     $this DefineDialog::load $object
  179. }
  180.  
  181.