home *** CD-ROM | disk | FTP | other *** search
- #---------------------------------------------------------------------------
- #
- # (c) Westmount Technology 1994
- #
- # File: @(#)menutree.tcl /main/hindenburg/1
- # Author: <generated>
- # Description:
- #---------------------------------------------------------------------------
- # SccsId = @(#)menutree.tcl /main/hindenburg/1 22 Oct 1996 Copyright 1994 Westmount Technology
-
- # Start user added include file section
- # End user added include file section
-
-
- Class MenuTree : {BrowsTree} {
- constructor
- method destructor
- method dropEvent
- method isDropPossible
- method selectedSet
- method getMenuPartNode
- method setMenuPartNode
- method removeMenuPartNode
- attribute levelsToWrite
- attribute MenuPartNode
- }
-
- constructor MenuTree {class this name} {
- set this [BrowsTree::constructor $class $this $name]
- $this MenuPartNode [Dictionary new]
- # Start constructor user section
-
- # create popup menu for tree
- TreePopUpMenu new $this.pop -poppedUp {
- %this entrySet [[.main menuHdlr] getValidPopUpEntrySet]
- }
- # End constructor user section
- return $this
- }
-
- method MenuTree::destructor {this} {
- # Start destructor user section
- # End destructor user section
- }
-
- method MenuTree::dropEvent {this droppedObject srcIsDst droppedAfterObject droppedForObject} {
-
- if {$srcIsDst == 0} {
- wmtkerror "Drag & drop between tools is not supported (yet)."
- return
- }
-
- if { $droppedAfterObject == "" &&
- ![$droppedObject isA MenuBarNode] } {
- wmtkerror "Object not moved, reason: no parent available."
- return
- }
-
- if {![$droppedObject editable]} {
- wmtkerror "Object not moved, reason: object not editable."
- return
- }
-
- set obj $droppedAfterObject
- if [$droppedObject isA MenuBarNode] {
- set newIndex 0
- while {$obj != ""} {
- set newIndex [expr [$obj index] + 1]
- set obj [$obj parent]
- }
- } else {
- if [$obj isA ParentNode] {
- set newIndex 0
- } else {
- set newIndex [expr [$obj index] + 1]
- # find the parent
- while {$obj != "" && (![$obj isA ParentNode] || \
- [$obj foldState] == 1)} {
- set obj [$obj parent]
- }
- }
- # is a parent found
- if {$obj == "" } {
- return
- }
- }
-
- if {[$this isDropPossible $droppedObject $obj] == 1} {
- $droppedObject parent $obj
- $droppedObject index $newIndex
- if {$obj != "" } {
- set dotName [$obj name].menu
- } else {
- set dotName ""
- }
-
- # adjust the dotnames from the object and it's children
- $droppedObject changeDotName $dotName
-
- [.main editorArea] isChanged 1
- }
- }
-
- method MenuTree::isDropPossible {this droppedObject parentObject} {
-
- if {[ $droppedObject parent] != $parentObject} {
- set parent $parentObject
- } else {
- set parent [$droppedObject parent]
- }
-
- # check if this one is valid
- set err [$droppedObject check [$droppedObject scope] \
- [$droppedObject visible] [$droppedObject specLevel] $parent]
- if {$err != ""} {
- wmtkerror "[$droppedObject displayName]: $err: object not moved."
- return 0
- }
-
- set levelList [$droppedObject specLevel]
-
- # check if all the children can be saved
- set err ""
- foreach i [$this getChildObjects $droppedObject] {
- if {![$i editable]} {
- lappend err "[$i displayName] "
- }
- }
-
- if { $err != "" } {
- wmtkerror "[$droppedObject displayName] $err not changeable."
- return 0
- }
-
- return 1
- }
-
- method MenuTree::selectedSet {this args} {
-
- if {$args == ""} {
- return [$this selected]
- } else {
- $this selected [lindex $args 0]
- }
- }
-
- # Do not delete this line -- regeneration end marker
-
- method MenuTree::getMenuPartNode {this dotName} {
- return [[$this MenuPartNode] set $dotName]
- }
-
- method MenuTree::setMenuPartNode {this dotName newMenuPartNode} {
- [$this MenuPartNode] set $dotName $newMenuPartNode
- }
-
- method MenuTree::removeMenuPartNode {this dotName} {
- [$this MenuPartNode] unset $dotName
- }
-
-