home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / propview.tcl < prev    next >
Text File  |  1996-09-12  |  2KB  |  103 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Westmount Technology    1994
  4. #
  5. #      File:           @(#)propview.tcl    /main/titanic/1
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)propview.tcl    /main/titanic/1   12 Sep 1996 Copyright 1994 Westmount Technology
  10.  
  11. # Start user added include file section
  12. require propviewob.tcl
  13. # End user added include file section
  14.  
  15.  
  16. Class PropView : {BrowsView} {
  17.     constructor
  18.     method destructor
  19.     method dropEvent
  20.     method reIndex
  21. }
  22.  
  23. constructor PropView {class this name} {
  24.     set this [BrowsView::constructor $class $this $name]
  25.     # Start constructor user section
  26.  
  27.     $this config \
  28.         -destinationSet "BROWSERVIEWPROP dropEvent" \
  29.         -selectionPolicy BROWSE
  30.  
  31.     # End constructor user section
  32.     return $this
  33. }
  34.  
  35. method PropView::destructor {this} {
  36.     # Start destructor user section
  37.     # End destructor user section
  38. }
  39.  
  40. method PropView::dropEvent {this droppedObject srcIsDst droppedAfterObject droppedForObject} {
  41.  
  42.     set fromView [$droppedObject view]
  43.     if {$fromView != $this} {
  44.         set woObjSet [$this objectSet]
  45.         set droppedObject [$droppedObject reParent $this]
  46.     } else {
  47.         # remove the dropped object from the list
  48.         foreach obj [$this objectSet] {
  49.             if {$obj != $droppedObject} {
  50.                 lappend woObjSet $obj
  51.             }
  52.         }
  53.     }
  54.  
  55.     # set on the right place
  56.  
  57.     # replace the dropped object in the list
  58.     if { $droppedAfterObject == ""} {
  59.         set wObjSet "$droppedObject $woObjSet"
  60.     } else {
  61.         foreach obj $woObjSet {
  62.             lappend wObjSet $obj
  63.             if {$obj == $droppedAfterObject} {
  64.                 lappend wObjSet $droppedObject
  65.             }
  66.         }
  67.     }
  68.  
  69.     set index 0
  70.     foreach obj $wObjSet { 
  71.         $obj index $index
  72.         incr index
  73.     }
  74.  
  75.     $this sort -command "PropView::sort"
  76. }
  77.  
  78. method PropView::reIndex {this} {
  79.     
  80.     set index 0
  81.     foreach obj [$this objectSet] {
  82.         $obj index $index
  83.         incr index
  84.     }
  85. }
  86.  
  87. proc PropView::sort {objA objB} {
  88.     
  89.     set idxA [$objA index]
  90.     set idxB [$objB index]
  91.  
  92.     if {$idxA > $idxB} {
  93.         return 1
  94.     } elseif {$idxB > $idxA} {
  95.         return -1
  96.     } else {
  97.         return 0
  98.     }
  99. }
  100.  
  101. # Do not delete this line -- regeneration end marker
  102.  
  103.