home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / viewedarea.tcl < prev    next >
Text File  |  1996-08-29  |  4KB  |  185 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cadre Technologies Inc.    1996
  4. #
  5. #      File:           @(#)viewedarea.tcl    /main/hindenburg/1
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)viewedarea.tcl    /main/hindenburg/1   29 Aug 1996 Copyright 1996 Cadre Technologies Inc.
  10.  
  11. # Start user added include file section
  12.  
  13. require custobjvie.tcl
  14. require viewobject.tcl
  15. require viewdefine.tcl
  16.  
  17. # End user added include file section
  18.  
  19. require "custedarea.tcl"
  20.  
  21. Class ViewEdArea : {CustEdArea BrowsView} {
  22.     method destructor
  23.     constructor
  24.     method newObject
  25.     method createObject
  26.     method redefineObject
  27.     method writeObject
  28.     method sortArea
  29.     method getObjects
  30.     method clearArea
  31.     attribute viewDefiner
  32. }
  33.  
  34. method ViewEdArea::destructor {this} {
  35.     # Start destructor user section
  36.     # End destructor user section
  37.     $this CustEdArea::destructor
  38. }
  39.  
  40. constructor ViewEdArea {class this name} {
  41.     set this [BrowsView::constructor $class $this $name]
  42.     set this [CustEdArea::constructor $class $this $name]
  43.  
  44.     $this rowCount 12
  45.     $this columnCount 80
  46.     $this font "[m4_var get M4_font -context uce]"
  47.     $this mode DETAIL
  48.     BrowsHeader new $this.repType     -label "Repository type" -width 25
  49.     BrowsHeader new $this.broType     -label "Browser type" -width 25
  50.     BrowsHeader new $this.name     -label "View name"    -width 17
  51.     BrowsHeader new $this.specLevel     -label Level          -width 15
  52.     BrowsHeader new $this.scope     -label Scope           -width 75
  53.  
  54.     global classCount
  55.     $this filter [CustObjViewFilter new CustObjViewFilter$classCount $this]
  56.     incr classCount
  57.  
  58.     return $this
  59. }
  60.  
  61. method ViewEdArea::newObject {this repositoryType browserType name {edit 0}} {
  62.  
  63.     $this isChanged 1
  64.  
  65.     if {$browserType == "all"} {
  66.         set browserType ""
  67.     }
  68.  
  69.     set user 0
  70.     if {[$this _level] == "user"} {
  71.         set user 1
  72.     }
  73.  
  74.     set level 0
  75.     set validLevel 0
  76.     if {![isCommand .main.viewDefiner]} {
  77.         $this viewDefiner [ViewDefineDialog new .main.viewDefiner]
  78.     }
  79.  
  80.     set repScope [[$this viewDefiner] getRepTypeScope $repositoryType]
  81.     foreach elm $repScope {
  82.         if $elm {
  83.             set validLevel $level
  84.         }
  85.         incr level 
  86.     }
  87.  
  88.     # adjust the scope to the repositoryType
  89.     set scope [$this _scope]
  90.     for {set i [llength $scope]} {$i < $validLevel} {incr i} {
  91.         lappend scope "*"
  92.     }
  93.  
  94.     set obj [$this createObject "displayName    \"$name\"
  95.                 scope    \"$scope\"
  96.                 specLevel    \"[$this _level]\"
  97.                 userDefined    $user
  98.                 repositoryType $repositoryType
  99.                 browserType \"$browserType\"
  100.                 name    \"$name\"" \
  101.                 [$this _level]]
  102.  
  103.     $this sortArea
  104.  
  105.     if $edit {
  106.         $obj open
  107.     }
  108. }
  109.  
  110. method ViewEdArea::createObject {this objSpec level} {
  111.     
  112.     global classCount
  113.     set object [ViewObject new $this.Object$classCount $objSpec]
  114.     incr classCount
  115.  
  116.     # if invalid scope (level) specified, set scope to corporate
  117.     if {$icaseLevel([llength [$object scope]]) == ""} { 
  118.         $object scope ""
  119.     }
  120.  
  121.     $this adjustCreatedObject $object $level
  122.  
  123.     # update the object-details in the view 
  124.     # if the objectname already exists, it is automatically placed
  125.     # under the existing one (sorted)
  126.     $object updateView
  127.  
  128.     return $object
  129. }
  130.  
  131. method ViewEdArea::redefineObject {this obj} {
  132.  
  133.     set object [$this CustEdArea::redefineObject $obj]
  134.  
  135.     if [isCommand $object] {
  136.         $object repositoryType [$obj repositoryType]
  137.         $object browserType [$obj browserType]
  138.         $object updateView
  139.         $this sortArea
  140.     }
  141.  
  142.     return $object
  143. }
  144.  
  145. method ViewEdArea::writeObject {this obj fid} {
  146.  
  147.     set list ""
  148.     if [$obj readOnly] {
  149.         set list "$list readOnly [$obj readOnly]"
  150.     }
  151.     if { [$obj scope] != "" } {
  152.         set list "$list scope \{[$obj scope]\}"
  153.     }
  154.     set list "$list name \"[$obj displayName]\""
  155.     set list "$list repositoryType \"[$obj repositoryType]\""
  156.     if { [$obj browserType] != "" } {
  157.         set list "$list browserType \"[$obj browserType]\""
  158.     }
  159.     set list "$list objSpec [CustEdArea::indentList [$obj objSpec] 1 1]"
  160.  
  161.     puts $fid "registerObject [CustEdArea::indentList $list 0 1]"
  162. }
  163.  
  164. method ViewEdArea::sortArea {this} {
  165.     
  166.     $this sort -command "sortView"
  167. }
  168.  
  169. method ViewEdArea::getObjects {this} {
  170.     
  171.     return [$this objectSet]
  172. }
  173.  
  174. method ViewEdArea::clearArea {this} {
  175.     
  176.     foreach obj [$this objectSet] {
  177.         $obj delete
  178.     }
  179.  
  180.     .main selectionChanged
  181. }
  182.  
  183. # Do not delete this line -- regeneration end marker
  184.  
  185.