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

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