home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / lockfiltdi.tcl < prev    next >
Text File  |  1997-07-22  |  8KB  |  294 lines

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