home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / custbrowso.tcl < prev    next >
Text File  |  1997-03-14  |  4KB  |  203 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)custbrowso.tcl    /main/titanic/3
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)custbrowso.tcl    /main/titanic/3   14 Mar 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14.  
  15. Class CustBrowsObject : {Object} {
  16.     constructor
  17.     method destructor
  18.     method visible
  19.     method validScope
  20.     method validEnvironment
  21.     method validSpecLevel
  22.     method displayName
  23.     method infoList
  24.     attribute editable
  25.     attribute specLevel
  26.     attribute specModule
  27.     attribute readOnly
  28.     attribute scope
  29.     attribute name
  30.     attribute objSpec
  31.     attribute type
  32.     attribute userDefined
  33.     attribute alwaysInScope
  34.     attribute alwaysVisible
  35.     attribute unregister
  36.     attribute _visible
  37.     attribute _displayName
  38. }
  39.  
  40. constructor CustBrowsObject {class this name_1} {
  41.     set this [Object::constructor $class $this $name_1]
  42.     $this editable 0
  43.     # Start constructor user section
  44.  
  45.     $this readOnly 0
  46.     $this scope {}
  47.     $this userDefined 0
  48.     $this alwaysInScope 1
  49.     $this alwaysVisible 1
  50.     $this _visible {1 1 1 1 1}
  51.     $this unregister 0
  52.  
  53.     # End constructor user section
  54.     return $this
  55. }
  56.  
  57. method CustBrowsObject::destructor {this} {
  58.     # Start destructor user section
  59.     # End destructor user section
  60. }
  61.  
  62. method CustBrowsObject::visible {this args} {
  63.  
  64.     set visible {}
  65.  
  66.     if {$args == ""} {
  67.         return [$this _visible]
  68.     } else {
  69.         set count 0
  70.         $this _visible [join $args]
  71.         $this alwaysVisible 0
  72.         if {[lsearch [$this _visible] 0] == -1} {
  73.             $this alwaysVisible 1
  74.         }
  75.     }
  76. }
  77.  
  78. method CustBrowsObject::validScope {this curPath} {
  79.  
  80.     if [$this alwaysInScope] {
  81.         return 1
  82.     }
  83.  
  84.     # extract corporate 
  85.     set curPath [lreplace $curPath 0 0]
  86.  
  87.     # if curPath is corporate, the object is always in scope
  88.     if [lempty $curPath] {
  89.         return 1
  90.     }
  91.  
  92.     set index 0
  93.     set objScope [$this scope]
  94.     foreach i $curPath {
  95.         set x [lindex $objScope $index]
  96.         if { $x != ""  && $x != "*" } {
  97.             if {$index == 3} {
  98.                 if [$i isA Document] {
  99.                     if {[lsearch $x "document"] == -1} {
  100.                         return 0
  101.                     }
  102.                 } else {
  103.                     if {[lsearch $x "system"] == -1} {
  104.                         return 0
  105.                     }
  106.                 }
  107.             } else {
  108.                 if {$index == 0}  {
  109.                     set name [$i name] 
  110.                 } else {
  111.                     set name [[$i \
  112.                         $icaseLevelNames($index)] name]
  113.                 }
  114.                 if {[lsearch $x $name] == -1} {
  115.                     return 0
  116.                 }
  117.             }
  118.         }
  119.         incr index
  120.     }
  121.     return 1
  122. }
  123.  
  124. method CustBrowsObject::validEnvironment {this curPath} {
  125.  
  126.     # extract corporate 
  127.     set curPathLen [expr {[llength $curPath]-1}]
  128.  
  129.     if {![$this alwaysVisible]} {
  130.         # check if the object is visible on this level
  131.         if {[lindex [$this visible] $curPathLen] == 0 } {
  132.             return 0
  133.         }
  134.     }
  135.  
  136.     set objScope [$this scope]
  137.     if {$curPathLen < [llength $objScope]} {
  138.         return 0
  139.     }
  140.  
  141.     return [$this validScope $curPath]
  142. }
  143.  
  144. method CustBrowsObject::validSpecLevel {this curLevel} {
  145.  
  146.     set objScope [$this scope]
  147.     set level 0
  148.  
  149.     # user defines are always read in level corporate, do not check
  150.     if [$this userDefined] {
  151.         return 1
  152.     }
  153.  
  154.     if {$objScope == "" && $curLevel != "corporate"} {
  155.         return 0
  156.     }
  157.  
  158.     foreach i $objScope {
  159.         if {$i == "*" || [llength $i] > 1} {
  160.             break
  161.         } else {
  162.             incr level
  163.         }
  164.     }
  165.  
  166.     if {$icaseLevel($level) != $curLevel} {
  167.         return 0
  168.     } else {
  169.         return 1
  170.     }
  171. }
  172.  
  173. method CustBrowsObject::displayName {this args} {
  174.     
  175.     if {$args == ""} {
  176.         return [$this _displayName]
  177.     } else {
  178.         $this _displayName [join $args]
  179.     }
  180. }
  181.  
  182. method CustBrowsObject::infoList {this} {
  183.  
  184.     set readOnly "Yes"
  185.     if ![$this readOnly] {
  186.         set readOnly "No"
  187.     }
  188.     set userDefined "Yes"
  189.     if ![$this userDefined] {
  190.         set userDefined "No"
  191.     }
  192.  
  193.     return [list Name [$this displayName] \
  194.              Type [$this type] \
  195.              {Specification Level} [$this specLevel] \
  196.              Scope [$this scope] \
  197.              ReadOnly $readOnly \
  198.              UserDefined $userDefined]
  199. }
  200.  
  201. # Do not delete this line -- regeneration end marker
  202.  
  203.