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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1996
  4. #
  5. #      File:           @(#)lockfiltdi.tcl    /main/hindenburg/6
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)lockfiltdi.tcl    /main/hindenburg/6   13 May 1997 Copyright 1996 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14. require "reptooldia.tcl"
  15.  
  16. Class LockFiltDialog : {RepToolDialog} {
  17.     constructor
  18.     method destructor
  19.     method setObject
  20.     method setClient
  21.     method setFields
  22.     method getFields
  23.     method ok
  24.     method cancel
  25.     method apply
  26.     attribute cacheLocksEnabled
  27. }
  28.  
  29. constructor LockFiltDialog {class this name view} {
  30.     set this [RepToolDialog::constructor $class $this $name $view]
  31.     # Start constructor user section
  32.  
  33.         $this cacheLocksEnabled 0
  34.         if {[m4_var get M4_reptool_cachelocks] == "1"} {
  35.         $this cacheLocksEnabled 1
  36.         }
  37.  
  38.     interface DlgColumn $this.gui {
  39.         verStretchFactor 0
  40.         DlgRow t {
  41.         NamedGroup t {
  42.             label "Lock Types"
  43.             DlgColumn t {
  44.             CheckButton read {
  45.                 label "Read Locks"
  46.             }
  47.             CheckButton write {
  48.                 label "Write Locks"
  49.             }
  50.             }
  51.         }
  52.         NamedGroup h {
  53.             label "Hanging Locks"
  54.             CheckButton hanging {
  55.             label "Select Only Hanging Locks"
  56.             }
  57.         }
  58.             }
  59.         NamedGroup a {
  60.         label "Lock Attributes"
  61.         DlgRow a {
  62.             DlgColumn a {
  63.             DlgRow object {
  64.                 Label l { text "Object Id" }
  65.                 SingleLineText object { columnCount 35 }
  66.             }
  67.             DlgRow host {
  68.                 Label l { text "Host" }
  69.                 SingleLineText host { columnCount 35 }
  70.             }
  71.             DlgRow user {
  72.                 Label l { text "User" }
  73.                 SingleLineText user { columnCount 35 }
  74.             }
  75.             DlgRow pid {
  76.                 Label l { text "Process Id" }
  77.                 IntField pid { columnCount 35 }
  78.             }
  79.             DlgRow reason {
  80.                 Label l { text "Reason" }
  81.                 SingleLineText reason { columnCount 35 }
  82.             }
  83.             }
  84.             LockBrTable dropZone {
  85.             mode ICON
  86.             selectionPolicy BROWSE
  87.             selectionChanged { %this selectedSet {} }
  88.  
  89.             BrowsObject o {
  90.                 largeIcon rep_lock_32
  91.                 label "Drop\nbrowser\nor client\nobjects\nhere."
  92.             }
  93.             }
  94.         }
  95.             }
  96.         }
  97.  
  98.         # Don't allow both buttons to be deselected.
  99.         # (Easiest fix for bug 111587)
  100.         #
  101.     $this.gui.t.t.t.read stateChanged "
  102.             set readState \[$this.gui.t.t.t.read state]
  103.             set writeState \[$this.gui.t.t.t.write state]
  104.             if {\$readState == \"0\" && \$writeState == \"0\"} {
  105.                 $this.gui.t.t.t.read state 1
  106.             }
  107.         "
  108.     $this.gui.t.t.t.write stateChanged "
  109.             set readState \[$this.gui.t.t.t.read state]
  110.             set writeState \[$this.gui.t.t.t.write state]
  111.             if {\$readState == \"0\" && \$writeState == \"0\"} {
  112.                 $this.gui.t.t.t.write state 1
  113.             }
  114.         "
  115.  
  116.         $this.gui.a.a.dropZone view [$this view]
  117.         $this.gui.a.a.dropZone droppedObject "$this setObject"
  118.         $this.gui.a.a.dropZone droppedClient "$this setClient"
  119.         if $win95 {
  120.         $this.gui.a.a.dropZone columnCount 15
  121.         }
  122.  
  123.         if [$this cacheLocksEnabled] {
  124.             interface CheckButton $this.gui.t.t.t.cache_n {
  125.         label "Normal Cache Locks"
  126.         }
  127.         interface CheckButton $this.gui.t.t.t.cache_r {
  128.         label "MustRefresh Cache Locks"
  129.         }
  130.         interface CheckButton $this.gui.t.t.t.cache_s {
  131.         label "Save Cache Locks"
  132.         }
  133.         }
  134.  
  135.         $this config \
  136.         -title "Change Lock Filter" \
  137.         -modal 0 \
  138.         -okPressed { %this ok } \
  139.         -helpPressed "[$this view] helpOnName changeLockFilter"
  140.  
  141.         PushButton new $this.apply \
  142.             -label "Apply" \
  143.             -activated "$this apply"
  144.  
  145.         $this setFields
  146.  
  147.     # End constructor user section
  148.     return $this
  149. }
  150.  
  151. method LockFiltDialog::destructor {this} {
  152.     # Start destructor user section
  153.     # End destructor user section
  154.     $this RepToolDialog::destructor
  155. }
  156.  
  157. method LockFiltDialog::setObject {this objId} {
  158.     $this.gui.a.a.a.object.object text $objId
  159. }
  160.  
  161. method LockFiltDialog::setClient {this context} {
  162.     $this.gui.a.a.a.host.host text [lindex $context 0]
  163.     $this.gui.a.a.a.pid.pid intValue [lindex $context 1]
  164.     $this.gui.a.a.a.user.user text [lindex $context 2]
  165. }
  166.  
  167. method LockFiltDialog::setFields {this} {
  168.     set f [[$this view] filter]
  169.  
  170.     set lockType [$f lockType]
  171.     if {[string first a $lockType] != -1} {
  172.         set readState 1
  173.         set writeState 1
  174.         set cacheNState 1
  175.         set cacheRState 1
  176.         set cacheSState 1
  177.     } else {
  178.     set readState 0
  179.     set writeState 0
  180.     set cacheNState 0
  181.     set cacheRState 0
  182.     set cacheSState 0
  183.     }
  184.     if {[string first r $lockType] != -1} {
  185.         set readState 1
  186.     }
  187.     if {[string first w $lockType] != -1} {
  188.         set writeState 1
  189.     }
  190.     if {[string first c $lockType] != -1} {
  191.         set cacheNState 1
  192.     }
  193.     if {[string first f $lockType] != -1} {
  194.         set cacheRState 1
  195.     }
  196.     if {[string first s $lockType] != -1} {
  197.         set cacheSState 1
  198.     }
  199.  
  200.     $this.gui.t.h.hanging state [$f lockHanging]
  201.  
  202.     $this.gui.t.t.t.read state $readState
  203.     $this.gui.t.t.t.write state $writeState
  204.     
  205.     if [$this cacheLocksEnabled] {
  206.     $this.gui.t.t.t.cache_n state $cacheNState
  207.     $this.gui.t.t.t.cache_r state $cacheRState
  208.     $this.gui.t.t.t.cache_s state $cacheSState
  209.     }
  210.     
  211.     $this.gui.a.a.a.object.object text [$f lockObject]
  212.     $this.gui.a.a.a.host.host text [$f lockHost]
  213.     $this.gui.a.a.a.user.user text [$f lockUser]
  214.     if {[$f lockPid] != ""} {
  215.     $this.gui.a.a.a.pid.pid intValue [$f lockPid]
  216.     } else {
  217.     $this.gui.a.a.a.pid.pid intValue -1
  218.     }
  219.     $this.gui.a.a.a.reason.reason text [$f lockReason]
  220. }
  221.  
  222. method LockFiltDialog::getFields {this} {
  223.     set f [[$this view] filter]
  224.  
  225.     set lockType ""
  226.     if [$this.gui.t.t.t.read state] {
  227.         append lockType r
  228.     }
  229.     if [$this.gui.t.t.t.write state] {
  230.         append lockType w
  231.     }
  232.  
  233.     if [$this cacheLocksEnabled] {
  234.     if [$this.gui.t.t.t.cache_n state] {
  235.         append lockType c
  236.     }
  237.     if [$this.gui.t.t.t.cache_r state] {
  238.         append lockType f
  239.     }
  240.     if [$this.gui.t.t.t.cache_s state] {
  241.         append lockType s
  242.     }
  243.     }
  244.  
  245.     if {$lockType == "rwcfs"} {
  246.         set lockType a
  247.     }
  248.  
  249.     $f lockType $lockType
  250.     $f lockHanging [$this.gui.t.h.hanging state]
  251.     $f lockObject [$this.gui.a.a.a.object.object text]
  252.     $f lockHost [$this.gui.a.a.a.host.host text]
  253.     $f lockUser [$this.gui.a.a.a.user.user text]
  254.  
  255.     if {[$this.gui.a.a.a.pid.pid text] == ""} {
  256.     $f lockPid -1
  257.     } else {
  258.     $f lockPid [$this.gui.a.a.a.pid.pid intValue]
  259.     }
  260.             
  261.     $f lockReason [$this.gui.a.a.a.reason.reason text]
  262.  
  263.     $f changed
  264. }
  265.  
  266. method LockFiltDialog::ok {this} {
  267.     $this apply
  268.     [[$this view] filter] save
  269. }
  270.  
  271. method LockFiltDialog::cancel {this} {
  272.     [[$this view] filter] load
  273.     $this setFields
  274.     [$this view] update
  275. }
  276.  
  277. method LockFiltDialog::apply {this} {
  278.     $this getFields
  279.     [$this view] update
  280. }
  281.  
  282. # Do not delete this line -- regeneration end marker
  283.  
  284.