home *** CD-ROM | disk | FTP | other *** search
/ PC World 1998 October / PCWorld_1998-10_cd.bin / software / prehled / komix / DATA.Z / versionbro.tcl < prev    next >
Text File  |  1997-11-25  |  6KB  |  252 lines

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cayenne Software Inc.    1997
  4. #
  5. #      File:           @(#)versionbro.tcl    /main/titanic/15
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)versionbro.tcl    /main/titanic/15   25 Nov 1997 Copyright 1997 Cayenne Software Inc.
  10.  
  11. # Start user added include file section
  12.  
  13. require "vbtreearea.tcl"
  14. require "vbwmtarea.tcl"
  15.  
  16. # End user added include file section
  17.  
  18. require "wmttool.tcl"
  19.  
  20. Class VersionBrowser : {WmtTool MainWindow} {
  21.     method destructor
  22.     constructor
  23.     method createInterface
  24.     method selectedVersionSet
  25.     method selectedObjSet
  26.     method selectedNameSet
  27.     method initialize
  28.     method selectionChanged
  29.     method addContextArea
  30.     method updateWmtArea
  31.     method updateToolBar
  32.     method updateView
  33.     method helpOnName
  34.     method getStatus
  35.     method setStatus
  36.     method removeStatus
  37.     attribute initialContext
  38.     attribute currentVersion
  39.     attribute _selectedVersionSet
  40.     attribute _selectedObjSet
  41.     attribute opened
  42.     attribute objectHdlr
  43.     attribute infoView
  44.     attribute wmtArea
  45.     attribute menuHdlr
  46.     attribute status
  47. }
  48.  
  49. method VersionBrowser::destructor {this} {
  50.     # Start destructor user section
  51.     if [$this opened] {
  52.         $this saveToolBarPresence vb
  53.         $this saveContextAreaPresence vb
  54.         $this saveMessageAreaPresence vb
  55.         $this saveWindowGeometry vb
  56.     }
  57.     # End destructor user section
  58.     $this WmtTool::destructor
  59. }
  60.  
  61. constructor VersionBrowser {class this name toolId} {
  62.     set this [MainWindow::constructor $class $this $name]
  63.     set this [WmtTool::constructor $class $this $name]
  64.  
  65.     global makeSelectionUpToDate
  66.     set makeSelectionUpToDate 1
  67.  
  68.     $this opened 0
  69.  
  70.     MenuBar new $this.MB
  71.     $this menuHdlr [CustBrMenuHandler new $toolId $globalModuleHandler]
  72.     $this objectHdlr [CustObjHandler new $globalModuleHandler]
  73.     $this createInterface
  74.  
  75.     # Check if handlers are created without errors:
  76.     #     the corporate customization files exist
  77.     if [isCommand .main.error] {
  78.     return $this
  79.     }
  80.  
  81.     [$this menuHdlr] setCurrentContext
  82.  
  83.     $this setWindowGeometry vb
  84.  
  85.     return $this
  86. }
  87.  
  88. method VersionBrowser::createInterface {this} {
  89.  
  90.     DlgColumn new $this.DC
  91.     $this setToolBarPresence vb
  92.     $this setContextAreaPresence vb
  93.     $this infoView [VBTreeArea new $this.DC.infoIV]
  94.     # create popup menu for view
  95.     DrAreaPopUpMenu new [$this infoView].pop  \
  96.     -poppedUp {
  97.         [.main infoView].pop entrySet \
  98.         [[.main menuHdlr] validPopUpEntrySet]
  99.     }
  100.     [$this infoView] selectionChanged {.main selectionChanged}
  101.     $this setMessageAreaPresence vb
  102. }
  103.  
  104. method VersionBrowser::selectedVersionSet {this} {
  105.     if {[$this _selectedVersionSet] == "undefined"} {
  106.         set selectedVersionSet [[$this infoView] selectedSet]
  107.         $this _selectedVersionSet $selectedVersionSet
  108.     }
  109.     return [$this _selectedVersionSet]
  110. }
  111.  
  112.  
  113. # function to make it possible to use commonbrowser stuff
  114. #
  115. #
  116. method VersionBrowser::selectedObjSet {this} {
  117.     set selectedObjSet [$this _selectedObjSet]
  118.     if {"$selectedObjSet" == "undefined"} {
  119.         set selectedObjSet {}
  120.         foreach node [$this selectedVersionSet] {
  121.             lappend selectedObjSet [$node version]
  122.         }
  123.         $this _selectedObjSet $selectedObjSet
  124.     }
  125.     if $makeSelectionUpToDate {
  126.         foreach obj $selectedObjSet {
  127.             $obj makeUpToDate
  128.         }
  129.     }
  130.     return $selectedObjSet
  131. }
  132.  
  133.  
  134. # function to make it possible to use some commonbrowser stuff.
  135. #
  136. method VersionBrowser::selectedNameSet {this} {
  137.     set selectedNameSet ""
  138.     foreach node [$this selectedVersionSet] {
  139.         set version [$node version]
  140.         lappend selectedNameSet [list \
  141.             "[$version getInfo Name]" \
  142.             "[$version getInfo Type]" \
  143.         ]
  144.     }
  145.     return $selectedNameSet
  146. }
  147.  
  148. method VersionBrowser::initialize {this} {
  149.  
  150.     busy {
  151.     wmtkmessage "Loading ..."
  152.     [$this infoView] setVersionInfo [$this currentVersion]
  153.     if [isCommand [$this wmtArea]] {
  154.         [$this wmtArea] update
  155.     }
  156.     [.main infoView] scale [[.main infoView] scale]
  157.     [.main infoView] redraw
  158.     wmtkmessage Done
  159.     $this opened 1
  160.     }
  161. }
  162.  
  163. method VersionBrowser::selectionChanged {this {keepSelection 0}} {
  164.     global makeSelectionUpToDate
  165.     set makeSelectionUpToDate 0
  166.  
  167.     if $keepSelection {
  168.         # Keep the selected objects that still exist selected
  169.         set selectedSet {}
  170.         set infoView [$this infoView]
  171.         foreach obj [$this _selectedObjSet] {
  172.             set node [$infoView getNode $obj]
  173.             if {! [isCommand $node]} continue
  174.             lappend selectedSet $node
  175.         }
  176.         $infoView selectedSet $selectedSet
  177.     }
  178.     $this _selectedVersionSet "undefined"
  179.     $this _selectedObjSet "undefined"
  180.  
  181.     # reset the status info (frozen, working etc)
  182.         $this status [Dictionary new]
  183.  
  184.     [$this menuHdlr] selectionChanged
  185.  
  186.     set makeSelectionUpToDate 1
  187. }
  188.  
  189. method VersionBrowser::addContextArea {this} {
  190.     $this wmtArea [VBWmtArea new $this.DC.WA]
  191. }
  192.  
  193. method VersionBrowser::updateWmtArea {this} {
  194.     [$this wmtArea] update
  195. }
  196.  
  197. method VersionBrowser::updateToolBar {this} {
  198.  
  199.     if [catch {[$this menuHdlr] setCurrentContext} errorMsg] {
  200.     if [info exists errorInfo] {
  201.         set errorTrace $errorInfo
  202.         set errorCodeCopy $errorCode
  203.         resetErrorVars
  204.     } else {
  205.         set errorTrace ""
  206.         set errorCodeCopy ""
  207.     }
  208.     } else {
  209.     set errorMsg ""
  210.     }
  211. }
  212.  
  213.  
  214. # Used after executing a command. ( startCommand in wmttool)
  215. # when the update flag is up.
  216. #
  217. #
  218. method VersionBrowser::updateView {this} {
  219.  
  220.     VBViewMenuProcs::updateView
  221. }
  222.  
  223. method VersionBrowser::helpOnName {this name} {
  224.     global short2url
  225.     if {! [catch {set url $short2url($name)}]} {
  226.     showHelp $url
  227.     return
  228.     }
  229.  
  230.     if [regsub "crnt_" $name "" name] {
  231.     $this helpOnName $name
  232.     return
  233.     }
  234.  
  235.     wmtkerror "Sorry, no help available for '$name'"
  236. }
  237.  
  238. # Do not delete this line -- regeneration end marker
  239.  
  240. method VersionBrowser::getStatus {this status} {
  241.     return [[$this status] set $status]
  242. }
  243.  
  244. method VersionBrowser::setStatus {this status newStatus} {
  245.     [$this status] set $status $newStatus
  246. }
  247.  
  248. method VersionBrowser::removeStatus {this status} {
  249.     [$this status] unset $status
  250. }
  251.  
  252.