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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cadre Technologies Inc.    1996
  4. #
  5. #      File:           @(#)viewedarea.tcl    /main/titanic/3
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)viewedarea.tcl    /main/titanic/3   14 Mar 1997 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 25
  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 [list 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.         lappend list readOnly [$obj readOnly]
  150.     }
  151.     if { [$obj scope] != "" } {
  152.         lappend list scope [$obj scope]
  153.     }
  154.     lappend list name [$obj displayName]
  155.     lappend list repositoryType [$obj repositoryType]
  156.     if { [$obj browserType] != "" } {
  157.         lappend list browserType [$obj browserType]
  158.     }
  159.     # Don't use lappend here to prevent confusion of indentList
  160.     set list "$list objSpec [CustEdArea::indentList [$obj objSpec] 1 1]"
  161.  
  162.     puts $fid "registerObject [CustEdArea::indentList $list 0 1]"
  163. }
  164.  
  165. method ViewEdArea::sortArea {this} {
  166.     
  167.     $this sort -command "sortView"
  168. }
  169.  
  170. method ViewEdArea::getObjects {this} {
  171.     
  172.     return [$this objectSet]
  173. }
  174.  
  175. method ViewEdArea::clearArea {this} {
  176.     
  177.     foreach obj [$this objectSet] {
  178.         $obj delete
  179.     }
  180.  
  181.     .main selectionChanged
  182. }
  183.  
  184. # Do not delete this line -- regeneration end marker
  185.  
  186.