home *** CD-ROM | disk | FTP | other *** search
/ PC World 1997 November / PCWorld_1997-11_cd.bin / software / programy / komix / DATA.Z / objnamecha.tcl < prev    next >
Text File  |  1997-02-25  |  5KB  |  175 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)objnamecha.tcl    /main/hindenburg/4
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)objnamecha.tcl    /main/hindenburg/4   25 Feb 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12. # End user added include file section
  13.  
  14. require "namechange.tcl"
  15.  
  16. Class ObjNameChangeDialog : {NameChangeDialog} {
  17.     constructor
  18.     method destructor
  19.     method popUp
  20.     method changeName
  21.     method changeObjectName
  22.     method updateObjectPath
  23. }
  24.  
  25. constructor ObjNameChangeDialog {class this name tool} {
  26.     set this [NameChangeDialog::constructor $class $this $name $tool]
  27.     # Start constructor user section
  28.     # End constructor user section
  29.     return $this
  30. }
  31.  
  32. method ObjNameChangeDialog::destructor {this} {
  33.     # Start destructor user section
  34.     # End destructor user section
  35.     $this NameChangeDialog::destructor
  36. }
  37.  
  38. method ObjNameChangeDialog::popUp {this} {
  39.     set selectedObj [lindex [[$this tool] selectedObjSet] 0]
  40.     if { "[$this item]" == "" } {
  41.     $this text [$selectedObj name]
  42.     } else {
  43.     $this text [[$this item] name]
  44.     }
  45.     $this NameChangeDialog::popUp
  46. }
  47.  
  48.  
  49. # Item name change.
  50. #
  51. method ObjNameChangeDialog::changeName {this useOld} {
  52.     set keeper [$this keeper]
  53.     set configV [$this configV]
  54.     set newName [$this text]
  55.     set oldName [[$this item] name]
  56.  
  57.     # Store info about the selected object
  58.     # which will possibly be deselected by the ItemKeeper
  59.     set selectedObj [lindex [[$this tool] selectedObjSet] 0]
  60.     if [$selectedObj isA SystemVersion] {
  61.         set parentObj [$selectedObj getParent PhaseVersion]
  62.         set objType [[$selectedObj system] type]
  63.         set level system
  64.     } elseif [$selectedObj isA FileVersion] {
  65.         set phaseObj [$selectedObj getParent PhaseVersion]
  66.         set parentObj [$selectedObj getParent SystemVersion]
  67.         set objType [[$selectedObj file] type]
  68.         set sysType [[$parentObj system] type]
  69.         set level file
  70.     } else {
  71.         set level other
  72.     }
  73.  
  74.     # Do the actual name change
  75.     $keeper renameRefs [$this item] $newName $useOld $configV
  76.  
  77.     # Retrieve the name-changed object
  78.     # which is possibly just created by the ItemKeeper
  79.     set closeFlag 0
  80.     case $level in {
  81.         {system} {
  82.         set newObj [$parentObj findSystemVersion "$newName" "$objType"]
  83.         }
  84.         {file} {
  85.         if [catch {set newObj \
  86.             [$parentObj findFileVersion "$newName" "$objType"]}] {
  87.             set parentObj \
  88.             [$phaseObj findSystemVersion "$newName" "$sysType"]
  89.             set newObj \
  90.             [$parentObj findFileVersion "$newName" "$objType"]
  91.             set closeFlag 1
  92.             global errorInfo
  93.             set errorInfo ""
  94.             global errorCode
  95.             set errorCode ""
  96.         }
  97.         }
  98.         {default} {
  99.         set newObj [ORB::nil]
  100.         }
  101.     }
  102.  
  103.     $this updateObjectPath $oldName $newObj
  104.  
  105.     # Close the current view if the parent is deselected
  106.     if $closeFlag {
  107.         wmtkmessage "Deselected [$parentObj browserType] '$oldName':\
  108.              Closing View ..."
  109.         [[[$this tool] currentObj] parent] open
  110.         wmtkmessage "Done"
  111.     }
  112.  
  113.     [$this tool] updateView
  114.     $this delete
  115. }
  116.  
  117.  
  118. # Rename an object.
  119. #
  120. method ObjNameChangeDialog::changeObjectName {this} {
  121.     set newName [$this text]
  122.     set selectedObj [lindex [[$this tool] selectedObjSet] 0]
  123.     set oldName [$selectedObj name]
  124.  
  125.     # do the rename
  126.     set renameObject $selectedObj
  127.     # for configversions the config must be renamed
  128.     if [$renameObject isA ConfigVersion] {
  129.     set renameObject [$selectedObj ConfigVersion::config]
  130.     }
  131.     $renameObject name $newName
  132.  
  133.     $this updateObjectPath $oldName $selectedObj
  134.     [$this tool] updateView
  135.     wmtkmessage ""
  136.     $this delete
  137. }
  138.  
  139.  
  140. # Update the user environment path for this object
  141. # if it is not an ExternalLink.
  142. #
  143. method ObjNameChangeDialog::updateObjectPath {this oldName newObj} {
  144.     # If the fileSystemPath property of the name-changed object
  145.     # contains the old name then replace it by the new name
  146.     if {! [$newObj isNil]} {
  147.     if [$newObj isA ExternalLink] {
  148.         return
  149.     }
  150.     set newName [$newObj name]
  151.     set property [$newObj findProperty fileSystemPath]
  152.     if {! [$property isNil]} {
  153.         set oldValue [$property value]
  154.         set id [string first "$oldName" "$oldValue"]
  155.         if {$id >= 0} {
  156.         set newValue "$newName[string range \
  157.             $oldValue [expr $id + [string length $oldName]] end]"
  158.         set oldPath [$newObj path]
  159.         $property change "$newValue"
  160.         set newPath [$newObj path]
  161.         if [file exists $oldPath] {
  162.             if [file isdirectory $oldPath] {
  163.             BasicFS::renameDir $oldPath $newPath
  164.             } else {
  165.             BasicFS::renameFile $oldPath $newPath
  166.             }
  167.         }
  168.         }
  169.     }
  170.     }
  171. }
  172.  
  173. # Do not delete this line -- regeneration end marker
  174.  
  175.