Tools__ChangeSetDiffTool.st
branchjv
changeset 12274 1e0599b8a007
parent 12256 abdcf041d2ce
child 12275 a416cf8a4b50
equal deleted inserted replaced
12273:61082bd39539 12274:1e0599b8a007
    26 "{ Package: 'stx:libtool' }"
    26 "{ Package: 'stx:libtool' }"
    27 
    27 
    28 "{ NameSpace: Tools }"
    28 "{ NameSpace: Tools }"
    29 
    29 
    30 ApplicationModel subclass:#ChangeSetDiffTool
    30 ApplicationModel subclass:#ChangeSetDiffTool
    31 	instanceVariableNames:'diffInfoHolder listHolder singleSelectionHolder diffsetHolder
    31 	instanceVariableNames:'infoPanel diffInfoHolder listHolder singleSelectionHolder
    32 		titleHolder firstColSelectionHolder navigatorPanelSpecHolder
    32 		diffsetHolder titleHolder firstColSelectionHolder
    33 		diffMenuHolder diffsetHolderPrivate selectionHolder
    33 		navigatorPanelSpecHolder diffMenuHolder diffsetHolderPrivate
    34 		versionATextHolder versionBTextHolder versionBaseTextHolder
    34 		selectionHolder versionATextHolder versionBTextHolder
    35 		textDiffToolHolder textDiffToolWindowSpecHolder mergeHolder
    35 		versionBaseTextHolder textDiffToolHolder
    36 		mergeDataHolder showVersionMethodDiffsHolder'
    36 		textDiffToolWindowSpecHolder mergeHolder mergeDataHolder
    37 	classVariableNames:''
    37 		showVersionMethodDiffsHolder showCopyrightMethodDiffsHolder
       
    38 		highlightConflictsHolder hasDiffsetHolder'
       
    39 	classVariableNames:'LastDiffInfo'
    38 	poolDictionaries:''
    40 	poolDictionaries:''
    39 	category:'Interface-Diff'
    41 	category:'Interface-Diff'
    40 !
    42 !
    41 
    43 
    42 SimpleDialog subclass:#OpenDialog
    44 SimpleDialog subclass:#OpenDialog
   177 versionB24x24
   179 versionB24x24
   178 
   180 
   179     ^ToolbarIconLibrary versionB24x24
   181     ^ToolbarIconLibrary versionB24x24
   180 
   182 
   181     "Created: / 24-03-2010 / 20:50:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   183     "Created: / 24-03-2010 / 20:50:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
   184 ! !
       
   185 
       
   186 !ChangeSetDiffTool class methodsFor:'interface opening'!
       
   187 
       
   188 open
       
   189     | tool |
       
   190 
       
   191     tool := self new.
       
   192     tool open.
       
   193     tool window sensor pushUserEvent: #fileMenuOpen for: tool.
       
   194 
       
   195     "Created: / 01-08-2012 / 15:13:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   182 ! !
   196 ! !
   183 
   197 
   184 !ChangeSetDiffTool class methodsFor:'interface specs'!
   198 !ChangeSetDiffTool class methodsFor:'interface specs'!
   185 
   199 
   186 labelSpec
   200 labelSpec
   282                 
   296                 
   283                (SubChannelInfoSpec
   297                (SubChannelInfoSpec
   284                   subAspect: showVersionMethodDiffsHolder
   298                   subAspect: showVersionMethodDiffsHolder
   285                   aspect: showVersionMethodDiffsHolder
   299                   aspect: showVersionMethodDiffsHolder
   286                 )
   300                 )
       
   301                (SubChannelInfoSpec
       
   302                   subAspect: showCopyrightMethodDiffsHolder
       
   303                   aspect: showCopyrightMethodDiffsHolder
       
   304                 )
       
   305                 (SubChannelInfoSpec
       
   306                   subAspect: highlightConflictsHolder
       
   307                   aspect: highlightConflictsHolder
       
   308                 )
   287               )
   309               )
   288               createNewApplication: true
   310               createNewApplication: true
   289               createNewBuilder: false
   311               createNewBuilder: false
   290             )
   312             )
   291            )
   313            )
   292          
   314          
   293         )
   315         )
   294       )
   316       )
       
   317 
       
   318     "Modified: / 01-08-2012 / 17:05:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   295 !
   319 !
   296 
   320 
   297 twoColumnNavigatorSpec
   321 twoColumnNavigatorSpec
   298     "This resource specification was automatically generated
   322     "This resource specification was automatically generated
   299      by the UIPainter of ST/X."
   323      by the UIPainter of ST/X."
   355                       
   379                       
   356                      (SubChannelInfoSpec
   380                      (SubChannelInfoSpec
   357                         subAspect: showVersionMethodDiffsHolder
   381                         subAspect: showVersionMethodDiffsHolder
   358                         aspect: showVersionMethodDiffsHolder
   382                         aspect: showVersionMethodDiffsHolder
   359                       )
   383                       )
       
   384                       (SubChannelInfoSpec
       
   385                   subAspect: showCopyrightMethodDiffsHolder
       
   386                   aspect: showCopyrightMethodDiffsHolder
       
   387                 )
       
   388                 (SubChannelInfoSpec
       
   389                   subAspect: highlightConflictsHolder
       
   390                   aspect: highlightConflictsHolder
       
   391                 )
   360                     )
   392                     )
   361                     createNewApplication: true
   393                     createNewApplication: true
   362                     createNewBuilder: true
   394                     createNewBuilder: true
   363                   )
   395                   )
   364                  (SubCanvasSpec
   396                  (SubCanvasSpec
   389                       
   421                       
   390                      (SubChannelInfoSpec
   422                      (SubChannelInfoSpec
   391                         subAspect: showVersionMethodDiffsHolder
   423                         subAspect: showVersionMethodDiffsHolder
   392                         aspect: showVersionMethodDiffsHolder
   424                         aspect: showVersionMethodDiffsHolder
   393                       )
   425                       )
       
   426                       (SubChannelInfoSpec
       
   427                   subAspect: showCopyrightMethodDiffsHolder
       
   428                   aspect: showCopyrightMethodDiffsHolder
       
   429                 )
       
   430                 (SubChannelInfoSpec
       
   431                   subAspect: highlightConflictsHolder
       
   432                   aspect: highlightConflictsHolder
       
   433                 )
   394                     )
   434                     )
   395                     createNewApplication: true
   435                     createNewApplication: true
   396                     createNewBuilder: true
   436                     createNewBuilder: true
   397                   )
   437                   )
   398                  )
   438                  )
   402             )
   442             )
   403            )
   443            )
   404          
   444          
   405         )
   445         )
   406       )
   446       )
       
   447 
       
   448     "Modified: / 01-08-2012 / 17:05:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
   407 !
   449 !
   408 
   450 
   409 windowSpec
   451 windowSpec
   410     "This resource specification was automatically generated
   452     "This resource specification was automatically generated
   411      by the UIPainter of ST/X."
   453      by the UIPainter of ST/X."
   433           menu: mainMenu
   475           menu: mainMenu
   434         )
   476         )
   435         component: 
   477         component: 
   436        (SpecCollection
   478        (SpecCollection
   437           collection: (
   479           collection: (
       
   480            (SubCanvasSpec
       
   481               name: 'InfoPanel'
       
   482               layout: (LayoutFrame 0 0 0 0 0 1 40 0)
       
   483               level: 0
       
   484               initiallyInvisible: true
       
   485               hasHorizontalScrollBar: false
       
   486               hasVerticalScrollBar: false
       
   487               clientKey: infoPanel
       
   488               createNewBuilder: false
       
   489             )
   438            (UISubSpecification
   490            (UISubSpecification
   439               name: 'Label'
   491               name: 'Label'
   440               layout: (LayoutFrame 0 0 0 0 0 1 56 0)
   492               layout: (LayoutFrame 0 0 0 0 0 1 56 0)
       
   493               initiallyInvisible: true
       
   494               visibilityChannel: hasDiffsetHolder
   441               minorKey: labelSpec
   495               minorKey: labelSpec
   442             )
   496             )
   443            (VariableVerticalPanelSpec
   497            (VariableVerticalPanelSpec
   444               name: 'Panel'
   498               name: 'Panel'
   445               layout: (LayoutFrame 0 0 56 0 0 1 0 1)
   499               layout: (LayoutFrame 0 0 56 0 0 1 0 1)
       
   500               initiallyInvisible: true
       
   501               visibilityChannel: hasDiffsetHolder
   446               showHandle: true
   502               showHandle: true
   447               component: 
   503               component: 
   448              (SpecCollection
   504              (SpecCollection
   449                 collection: (
   505                 collection: (
   450                  (SubCanvasSpec
   506                  (SubCanvasSpec
   453                     hasVerticalScrollBar: false
   509                     hasVerticalScrollBar: false
   454                     specHolder: navigatorPanelSpecHolder
   510                     specHolder: navigatorPanelSpecHolder
   455                     createNewBuilder: false
   511                     createNewBuilder: false
   456                   )
   512                   )
   457                  (SubCanvasSpec
   513                  (SubCanvasSpec
       
   514                     name: 'SubCanvas1'
   458                     specHolder: textDiffToolWindowSpecHolder
   515                     specHolder: textDiffToolWindowSpecHolder
   459                     clientHolder: textDiffToolHolder
   516                     clientHolder: textDiffToolHolder
   460                     createNewBuilder: false
   517                     createNewBuilder: false
   461                   )
   518                   )
   462                  )
   519                  )
   787                (MenuItem
   844                (MenuItem
   788                   label: 'Show Diffs in Version Methods'
   845                   label: 'Show Diffs in Version Methods'
   789                   translateLabel: true
   846                   translateLabel: true
   790                   indication: showVersionMethodDiffsHolder
   847                   indication: showVersionMethodDiffsHolder
   791                 )
   848                 )
       
   849                (MenuItem
       
   850                   label: 'Show Diff in #copyright Methods'
       
   851                   translateLabel: true
       
   852                   indication: showCopyrightMethodDiffsHolder
       
   853                 )
       
   854                (MenuItem
       
   855                   label: 'Highlight Conflicts'
       
   856                   translateLabel: true
       
   857                   indication: highlightConflictsHolder
       
   858                 )
   792                )
   859                )
   793               nil
   860               nil
   794               nil
   861               nil
   795             )
   862             )
   796           )
   863           )
  1042         firstColSelectionHolder := ValueHolder with:nil "defaultValue here".
  1109         firstColSelectionHolder := ValueHolder with:nil "defaultValue here".
  1043     ].
  1110     ].
  1044     ^ firstColSelectionHolder
  1111     ^ firstColSelectionHolder
  1045 !
  1112 !
  1046 
  1113 
       
  1114 hasDiffsetHolder
       
  1115     "return/create the 'hasDiffsetHolder' value holder (automatically generated)"
       
  1116 
       
  1117     hasDiffsetHolder isNil ifTrue:[
       
  1118         hasDiffsetHolder := false asValue
       
  1119     ].
       
  1120     ^ hasDiffsetHolder
       
  1121 
       
  1122     "Modified: / 01-08-2012 / 17:16:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
  1123 !
       
  1124 
       
  1125 hasDiffsetHolder:something
       
  1126     "set the 'hasDiffsetHolder' value holder (automatically generated)"
       
  1127 
       
  1128     hasDiffsetHolder := something.
       
  1129 !
       
  1130 
  1047 hasSelectionHolder
  1131 hasSelectionHolder
  1048 
  1132 
  1049     |holder|
  1133     |holder|
  1050 
  1134 
  1051     (holder := builder bindingAt:#hasSelectionHolder) isNil ifTrue:[
  1135     (holder := builder bindingAt:#hasSelectionHolder) isNil ifTrue:[
  1057 
  1141 
  1058     "Created: / 22-10-2008 / 11:34:36 / Jan Vrany <vranyj1@fel.cvut.cz>"
  1142     "Created: / 22-10-2008 / 11:34:36 / Jan Vrany <vranyj1@fel.cvut.cz>"
  1059     "Modified: / 22-10-2008 / 12:38:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
  1143     "Modified: / 22-10-2008 / 12:38:47 / Jan Vrany <vranyj1@fel.cvut.cz>"
  1060 !
  1144 !
  1061 
  1145 
       
  1146 highlightConflictsHolder
       
  1147     "return/create the 'highlightConflictsHolder' value holder (automatically generated)"
       
  1148 
       
  1149     highlightConflictsHolder isNil ifTrue:[
       
  1150         highlightConflictsHolder := true asValue
       
  1151     ].
       
  1152     ^ highlightConflictsHolder
       
  1153 
       
  1154     "Modified: / 01-08-2012 / 17:07:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
  1155 !
       
  1156 
       
  1157 highlightConflictsHolder:something
       
  1158     "set the 'highlightConflictsHolder' value holder (automatically generated)"
       
  1159 
       
  1160     highlightConflictsHolder := something.
       
  1161 !
       
  1162 
       
  1163 infoPanel
       
  1164     infoPanel isNil ifTrue:[
       
  1165         infoPanel := InlineMessageDialog new
       
  1166     ].
       
  1167     ^ infoPanel
       
  1168 
       
  1169     "Created: / 09-02-2012 / 19:23:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
  1170 !
       
  1171 
  1062 listHolder
  1172 listHolder
  1063     "return/create the 'listHolder' value holder (automatically generated)"
  1173     "return/create the 'listHolder' value holder (automatically generated)"
  1064 
  1174 
  1065     listHolder isNil ifTrue:[
  1175     listHolder isNil ifTrue:[
  1066         listHolder := ValueHolder new.
  1176         listHolder := ValueHolder new.
  1143     ^ selectionHolder
  1253     ^ selectionHolder
  1144 
  1254 
  1145     "Modified (format): / 06-07-2011 / 12:25:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  1255     "Modified (format): / 06-07-2011 / 12:25:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  1146 !
  1256 !
  1147 
  1257 
       
  1258 showCopyrightMethodDiffsHolder
       
  1259     "return/create the 'showCopyrightMethodDiffsHolder' value holder (automatically generated)"
       
  1260 
       
  1261     showCopyrightMethodDiffsHolder isNil ifTrue:[
       
  1262         showCopyrightMethodDiffsHolder := true asValue
       
  1263     ].
       
  1264     ^ showCopyrightMethodDiffsHolder
       
  1265 
       
  1266     "Modified: / 01-08-2012 / 17:06:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
  1267 !
       
  1268 
       
  1269 showCopyrightMethodDiffsHolder:something
       
  1270     "set the 'showCopyrightMethodDiffsHolder' value holder (automatically generated)"
       
  1271 
       
  1272     showCopyrightMethodDiffsHolder := something.
       
  1273 !
       
  1274 
  1148 showVersionMethodDiffsHolder
  1275 showVersionMethodDiffsHolder
  1149     "return/create the 'showVersionMethodDiffsHolder' value holder (automatically generated)"
  1276     "return/create the 'showVersionMethodDiffsHolder' value holder (automatically generated)"
  1150 
  1277 
  1151     showVersionMethodDiffsHolder isNil ifTrue:[
  1278     showVersionMethodDiffsHolder isNil ifTrue:[
  1152         showVersionMethodDiffsHolder := true asValue.
  1279         showVersionMethodDiffsHolder := true asValue.
  1279 
  1406 
  1280 diffInfoChanged
  1407 diffInfoChanged
  1281 
  1408 
  1282     | info |
  1409     | info |
  1283     info := self diffInfoHolder value.
  1410     info := self diffInfoHolder value.
  1284     info read.
  1411     self hasDiffsetHolder value: false.
  1285     self diffset: info diffset.
  1412     info notNil ifTrue:[
  1286     self updateViews
  1413         self infoPanel showProgressLabeled: (resources string:'Reading changesets') while: [
       
  1414             info read.
       
  1415             self diffset: info diffset.
       
  1416             self updateViews.
       
  1417             self hasDiffsetHolder value: true.
       
  1418         ].
       
  1419     ]
  1287 
  1420 
  1288     "Created: / 19-03-2012 / 23:40:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  1421     "Created: / 19-03-2012 / 23:40:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  1289 !
  1422 !
  1290 
  1423 
  1291 diffsetChanged
  1424 diffsetChanged
  1454 
  1587 
  1455 fileMenuOpen
  1588 fileMenuOpen
  1456 
  1589 
  1457     | dlg info |
  1590     | dlg info |
  1458     dlg := OpenDialog new.
  1591     dlg := OpenDialog new.
       
  1592     dlg diffInfo: LastDiffInfo.
  1459     dlg open ifFalse:[^self].
  1593     dlg open ifFalse:[^self].
  1460     info := ChangeSetDiffInfo new.
  1594     info := dlg diffInfo.
  1461     info specA: dlg changeSetASpec.
       
  1462     info specB: dlg changeSetBSpec.
       
  1463     info specBase: dlg changeSetBaseSpec.
       
  1464     info specMerge: dlg changeSetMergedSpec.
       
  1465 
  1595 
  1466     ^self fileMenuOpenOnDiffInfo: info
  1596     ^self fileMenuOpenOnDiffInfo: info
  1467 
  1597 
  1468     "Modified: / 20-03-2012 / 11:12:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  1598     "Modified: / 01-08-2012 / 15:53:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  1469 !
  1599 !
  1470 
  1600 
  1471 fileMenuOpenOnDiffInfo: info
  1601 fileMenuOpenOnDiffInfo: info
  1472 
  1602 
       
  1603     LastDiffInfo := info.    
  1473     self diffInfoHolder value: info
  1604     self diffInfoHolder value: info
  1474 
  1605 
  1475     "Created: / 20-03-2012 / 00:04:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  1606     "Created: / 20-03-2012 / 00:04:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  1476 !
  1607 !
  1477 
  1608 
  2358     ^self changesetSpecBaseHolder value.
  2489     ^self changesetSpecBaseHolder value.
  2359 
  2490 
  2360     "Created: / 20-03-2012 / 00:01:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  2491     "Created: / 20-03-2012 / 00:01:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  2361 !
  2492 !
  2362 
  2493 
       
  2494 changeSetBaseSpec: spec
       
  2495     ^self changesetSpecBaseHolder value: spec
       
  2496 
       
  2497     "Created: / 01-08-2012 / 15:38:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
  2498 !
       
  2499 
  2363 changeSetMerged
  2500 changeSetMerged
  2364 
  2501 
  2365     | specMerged |
  2502     | specMerged |
  2366 
  2503 
  2367     specMerged := self changesetSpecMergedHolder value.
  2504     specMerged := self changesetSpecMergedHolder value.
  2372 
  2509 
  2373 changeSetMergedSpec
  2510 changeSetMergedSpec
  2374     ^self changesetSpecMergedHolder value.
  2511     ^self changesetSpecMergedHolder value.
  2375 
  2512 
  2376     "Created: / 20-03-2012 / 00:01:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  2513     "Created: / 20-03-2012 / 00:01:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
  2514 !
       
  2515 
       
  2516 changeSetMergedSpec: spec
       
  2517     ^self changesetSpecMergedHolder value: spec
       
  2518 
       
  2519     "Created: / 01-08-2012 / 15:38:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
  2520 !
       
  2521 
       
  2522 diffInfo    
       
  2523     "Returns a ChangeSetDiffInfo based on current data"
       
  2524 
       
  2525     | info |
       
  2526     info := ChangeSetDiffInfo new.
       
  2527     info specA: self changeSetASpec.
       
  2528     info specB: self changeSetBSpec.
       
  2529     info specBase: self changeSetBaseSpec.
       
  2530     info specMerge: self changeSetMergedSpec.
       
  2531     ^info
       
  2532 
       
  2533     "Created: / 01-08-2012 / 15:41:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
       
  2534 !
       
  2535 
       
  2536 diffInfo: info
       
  2537     "Sets up dialog for given diff info"
       
  2538 
       
  2539     info isNil ifTrue:[ ^ self ].
       
  2540 
       
  2541     self changeSetASpec: info specA. 
       
  2542     self changeSetBSpec: info specB.
       
  2543     self changeSetBaseSpec: info specBase.
       
  2544     self changeSetMergedSpec: info specMerge.
       
  2545 
       
  2546     "Created: / 01-08-2012 / 15:37:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
  2377 ! !
  2547 ! !
  2378 
  2548 
  2379 !ChangeSetDiffTool::OpenDialog methodsFor:'aspects'!
  2549 !ChangeSetDiffTool::OpenDialog methodsFor:'aspects'!
  2380 
  2550 
  2381 changesetSpecAHolder
  2551 changesetSpecAHolder
  2501 version_CVS
  2671 version_CVS
  2502     ^ '§Header: /cvs/stx/stx/libtool/Tools__ChangeSetDiffTool.st,v 1.5 2011/12/19 08:39:53 vrany Exp §'
  2672     ^ '§Header: /cvs/stx/stx/libtool/Tools__ChangeSetDiffTool.st,v 1.5 2011/12/19 08:39:53 vrany Exp §'
  2503 !
  2673 !
  2504 
  2674 
  2505 version_SVN
  2675 version_SVN
  2506     ^ '$Id: Tools__ChangeSetDiffTool.st 8009 2012-06-22 08:44:31Z vranyj1 $'
  2676     ^ '$Id: Tools__ChangeSetDiffTool.st 8034 2012-08-03 13:08:30Z vranyj1 $'
  2507 ! !
  2677 ! !