UIPainter.st
changeset 222 dd2688307d90
parent 217 354ba46948b4
child 229 cabe3bd6fd74
equal deleted inserted replaced
221:319a24a1df06 222:dd2688307d90
    10  hereby transferred.
    10  hereby transferred.
    11 "
    11 "
    12 
    12 
    13 
    13 
    14 ApplicationModel subclass:#UIPainter
    14 ApplicationModel subclass:#UIPainter
    15 	instanceVariableNames:'activeHelpTool layoutTool specTool objectList selectionPanel
    15 	instanceVariableNames:'activeHelpTool layoutTool specTool treeView selectionPanel
    16 		tabSelection specClass specSelector specSuperclass aspects'
    16 		tabSelection specClass specSelector specSuperclass aspects'
    17 	classVariableNames:''
    17 	classVariableNames:'IconStepUp IconStepOut IconStepIn IconStepDown'
    18 	poolDictionaries:''
    18 	poolDictionaries:''
    19 	category:'Interface-UIPainter'
    19 	category:'Interface-UIPainter'
       
    20 !
       
    21 
       
    22 SelectionInTreeView subclass:#TreeView
       
    23 	instanceVariableNames:'lastDrawnMaster cvsEventsDisabled imageMasterParent
       
    24 		imageMasterChild'
       
    25 	classVariableNames:'ImageMasterParent ImageMasterChild'
       
    26 	poolDictionaries:''
       
    27 	privateIn:UIPainter
    20 !
    28 !
    21 
    29 
    22 !UIPainter class methodsFor:'documentation'!
    30 !UIPainter class methodsFor:'documentation'!
    23 
    31 
    24 copyright
    32 copyright
   229 !
   237 !
   230 
   238 
   231 iconAlignTB
   239 iconAlignTB
   232     ^ Image fromFile:'b_alignTB.xbm'
   240     ^ Image fromFile:'b_alignTB.xbm'
   233 
   241 
       
   242 !
       
   243 
       
   244 iconStepDown
       
   245     IconStepDown isNil ifTrue:[
       
   246         IconStepDown := self iconStepUp flipHorizontal
       
   247     ].
       
   248   ^ IconStepDown
       
   249 
       
   250 !
       
   251 
       
   252 iconStepIn
       
   253     IconStepIn isNil ifTrue:[
       
   254         IconStepIn := ((Image fromFile:'stepIn.xpm') rotated:90) flipHorizontal
       
   255     ].
       
   256   ^ IconStepIn
       
   257 
       
   258 !
       
   259 
       
   260 iconStepOut
       
   261     IconStepOut isNil ifTrue:[
       
   262         IconStepOut := ((Image fromFile:'stepOut.xpm') rotated:90) flipHorizontal
       
   263     ].
       
   264   ^ IconStepOut
       
   265 !
       
   266 
       
   267 iconStepUp
       
   268     IconStepUp isNil ifTrue:[
       
   269         IconStepUp := ((Image fromFile:'stepOver.xpm') rotated:90) flipHorizontal flipVertical
       
   270     ].
       
   271   ^ IconStepUp
       
   272 
   234 ! !
   273 ! !
   235 
   274 
   236 !UIPainter class methodsFor:'interface specs'!
   275 !UIPainter class methodsFor:'interface specs'!
   237 
       
   238 menuAlignment
       
   239     "this window spec was automatically generated by the ST/X MenuEditor"
       
   240 
       
   241     "do not manually edit this - the builder may not be able to
       
   242      handle the specification if its corrupted."
       
   243 
       
   244     "
       
   245      MenuEditor new openOnClass:UIPainter andSelector:#menuAlignment
       
   246      (Menu new fromLiteralArrayEncoding:(UIPainter menuAlignment)) startUp
       
   247     "
       
   248 
       
   249     <resource: #menu>
       
   250 
       
   251     ^
       
   252      
       
   253        #(#Menu
       
   254           
       
   255            #(
       
   256              #(#MenuItem
       
   257                 #'label:' 'align left'
       
   258                 #'value:' #alignSelectionLeft
       
   259                 #'enabled:' #enableChannel
       
   260                 #'activeHelpKey:' #alignSelectionLeft
       
   261                 #'labelImage:' 
       
   262                  #(#ResourceRetriever
       
   263                     nil #iconAlignL
       
   264                 )
       
   265             )
       
   266              #(#MenuItem
       
   267                 #'label:' 'align right'
       
   268                 #'value:' #alignSelectionRight
       
   269                 #'enabled:' #enableChannel
       
   270                 #'activeHelpKey:' #alignSelectionRight
       
   271                 #'labelImage:' 
       
   272                  #(#ResourceRetriever
       
   273                     nil #iconAlignR
       
   274                 )
       
   275             )
       
   276              #(#MenuItem
       
   277                 #'label:' 'align left & right'
       
   278                 #'value:' #alignSelectionLeftAndRight
       
   279                 #'enabled:' #enableChannel
       
   280                 #'activeHelpKey:' #alignSelectionLeftAndRight
       
   281                 #'labelImage:' 
       
   282                  #(#ResourceRetriever
       
   283                     nil #iconAlignLR
       
   284                 )
       
   285             )
       
   286              #(#MenuItem
       
   287                 #'label:' 'align top'
       
   288                 #'value:' #alignSelectionTop
       
   289                 #'enabled:' #enableChannel
       
   290                 #'activeHelpKey:' #alignSelectionTop
       
   291                 #'labelImage:' 
       
   292                  #(#ResourceRetriever
       
   293                     nil #iconAlignT
       
   294                 )
       
   295             )
       
   296              #(#MenuItem
       
   297                 #'label:' 'align bottom'
       
   298                 #'value:' #alignSelectionBottom
       
   299                 #'enabled:' #enableChannel
       
   300                 #'activeHelpKey:' #alignSelectionBottom
       
   301                 #'labelImage:' 
       
   302                  #(#ResourceRetriever
       
   303                     nil #iconAlignB
       
   304                 )
       
   305             )
       
   306              #(#MenuItem
       
   307                 #'label:' 'align top & bottom'
       
   308                 #'value:' #alignSelectionTopAndBottom
       
   309                 #'enabled:' #enableChannel
       
   310                 #'activeHelpKey:' #alignSelectionTopAndBottom
       
   311                 #'labelImage:' 
       
   312                  #(#ResourceRetriever
       
   313                     nil #iconAlignTB
       
   314                 )
       
   315             )
       
   316              #(#MenuItem
       
   317                 #'label:' 'align centered horizontal'
       
   318                 #'value:' #alignSelectionCenterHor
       
   319                 #'enabled:' #enableChannel
       
   320                 #'activeHelpKey:' #alignSelectionCenterHor
       
   321                 #'labelImage:' 
       
   322                  #(#ResourceRetriever
       
   323                     nil #iconAlignCenterH
       
   324                 )
       
   325             )
       
   326              #(#MenuItem
       
   327                 #'label:' 'align centered vertical'
       
   328                 #'value:' #alignSelectionCenterVer
       
   329                 #'enabled:' #enableChannel
       
   330                 #'activeHelpKey:' #alignSelectionCenterVer
       
   331                 #'labelImage:' 
       
   332                  #(#ResourceRetriever
       
   333                     nil #iconAlignCenterV
       
   334                 )
       
   335             )
       
   336           )
       
   337           #( 3 3 )
       
   338           nil
       
   339       )
       
   340 !
       
   341 
       
   342 menuPullDown
       
   343     "this window spec was automatically generated by the ST/X MenuEditor"
       
   344 
       
   345     "do not manually edit this - the builder may not be able to
       
   346      handle the specification if its corrupted."
       
   347 
       
   348     "
       
   349      MenuEditor new openOnClass:UIPainter andSelector:#menuPullDown
       
   350      (Menu new fromLiteralArrayEncoding:(UIPainter menuPullDown)) startUp
       
   351     "
       
   352 
       
   353     <resource: #menu>
       
   354 
       
   355     ^
       
   356      
       
   357        #(#Menu
       
   358           
       
   359            #(
       
   360              #(#MenuItem
       
   361                 #'label:' 'file'
       
   362                 #'value:' #file
       
   363                 #'enabled:' #enableChannel
       
   364                 #'submenu:' 
       
   365                  #(#Menu
       
   366                     
       
   367                      #(
       
   368                        #(#MenuItem
       
   369                           #'label:' 'new'
       
   370                           #'value:' #doNew
       
   371                       )
       
   372                        #(#MenuItem
       
   373                           #'label:' 'from class ...'
       
   374                           #'value:' #doFromClass
       
   375                       )
       
   376                        #(#MenuItem
       
   377                           #'label:' 'pick a view '
       
   378                           #'value:' #doPickAView
       
   379                       )
       
   380                        #(#MenuItem
       
   381                           #'label:' '-'
       
   382                       )
       
   383                        #(#MenuItem
       
   384                           #'label:' 'raise'
       
   385                           #'value:' #doRaise
       
   386                       )
       
   387                        #(#MenuItem
       
   388                           #'label:' '='
       
   389                       )
       
   390                        #(#MenuItem
       
   391                           #'label:' 'quit'
       
   392                           #'value:' #closeRequest
       
   393                       )
       
   394                     ) nil
       
   395                     nil
       
   396                 )
       
   397             )
       
   398              #(#MenuItem
       
   399                 #'label:' 'misc'
       
   400                 #'value:' #misc
       
   401                 #'enabled:' #enableChannel
       
   402                 #'submenu:' 
       
   403                  #(#Menu
       
   404                     
       
   405                      #(
       
   406                        #(#MenuItem
       
   407                           #'label:' 'grid'
       
   408                           #'value:' #grid
       
   409                           #'submenu:' 
       
   410                            #(#Menu
       
   411                               
       
   412                                #(
       
   413                                  #(#MenuItem
       
   414                                     #'label:' 'show'
       
   415                                     #'indication:' #'gridShown:'
       
   416                                 )
       
   417                                  #(#MenuItem
       
   418                                     #'label:' 'align'
       
   419                                     #'indication:' #'gridAlign:'
       
   420                                 )
       
   421                               ) nil
       
   422                               nil
       
   423                           )
       
   424                       )
       
   425                        #(#MenuItem
       
   426                           #'label:' 'undo'
       
   427                           #'value:' #undo
       
   428                           #'submenu:' 
       
   429                            #(#Menu
       
   430                               
       
   431                                #(
       
   432                                  #(#MenuItem
       
   433                                     #'label:' 'last'
       
   434                                     #'value:' #undoLast
       
   435                                 )
       
   436                                  #(#MenuItem
       
   437                                     #'label:' 'menu'
       
   438                                     #'value:' #openUndoMenu
       
   439                                 )
       
   440                                  #(#MenuItem
       
   441                                     #'label:' '-'
       
   442                                 )
       
   443                                  #(#MenuItem
       
   444                                     #'label:' 'delete'
       
   445                                     #'value:' #removeUndoHistory
       
   446                                 )
       
   447                               ) nil
       
   448                               nil
       
   449                           )
       
   450                       )
       
   451                     ) nil
       
   452                     nil
       
   453                 )
       
   454             )
       
   455              #(#MenuItem
       
   456                 #'label:' 'code'
       
   457                 #'value:' #code
       
   458                 #'enabled:' #enableChannel
       
   459                 #'submenu:' 
       
   460                  #(#Menu
       
   461                     
       
   462                      #(
       
   463                        #(#MenuItem
       
   464                           #'label:' 'class && method ...'
       
   465                           #'value:' #defineClassAndSelector
       
   466                       )
       
   467                        #(#MenuItem
       
   468                           #'label:' '='
       
   469                       )
       
   470                        #(#MenuItem
       
   471                           #'label:' 'install window spec.'
       
   472                           #'value:' #doInstallSpec
       
   473                           #'enabled:' #hasSpecClassAndSelector
       
   474                       )
       
   475                        #(#MenuItem
       
   476                           #'label:' 'install help spec.'
       
   477                           #'value:' #doInstallHelp
       
   478                           #'enabled:' #hasSpecClass
       
   479                       )
       
   480                        #(#MenuItem
       
   481                           #'label:' '-'
       
   482                       )
       
   483                        #(#MenuItem
       
   484                           #'label:' 'install aspects'
       
   485                           #'value:' #doInstallAspects
       
   486                           #'enabled:' #hasSpecClass
       
   487                       )
       
   488                        #(#MenuItem
       
   489                           #'label:' '='
       
   490                       )
       
   491                        #(#MenuItem
       
   492                           #'label:' 'show window spec.'
       
   493                           #'value:' #doWindowSpec
       
   494                       )
       
   495                        #(#MenuItem
       
   496                           #'label:' '='
       
   497                       )
       
   498                        #(#MenuItem
       
   499                           #'label:' 'browse application'
       
   500                           #'value:' #doBrowseAppClass
       
   501                           #'enabled:' #hasSpecClass
       
   502                       )
       
   503                        #(#MenuItem
       
   504                           #'label:' 'start  application'
       
   505                           #'value:' #doStartApplication
       
   506                           #'enabled:' #hasSpecClass
       
   507                       )
       
   508                     ) nil
       
   509                     nil
       
   510                 )
       
   511             )
       
   512              #(#MenuItem
       
   513                 #'label:' 'test'
       
   514                 #'nameKey:' #test
       
   515                 #'value:' #test
       
   516                 #'submenu:' 
       
   517                  #(#Menu
       
   518                     
       
   519                      #(
       
   520                        #(#MenuItem
       
   521                           #'label:' 'test mode'
       
   522                           #'indication:' #'testMode:'
       
   523                       )
       
   524                     ) nil
       
   525                     nil
       
   526                 )
       
   527             )
       
   528           ) nil
       
   529           nil
       
   530       )
       
   531 !
       
   532 
   276 
   533 nameAndSelectorSpec
   277 nameAndSelectorSpec
   534     "this window spec was automatically generated by the ST/X UIPainter"
   278     "this window spec was automatically generated by the ST/X UIPainter"
   535 
   279 
   536     "do not manually edit this - the painter/builder may not be able to
   280     "do not manually edit this - the painter/builder may not be able to
   655     <resource: #canvas>
   399     <resource: #canvas>
   656 
   400 
   657     ^
   401     ^
   658      
   402      
   659        #(#FullSpec
   403        #(#FullSpec
   660           #'flags:' 0
       
   661           #'window:' 
   404           #'window:' 
   662            #(#WindowSpec
   405            #(#WindowSpec
   663               #'name:' 'uIPainterView'
   406               #'name:' 'uIPainterView'
   664               #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
   407               #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
   665               #'flags:' 0
       
   666               #'label:' 'Tree-View'
   408               #'label:' 'Tree-View'
   667               #'bounds:' #(#Rectangle 0 0 524 456)
   409               #'bounds:' #(#Rectangle 0 0 561 450)
   668           )
   410           )
   669           #'component:' 
   411           #'component:' 
   670            #(#SpecCollection
   412            #(#SpecCollection
   671               #'collection:' 
   413               #'collection:' 
   672                #(
   414                #(
   673                  #(#MenuPanelSpec
   415                  #(#MenuPanelSpec
   674                     #'name:' 'menuPullDown'
   416                     #'name:' 'menuPullDown'
   675                     #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 25 0)
   417                     #'layout:' #(#LayoutFrame 0 0.0 0 0.0 0 1.0 25 0)
   676                     #'flags:' 0
       
   677                     #'tabable:' true
   418                     #'tabable:' true
   678                     #'menu:' #menuPullDown
   419                     #'menu:' #menuPullDown
   679                 )
   420                 )
   680                  #(#MenuPanelSpec
       
   681                     #'name:' 'menuAlignment'
       
   682                     #'layout:' #(#LayoutFrame 0 0.0 29 0 233 0 54 0)
       
   683                     #'flags:' 0
       
   684                     #'tabable:' true
       
   685                     #'menu:' #menuAlignment
       
   686                     #'showSeparatingLines:' true
       
   687                 )
       
   688                  #(#PanelViewSpec
       
   689                     #'name:' 'panelViewButtons'
       
   690                     #'layout:' #(#LayoutFrame -125 1.0 25 0.0 0 1.0 57 0.0)
       
   691                     #'flags:' 0
       
   692                     #'component:' 
       
   693                      #(#SpecCollection
       
   694                         #'collection:' 
       
   695                          #(
       
   696                            #(#ActionButtonSpec
       
   697                               #'name:' 'moveLeft'
       
   698                               #'flags:' 0
       
   699                               #'label:' ''
       
   700                               #'translateLabel:' true
       
   701                               #'labelChannel:' #'LABELb_moveLeft.xbm'
       
   702                               #'tabable:' true
       
   703                               #'defaultable:' true
       
   704                               #'model:' #moveSelectionLeft
       
   705                               #'isTriggerOnDown:' true
       
   706                               #'enableChannel:' #enableChannel
       
   707                               #'extent:' #(#Point 26 24)
       
   708                           )
       
   709                            #(#ActionButtonSpec
       
   710                               #'name:' 'moveRight'
       
   711                               #'flags:' 0
       
   712                               #'label:' ''
       
   713                               #'translateLabel:' true
       
   714                               #'labelChannel:' #'LABELb_moveRight.xbm'
       
   715                               #'tabable:' true
       
   716                               #'defaultable:' true
       
   717                               #'model:' #moveSelectionRight
       
   718                               #'isTriggerOnDown:' true
       
   719                               #'enableChannel:' #enableChannel
       
   720                               #'extent:' #(#Point 26 24)
       
   721                           )
       
   722                            #(#ActionButtonSpec
       
   723                               #'name:' 'moveUp'
       
   724                               #'flags:' 0
       
   725                               #'label:' ''
       
   726                               #'translateLabel:' true
       
   727                               #'labelChannel:' #'LABELb_moveUp.xbm'
       
   728                               #'tabable:' true
       
   729                               #'defaultable:' true
       
   730                               #'model:' #moveSelectionUp
       
   731                               #'isTriggerOnDown:' true
       
   732                               #'enableChannel:' #enableChannel
       
   733                               #'extent:' #(#Point 26 24)
       
   734                           )
       
   735                            #(#ActionButtonSpec
       
   736                               #'name:' 'moveDown'
       
   737                               #'flags:' 0
       
   738                               #'label:' ''
       
   739                               #'translateLabel:' true
       
   740                               #'labelChannel:' #'LABELb_moveDown.xbm'
       
   741                               #'tabable:' true
       
   742                               #'defaultable:' true
       
   743                               #'model:' #moveSelectionDown
       
   744                               #'isTriggerOnDown:' true
       
   745                               #'enableChannel:' #enableChannel
       
   746                               #'extent:' #(#Point 26 24)
       
   747                           )
       
   748                         )
       
   749                     )
       
   750                     #'level:' 1
       
   751                     #'horizontalLayout:' #fitSpace
       
   752                     #'verticalLayout:' #fitSpace
       
   753                     #'horizontalSpace:' 4
       
   754                     #'verticalSpace:' 4
       
   755                 )
       
   756                  #(#SequenceViewSpec
       
   757                     #'name:' 'objectTree'
       
   758                     #'layout:' #(#LayoutFrame 0 0.0 59 0.0 0 0.35 -25 1.0)
       
   759                     #'flags:' 0
       
   760                     #'enableChannel:' #enableChannel
       
   761                     #'tabable:' true
       
   762                     #'menu:' #objectListMenu
       
   763                     #'model:' #objectList
       
   764                     #'hasHorizontalScrollBar:' true
       
   765                     #'hasVerticalScrollBar:' true
       
   766                     #'miniScrollerHorizontal:' true
       
   767                     #'isMultiSelect:' true
       
   768                     #'doubleClickSelector:' #doubleClick
       
   769                     #'useIndex:' true
       
   770                 )
       
   771                  #(#NoteBookViewSpec
   421                  #(#NoteBookViewSpec
   772                     #'name:' 'noteBook'
   422                     #'name:' 'noteBook'
   773                     #'layout:' #(#LayoutFrame 0 0.35 59 0.0 0 1.0 -55 1.0)
   423                     #'layout:' #(#LayoutFrame 0 0.4 59 0.0 0 1.0 -55 1.0)
   774                     #'flags:' 0
       
   775                     #'enableChannel:' #enableChannel
   424                     #'enableChannel:' #enableChannel
   776                     #'tabable:' true
   425                     #'tabable:' true
   777                     #'menu:' #tabList
   426                     #'menu:' #tabList
   778                     #'style:' 
   427                     #'style:' 
   779                      #(#FontDescription
   428                      #(#FontDescription
   784                     #'tabWidget:' #Window
   433                     #'tabWidget:' #Window
   785                     #'canvas:' #noteBookView
   434                     #'canvas:' #noteBookView
   786                 )
   435                 )
   787                  #(#HorizontalPanelViewSpec
   436                  #(#HorizontalPanelViewSpec
   788                     #'name:' 'modifyPanel'
   437                     #'name:' 'modifyPanel'
   789                     #'layout:' #(#LayoutFrame 0 0.35 -55 1.0 0 1.0 -25 1.0)
   438                     #'layout:' #(#LayoutFrame 0 0.4 -55 1.0 0 1.0 -25 1.0)
   790                     #'flags:' 0
       
   791                     #'component:' 
   439                     #'component:' 
   792                      #(#SpecCollection
   440                      #(#SpecCollection
   793                         #'collection:' 
   441                         #'collection:' 
   794                          #(
   442                          #(
   795                            #(#ActionButtonSpec
   443                            #(#ActionButtonSpec
   796                               #'name:' 'cancelButton'
   444                               #'name:' 'cancelButton'
   797                               #'flags:' 0
       
   798                               #'label:' 'cancel'
   445                               #'label:' 'cancel'
   799                               #'tabable:' true
   446                               #'tabable:' true
   800                               #'model:' #cancel
   447                               #'model:' #cancel
   801                               #'enableChannel:' #modifiedChannel
   448                               #'enableChannel:' #modifiedChannel
   802                               #'extent:' #(#Point 166 24)
   449                               #'extent:' #(#Point 164 24)
   803                           )
   450                           )
   804                            #(#ActionButtonSpec
   451                            #(#ActionButtonSpec
   805                               #'name:' 'acceptButton'
   452                               #'name:' 'acceptButton'
   806                               #'flags:' 0
       
   807                               #'label:' 'ok'
   453                               #'label:' 'ok'
   808                               #'tabable:' true
   454                               #'tabable:' true
   809                               #'model:' #accept
   455                               #'model:' #accept
   810                               #'enableChannel:' #modifiedChannel
   456                               #'enableChannel:' #modifiedChannel
   811                               #'extent:' #(#Point 166 24)
   457                               #'extent:' #(#Point 164 24)
   812                           )
   458                           )
   813                         )
   459                         )
   814                     )
   460                     )
   815                     #'level:' 0
   461                     #'level:' 0
   816                     #'horizontalLayout:' #fitSpace
   462                     #'horizontalLayout:' #fitSpace
   819                     #'verticalSpace:' 3
   465                     #'verticalSpace:' 3
   820                 )
   466                 )
   821                  #(#LabelSpec
   467                  #(#LabelSpec
   822                     #'name:' 'helpInfo'
   468                     #'name:' 'helpInfo'
   823                     #'layout:' #(#LayoutFrame 2 0.0 -25 1.0 -2 1.0 -2 1.0)
   469                     #'layout:' #(#LayoutFrame 2 0.0 -25 1.0 -2 1.0 -2 1.0)
   824                     #'flags:' 0
       
   825                     #'label:' ''
       
   826                     #'level:' -1
   470                     #'level:' -1
   827                     #'adjust:' #left
   471                     #'adjust:' #left
   828                 )
   472                 )
   829                  #(#ToggleSpec
   473                  #(#ToggleSpec
   830                     #'name:' 'galleryLabel'
   474                     #'name:' 'galleryLabel'
   831                     #'layout:' #(#LayoutFrame -162 1.0 1 0 -82 1.0 23 0)
   475                     #'layout:' #(#LayoutFrame -162 1.0 1 0 -82 1.0 23 0)
   832                     #'flags:' 0
       
   833                     #'label:' 'Gallery'
   476                     #'label:' 'Gallery'
   834                     #'model:' #galleryShown
   477                     #'model:' #galleryShown
   835                     #'isTriggerOnDown:' true
   478                     #'isTriggerOnDown:' true
   836                     #'showLamp:' true
   479                     #'showLamp:' true
   837                     #'lampColor:' #(#Color 100.0 100.0 0.0)
   480                     #'lampColor:' #(#Color 100.0 100.0 0.0)
   838                 )
   481                 )
   839                  #(#ToggleSpec
   482                  #(#ToggleSpec
   840                     #'name:' 'painterLabel'
   483                     #'name:' 'painterLabel'
   841                     #'layout:' #(#LayoutFrame -81 1.0 1 0 -1 1.0 23 0)
   484                     #'layout:' #(#LayoutFrame -81 1.0 1 0 -1 1.0 23 0)
   842                     #'flags:' 0
       
   843                     #'label:' 'Painter'
   485                     #'label:' 'Painter'
   844                     #'model:' #painterShown
   486                     #'model:' #painterShown
   845                     #'isTriggerOnDown:' true
   487                     #'isTriggerOnDown:' true
   846                     #'showLamp:' true
   488                     #'showLamp:' true
   847                     #'lampColor:' #(#Color 100.0 100.0 0.0)
   489                     #'lampColor:' #(#Color 100.0 100.0 0.0)
   848                 )
   490                 )
       
   491                  #(#ArbitraryComponentSpec
       
   492                     #'name:' 'treeView'
       
   493                     #'layout:' #(#LayoutFrame 0 0.0 59 0 0 0.4 -25 1.0)
       
   494                     #'menu:' #menuCanvas
       
   495                     #'hasHorizontalScrollBar:' true
       
   496                     #'hasVerticalScrollBar:' true
       
   497                     #'miniScrollerHorizontal:' true
       
   498                     #'miniScrollerVertical:' true
       
   499                     #'component:' #treeView
       
   500                     #'hasBorder:' false
       
   501                 )
       
   502                  #(#HorizontalPanelViewSpec
       
   503                     #'name:' 'menuContainer'
       
   504                     #'layout:' #(#LayoutFrame 0 0.0 26 0 0 1.0 58 0)
       
   505                     #'component:' 
       
   506                      #(#SpecCollection
       
   507                         #'collection:' 
       
   508                          #(
       
   509                            #(#MenuPanelSpec
       
   510                               #'name:' 'menuMove'
       
   511                               #'menu:' #menuMove
       
   512                               #'showSeparatingLines:' true
       
   513                               #'extent:' #(#Point 123 32)
       
   514                           )
       
   515                            #(#MenuPanelSpec
       
   516                               #'name:' 'menuAlignment'
       
   517                               #'tabable:' true
       
   518                               #'menu:' #menuAlignment
       
   519                               #'showSeparatingLines:' true
       
   520                               #'extent:' #(#Point 233 32)
       
   521                           )
       
   522                            #(#HorizontalPanelViewSpec
       
   523                               #'name:' 'panelViewButtons'
       
   524                               #'component:' 
       
   525                                #(#SpecCollection
       
   526                                   #'collection:' 
       
   527                                    #(
       
   528                                      #(#ArrowButtonSpec
       
   529                                         #'name:' 'moveLeft'
       
   530                                         #'tabable:' true
       
   531                                         #'model:' #moveSelectionLeft
       
   532                                         #'isTriggerOnDown:' true
       
   533                                         #'enableChannel:' #hasValidSelection
       
   534                                         #'direction:' #left
       
   535                                         #'extent:' #(#Point 25 24)
       
   536                                     )
       
   537                                      #(#ArrowButtonSpec
       
   538                                         #'name:' 'moveRight'
       
   539                                         #'model:' #moveSelectionRight
       
   540                                         #'isTriggerOnDown:' true
       
   541                                         #'enableChannel:' #hasValidSelection
       
   542                                         #'direction:' #right
       
   543                                         #'extent:' #(#Point 26 24)
       
   544                                     )
       
   545                                      #(#ArrowButtonSpec
       
   546                                         #'name:' 'moveDown'
       
   547                                         #'model:' #moveSelectionDown
       
   548                                         #'isTriggerOnDown:' true
       
   549                                         #'enableChannel:' #hasValidSelection
       
   550                                         #'direction:' #down
       
   551                                         #'extent:' #(#Point 26 24)
       
   552                                     )
       
   553                                      #(#ArrowButtonSpec
       
   554                                         #'name:' 'moveUp'
       
   555                                         #'model:' #moveSelectionUp
       
   556                                         #'isTriggerOnDown:' true
       
   557                                         #'enableChannel:' #hasValidSelection
       
   558                                         #'direction:' #up
       
   559                                         #'extent:' #(#Point 22 24)
       
   560                                     )
       
   561                                   )
       
   562                               )
       
   563                               #'level:' 1
       
   564                               #'horizontalLayout:' #spreadSpace
       
   565                               #'verticalLayout:' #fitSpace
       
   566                               #'horizontalSpace:' 4
       
   567                               #'verticalSpace:' 4
       
   568                               #'extent:' #(#Point 125 32)
       
   569                           )
       
   570                         )
       
   571                     )
       
   572                     #'horizontalLayout:' #spread
       
   573                     #'verticalLayout:' #fit
       
   574                     #'horizontalSpace:' 3
       
   575                     #'verticalSpace:' 3
       
   576                 )
   849               )
   577               )
   850           )
   578           )
   851       )
   579       )
   852 ! !
   580 ! !
   853 
   581 
       
   582 !UIPainter class methodsFor:'menu specs'!
       
   583 
       
   584 menuAlignment
       
   585     "this window spec was automatically generated by the ST/X MenuEditor"
       
   586 
       
   587     "do not manually edit this - the builder may not be able to
       
   588      handle the specification if its corrupted."
       
   589 
       
   590     "
       
   591      MenuEditor new openOnClass:UIPainter andSelector:#menuAlignment
       
   592      (Menu new fromLiteralArrayEncoding:(UIPainter menuAlignment)) startUp
       
   593     "
       
   594 
       
   595     <resource: #menu>
       
   596 
       
   597     ^
       
   598      
       
   599        #(#Menu
       
   600           
       
   601            #(
       
   602              #(#MenuItem
       
   603                 #'label:' 'align left'
       
   604                 #'value:' #alignSelectionLeft
       
   605                 #'enabled:' #hasValidSelection
       
   606                 #'activeHelpKey:' #alignSelectionLeft
       
   607                 #'labelImage:' 
       
   608                  #(#ResourceRetriever
       
   609                     nil #iconAlignL
       
   610                 )
       
   611             )
       
   612              #(#MenuItem
       
   613                 #'label:' 'align right'
       
   614                 #'value:' #alignSelectionRight
       
   615                 #'enabled:' #hasValidSelection
       
   616                 #'activeHelpKey:' #alignSelectionRight
       
   617                 #'labelImage:' 
       
   618                  #(#ResourceRetriever
       
   619                     nil #iconAlignR
       
   620                 )
       
   621             )
       
   622              #(#MenuItem
       
   623                 #'label:' 'align left & right'
       
   624                 #'value:' #alignSelectionLeftAndRight
       
   625                 #'enabled:' #hasValidSelection
       
   626                 #'activeHelpKey:' #alignSelectionLeftAndRight
       
   627                 #'labelImage:' 
       
   628                  #(#ResourceRetriever
       
   629                     nil #iconAlignLR
       
   630                 )
       
   631             )
       
   632              #(#MenuItem
       
   633                 #'label:' 'align top'
       
   634                 #'value:' #alignSelectionTop
       
   635                 #'enabled:' #hasValidSelection
       
   636                 #'activeHelpKey:' #alignSelectionTop
       
   637                 #'labelImage:' 
       
   638                  #(#ResourceRetriever
       
   639                     nil #iconAlignT
       
   640                 )
       
   641             )
       
   642              #(#MenuItem
       
   643                 #'label:' 'align bottom'
       
   644                 #'value:' #alignSelectionBottom
       
   645                 #'enabled:' #hasValidSelection
       
   646                 #'activeHelpKey:' #alignSelectionBottom
       
   647                 #'labelImage:' 
       
   648                  #(#ResourceRetriever
       
   649                     nil #iconAlignB
       
   650                 )
       
   651             )
       
   652              #(#MenuItem
       
   653                 #'label:' 'align top & bottom'
       
   654                 #'value:' #alignSelectionTopAndBottom
       
   655                 #'enabled:' #hasValidSelection
       
   656                 #'activeHelpKey:' #alignSelectionTopAndBottom
       
   657                 #'labelImage:' 
       
   658                  #(#ResourceRetriever
       
   659                     nil #iconAlignTB
       
   660                 )
       
   661             )
       
   662              #(#MenuItem
       
   663                 #'label:' 'align centered horizontal'
       
   664                 #'value:' #alignSelectionCenterHor
       
   665                 #'enabled:' #hasValidSelection
       
   666                 #'activeHelpKey:' #alignSelectionCenterHor
       
   667                 #'labelImage:' 
       
   668                  #(#ResourceRetriever
       
   669                     nil #iconAlignCenterH
       
   670                 )
       
   671             )
       
   672              #(#MenuItem
       
   673                 #'label:' 'align centered vertical'
       
   674                 #'value:' #alignSelectionCenterVer
       
   675                 #'enabled:' #hasValidSelection
       
   676                 #'activeHelpKey:' #alignSelectionCenterVer
       
   677                 #'labelImage:' 
       
   678                  #(#ResourceRetriever
       
   679                     nil #iconAlignCenterV
       
   680                 )
       
   681             )
       
   682           )
       
   683           #( 3 3 )
       
   684           nil
       
   685       )
       
   686 !
       
   687 
       
   688 menuCanvas
       
   689     "this window spec was automatically generated by the ST/X MenuEditor"
       
   690 
       
   691     "do not manually edit this - the builder may not be able to
       
   692      handle the specification if its corrupted."
       
   693 
       
   694     "
       
   695      MenuEditor new openOnClass:UIPainter andSelector:#menuCanvas
       
   696      (Menu new fromLiteralArrayEncoding:(UIPainter menuCanvas)) startUp
       
   697     "
       
   698 
       
   699     <resource: #menu>
       
   700 
       
   701     ^
       
   702 
       
   703        #(#Menu
       
   704 
       
   705            #(
       
   706              #(#MenuItem
       
   707                 #'label:' 'copy'
       
   708                 #'value:' #copySelection
       
   709                 #'shortcutKeyCharacter:' #Copy
       
   710             )
       
   711              #(#MenuItem
       
   712                 #'label:' 'cut'
       
   713                 #'value:' #deleteSelection
       
   714                 #'shortcutKeyCharacter:' #Cut
       
   715             )
       
   716              #(#MenuItem
       
   717                 #'label:' 'paste'
       
   718                 #'nameKey:' #paste
       
   719                 #'value:' #paste
       
   720                 #'submenu:' 
       
   721                  #(#Menu
       
   722 
       
   723                      #(
       
   724                        #(#MenuItem
       
   725                           #'label:' 'paste'
       
   726                           #'value:' #pasteBuffer
       
   727                           #'activeHelpKey:' #pasteBuffer
       
   728                           #'shortcutKeyCharacter:' #Paste
       
   729                       )
       
   730                        #(#MenuItem
       
   731                           #'label:' 'keep layout'
       
   732                           #'value:' #pasteWithLayout
       
   733                           #'activeHelpKey:' #pasteWithLayout
       
   734                       )
       
   735                     ) nil
       
   736                     nil
       
   737                 )
       
   738             )
       
   739              #(#MenuItem
       
   740                 #'label:' '-'
       
   741             )
       
   742              #(#MenuItem
       
   743                 #'label:' 'undo'
       
   744                 #'nameKey:' #undo
       
   745                 #'value:' #undoLast
       
   746             )
       
   747              #(#MenuItem
       
   748                 #'label:' '-'
       
   749             )
       
   750              #(#MenuItem
       
   751                 #'label:' 'dimension'
       
   752                 #'value:' #dimension
       
   753                 #'submenu:' 
       
   754                  #(#Menu
       
   755 
       
   756                      #(
       
   757                        #(#MenuItem
       
   758                           #'label:' 'default extent'
       
   759                           #'value:' #setToDefaultExtent
       
   760                           #'activeHelpKey:' #setToDefaultExtent
       
   761                       )
       
   762                        #(#MenuItem
       
   763                           #'label:' 'default width'
       
   764                           #'value:' #setToDefaultWidth
       
   765                           #'activeHelpKey:' #setToDefaultWidth
       
   766                       )
       
   767                        #(#MenuItem
       
   768                           #'label:' 'default height'
       
   769                           #'value:' #setToDefaultHeight
       
   770                           #'activeHelpKey:' #setToDefaultHeight
       
   771                       )
       
   772                        #(#MenuItem
       
   773                           #'label:' 'copy extent'
       
   774                           #'value:' #copyExtent
       
   775                           #'activeHelpKey:' #copyExtent
       
   776                       )
       
   777                        #(#MenuItem
       
   778                           #'label:' 'paste extent'
       
   779                           #'value:' #pasteExtent
       
   780                           #'activeHelpKey:' #pasteExtent
       
   781                       )
       
   782                        #(#MenuItem
       
   783                           #'label:' 'paste width'
       
   784                           #'value:' #pasteWidth
       
   785                           #'activeHelpKey:' #pasteWidth
       
   786                       )
       
   787                        #(#MenuItem
       
   788                           #'label:' 'paste height'
       
   789                           #'value:' #pasteHeight
       
   790                           #'activeHelpKey:' #pasteHeight
       
   791                       )
       
   792                        #(#MenuItem
       
   793                           #'label:' 'copy  layout'
       
   794                           #'value:' #copyLayout
       
   795                           #'activeHelpKey:' #copyLayout
       
   796                       )
       
   797                        #(#MenuItem
       
   798                           #'label:' 'paste layout'
       
   799                           #'value:' #pasteLayout
       
   800                           #'activeHelpKey:' #pasteLayout
       
   801                       )
       
   802                     )
       
   803                     #(3 1 3)
       
   804                     nil
       
   805                 )
       
   806             )
       
   807              #(#MenuItem
       
   808                 #'label:' 'align'
       
   809                 #'value:' #align
       
   810                 #'submenu:' 
       
   811                  #(#Menu
       
   812 
       
   813                      #(
       
   814                        #(#MenuItem
       
   815                           #'label:' 'align left'
       
   816                           #'value:' #alignSelectionLeft
       
   817                           #'activeHelpKey:' #alignSelectionLeft
       
   818                           #'labelImage:' 
       
   819                            #(#ResourceRetriever
       
   820                               #UIPainter #iconAlignL
       
   821                               'align left'
       
   822                           )
       
   823                       )
       
   824                        #(#MenuItem
       
   825                           #'label:' 'align right'
       
   826                           #'value:' #alignSelectionRight
       
   827                           #'activeHelpKey:' #alignSelectionRight
       
   828                           #'labelImage:' 
       
   829                            #(#ResourceRetriever
       
   830                               #UIPainter #iconAlignR
       
   831                               'align right'
       
   832                           )
       
   833                       )
       
   834                        #(#MenuItem
       
   835                           #'label:' 'align left & right'
       
   836                           #'value:' #alignSelectionLeftAndRight
       
   837                           #'activeHelpKey:' #alignSelectionLeftAndRight
       
   838                           #'labelImage:' 
       
   839                            #(#ResourceRetriever
       
   840                               #UIPainter #iconAlignLR
       
   841                               'align left & right'
       
   842                           )
       
   843                       )
       
   844                        #(#MenuItem
       
   845                           #'label:' 'align top'
       
   846                           #'value:' #alignSelectionTop
       
   847                           #'activeHelpKey:' #alignSelectionTop
       
   848                           #'labelImage:' 
       
   849                            #(#ResourceRetriever
       
   850                               #UIPainter #iconAlignT
       
   851                               'align top'
       
   852                           )
       
   853                       )
       
   854                        #(#MenuItem
       
   855                           #'label:' 'align bottom'
       
   856                           #'value:' #alignSelectionBottom
       
   857                           #'activeHelpKey:' #alignSelectionBottom
       
   858                           #'labelImage:' 
       
   859                            #(#ResourceRetriever
       
   860                               #UIPainter #iconAlignB
       
   861                               'align bottom'
       
   862                           )
       
   863                       )
       
   864                        #(#MenuItem
       
   865                           #'label:' 'align top & bottom'
       
   866                           #'value:' #alignSelectionTopAndBottom
       
   867                           #'activeHelpKey:' #alignSelectionTopAndBottom
       
   868                           #'labelImage:' 
       
   869                            #(#ResourceRetriever
       
   870                               #UIPainter #iconAlignTB
       
   871                               'align top & bottom'
       
   872                           )
       
   873                       )
       
   874                        #(#MenuItem
       
   875                           #'label:' 'align centered horizontal'
       
   876                           #'value:' #alignSelectionCenterHor
       
   877                           #'activeHelpKey:' #alignSelectionCenterHor
       
   878                           #'labelImage:' 
       
   879                            #(#ResourceRetriever
       
   880                               #UIPainter #iconAlignCenterH
       
   881                               'align centered horizontal'
       
   882                           )
       
   883                       )
       
   884                        #(#MenuItem
       
   885                           #'label:' 'align centered vertical'
       
   886                           #'value:' #alignSelectionCenterVer
       
   887                           #'activeHelpKey:' #alignSelectionCenterVer
       
   888                           #'labelImage:' 
       
   889                            #(#ResourceRetriever
       
   890                               #UIPainter #iconAlignCenterV
       
   891                               'align centered vertical'
       
   892                           )
       
   893                       )
       
   894                        #(#MenuItem
       
   895                           #'label:' 'spread horizontal'
       
   896                           #'value:' #spreadSelectionHor
       
   897                           #'activeHelpKey:' #spreadSelectionHor
       
   898                       )
       
   899                        #(#MenuItem
       
   900                           #'label:' 'spread vertical'
       
   901                           #'value:' #spreadSelectionVer
       
   902                           #'activeHelpKey:' #spreadSelectionVer
       
   903                       )
       
   904                        #(#MenuItem
       
   905                           #'label:' 'center horizontal in frame'
       
   906                           #'value:' #centerSelectionHor
       
   907                           #'activeHelpKey:' #centerSelectionHor
       
   908                       )
       
   909                        #(#MenuItem
       
   910                           #'label:' 'center vertical in frame'
       
   911                           #'value:' #centerSelectionVer
       
   912                           #'activeHelpKey:' #centerSelectionVer
       
   913                       )
       
   914                     )
       
   915                     #(8 2)
       
   916                     nil
       
   917                 )
       
   918             )
       
   919           ) nil
       
   920           nil
       
   921       )
       
   922 
       
   923 
       
   924 !
       
   925 
       
   926 menuMove
       
   927     "this window spec was automatically generated by the ST/X MenuEditor"
       
   928 
       
   929     "do not manually edit this - the builder may not be able to
       
   930      handle the specification if its corrupted."
       
   931 
       
   932     "
       
   933      MenuEditor new openOnClass:UIPainter andSelector:#menuMove
       
   934      (Menu new fromLiteralArrayEncoding:(UIPainter menuMove)) startUp
       
   935     "
       
   936 
       
   937     <resource: #menu>
       
   938 
       
   939     ^
       
   940      
       
   941        #(#Menu
       
   942           
       
   943            #(
       
   944              #(#MenuItem
       
   945                 #'label:' 'stepUp'
       
   946                 #'value:' #doStepUp
       
   947                 #'enabled:' #hasSingleSelection
       
   948                 #'labelImage:' 
       
   949                  #(#ResourceRetriever
       
   950                     #UIPainter #iconStepUp
       
   951                 )
       
   952             )
       
   953              #(#MenuItem
       
   954                 #'label:' 'stepDown'
       
   955                 #'value:' #doStepDown
       
   956                 #'enabled:' #hasSingleSelection
       
   957                 #'labelImage:' 
       
   958                  #(#ResourceRetriever
       
   959                     #UIPainter #iconStepDown
       
   960                 )
       
   961             )
       
   962              #(#MenuItem
       
   963                 #'label:' ''
       
   964             )
       
   965              #(#MenuItem
       
   966                 #'label:' 'stepIn'
       
   967                 #'value:' #doStepIn
       
   968                 #'enabled:' #canStepIn
       
   969                 #'labelImage:' 
       
   970                  #(#ResourceRetriever
       
   971                     #UIPainter #iconStepIn
       
   972                 )
       
   973             )
       
   974              #(#MenuItem
       
   975                 #'label:' 'stepOut'
       
   976                 #'value:' #doStepOut
       
   977                 #'enabled:' #canStepOut
       
   978                 #'labelImage:' 
       
   979                  #(#ResourceRetriever
       
   980                     #UIPainter #iconStepOut
       
   981                 )
       
   982             )
       
   983           ) nil
       
   984           nil
       
   985       )
       
   986 !
       
   987 
       
   988 menuPullDown
       
   989     "this window spec was automatically generated by the ST/X MenuEditor"
       
   990 
       
   991     "do not manually edit this - the builder may not be able to
       
   992      handle the specification if its corrupted."
       
   993 
       
   994     "
       
   995      MenuEditor new openOnClass:UIPainter andSelector:#menuPullDown
       
   996      (Menu new fromLiteralArrayEncoding:(UIPainter menuPullDown)) startUp
       
   997     "
       
   998 
       
   999     <resource: #menu>
       
  1000 
       
  1001     ^
       
  1002      
       
  1003        #(#Menu
       
  1004           
       
  1005            #(
       
  1006              #(#MenuItem
       
  1007                 #'label:' 'file'
       
  1008                 #'value:' #file
       
  1009                 #'enabled:' #enableChannel
       
  1010                 #'submenu:' 
       
  1011                  #(#Menu
       
  1012                     
       
  1013                      #(
       
  1014                        #(#MenuItem
       
  1015                           #'label:' 'new'
       
  1016                           #'value:' #doNew
       
  1017                       )
       
  1018                        #(#MenuItem
       
  1019                           #'label:' 'from class ...'
       
  1020                           #'value:' #doFromClass
       
  1021                       )
       
  1022                        #(#MenuItem
       
  1023                           #'label:' 'pick a view '
       
  1024                           #'value:' #doPickAView
       
  1025                       )
       
  1026                        #(#MenuItem
       
  1027                           #'label:' '-'
       
  1028                       )
       
  1029                        #(#MenuItem
       
  1030                           #'label:' 'quit'
       
  1031                           #'value:' #closeRequest
       
  1032                       )
       
  1033                     ) nil
       
  1034                     nil
       
  1035                 )
       
  1036             )
       
  1037              #(#MenuItem
       
  1038                 #'label:' 'misc'
       
  1039                 #'value:' #misc
       
  1040                 #'enabled:' #enableChannel
       
  1041                 #'submenu:' 
       
  1042                  #(#Menu
       
  1043                     
       
  1044                      #(
       
  1045                        #(#MenuItem
       
  1046                           #'label:' 'grid'
       
  1047                           #'value:' #grid
       
  1048                           #'submenu:' 
       
  1049                            #(#Menu
       
  1050                               
       
  1051                                #(
       
  1052                                  #(#MenuItem
       
  1053                                     #'label:' 'show'
       
  1054                                     #'indication:' #'gridShown:'
       
  1055                                 )
       
  1056                                  #(#MenuItem
       
  1057                                     #'label:' 'align'
       
  1058                                     #'indication:' #'gridAlign:'
       
  1059                                 )
       
  1060                               ) nil
       
  1061                               nil
       
  1062                           )
       
  1063                       )
       
  1064                        #(#MenuItem
       
  1065                           #'label:' 'undo'
       
  1066                           #'value:' #undo
       
  1067                           #'submenu:' 
       
  1068                            #(#Menu
       
  1069                               
       
  1070                                #(
       
  1071                                  #(#MenuItem
       
  1072                                     #'label:' 'last'
       
  1073                                     #'value:' #undoLast
       
  1074                                 )
       
  1075                                  #(#MenuItem
       
  1076                                     #'label:' 'menu'
       
  1077                                     #'value:' #openUndoMenu
       
  1078                                 )
       
  1079                                  #(#MenuItem
       
  1080                                     #'label:' '-'
       
  1081                                 )
       
  1082                                  #(#MenuItem
       
  1083                                     #'label:' 'delete'
       
  1084                                     #'value:' #removeUndoHistory
       
  1085                                 )
       
  1086                               ) nil
       
  1087                               nil
       
  1088                           )
       
  1089                       )
       
  1090                     ) nil
       
  1091                     nil
       
  1092                 )
       
  1093             )
       
  1094              #(#MenuItem
       
  1095                 #'label:' 'code'
       
  1096                 #'value:' #code
       
  1097                 #'enabled:' #enableChannel
       
  1098                 #'submenu:' 
       
  1099                  #(#Menu
       
  1100                     
       
  1101                      #(
       
  1102                        #(#MenuItem
       
  1103                           #'label:' 'class && method ...'
       
  1104                           #'value:' #defineClassAndSelector
       
  1105                       )
       
  1106                        #(#MenuItem
       
  1107                           #'label:' '='
       
  1108                       )
       
  1109                        #(#MenuItem
       
  1110                           #'label:' 'install window spec.'
       
  1111                           #'value:' #doInstallSpec
       
  1112                           #'enabled:' #hasSpecClassAndSelector
       
  1113                       )
       
  1114                        #(#MenuItem
       
  1115                           #'label:' 'install help spec.'
       
  1116                           #'value:' #doInstallHelp
       
  1117                           #'enabled:' #hasSpecClass
       
  1118                       )
       
  1119                        #(#MenuItem
       
  1120                           #'label:' '-'
       
  1121                       )
       
  1122                        #(#MenuItem
       
  1123                           #'label:' 'install aspects'
       
  1124                           #'value:' #doInstallAspects
       
  1125                           #'enabled:' #hasSpecClass
       
  1126                       )
       
  1127                        #(#MenuItem
       
  1128                           #'label:' '='
       
  1129                       )
       
  1130                        #(#MenuItem
       
  1131                           #'label:' 'show window spec.'
       
  1132                           #'value:' #doWindowSpec
       
  1133                       )
       
  1134                        #(#MenuItem
       
  1135                           #'label:' '='
       
  1136                       )
       
  1137                        #(#MenuItem
       
  1138                           #'label:' 'browse application'
       
  1139                           #'value:' #doBrowseAppClass
       
  1140                           #'enabled:' #hasSpecClass
       
  1141                       )
       
  1142                        #(#MenuItem
       
  1143                           #'label:' 'start  application'
       
  1144                           #'value:' #doStartApplication
       
  1145                           #'enabled:' #hasSpecClass
       
  1146                       )
       
  1147                     ) nil
       
  1148                     nil
       
  1149                 )
       
  1150             )
       
  1151              #(#MenuItem
       
  1152                 #'label:' 'test'
       
  1153                 #'nameKey:' #test
       
  1154                 #'value:' #test
       
  1155                 #'submenu:' 
       
  1156                  #(#Menu
       
  1157                     
       
  1158                      #(
       
  1159                        #(#MenuItem
       
  1160                           #'label:' 'test mode'
       
  1161                           #'indication:' #'testMode:'
       
  1162                       )
       
  1163                     ) nil
       
  1164                     nil
       
  1165                 )
       
  1166             )
       
  1167           ) nil
       
  1168           nil
       
  1169       )
       
  1170 ! !
       
  1171 
       
  1172 !UIPainter methodsFor:'accessing menu'!
       
  1173 
       
  1174 menuCanvas
       
  1175     ^ [ treeView canvas showMiddleButtonMenu ]
       
  1176 !
       
  1177 
       
  1178 menuMove
       
  1179     "this window spec was automatically generated by the ST/X MenuEditor"
       
  1180 
       
  1181     ^ self class menuMove
       
  1182 
       
  1183 
       
  1184 !
       
  1185 
       
  1186 menuPullDown
       
  1187     "this window spec was automatically generated by the ST/X MenuEditor"
       
  1188 
       
  1189     ^ self class menuPullDown
       
  1190 
       
  1191 
       
  1192 ! !
       
  1193 
   854 !UIPainter methodsFor:'actions'!
  1194 !UIPainter methodsFor:'actions'!
   855 
  1195 
   856 accept
  1196 accept
   857     |layout|
  1197     |layout|
   858 
       
   859     objectList removeDependent:self.
       
   860 
  1198 
   861     self isLayoutToolSelected ifTrue:[
  1199     self isLayoutToolSelected ifTrue:[
   862         (layout := layoutTool layout) notNil ifTrue:[
  1200         (layout := layoutTool layout) notNil ifTrue:[
   863             layoutTool layoutType == #Extent ifTrue:[
  1201             layoutTool layoutType == #Extent ifTrue:[
   864                 self painter setExtent:layout
  1202                 self painter setExtent:layout
   871             activeHelpTool accept
  1209             activeHelpTool accept
   872         ].
  1210         ].
   873         self painter updateFromSpec:(specTool specification).
  1211         self painter updateFromSpec:(specTool specification).
   874     ].
  1212     ].
   875     self modifiedChannel value:false.
  1213     self modifiedChannel value:false.
   876     objectList addDependent:self.
       
   877 
  1214 
   878 !
  1215 !
   879 
  1216 
   880 cancel
  1217 cancel
   881     "cancel all changes and read back attributes from current view
  1218     "cancel all changes and read back attributes from current view
   883     self modifiedChannel value ifTrue:[
  1220     self modifiedChannel value ifTrue:[
   884         specTool specification:(self painter specForSelection).
  1221         specTool specification:(self painter specForSelection).
   885         layoutTool layoutView:(layoutTool layoutView).
  1222         layoutTool layoutView:(layoutTool layoutView).
   886         self modifiedChannel value:false.
  1223         self modifiedChannel value:false.
   887     ]
  1224     ]
   888 !
       
   889 
       
   890 doubleClick
       
   891     objectList selectGroup
       
   892 !
  1225 !
   893 
  1226 
   894 openEditMenu
  1227 openEditMenu
   895     |cls aspect editor|
  1228     |cls aspect editor|
   896 
  1229 
   949 
  1282 
   950 ! !
  1283 ! !
   951 
  1284 
   952 !UIPainter methodsFor:'aspects'!
  1285 !UIPainter methodsFor:'aspects'!
   953 
  1286 
       
  1287 canStepIn
       
  1288     |holder|
       
  1289 
       
  1290     (holder := builder bindingAt:#canStepIn) isNil ifTrue:[
       
  1291         builder aspectAt:#canStepIn put:(holder :=  false asValue).
       
  1292     ].
       
  1293     ^ holder
       
  1294 
       
  1295 !
       
  1296 
       
  1297 canStepOut
       
  1298     |holder|
       
  1299 
       
  1300     (holder := builder bindingAt:#canStepOut) isNil ifTrue:[
       
  1301         builder aspectAt:#canStepOut put:(holder :=  false asValue).
       
  1302     ].
       
  1303     ^ holder
       
  1304 
       
  1305 !
       
  1306 
   954 enableChannel
  1307 enableChannel
   955     "true if modifications are allowed otherwise running test
  1308     "true if modifications are allowed otherwise running test
   956     "
  1309     "
   957   ^ self painter enableChannel
  1310   ^ self painter enableChannel
   958 !
  1311 !
   961     |holder|
  1314     |holder|
   962 
  1315 
   963     (holder := builder bindingAt:#galleryShown) isNil ifTrue:[
  1316     (holder := builder bindingAt:#galleryShown) isNil ifTrue:[
   964         builder aspectAt:#galleryShown put:(holder :=  true asValue).
  1317         builder aspectAt:#galleryShown put:(holder :=  true asValue).
   965         holder addDependent:self
  1318         holder addDependent:self
       
  1319     ].
       
  1320     ^ holder
       
  1321 
       
  1322 !
       
  1323 
       
  1324 hasSingleSelection
       
  1325     |holder|
       
  1326 
       
  1327     (holder := builder bindingAt:#hasSingleSelection) isNil ifTrue:[
       
  1328         builder aspectAt:#hasSingleSelection put:(holder :=  false asValue).
       
  1329     ].
       
  1330     ^ holder
       
  1331 
       
  1332 !
       
  1333 
       
  1334 hasValidSelection
       
  1335     |holder|
       
  1336 
       
  1337     (holder := builder bindingAt:#hasValidSelection) isNil ifTrue:[
       
  1338         builder aspectAt:#hasValidSelection put:(holder :=  false asValue).
   966     ].
  1339     ].
   967     ^ holder
  1340     ^ holder
   968 
  1341 
   969 !
  1342 !
   970 
  1343 
  1006     ].
  1379     ].
  1007     ^ noteBook
  1380     ^ noteBook
  1008 !
  1381 !
  1009 
  1382 
  1010 objectList
  1383 objectList
  1011     ^ objectList
  1384     ^ nil
       
  1385 "
       
  1386     |holder|
       
  1387 
       
  1388     (holder := builder bindingAt:#objectList) isNil ifTrue:[
       
  1389         builder aspectAt:#objectList put:(holder := SelectionInList).
       
  1390     ].
       
  1391     ^ holder
       
  1392 
       
  1393 "
  1012 !
  1394 !
  1013 
  1395 
  1014 objectListMenu
  1396 objectListMenu
  1015     "returns a block which returns the menu
  1397     "returns a block which returns the menu
  1016      !!hack!!
  1398      !!hack!!
  1052     (holder := builder bindingAt:#tabModel) isNil ifTrue:[
  1434     (holder := builder bindingAt:#tabModel) isNil ifTrue:[
  1053         holder := AspectAdaptor new subject:self; forAspect:#tabSelection.
  1435         holder := AspectAdaptor new subject:self; forAspect:#tabSelection.
  1054         builder aspectAt:#tabModel put:holder.
  1436         builder aspectAt:#tabModel put:holder.
  1055     ].
  1437     ].
  1056     ^ holder
  1438     ^ holder
       
  1439 !
       
  1440 
       
  1441 treeView
       
  1442     ^ treeView
  1057 ! !
  1443 ! !
  1058 
  1444 
  1059 !UIPainter methodsFor:'binding access'!
  1445 !UIPainter methodsFor:'binding access'!
  1060 
  1446 
  1061 aspectFor:aKey
  1447 aspectFor:aKey
  1062     "check wether aspect is assigned to a label icon
  1448     "aspect for a key
  1063     "
  1449     "
  1064     (aKey startsWith:'LABEL') ifFalse:[
  1450   ^ aspects at:aKey ifAbsent:[ super aspectFor:aKey ]
  1065         ^ aspects at:aKey ifAbsent:[ super aspectFor:aKey ]
       
  1066     ].
       
  1067   ^ Image fromFile:(aKey copyFrom:(('LABEL' size) + 1))
       
  1068 ! !
  1451 ! !
  1069 
  1452 
  1070 !UIPainter methodsFor:'change & update'!
  1453 !UIPainter methodsFor:'change & update'!
  1071 
  1454 
  1072 update:something with:aParameter from:someObject
  1455 layoutChanged
  1073 
  1456     self modifiedChannel value ifFalse:[
  1074     (someObject == objectList and:[something ~~ #list]) ifTrue:[
  1457         layoutTool update.
  1075         something ~~ #layout ifTrue:[
  1458         self modifiedChannel value:false
  1076             self objectListChanged
  1459     ]
  1077         ] ifFalse:[
  1460 !
  1078             self modifiedChannel value ifTrue:[
  1461 
  1079                 ^ self
  1462 treeViewChanged
  1080             ].
  1463     "property or selection in the treeView changed
  1081             layoutTool update
       
  1082         ].
       
  1083       ^ self modifiedChannel value:false
       
  1084     ].
       
  1085 
       
  1086     self galleryShown == someObject ifTrue:[
       
  1087         (self galleryShown value) ifTrue:[
       
  1088             self raiseUIView:(selectionPanel window)
       
  1089         ] ifFalse:[
       
  1090             self hideUIView:(selectionPanel window)
       
  1091         ].
       
  1092       ^ self
       
  1093     ].
       
  1094 
       
  1095     self painterShown == someObject ifTrue:[
       
  1096         (self painterShown value) ifTrue:[
       
  1097             self raiseUIView:(self painter topView)
       
  1098         ] ifFalse:[
       
  1099             self hideUIView:(self painter topView)
       
  1100         ].
       
  1101       ^ self
       
  1102     ].
       
  1103 
       
  1104 ! !
       
  1105 
       
  1106 !UIPainter methodsFor:'event handling'!
       
  1107 
       
  1108 doesNotUnderstand:aMessage
       
  1109    |painter|
       
  1110 
       
  1111    painter := self painter.
       
  1112 
       
  1113    (painter respondsTo:(aMessage selector)) ifTrue:[
       
  1114         ^ aMessage sendTo:painter
       
  1115    ].
       
  1116    super doesNotUnderstand:aMessage
       
  1117 
       
  1118 !
       
  1119 
       
  1120 objectListChanged
       
  1121     "something changed in the painter view
       
  1122     "
  1464     "
  1123     |oldSelection view slices list spec props size nameOfSpec|
  1465     |oldSelection view slices list spec props size nameOfSpec|
  1124 
  1466 
  1125     props := objectList selectedProperty.
  1467     props := treeView propertySelected.
  1126     oldSelection := tabSelection.
  1468     oldSelection := tabSelection.
  1127     tabSelection := nil.
  1469     tabSelection := nil.
  1128 
  1470 
       
  1471     self hasValidSelection value:(treeView hasValidSelection).
       
  1472     self canStepIn value:(treeView canStepIn).
       
  1473     self canStepOut value:(treeView canStepOut).
       
  1474 
  1129     props isNil ifFalse:[
  1475     props isNil ifFalse:[
       
  1476         self hasSingleSelection value:true.
  1130         view := props view.
  1477         view := props view.
  1131         spec := props spec copy.
  1478         spec := props spec copy.
  1132 
  1479 
  1133         layoutTool layoutView == view ifFalse:[
  1480         layoutTool layoutView == view ifFalse:[
  1134             slices := spec class slices.
  1481             slices := spec class slices.
  1145         ] ifFalse:[
  1492         ] ifFalse:[
  1146             tabSelection := list first
  1493             tabSelection := list first
  1147         ].
  1494         ].
  1148         nameOfSpec := spec class name.
  1495         nameOfSpec := spec class name.
  1149     ] ifTrue:[
  1496     ] ifTrue:[
       
  1497         self hasSingleSelection value:false.
  1150         nameOfSpec := ''
  1498         nameOfSpec := ''
  1151     ].
  1499     ].
  1152 
  1500 
  1153     self showHelp:nameOfSpec for:nil.
  1501     self showHelp:nameOfSpec for:nil.
  1154 
  1502 
  1164         ]
  1512         ]
  1165     ].
  1513     ].
  1166 
  1514 
  1167     (builder componentAt:#noteBook) setSelection:tabSelection.
  1515     (builder componentAt:#noteBook) setSelection:tabSelection.
  1168     self modifiedChannel value:false.
  1516     self modifiedChannel value:false.
       
  1517 !
       
  1518 
       
  1519 update:something with:aParameter from:someObject
       
  1520 
       
  1521     someObject == treeView model ifTrue:[
       
  1522         something == #selection ifTrue:[self treeViewChanged].
       
  1523       ^ self
       
  1524     ].
       
  1525 
       
  1526     self galleryShown == someObject ifTrue:[
       
  1527         (self galleryShown value) ifTrue:[
       
  1528             self raiseUIView:(selectionPanel window)
       
  1529         ] ifFalse:[
       
  1530             self hideUIView:(selectionPanel window)
       
  1531         ].
       
  1532       ^ self
       
  1533     ].
       
  1534 
       
  1535     self painterShown == someObject ifTrue:[
       
  1536         (self painterShown value) ifTrue:[
       
  1537             self raiseUIView:(self painter topView)
       
  1538         ] ifFalse:[
       
  1539             self hideUIView:(self painter topView)
       
  1540         ].
       
  1541       ^ self
       
  1542     ].
       
  1543 
       
  1544 ! !
       
  1545 
       
  1546 !UIPainter methodsFor:'event handling'!
       
  1547 
       
  1548 doesNotUnderstand:aMessage
       
  1549    |painter|
       
  1550 
       
  1551    painter := self painter.
       
  1552 
       
  1553    (painter respondsTo:(aMessage selector)) ifTrue:[
       
  1554         ^ aMessage sendTo:painter
       
  1555    ].
       
  1556    super doesNotUnderstand:aMessage
       
  1557 
  1169 ! !
  1558 ! !
  1170 
  1559 
  1171 !UIPainter methodsFor:'private'!
  1560 !UIPainter methodsFor:'private'!
  1172 
  1561 
  1173 hideUIView:aView
  1562 hideUIView:aView
  1174     aView beIndependent.
  1563     aView beIndependent.
  1175     aView unmap.
  1564     aView unmap.
  1176 !
  1565 !
  1177 
  1566 
  1178 painter
  1567 painter
  1179     ^ objectList painter
  1568     ^ treeView canvas
  1180 !
  1569 !
  1181 
  1570 
  1182 raiseUIView:aView
  1571 raiseUIView:aView
  1183     aView map.
  1572     aView map.
  1184     aView bePartner.
  1573     aView bePartner.
  1263 closeRequest
  1652 closeRequest
  1264     "close all windows open by builder
  1653     "close all windows open by builder
  1265     "
  1654     "
  1266     |anyUnsavedChanges|
  1655     |anyUnsavedChanges|
  1267 
  1656 
  1268     objectList painter isModified ifTrue:[
  1657     self painter isModified ifTrue:[
  1269         (self confirm:'quit without saving ?') ifFalse:[
  1658         (self confirm:'quit without saving ?') ifFalse:[
  1270             ^ self
  1659             ^ self
  1271         ]
  1660         ]
  1272     ].
  1661     ].
  1273 
  1662 
  1274     objectList removeDependent:self.
  1663     treeView model removeDependent:self.
  1275     objectList painter release.
  1664     self painter release.
  1276 
  1665 
  1277     selectionPanel notNil ifTrue:[
  1666     selectionPanel notNil ifTrue:[
  1278         selectionPanel masterApplication:nil.
  1667         selectionPanel masterApplication:nil.
  1279         selectionPanel closeRequest
  1668         selectionPanel closeRequest
  1280     ].
  1669     ].
  1281     selectionPanel := nil.
  1670     selectionPanel := nil.
  1282     layoutTool     := nil.
  1671     layoutTool     := nil.
  1283     objectList     := nil.
  1672     treeView       := nil.
  1284     activeHelpTool := nil.
  1673     activeHelpTool := nil.
  1285 
  1674 
  1286     super closeRequest.
  1675     super closeRequest.
  1287 
  1676 
  1288 !
  1677 !
  1332     aspects at:#methodNameChannel put:(
  1721     aspects at:#methodNameChannel put:(
  1333         (specSelector notNil ifTrue:[specSelector asValue]
  1722         (specSelector notNil ifTrue:[specSelector asValue]
  1334                             ifFalse:[#windowSpec]) asValue
  1723                             ifFalse:[#windowSpec]) asValue
  1335     ).
  1724     ).
  1336 
  1725 
       
  1726     treeView    := TreeView new.
  1337     painterView := StandardSystemView new.
  1727     painterView := StandardSystemView new.
  1338     painterView label:'unnamed canvas'.
  1728     painterView label:'unnamed canvas'.
  1339     painterView extent:300@300.
  1729     painterView extent:300@300.
  1340 
  1730 
  1341     painter := UIPainterView in:painterView.
  1731     painter := UIPainterView in:painterView.
  1342     painter layout:(0.0 @ 0.0 corner:1.0 @ 1.0) asLayout.
  1732     painter layout:(0.0 @ 0.0 corner:1.0 @ 1.0) asLayout.
  1343 
  1733 
  1344     objectList := painter listHolder.
  1734     treeView := treeView canvas:painter.
  1345     objectList addDependent:self.
  1735     painter treeView:treeView.
       
  1736     treeView model addDependent:self.
  1346 
  1737 
  1347     super openInterface.
  1738     super openInterface.
  1348 
  1739 
  1349     topView := self window.
  1740     topView := self window.
  1350     topView bePartner.
  1741     topView bePartner.
  1518     ] doWhile:[again]
  1909     ] doWhile:[again]
  1519 
  1910 
  1520     "Modified: 17.6.1997 / 14:42:02 / cg"
  1911     "Modified: 17.6.1997 / 14:42:02 / cg"
  1521 ! !
  1912 ! !
  1522 
  1913 
       
  1914 !UIPainter methodsFor:'user interaction - move'!
       
  1915 
       
  1916 doStepDown
       
  1917     treeView doStepOver:1
       
  1918 !
       
  1919 
       
  1920 doStepIn
       
  1921     treeView doStepIn
       
  1922 !
       
  1923 
       
  1924 doStepOut
       
  1925     treeView doStepOut
       
  1926 !
       
  1927 
       
  1928 doStepUp
       
  1929     treeView doStepOver:-1
       
  1930 ! !
       
  1931 
  1523 !UIPainter methodsFor:'user interaction - pullDown'!
  1932 !UIPainter methodsFor:'user interaction - pullDown'!
  1524 
  1933 
  1525 doBrowseAppClass
  1934 doBrowseAppClass
  1526     "open a browser on the class"
  1935     "open a browser on the class"
  1527 
  1936 
  1547 !
  1956 !
  1548 
  1957 
  1549 doFromClass
  1958 doFromClass
  1550     |className methodName cls sel accepted failed spec s painter|
  1959     |className methodName cls sel accepted failed spec s painter|
  1551 
  1960 
  1552     objectList painter isModified ifTrue:[
  1961     self painter isModified ifTrue:[
  1553         (self confirm:'edit another interface without saving your modifications ?') ifFalse:[
  1962         (self confirm:'edit another interface without saving your modifications ?') ifFalse:[
  1554             ^ self
  1963             ^ self
  1555         ]
  1964         ]
  1556     ].
  1965     ].
  1557 
  1966 
  1662     (ReadStream on:code) fileIn.
  2071     (ReadStream on:code) fileIn.
  1663 
  2072 
  1664 !
  2073 !
  1665 
  2074 
  1666 doNew
  2075 doNew
  1667     objectList painter isModified ifTrue:[
  2076     self painter isModified ifTrue:[
  1668         (self confirm:'new interface without saving your modifications ?') ifFalse:[
  2077         (self confirm:'new interface without saving your modifications ?') ifFalse:[
  1669             ^ self
  2078             ^ self
  1670         ]
  2079         ]
  1671     ].
  2080     ].
  1672 
  2081 
  1676 !
  2085 !
  1677 
  2086 
  1678 doPickAView
  2087 doPickAView
  1679     |painter view cls spec|
  2088     |painter view cls spec|
  1680 
  2089 
  1681     objectList painter isModified ifTrue:[
  2090     self painter isModified ifTrue:[
  1682         (self confirm:'pick another interface without saving your modifications ?') ifFalse:[
  2091         (self confirm:'pick another interface without saving your modifications ?') ifFalse:[
  1683             ^ self
  2092             ^ self
  1684         ]
  2093         ]
  1685     ].
  2094     ].
  1686 
  2095 
  1703     ]
  2112     ]
  1704 
  2113 
  1705     "Modified: 24.6.1997 / 19:02:57 / cg"
  2114     "Modified: 24.6.1997 / 19:02:57 / cg"
  1706 !
  2115 !
  1707 
  2116 
  1708 doRaise
       
  1709     |top x|
       
  1710 
       
  1711     top := self painter topView.
       
  1712     top realized ifFalse:[
       
  1713         self painterShown value:true
       
  1714     ].
       
  1715     top raise.
       
  1716 
       
  1717     top := selectionPanel window.
       
  1718     top realized ifFalse:[
       
  1719         self galleryShown value:true
       
  1720     ].
       
  1721     top raise.
       
  1722 !
       
  1723 
       
  1724 doStartApplication
  2117 doStartApplication
  1725     |cls|
  2118     |cls|
  1726 
  2119 
  1727     (specClass isNil or:[specSelector size < 2]) ifTrue:[
  2120     (specClass isNil or:[specSelector size < 2]) ifTrue:[
  1728         ^ self information:'no class or selector defined'.
  2121         ^ self information:'no class or selector defined'.
  1758    v contents:code.
  2151    v contents:code.
  1759    v label:'windowSpec'.
  2152    v label:'windowSpec'.
  1760 
  2153 
  1761 ! !
  2154 ! !
  1762 
  2155 
       
  2156 !UIPainter::TreeView class methodsFor:'constants'!
       
  2157 
       
  2158 imageMasterChild
       
  2159 
       
  2160     ImageMasterChild isNil ifTrue:[
       
  2161         ImageMasterChild := Image fromFile:('xpmBitmaps/document_images/tiny_file_lock.xpm').
       
  2162     ].
       
  2163   ^ ImageMasterChild
       
  2164 
       
  2165 "
       
  2166 ImageMasterChild := nil
       
  2167 "
       
  2168 
       
  2169 
       
  2170 !
       
  2171 
       
  2172 imageMasterParent
       
  2173 
       
  2174     ImageMasterParent isNil ifTrue:[
       
  2175         ImageMasterParent := Image fromFile:('xpmBitmaps/document_images/tiny_yellow_dir_locked.xpm').
       
  2176     ].
       
  2177   ^ ImageMasterParent
       
  2178 
       
  2179 "
       
  2180 ImageMasterParent := nil
       
  2181 "
       
  2182 
       
  2183 
       
  2184 ! !
       
  2185 
       
  2186 !UIPainter::TreeView class methodsFor:'documentation'!
       
  2187 
       
  2188 documentation
       
  2189 "
       
  2190     selection in tree view; only used by the UIPainter
       
  2191 
       
  2192     [see also:]
       
  2193         SelectionInTreeView
       
  2194         SelectionInTree
       
  2195         TreeItem
       
  2196         UIPainter
       
  2197 
       
  2198     [author:]
       
  2199         Claus Atzkern
       
  2200 "
       
  2201 
       
  2202 
       
  2203 ! !
       
  2204 
       
  2205 !UIPainter::TreeView methodsFor:'accessing'!
       
  2206 
       
  2207 canvas
       
  2208     "returns the canvas( UIPainter )
       
  2209     "
       
  2210   ^ model root contents view
       
  2211 
       
  2212 
       
  2213 !
       
  2214 
       
  2215 canvas:aCanvas
       
  2216     "install canvas( UIPainter )
       
  2217     "
       
  2218     |props|
       
  2219 
       
  2220     props := UIPainterView::ViewProperty new.
       
  2221     props view:aCanvas.
       
  2222     model root:(TreeItem name:'Canvas' contents:props).
       
  2223     model root expand.
       
  2224     self enableChannel:(aCanvas enableChannel).
       
  2225 
       
  2226 ! !
       
  2227 
       
  2228 !UIPainter::TreeView methodsFor:'accessing property'!
       
  2229 
       
  2230 propertiesDo:aOneArgBlock
       
  2231     "evaluate the argument a block on each property
       
  2232     "
       
  2233     self allItemsDo:[:anItem| aOneArgBlock value:(anItem contents)]
       
  2234 
       
  2235 
       
  2236 !
       
  2237 
       
  2238 propertyDetect:aOneArgBlock
       
  2239     "evaluate the block on each property
       
  2240     "
       
  2241     self allItemsDo:[:anItem|
       
  2242         (aOneArgBlock value:(anItem contents)) ifTrue:[^ anItem contents]
       
  2243     ].
       
  2244   ^ nil
       
  2245 
       
  2246 !
       
  2247 
       
  2248 propertySelected
       
  2249     "returns current selected property or nil in case of multi selection
       
  2250      or empty selection
       
  2251     "
       
  2252     |idx|
       
  2253 
       
  2254     selection size == 1 ifTrue:[
       
  2255         (idx := selection first) ~~ 1 ifTrue:[          "canvas: not yet supported"
       
  2256             ^ (listOfNodes at:idx) contents
       
  2257         ]
       
  2258     ].
       
  2259   ^ nil
       
  2260 
       
  2261 ! !
       
  2262 
       
  2263 !UIPainter::TreeView methodsFor:'adding & removing'!
       
  2264 
       
  2265 addProperty:aProperty
       
  2266     "add a new item
       
  2267     "
       
  2268     |prnt child canvas view|
       
  2269 
       
  2270     child  := TreeItem name:(aProperty name) contents:aProperty.
       
  2271     view   := aProperty view.
       
  2272     canvas := self canvas.
       
  2273 
       
  2274     [ ((view := view superView) notNil and:[(prnt := self itemOfView:view) isNil])
       
  2275     ] whileTrue.
       
  2276 
       
  2277     prnt isNil ifTrue:[
       
  2278         prnt := model root
       
  2279     ].
       
  2280     model add:child below:prnt.
       
  2281 
       
  2282 
       
  2283 !
       
  2284 
       
  2285 removeAll
       
  2286     "remove all items other than canvas
       
  2287     "
       
  2288     lastDrawnMaster := nil.
       
  2289 
       
  2290     self canvas subViews copy do:[:aView|
       
  2291         (aView isKindOf:InputView) ifFalse:[aView destroy]
       
  2292     ].
       
  2293     model root children:(OrderedCollection new).
       
  2294     model recomputeList.
       
  2295     self selection:nil.
       
  2296 
       
  2297 
       
  2298 !
       
  2299 
       
  2300 removeView:aView
       
  2301     "remove a view
       
  2302     "
       
  2303     |item spv|
       
  2304 
       
  2305     item := self itemOfView:aView.
       
  2306 
       
  2307     item notNil ifTrue:[
       
  2308         spv := aView superView.
       
  2309         aView destroy.
       
  2310         spv sizeChanged:nil.
       
  2311         model remove:item
       
  2312     ]
       
  2313 
       
  2314 
       
  2315 ! !
       
  2316 
       
  2317 !UIPainter::TreeView methodsFor:'canvas selection'!
       
  2318 
       
  2319 cvsSelection:aSelection
       
  2320     "canvas changed its selection
       
  2321     "
       
  2322     |sel list rcLt|
       
  2323 
       
  2324     list := OrderedCollection new.
       
  2325 
       
  2326     aSelection isNil ifFalse:[
       
  2327         aSelection isCollection ifTrue:[
       
  2328             aSelection notNil ifTrue:[sel := aSelection]
       
  2329         ] ifFalse:[
       
  2330             sel := Array with:aSelection
       
  2331         ]
       
  2332     ].
       
  2333 
       
  2334     sel notNil ifTrue:[
       
  2335         rcLt := false.
       
  2336 
       
  2337         sel do:[:aView||item|
       
  2338             (item := self itemOfView:aView) notNil ifTrue:[
       
  2339                 list add:item.
       
  2340 
       
  2341                 [(item := item parent) notNil] whileTrue:[
       
  2342                     item hidden ifTrue:[
       
  2343                         rcLt := true.
       
  2344                         item expand.
       
  2345                     ]
       
  2346                 ]
       
  2347             ]
       
  2348         ].
       
  2349         rcLt ifTrue:[model recomputeList].
       
  2350         sel := list collect:[:anItem| listOfNodes findFirst:[:el| el == anItem]]
       
  2351     ] ifFalse:[
       
  2352         sel := list
       
  2353     ].
       
  2354     self cvsEventsDisabledDo:[ self selection:sel ].            
       
  2355 
       
  2356 
       
  2357 
       
  2358 
       
  2359 !
       
  2360 
       
  2361 cvsSelectionAdd:aView
       
  2362     "canvas adds a view to current selection
       
  2363     "
       
  2364     |parent item rcLt oldSel|
       
  2365 
       
  2366     item := self itemOfView:aView.
       
  2367 
       
  2368     item notNil ifTrue:[
       
  2369         parent := item.
       
  2370 
       
  2371         [ (parent := parent parent) notNil ] whileTrue:[
       
  2372             parent hidden ifTrue:[
       
  2373                 rcLt := true.
       
  2374                 parent expand.
       
  2375             ]
       
  2376         ].
       
  2377         rcLt == true ifTrue:[model recomputeList].
       
  2378 
       
  2379         oldSel := selection copy.
       
  2380         self addToSelection:(listOfNodes findFirst:[:el| el == item]).
       
  2381         self selectionChangedFrom:oldSel
       
  2382     ].            
       
  2383 
       
  2384 
       
  2385 
       
  2386 !
       
  2387 
       
  2388 cvsSelectionRemove:aView
       
  2389     "canvas removes a view from current selection
       
  2390     "
       
  2391     |parent item rcLt oldSel|
       
  2392 
       
  2393     item := self itemOfView:aView.
       
  2394 
       
  2395     item notNil ifTrue:[
       
  2396         parent := item.
       
  2397 
       
  2398         [ (parent := parent parent) notNil ] whileTrue:[
       
  2399             parent hidden ifTrue:[
       
  2400                 rcLt := true.
       
  2401                 parent expand.
       
  2402             ]
       
  2403         ].
       
  2404         rcLt == true ifTrue:[model recomputeList].
       
  2405 
       
  2406         oldSel := selection copy.
       
  2407         self removeFromSelection:(listOfNodes findFirst:[:el| el == item]).
       
  2408         self selectionChangedFrom:oldSel
       
  2409     ].            
       
  2410 
       
  2411 
       
  2412 
       
  2413 ! !
       
  2414 
       
  2415 !UIPainter::TreeView methodsFor:'change & update'!
       
  2416 
       
  2417 layoutChanged
       
  2418     "layout of any component changed; in case of single selection, the
       
  2419      application will be informed to update its layout
       
  2420     "
       
  2421     selection size == 1 ifTrue:[
       
  2422         self application layoutChanged
       
  2423     ]
       
  2424 
       
  2425 
       
  2426 !
       
  2427 
       
  2428 propertyChanged:aProperty
       
  2429     "property of view derived from argument a property changed
       
  2430     "
       
  2431     |item idx end|
       
  2432 
       
  2433     item := self itemOfView:(aProperty view).
       
  2434 
       
  2435     item notNil ifTrue:[
       
  2436         item contents:aProperty.
       
  2437 
       
  2438         item name = aProperty name ifFalse:[
       
  2439             idx := self firstLineShown.
       
  2440 
       
  2441             (end := self lastLineShown) > listOfNodes size ifTrue:[
       
  2442                 end := listOfNodes size
       
  2443             ].
       
  2444             item name:aProperty name.
       
  2445 
       
  2446             [idx <= end] whileTrue:[
       
  2447                 (listOfNodes at:idx) == item ifTrue:[
       
  2448                     self redrawLine:idx.                "/ is visible; redraw line
       
  2449                     end := 0
       
  2450                 ] ifFalse:[
       
  2451                     idx := idx + 1
       
  2452                 ]
       
  2453             ]
       
  2454         ].
       
  2455 
       
  2456         self selectedNode == item ifTrue:[              "/ inform application
       
  2457             self application treeViewChanged
       
  2458         ]
       
  2459     ].
       
  2460 
       
  2461 
       
  2462 ! !
       
  2463 
       
  2464 !UIPainter::TreeView methodsFor:'drag & drop'!
       
  2465 
       
  2466 canDrop:anObjectOrCollection
       
  2467     "can drop ? delegate to canvas
       
  2468     "
       
  2469   ^ self canvas canDrop:anObjectOrCollection
       
  2470 !
       
  2471 
       
  2472 drop:anObjectOrCollection at:aPoint
       
  2473     "drop objects ? delegate to canvas
       
  2474     "
       
  2475     self canvas drop:anObjectOrCollection at:aPoint
       
  2476 ! !
       
  2477 
       
  2478 !UIPainter::TreeView methodsFor:'event processing'!
       
  2479 
       
  2480 cvsEventsDisabledDo:aBlock
       
  2481     "evaluate the block without raising selection changed notifications
       
  2482      to canvas
       
  2483     "
       
  2484     |restoreCvsEvents|
       
  2485 
       
  2486     restoreCvsEvents  := cvsEventsDisabled.
       
  2487     cvsEventsDisabled := true.
       
  2488     aBlock value.
       
  2489     cvsEventsDisabled := restoreCvsEvents.
       
  2490 
       
  2491 
       
  2492 !
       
  2493 
       
  2494 cvsSetupListDo:aBlock
       
  2495     "evaluate block without handling notifications from model; after evaluation
       
  2496      the new list will be recomputed
       
  2497     "
       
  2498     model removeDependent:self.
       
  2499 
       
  2500     self cvsEventsDisabledDo:[
       
  2501         self selection:nil.
       
  2502         aBlock value
       
  2503     ].
       
  2504     model addDependent:self.
       
  2505     model recomputeList.
       
  2506 
       
  2507 !
       
  2508 
       
  2509 doubleClicked
       
  2510     "disable collapse of canvas item
       
  2511     "
       
  2512     self selectedNode == model root ifFalse:[
       
  2513         super doubleClicked
       
  2514     ]
       
  2515 
       
  2516 
       
  2517 ! !
       
  2518 
       
  2519 !UIPainter::TreeView methodsFor:'initialization'!
       
  2520 
       
  2521 initialize
       
  2522     "initialization; set multiple select and model
       
  2523     "
       
  2524     super initialize.
       
  2525     self multipleSelectOk:true.
       
  2526     self model:(SelectionInTree new).
       
  2527     cvsEventsDisabled := false.
       
  2528 
       
  2529 
       
  2530 ! !
       
  2531 
       
  2532 !UIPainter::TreeView methodsFor:'private'!
       
  2533 
       
  2534 allItemsDo:aOneArgBlock
       
  2535     "evaluate the argument a block on each item other than the canvas
       
  2536     "
       
  2537     model root allChildrenDo:aOneArgBlock
       
  2538 
       
  2539 
       
  2540 !
       
  2541 
       
  2542 figureFor:aNode
       
  2543     "returns image for an item; testing whether item is the first
       
  2544      entry into the selection
       
  2545     "
       
  2546     |master|
       
  2547 
       
  2548     selection size == 0 ifFalse:[
       
  2549         master := listOfNodes at:(selection first).
       
  2550 
       
  2551         aNode == master ifTrue:[
       
  2552             lastDrawnMaster := master.
       
  2553             aNode children size == 0 ifTrue:[
       
  2554                 imageMasterChild isNil ifTrue:[
       
  2555                     imageMasterChild := (self class imageMasterChild) onDevice:device.
       
  2556                 ].
       
  2557               ^ imageMasterChild
       
  2558             ].
       
  2559             imageMasterParent isNil ifTrue:[
       
  2560                 imageMasterParent := (self class imageMasterParent) onDevice:device.
       
  2561             ].
       
  2562           ^ imageMasterParent
       
  2563         ]
       
  2564     ].
       
  2565     ^ super figureFor:aNode
       
  2566 
       
  2567 
       
  2568 !
       
  2569 
       
  2570 itemOfView:aView
       
  2571     "returns item assigned to view or nil
       
  2572     "
       
  2573     aView notNil ifTrue:[
       
  2574         self allItemsDo:[:anItem|
       
  2575             (anItem contents view == aView) ifTrue:[^ anItem]
       
  2576         ]
       
  2577     ].
       
  2578   ^ nil
       
  2579 
       
  2580 
       
  2581 !
       
  2582 
       
  2583 selectNode:aNode
       
  2584     "change selection to a node
       
  2585     "
       
  2586     self selection:(listOfNodes findFirst:[:el| el == aNode])
       
  2587 
       
  2588 
       
  2589 !
       
  2590 
       
  2591 selectionChangedFrom:oldSelection
       
  2592     "selection has changed. update master selection and raise notification
       
  2593      to canvas in case of enabled cvs events
       
  2594     "
       
  2595     |sel|
       
  2596 
       
  2597     super selectionChangedFrom:oldSelection.
       
  2598 
       
  2599     cvsEventsDisabled ifFalse:[
       
  2600         selection notNil ifTrue:[
       
  2601             sel := selection collect:[:i| (listOfNodes at:i) contents view].
       
  2602         ] ifFalse:[
       
  2603             sel := #()
       
  2604         ].
       
  2605         self canvas updateSelectionFromModel:sel.
       
  2606     ].
       
  2607 
       
  2608     selection size ~~ 0 ifTrue:[
       
  2609         sel := selection first.
       
  2610 
       
  2611         (listOfNodes at:sel) == lastDrawnMaster ifFalse:[
       
  2612             self redrawLine:sel
       
  2613         ]
       
  2614     ]
       
  2615 
       
  2616 
       
  2617 ! !
       
  2618 
       
  2619 !UIPainter::TreeView methodsFor:'queries'!
       
  2620 
       
  2621 canStepIn
       
  2622     "returns true if can step in
       
  2623     "
       
  2624     |item prnt|
       
  2625 
       
  2626     (     (item := self selectedNode) isNil
       
  2627       or:[(prnt := item parent) isNil
       
  2628       or:[(prnt := prnt childAt:((prnt indexOfChild:item) + 1)) isNil
       
  2629       or:[prnt contents spec class supportsSubComponents not]]]
       
  2630     ) ifTrue:[
       
  2631         ^ false
       
  2632     ].
       
  2633   ^ true
       
  2634 !
       
  2635 
       
  2636 canStepOut
       
  2637     |item prnt|
       
  2638 
       
  2639     (     (item := self selectedNode) isNil
       
  2640       or:[(prnt := item parent) isNil
       
  2641       or:[prnt parent isNil]]
       
  2642     ) ifTrue:[
       
  2643         ^ false
       
  2644     ].
       
  2645   ^ true
       
  2646 !
       
  2647 
       
  2648 hasValidSelection
       
  2649     "returns true if any selection exists other than root
       
  2650     "
       
  2651     |size|
       
  2652 
       
  2653     (size := selection size) > 1 ifFalse:[
       
  2654         (size == 0 or:[self isInSelection:1]) ifTrue:[
       
  2655             ^ false
       
  2656         ]
       
  2657     ].
       
  2658   ^ true
       
  2659 ! !
       
  2660 
       
  2661 !UIPainter::TreeView methodsFor:'user interactions'!
       
  2662 
       
  2663 doStepIn
       
  2664     |item prnt canvas|
       
  2665 
       
  2666     (     (item := self selectedNode) isNil
       
  2667       or:[(prnt := item parent) isNil
       
  2668       or:[(prnt := prnt childAt:((prnt indexOfChild:item) + 1)) isNil
       
  2669       or:[prnt contents spec class supportsSubComponents not]]]
       
  2670     ) ifFalse:[
       
  2671         canvas := self canvas.
       
  2672         canvas deleteSelection.
       
  2673         canvas setSelection:(prnt contents view) withRedraw:false.
       
  2674         canvas pasteWithLayout.
       
  2675     ]
       
  2676 !
       
  2677 
       
  2678 doStepOut
       
  2679     |item next prnt prop spVw index canvas to|
       
  2680 
       
  2681     (     (item := self selectedNode) isNil
       
  2682       or:[(prnt := item parent) isNil
       
  2683       or:[(next := prnt parent) isNil]]
       
  2684     ) ifTrue:[
       
  2685         ^ self
       
  2686     ].
       
  2687     model removeDependent:self.
       
  2688 
       
  2689     canvas := self canvas.
       
  2690     canvas deleteSelection.
       
  2691     canvas setSelection:(next contents view) withRedraw:false.
       
  2692     canvas pasteWithLayout.
       
  2693 
       
  2694 !
       
  2695 
       
  2696 doStepOver:anIndex
       
  2697     "move child 'anOffset' forward or backward in list of children
       
  2698     "
       
  2699     |item idx size prnt spVw view|
       
  2700 
       
  2701     (    (item := self selectedNode) isNil
       
  2702      or:[(prnt := item parent) isNil
       
  2703      or:[(size := prnt children size) < 2]]
       
  2704     ) ifFalse:[
       
  2705         idx := prnt indexOfChild:item.
       
  2706 
       
  2707         model removeDependent:self.
       
  2708         model removeSelection.
       
  2709         selection := nil.
       
  2710         model addDependent:self.
       
  2711         idx := idx + anIndex.
       
  2712 
       
  2713         idx < 1 ifTrue:[idx := size]
       
  2714                ifFalse:[idx > size ifTrue:[idx := 1]].
       
  2715 
       
  2716         model add:item beforeIndex:idx below:prnt.
       
  2717         idx  := prnt indexOfChild:item.
       
  2718         view := item contents view.
       
  2719         spVw := view superView.
       
  2720 
       
  2721      "/ input view might by contained in sequence
       
  2722         ((size := self canvas findInputViewIn:spVw) ~~ 0 and:[idx >= size]) ifTrue:[
       
  2723             idx := idx + 1
       
  2724         ].
       
  2725         spVw changeSequenceOrderFor:view to:idx.
       
  2726 
       
  2727         spVw specClass isLayoutContainer ifFalse:[
       
  2728             spVw subViews do:[:v| v raise ].
       
  2729             self canvas inputView raise
       
  2730         ].
       
  2731         self selectNode:item.
       
  2732     ]
       
  2733 ! !
       
  2734 
  1763 !UIPainter class methodsFor:'documentation'!
  2735 !UIPainter class methodsFor:'documentation'!
  1764 
  2736 
  1765 version
  2737 version
  1766     ^ '$Header$'
  2738     ^ '$Header$'
  1767 ! !
  2739 ! !