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

  1. #---------------------------------------------------------------------------
  2. #
  3. #      (c)     Cadre Technologies Inc.    1996
  4. #
  5. #      File:           @(#)propsecdlg.tcl    /main/titanic/2
  6. #      Author:         <generated>
  7. #      Description:
  8. #---------------------------------------------------------------------------
  9. # SccsId = @(#)propsecdlg.tcl    /main/titanic/2   2 Oct 1997 Copyright 1996 Cadre Technologies Inc.
  10.  
  11. # Start user added include file section
  12. require "browsfile.tcl"
  13. require "browsitem.tcl"
  14. require "browspropd.tcl"
  15. require_module_file "docstructp.tcl" docwriter
  16. require_module_file "docgenerat.tcl" docwriter
  17. # End user added include file section
  18.  
  19.  
  20. Class PropSecDlg : {TemplateDialog} {
  21.     method destructor
  22.     constructor
  23.     method popUp
  24.     method handleOk
  25.     method handleCancel
  26.     method fileSelectionChanged
  27.     method itemSelectionChanged
  28.     method propSelectionChanged
  29.     method sectionNameChanged
  30.     method addPropDef
  31.     attribute dbObj
  32.     attribute sectionName
  33.     attribute propKnowledgeDB
  34. }
  35.  
  36. method PropSecDlg::destructor {this} {
  37.     # Start destructor user section
  38.     [$this propKnowledgeDB] delete
  39.     # End destructor user section
  40. }
  41.  
  42. constructor PropSecDlg {class this name dbObj sectionName} {
  43.     set this [TemplateDialog::constructor $class $this $name]
  44.     $this dbObj $dbObj
  45.     $this sectionName $sectionName
  46.     # Start constructor user section
  47.     interface DlgColumn $this.if {
  48.         DlgColumn name {
  49.             verStretchFactor 0
  50.         }
  51.         DlgRow row {
  52.             DlgColumn files {
  53.                 Label label {
  54.                     text Files
  55.                 }
  56.                 BrowsView bv {
  57.                     mode DETAIL
  58.                     rowCount 10
  59.                     columnCount 20
  60.                     selectionPolicy BROWSE
  61.                     BrowsHeader name {
  62.                         label Name
  63.                         width 25
  64.                     }
  65.                     BrowsHeader type {
  66.                         label Type
  67.                         width 4
  68.                     }
  69.                 }
  70.             }
  71.             DlgColumn items {
  72.                 Label label {
  73.                     text Items
  74.                 }
  75.                 BrowsView bv {
  76.                     mode DETAIL
  77.                     rowCount 10
  78.                     columnCount 30
  79.                     selectionPolicy BROWSE
  80.                     BrowsHeader name {
  81.                         label Name
  82.                         width 25
  83.                     }
  84.                     BrowsHeader type {
  85.                         label Type
  86.                         width 4
  87.                     }
  88.                 }
  89.             }
  90.             DlgColumn props {
  91.                 Label label {
  92.                     text Properties
  93.                 }
  94.                 BrowsView bv {
  95.                     mode DETAIL
  96.                     rowCount 10
  97.                     columnCount 20
  98.                     BrowsHeader name {
  99.                         label Name
  100.                         width 30
  101.                     }
  102.                 }
  103.             }
  104.         }
  105.     }
  106.     $this.if.row.files.bv selectionChanged "$this fileSelectionChanged"
  107.     $this.if.row.items.bv selectionChanged "$this itemSelectionChanged"
  108.     $this.if.row.props.bv selectionChanged "$this propSelectionChanged"
  109.     if {$sectionName == ""} {
  110.         Label new $this.if.name.label -text "Property Section Name:"
  111.         SingleLineText new $this.if.name.name \
  112.             -textModified "$this sectionNameChanged"
  113.     }
  114.     $this config \
  115.         -modal yes \
  116.         -title "Property Section" \
  117.         -okPressed "$this handleOk" \
  118.         -cancelPressed "$this handleCancel" \
  119.         -helpPressed {.main helpOnName propertySection} \
  120.         -propKnowledgeDB [PropKnowledgeDB new $this.propKnowledgeDB \
  121.             $globalModuleHandler]
  122.  
  123.     set context "/[[$dbObj documentedSystem] identity]"
  124.     set obj [$dbObj getParent CustomLevelVersion]
  125.     set obj [$obj getParent CustomLevelVersion]
  126.     while {$obj != ""} {
  127.         set context "/[$obj identity]$context"
  128.         set obj [$obj getParent CustomLevelVersion]
  129.     }
  130.     if [catch {[$this propKnowledgeDB] context $context} msg] {
  131.         wmtkerror $msg
  132.     }
  133.     # End constructor user section
  134.     return $this
  135. }
  136.  
  137. method PropSecDlg::popUp {this} {
  138.     set nr 0
  139.     set dbObj [$this dbObj]
  140.     set objHdlr [$wmttoolObj objectHdlr]
  141.     set configV [$dbObj getParent ConfigVersion]
  142.     foreach file [[[$dbObj documentedSystem] system] files] {
  143.         set fileVersions [$file fileVersions]
  144.         if {[lempty $fileVersions] ||
  145.             [[$file selectedVersion $configV] isNil]} continue
  146.         set fileType [$file type]
  147.         set objSpec [getObjectSpec $objHdlr \
  148.             [[lindex $fileVersions 0] uiClass] $fileType \
  149.         ]
  150.         if {"$objSpec" == ""} continue
  151.         BrowsFile new $this.if.row.files.bv.$nr \
  152.             -fileVersion [$file selectedVersion $configV] \
  153.             -smallIcon [$objSpec smallIcon] \
  154.             -label [$file qualifiedName :] \
  155.             -details $fileType
  156.         lappend [$this.if.row.files.bv objectSet] \
  157.             $this.if.row.files.bv.$nr
  158.         incr nr
  159.     }
  160.     $this.if.row.files.bv sort -column "$this.if.row.files.bv.type" \
  161.                    -column "$this.if.row.files.bv.name"
  162.  
  163.     $this propSelectionChanged
  164.     $this TemplateDialog::popUp
  165. }
  166.  
  167. method PropSecDlg::handleOk {this} {
  168.     DocStructPart new .docStrucPart -documentVersion [$this dbObj] \
  169.                     -sectionName [$this sectionName]
  170.     if [lempty [$this.if.row.items.bv selectedSet]] {
  171.         set selObj [lindex [$this.if.row.files.bv selectedSet] 0]
  172.         .docStrucPart config \
  173.             -sectionType "Fileprop" \
  174.             -sectionClass "Fileprop" \
  175.             -fileVersion [$selObj fileVersion]
  176.     } else {
  177.         set selObj [lindex [$this.if.row.items.bv selectedSet] 0]
  178.         .docStrucPart config \
  179.             -sectionType "Itemprop" \
  180.             -sectionClass "Itemprop" \
  181.             -workItem [$selObj item]
  182.     }
  183.     set propertyNames ""
  184.     foreach propObj [$this.if.row.props.bv selectedSet] {
  185.         lappend propertyNames [[$propObj propDef] name]
  186.     }
  187.     .docStrucPart propertyNames $propertyNames
  188.     DocGenerator::createSection .docStrucPart
  189.     wmtkmessage ""
  190.     $wmttoolObj updateView
  191.     .docStrucPart delete
  192.     $this delete
  193. }
  194.  
  195. method PropSecDlg::handleCancel {this} {
  196.     $this delete
  197. }
  198.  
  199. method PropSecDlg::fileSelectionChanged {this} {
  200.     foreach prop [$this.if.row.props.bv objectSet] {
  201.         $prop delete
  202.     }
  203.     $this propSelectionChanged
  204.     foreach item [$this.if.row.items.bv objectSet] {
  205.         $item delete
  206.     }
  207.     if [lempty [$this.if.row.files.bv selectedSet]] {
  208.         return
  209.     }
  210.     set dbObj [$this dbObj]
  211.     set fileV [[lindex [$this.if.row.files.bv selectedSet] 0] fileVersion]
  212.     PropLocation new .propLocation \
  213.         -containerKind [$fileV ORB_class] \
  214.         -containerType [[$fileV file] type] \
  215.         -phaseType [[[$dbObj getParent PhaseVersion] phase] type]
  216.     set propDefs [[$this propKnowledgeDB] definitions .propLocation]
  217.     set nr 0
  218.     foreach propDef $propDefs {
  219.         $this addPropDef $propDef $nr
  220.         incr nr
  221.     }
  222.     $this.if.row.props.bv sort -column "$this.if.row.props.bv.name"
  223.     .propLocation delete
  224.     if [$fileV isA Diagram] {
  225.         set nr 0
  226.         set configV [$dbObj getParent ConfigVersion]
  227.         foreach item [$fileV definedItemRefs $configV] {
  228.             BrowsItem new $this.if.row.items.bv.$nr \
  229.                 -label [$item qualifiedName :] \
  230.                 -details [$item type] \
  231.                 -item $item
  232.             lappend [$this.if.row.items.bv objectSet] \
  233.                 $this.if.row.items.bv.$nr
  234.             incr nr
  235.         }
  236.     }
  237.     $this.if.row.items.bv sort -column "$this.if.row.items.bv.type" \
  238.                    -column "$this.if.row.items.bv.name"
  239. }
  240.  
  241. method PropSecDlg::itemSelectionChanged {this} {
  242.     if [lempty [$this.if.row.items.bv selectedSet]] {
  243.         $this fileSelectionChanged
  244.         return
  245.     }
  246.     foreach prop [$this.if.row.props.bv objectSet] {
  247.         $prop delete
  248.     }
  249.     set dbObj [$this dbObj]
  250.     set fileV [[lindex [$this.if.row.files.bv selectedSet] 0] fileVersion]
  251.     set item [[lindex [$this.if.row.items.bv selectedSet] 0] item]
  252.     PropLocation new .propLocation \
  253.         -containerKind Item \
  254.         -containerType [$item type] \
  255.         -phaseType [[[$dbObj getParent PhaseVersion] phase] type] \
  256.         -diagramType [[$fileV file] type]
  257.     if {[.propLocation diagramType] == "cdm"} {
  258.         .propLocation diagramType "cad"
  259.     }
  260.     set propDefs [[$this propKnowledgeDB] definitions .propLocation]
  261.     set nr 0
  262.     foreach propDef $propDefs {
  263.         $this addPropDef $propDef $nr
  264.         incr nr
  265.     }
  266.     $this.if.row.props.bv sort -column "$this.if.row.props.bv.name"
  267.     $this propSelectionChanged
  268.     .propLocation delete
  269. }
  270.  
  271. method PropSecDlg::propSelectionChanged {this} {
  272.     set selected 1
  273.     if {[rmWhiteSpace [$this sectionName]] == "" ||
  274.         [lempty [$this.if.row.props.bv selectedSet]]} {
  275.         set selected 0
  276.     }
  277.     $this okSensitive $selected
  278.     $this okDefault $selected
  279.     $this cancelDefault [expr 1 - $selected]
  280. }
  281.  
  282. method PropSecDlg::sectionNameChanged {this} {
  283.     set prevSectionName [$this sectionName]
  284.     set sectionName [$this.if.name.name text]
  285.     $this sectionName $sectionName
  286.     if {"[rmWhiteSpace $prevSectionName]" == "" ||
  287.         "[rmWhiteSpace $sectionName]" == ""} {
  288.         $this propSelectionChanged
  289.     }
  290. }
  291.  
  292. method PropSecDlg::addPropDef {this def id} {
  293.     set nr 0
  294.     foreach member [$def memberSet] {
  295.         $this addPropDef $member ${id}_$nr
  296.         incr nr
  297.     }
  298.     if {$nr == 0} {
  299.         BrowsPropDef new $this.if.row.props.bv.$id \
  300.             -label [$def longName] \
  301.             -propDef $def
  302.         lappend [$this.if.row.props.bv objectSet] \
  303.             $this.if.row.props.bv.$id
  304.     }
  305. }
  306.  
  307. # Do not delete this line -- regeneration end marker
  308.  
  309.