home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / ctrlpnlvie.tcl < prev    next >
Text File  |  1997-08-20  |  3KB  |  124 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)ctrlpnlvie.tcl    /main/titanic/2
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)ctrlpnlvie.tcl    /main/titanic/2   20 Aug 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14.  
  15. Class CtrlPnlView : {BrowsView} {
  16.     constructor
  17.     method destructor
  18.     method dropEvent
  19.     method reIndex
  20.     method dialog
  21.     attribute _dialog
  22. }
  23.  
  24. constructor CtrlPnlView {class this name} {
  25.     set this [BrowsView::constructor $class $this $name]
  26.     # Start constructor user section
  27.     $this destinationSet "CONTROLPANELENTRY dropEvent"
  28.     # End constructor user section
  29.     return $this
  30. }
  31.  
  32. method CtrlPnlView::destructor {this} {
  33.     set ref [$this _dialog]
  34.     if {$ref != ""} {
  35.         $ref _view ""
  36.     }
  37.     # Start destructor user section
  38.     # End destructor user section
  39. }
  40.  
  41. method CtrlPnlView::dropEvent {this droppedObject srcIsDst droppedAfterObject droppedForObject} {
  42.  
  43.  
  44.     if {$srcIsDst == 0} {
  45.         wmtkmessage "Drag & drop between tools is not supported (yet)"
  46.         return
  47.     }
  48.  
  49.     set objSet [$this objectSet]
  50.     set objName [$droppedObject label]
  51.  
  52.     # remove the dropped object from the list in view and dialog
  53.     [$this dialog] removeEntry $objName
  54.         foreach obj $objSet {
  55.             if {$obj != $droppedObject} {
  56.                 lappend woObjSet $obj
  57.                 }
  58.     }
  59.  
  60.     # replace the dropped object in the list
  61.     if { $droppedAfterObject == ""} {
  62.         set wObjSet "$droppedObject $woObjSet"
  63.             [$this dialog] insertEntryAfter "" $objName
  64.     } else {
  65.             [$this dialog] insertEntryAfter \
  66.             [$droppedAfterObject label] $objName
  67.         foreach obj $woObjSet {
  68.             lappend wObjSet $obj
  69.             if {$obj == $droppedAfterObject} {
  70.                 lappend wObjSet $droppedObject
  71.             }
  72.         }
  73.     }
  74.  
  75.     set index 0
  76.     foreach obj $wObjSet { 
  77.         $obj index $index
  78.         incr index
  79.     }
  80.  
  81.     $this sort -command "CtrlPnlView::sort"
  82. }
  83.  
  84. method CtrlPnlView::reIndex {this} {
  85.  
  86.     set index 0
  87.     foreach obj [$this objectSet] {
  88.         $obj index $index
  89.         incr index
  90.     }
  91. }
  92.  
  93. proc CtrlPnlView::sort {objA objB} {
  94.  
  95.     set idxA [$objA index]
  96.     set idxB [$objB index]
  97.  
  98.     if {$idxA > $idxB} {
  99.         return 1
  100.     } elseif {$idxB > $idxA} {
  101.         return -1
  102.     } else {
  103.         return 0
  104.     }
  105. }
  106.  
  107. # Do not delete this line -- regeneration end marker
  108.  
  109. method CtrlPnlView::dialog {this args} {
  110.     if {$args == ""} {
  111.         return [$this _dialog]
  112.     }
  113.     set ref [$this _dialog]
  114.     if {$ref != ""} {
  115.         $ref _view ""
  116.     }
  117.     set obj [lindex $args 0]
  118.     if {$obj != ""} {
  119.         $obj _view $this
  120.     }
  121.     $this _dialog $obj
  122. }
  123.  
  124.