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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cadre Technologies Inc.    1996
  4. #
  5. #      File:           @(#)setlockdia.tcl    /main/titanic/6
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)setlockdia.tcl    /main/titanic/6   22 Jul 1997 Copyright 1996 Cadre Technologies Inc.
  10.  
  11. # Start user added include file section
  12. require "lockbrtabl.tcl"
  13. # End user added include file section
  14.  
  15. require "reptooldia.tcl"
  16.  
  17. Class SetLockDialog : {RepToolDialog} {
  18.     constructor
  19.     method destructor
  20.     method setObject
  21.     method setClient
  22.     method ok
  23.     method cancel
  24. }
  25.  
  26. constructor SetLockDialog {class this name view} {
  27.     set this [RepToolDialog::constructor $class $this $name $view]
  28.     # Start constructor user section
  29.  
  30.     interface DlgColumn $this.gui {
  31.             DlgRow type {
  32.             Label l { text "Lock Type" }
  33.             OptionMenu type {
  34.                 horStretchFactor 100
  35.                 entrySet {
  36.                 writeLock
  37.                 readLock
  38.                 }
  39.             }
  40.             }
  41.             DlgRow attr {
  42.         DlgColumn attr {
  43.             DlgRow object {
  44.             Label l { text "Object Id" }
  45.             SingleLineText object {
  46.                             columnCount 35
  47.                         }
  48.             }
  49.             DlgRow host {
  50.             Label l { text "Host" }
  51.             SingleLineText host {
  52.                             columnCount 35
  53.                         }
  54.             }
  55.             DlgRow user {
  56.             Label l { text "User" }
  57.             SingleLineText user {
  58.                             columnCount 35
  59.                         }
  60.             }
  61.             DlgRow pid {
  62.             Label l { text "Process Id" }
  63.             IntField pid {
  64.                             intValue -1
  65.                             columnCount 35
  66.             }
  67.             }
  68.             DlgRow reason {
  69.             Label l { text "Reason" }
  70.             SingleLineText reason {
  71.                             columnCount 35
  72.                         }
  73.             }
  74.         }
  75.         LockBrTable dropZone {
  76.             mode ICON
  77.                     selectionPolicy BROWSE
  78.                     selectionChanged { %this selectedSet {} }
  79.  
  80.                     BrowsObject o {
  81.                         largeIcon rep_lock_32
  82.                         label "Drop\nbrowser\nor client\nobjects\nhere."
  83.                     }
  84.         }
  85.             }
  86.         }
  87.  
  88.         $this.gui.attr.dropZone view [$this view]
  89.         if $win95 {
  90.         $this.gui.attr.dropZone columnCount 15
  91.         }
  92.  
  93.         $this config \
  94.         -title "New Lock" \
  95.         -okPressed { %this ok } \
  96.         -cancelPressed { %this cancel } \
  97.         -helpPressed { [%this view] helpOnName newLock }
  98.  
  99.     # End constructor user section
  100.     return $this
  101. }
  102.  
  103. method SetLockDialog::destructor {this} {
  104.     # Start destructor user section
  105.     # End destructor user section
  106.     $this RepToolDialog::destructor
  107. }
  108.  
  109. method SetLockDialog::setObject {this objId} {
  110.     $this.gui.attr.attr.object.object text $objId
  111. }
  112.  
  113. method SetLockDialog::setClient {this context} {
  114.     $this.gui.attr.attr.host.host text [lindex $context 0]
  115.     $this.gui.attr.attr.pid.pid intValue [lindex $context 1]
  116.     $this.gui.attr.attr.user.user text [lindex $context 2]
  117.  
  118.     set levelPath [lindex $context 3]
  119.     if {$levelPath != ""} {
  120.         set path [LevelPath new $levelPath]
  121.         set obj [$path nameAt [$path depth]]
  122.         if [catch {ORB::decodeObjectId $obj}] {
  123.             # The path is a path with object names.
  124.             # Use client context to resolve it into object ids.
  125.             #
  126.         set cc [ClientContext::global]
  127.         $cc notifyDisable
  128.         if ![catch {
  129.         set old [$cc currentLevelIdString]
  130.         $cc setLevelPath $levelPath
  131.         set objectId [[$cc currentLevelId] identity]
  132.         $cc setLevelIds $old
  133.         }] {
  134.         $this setObject $objectId
  135.         }
  136.         $cc notifyEnable
  137.         } else {
  138.             # The path is a path with object ids.
  139.             #
  140.             $this setObject $obj
  141.         }
  142.     }
  143. }
  144.  
  145. method SetLockDialog::ok {this} {
  146.     [$this view] setLockPoppedUp 0
  147.  
  148.     set new [LockDescription new]
  149.  
  150.     # Only set those fields of the description that have been entered in
  151.     # the dialog.  Let setLock give error if description is incomplete.
  152.     #
  153.  
  154.     set objId [$this.gui.attr.attr.object.object text]
  155.     if {$objId != "" && $objId != [[ORB::nil] identity]} {
  156.     $new setObject $objId
  157.     }
  158.  
  159.     $new addType [LockFilter::lock2descType \
  160.                     [$this.gui.type.type selected]]
  161.  
  162.     set host [$this.gui.attr.attr.host.host text]
  163.     if {$host != ""} {
  164.     $new setHost $host
  165.     }
  166.  
  167.     set user [$this.gui.attr.attr.user.user text]
  168.     if {$user != ""} {
  169.     $new setUser $user
  170.     }
  171.  
  172.     set pid [$this.gui.attr.attr.pid.pid intValue]
  173.     if {$pid != "" && $pid != -1} {
  174.     $new setPid $pid
  175.     }
  176.  
  177.     set reason [$this.gui.attr.attr.reason.reason text]
  178.     if {$reason != ""} {
  179.     $new setReason $reason
  180.     }
  181.  
  182.     [[$this view] rep] setLock $new
  183.     [$this view] update
  184. }
  185.  
  186. method SetLockDialog::cancel {this} {
  187.     [$this view] setLockPoppedUp 0
  188. }
  189.  
  190. # Do not delete this line -- regeneration end marker
  191.  
  192.