home *** CD-ROM | disk | FTP | other *** search
- #---------------------------------------------------------------------------
- #
- # (c) Cadre Technologies Inc. 1996
- #
- # File: @(#)phasevdbob.tcl /main/hindenburg/12
- # Author: <generated>
- # Description:
- #---------------------------------------------------------------------------
- # SccsId = @(#)phasevdbob.tcl /main/hindenburg/12 18 Nov 1996 Copyright 1996 Cadre Technologies Inc.
-
- # Start user added include file section
- # End user added include file section
-
- require "browsdbobj.tcl"
- require "versionobj.tcl"
-
- Class PhaseVDbObj : {BrowsDbObj VersionObj PhaseVersion} {
- method destructor
- constructor
- method promoter
- method addDocumentVersion
- method addSystemVersion
- method allowsDrop
- method browserType
- method changeLinks
- method compareWithPrevPhase
- method copy
- method copyVersion
- method deselectObjects
- method importFromPrevPhase
- method importObject
- method initializeInfo
- method linkStatus
- method name
- method newObjects
- method phase
- method prevPhaseExists
- method removeObjects
- method removeVersion
- method selectObject
- method systemVersions
- attribute prevPhaseV
- }
-
- method PhaseVDbObj::destructor {this} {
- # Start destructor user section
-
- [$this customFileVersionSet] delete
- [$this controlledListSet] delete
-
- # End destructor user section
- $this BrowsDbObj::destructor
- $this VersionObj::destructor
- }
-
- constructor PhaseVDbObj {class this name} {
- set this [PhaseVersion::constructor $class $this $name]
- set this [BrowsDbObj::constructor $class $this $name]
- set this [VersionObj::constructor $class $this $name]
- return $this
- }
-
- selfPromoter PhaseVersion {this} {
- PhaseVDbObj promote $this
- }
-
- method PhaseVDbObj::promoter {this} {
- $this BrowsDbObj::promoter
-
- set customFileVersionSet $this.${CustFVUiObj::uiClass}:0
- if {! [isCommand $customFileVersionSet]} {
- CustFVUiObj new $customFileVersionSet -parent $this
- }
- $this customFileVersionSet $customFileVersionSet
- set controlledListSet $this.${CListUiObj::uiClass}:0
- if {! [isCommand $controlledListSet]} {
- CListUiObj new $controlledListSet -parent $this
- }
- $this controlledListSet $controlledListSet
- }
-
- method PhaseVDbObj::addDocumentVersion {this} {
- require "newdocvdlg.tcl"
- set box $wmttoolObj.newDocumentV
- if {! [isCommand $box]} {
- NewDocVDlg new $box
- }
- $box dbObj $this
- $box popUp
- }
-
- method PhaseVDbObj::addSystemVersion {this} {
- require "newobjentr.tcl"
-
- if {! [isCommand $wmttoolObj.newSystemV]} {
- NewObjEntryDlg new $wmttoolObj.newSystemV \
- -title "New System Version" \
- -message "System Name:" \
- -okPressed {
- set sysName [%this entry]
- set sysType [lindex ${BrowserProcs::systemTypes} 0]
- set configV [[%this dbObj] getParent ConfigVersion]
- set script "[%this dbObj] createSystemVersion \
- [list $sysName] cl [list $sysType] $configV"
- $wmttoolObj startCommand tcl \
- "$script" "" \
- "Creating $sysType version '$sysName'..." \
- {1 0} 1
- }
- }
- $wmttoolObj.newSystemV dbObj $this
- $wmttoolObj.newSystemV popUp
- }
-
- method PhaseVDbObj::allowsDrop {this uiClass} {
- if {"$uiClass" != "SystemVersion"} {
- return 0
- }
- return 1
- }
-
- proc PhaseVDbObj::associations {} {
- return {systemVersions customFileVersionSet controlledListSet accessRuleSet}
- }
-
- method PhaseVDbObj::browserType {this} {
- return [[$this phase] type]
- }
-
- method PhaseVDbObj::changeLinks {this} {
- ClassMaker::extend TemplateDialog ChangeLinksTemplateDialog dbObj
- ChangeLinksTemplateDialog new $wmttoolObj.changeLink \
- -modal yes \
- -title "Change Link Status" \
- -dbObj $this \
- -helpPressed {.main helpOnName changeLink} \
- -cancelPressed {%this delete} \
- -okPressed {
- set status [%this.top.status selected]
- set script ""
- foreach obj [$wmttoolObj selectedObjSet] {
- set found 0
- foreach link [$obj phaseVersionLinks] {
- if {"[$link phaseVersion]" == "[%this dbObj]"} {
- set found 1
- break
- }
- }
- if {! $found} {
- wmtkerror "link to [$obj getInfo Type] \
- '[$obj getInfo Name]' not found"
- continue
- }
- if {"$script" != ""} {
- append script " ;"
- }
- append script " $link status $status"
- }
- if {"$script" != ""} {
- $wmttoolObj startCommand tcl "$script" "" "" {1 0} 1
- }
- %this delete
- }
- interface DlgColumn $wmttoolObj.changeLink.top {
- Label messageLab {
- text "Link Status:"
- }
- VerRadioGroup status {
- entrySet {fixed dynamicFrozen}
- }
- }
- if {[llength [$wmttoolObj selectedObjSet]] == 1} {
- $wmttoolObj.changeLink.top.status selected \
- [[lindex [$wmttoolObj selectedObjSet] 0] getInfo Link]
- } else {
- $wmttoolObj.changeLink.top.status selected fixed
- }
- $wmttoolObj.changeLink popUp
- }
-
- proc PhaseVDbObj::childTypes {assoc} {
- if {[lsearch -exact "[PhaseVDbObj::associations]" "$assoc"] == -1} {
- return ""
- }
- set childTypes [BrowserProcs::childTypes $assoc]
- if {"$childTypes" == "SystemVersion"} {
- set childTypes ""
- foreach systemType ${BrowserProcs::systemTypes} {
- set firstChar [string toupper [string range $systemType 0 0]]
- set type "${firstChar}[string range $systemType 1 end]"
- lappend childTypes [format "%sVersion" $type]
- }
- }
- return $childTypes
- }
-
- method PhaseVDbObj::compareWithPrevPhase {this} {
- require "comparepha.tcl"
- ComparePhaseDlg new $wmttoolObj.compareWithPrevPhase \
- -dbObj $this \
- -title "Compare With Previous Phase" \
- -helpPressed {.main helpOnName compareWithPrevPhase}
- $wmttoolObj.compareWithPrevPhase popUp
- }
-
- proc PhaseVDbObj::controlledLists {} {
- return {
- "[[$this phase] customFileList]"
- "[$this customFileVersionLinkList]"
- "[[$this phase] phaseVersionList]"
- "[[$this phase] systemList]"
- "[$this systemVersionLinkList]"
- }
- }
-
- method PhaseVDbObj::copy {this args} {
-
- set argc [llength $args]
- set flag [lindex $args 0]
- case "$flag" in {
- {-systemVersion} {
- if {$argc <= 3} {
- eval $this PhaseVersion::copy $args
- break
- }
- set sysV [lindex $args 1]
- set editPasteCmdBusy [lindex $args [expr $argc -1]]
-
- set sys [$sysV system]
- set sysName [$sys name]
- set sysType [$sys type]
- set oldSysV [$this findSystemVersion $sysName $sysType]
- if {! [$oldSysV isNil]} {
- $this deselectVersion $oldSysV
- if $editPasteCmdBusy {
- [.main undoCommand] addDeselected $oldSysV
- }
- }
- set newSysV [eval \
- $this PhaseVersion::copy [lrange $args 0 [expr $argc -3]]]
- if {$editPasteCmdBusy && (! [$newSysV isNil])} {
- [.main undoCommand] addObject $newSysV
- }
- }
- {default} {
- eval $this PhaseVersion::copy $args
- }
- }
- }
-
- method PhaseVDbObj::copyVersion {this} {
- set versionList ""
- set myName [$this name]
- foreach version [[$this phase] phaseVersions] {
- if {"$version" == "$this"} continue
- lappend versionList [list $version "$myName"]
- }
- BrowserProcs::copyVersion $this $versionList
- }
-
- method PhaseVDbObj::deselectObjects {this} {
- set script ""
- foreach obj [$wmttoolObj selectedObjSet] {
- if {"$script" != ""} {
- append script " ;"
- }
- append script " $this deselectVersion $obj"
- }
- $wmttoolObj startCommand tcl "$script" "" "" {1 0} 1
- }
-
- method PhaseVDbObj::importFromPrevPhase {this mode} {
- foreach sysV [$this getChildSet systemVersions] {
- set sys [$sysV system]
- if {"[$sys type]" != "system"} continue
- set currentList([$sys name]) 1
- }
- set prevSysList ""
- foreach sysV [[$this prevPhaseV] systemVersions] {
- set sys [$sysV system]
- if {"[$sys type]" != "system"} continue
- if [info exists currentList([$sys name])] continue
- lappend prevSysList $sys
- }
-
- if [lempty $prevSysList] {
- wmtkinfo "There are no new systems in the previous Phase Version"
- return
- }
-
- case "$mode" in {
- {specific} {
- set typeSpec [getObjectSpec [$wmttoolObj objectHdlr] \
- SystemVersion SystemVersion \
- ]
- if {"$typeSpec" != ""} {
- set icon [$typeSpec smallIcon]
- } else {
- set icon ""
- }
- set headerSpecList {{Name 25 ascii {increasing 1}}}
- set objectSpecList ""
- foreach sys $prevSysList {
- lappend objectSpecList [list $icon [$sys name]]
- }
-
- require "browsviewd.tcl"
- set box $wmttoolObj.importSystems
- ClassMaker::extend BrowsViewDialog ImpSysBrowsViewDialog dbObj
- ImpSysBrowsViewDialog new $box \
- -title "Import Systems" \
- -headerSpecList $headerSpecList \
- -objectSpecList $objectSpecList \
- -objectList $prevSysList \
- -dbObj $this \
- -cancelPressed {%this delete} \
- -okPressed {
- set importSysList ""
- foreach object [[%this view] selectedSet] {
- lappend importSysList "[[$object object] identity]"
- }
- BrowserProcs::importSystems $importSysList
- %this delete
- }
- $box popUp
- }
- {new} {
- BrowserProcs::importSystems ""
- }
- }
- }
-
- method PhaseVDbObj::importObject {this context node} {
- set phaseVId [lindex $context 2]
- if {$phaseVId == [$this getInfo Identity]} {
- wmtkmessage "Can not import object into its own parent"
- if [isCommand [.main undoCommand]] {
- [.main undoCommand] delete
- }
- return
- }
-
- set phaseV [BrowserProcs::id2obj $phaseVId PhaseVersion $node]
- set dstType [$this getInfo Type]
- set srcType [$phaseV getInfo Type]
- if {"$srcType" != "$dstType" &&
- ("$srcType" == "Implementation" || "$dstType" == "Implementation")} {
- wmtkmessage "Can not import from '$srcType' to '$dstType'"
- if [isCommand [.main undoCommand]] {
- [.main undoCommand] delete
- }
- return
- }
-
- # Make sure SystemVersion exists
- set sysVId [lindex $context 3]
- if {[catch {set sysV [BrowserProcs::id2obj $sysVId SystemVersion $node]}] ||
- [catch {$sysV system}]} {
- wmtkinfo "Can not import [lindex $context 4] because it is removed"
- if [isCommand [.main undoCommand]] {
- [.main undoCommand] delete
- }
- return
- }
-
- set myConfV [$node getParent ConfigVersion]
- set editPasteCmdBusy [.main undoCommandBusy EditPasteCmd]
-
- if {"$srcType" == "Implementation"} {
- # The ClientContext must be set to the source
- # system in order to determine the file's path
- set clientContext [ClientContext::global]
- set currentSysV [$clientContext currentSystem]
- if {([llength $context] >= 6) && ([$currentSysV isNil] ||
- [$currentSysV getInfo Identity] != $sysVId)} {
- set levelIds [$clientContext currentLevelIdString]
- while {! [[$clientContext currentProject] isNil]} {
- $clientContext upLevel
- }
- $clientContext downLevelId \
- [BrowserProcs::id2obj [lindex $context 0] Project $node]
- $clientContext downLevelId \
- [BrowserProcs::id2obj [lindex $context 1] ConfigVersion $node]
- $clientContext downLevelId $phaseV
- $clientContext downLevelId $sysV
- } else {
- set levelIds ""
- }
- }
-
- # Remove imported object in case of a cut operation
- if {[.main undoCommandBusy EditPasteCmd] &&
- "[[.main undoCommand] operation]" == "cut"} {
- $phaseV cutVersion $sysV
- }
-
- set script \
- "$this copy -systemVersion $sysV $myConfV $node $editPasteCmdBusy"
- if {$this == [[.main currentObj] browsUiObj]} {
- set update 1
- } else {
- set update 0
- }
- $wmttoolObj startCommand tcl \
- "$script" "" \
- "Copying [$sysV getInfo Text]" \
- [list $update 0] 1
-
- if {"$srcType" == "Implementation" && "$levelIds" != ""} {
- $clientContext setLevelIds $levelIds
- }
- }
-
- proc PhaseVDbObj::infoProperties {} {
- return [concat \
- [BrowserProcs::infoProperties] \
- {Status Link Version Comments Created Updated Frozen \
- "Controlled Actions" "Created By"} \
- ]
- }
-
- method PhaseVDbObj::initializeInfo {this dummy} {
- set oldLink [[$this info] set ConfigPhaseLink]
- [$this info] contents ""
- $this setInfo ConfigPhaseLink $oldLink
- }
-
- method PhaseVDbObj::linkStatus {this} {
- return [[[$this info] set ConfigPhaseLink] status]
- }
-
- method PhaseVDbObj::name {this} {
- return "[[$this phase] name]"
- }
-
- method PhaseVDbObj::newObjects {this} {
- set script ""
- set confV [$this getParent ConfigVersion]
- foreach obj [$wmttoolObj selectedObjSet] {
- if {"$script" != ""} {
- append script " ;"
- }
- append script " $this derive -systemVersion $obj $confV"
- }
- $wmttoolObj startCommand tcl "$script" "" "" {1 0} 1
- }
-
- method PhaseVDbObj::phase {this} {
- if {[catch {set phase [[[$this info] set ConfigPhaseLink] phase]}] ||
- [$phase isNil]} {
- global errorInfo
- set errorInfo ""
- global errorCode
- set errorCode ""
- return [$this PhaseVersion::phase]
- }
- return $phase
- }
-
- method PhaseVDbObj::prevPhaseExists {this} {
- set confV [$this getParent ConfigVersion]
- set prevPhaseV [$this previous $confV]
- if {! [$prevPhaseV isA PhaseVersion]} {
- return 0
- }
-
- $this prevPhaseV $prevPhaseV
- return 1
- }
-
- method PhaseVDbObj::removeObjects {this} {
- set box $wmttoolObj.removeWarning
- ClassMaker::extend WarningDialog RemoveObjectsWarningDialog dbObj
- RemoveObjectsWarningDialog new $box \
- -title "Delete Warning" \
- -message [BrowserProcs::removeMessage] \
- -dbObj $this \
- -helpPressed {.main helpOnName removeWarning} \
- -cancelPressed {%this delete} \
- -okPressed {
- set dbObj [%this dbObj]
- set script ""
- foreach obj [$wmttoolObj selectedObjSet] {
- if {"$script" != ""} {
- append script " ;"
- }
- if [$obj isA DSysVDbObj] {
- append script " $obj removeDocDir"
- append script " ;"
- }
- append script " $dbObj removeObject $obj"
- }
- $wmttoolObj startCommand tcl "$script" "" "" {1 0} 1
- %this delete
- }
- $box popUp
- }
-
- method PhaseVDbObj::removeVersion {this} {
- set versionList ""
- foreach version [[$this phase] phaseVersions] {
- if [$version isLeaf] {
- lappend versionList $version
- }
- }
- BrowserProcs::removeVersion \
- "[$this getParent ConfigVersion]" "[$this phase]" "$versionList"
- }
-
- method PhaseVDbObj::selectObject {this mode} {
- set versionList ""
- foreach sysV [$this systemVersions] {
- set workingList([$sysV system]) $sysV
- }
- case "$mode" in {
- {new} {
- set sysList ""
- foreach sys [[$this phase] systems] {
- if [info exists workingList($sys)] continue
- lappend sysList $sys
- }
- }
- {default} {
- set sysList ""
- foreach obj [$wmttoolObj selectedObjSet] {
- lappend sysList [$obj system]
- }
- }
- }
- foreach sys $sysList {
- set sysName [$sys name]
- if [info exists workingList($sys)] {
- set working $workingList($sys)
- } else {
- set working [ORB::nil]
- }
- foreach version [$sys systemVersions] {
- if [$version isSame $working] continue
- if {"[$version status]" == "working"} continue
- lappend versionList [list $version "$sysName"]
- }
- }
- BrowserProcs::selectObject $this $versionList $mode
- }
-
- method PhaseVDbObj::systemVersions {this} {
- set systemVersions ""
- foreach link [$this systemVersionLinks] {
- set sysV [$link systemVersion]
- $sysV setInfo PhaseSystemLink $link
- lappend systemVersions $sysV
- }
- return $systemVersions
- }
-
- # Do not delete this line -- regeneration end marker
-
-