home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / s_uce.tcl < prev    next >
Text File  |  1997-06-18  |  5KB  |  180 lines

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