Tools__InternationalLanguageTranslationEditor.st
changeset 2049 d10762e5d924
parent 2048 dcec4e818069
child 2050 998f72439bfc
equal deleted inserted replaced
2048:dcec4e818069 2049:d10762e5d924
    10 		languageShownHolders dataSetView lastExtractedClass
    10 		languageShownHolders dataSetView lastExtractedClass
    11 		lastExtractedApplicationClass stopApplicationIconVisibleHolder
    11 		lastExtractedApplicationClass stopApplicationIconVisibleHolder
    12 		monitoredApplication originalTextModifiedHolder
    12 		monitoredApplication originalTextModifiedHolder
    13 		languageTextModifiedHolder languageTextAcceptHolder
    13 		languageTextModifiedHolder languageTextAcceptHolder
    14 		inSingleFileMode lastExtractedProject lastLanguage
    14 		inSingleFileMode lastExtractedProject lastLanguage
    15 		lastSelectedKey'
    15 		lastSelectedKey autoAccept languageEditor selectedColIndexHolder'
    16 	classVariableNames:'LastExtractedClass LastExtractedApplicationClass
    16 	classVariableNames:'LastExtractedClass LastExtractedApplicationClass
    17 		LastExtractedProject'
    17 		LastExtractedProject'
    18 	poolDictionaries:''
    18 	poolDictionaries:''
    19 	category:'Interface-UIPainter'
    19 	category:'Interface-UIPainter'
    20 !
    20 !
    26 	privateIn:InternationalLanguageTranslationEditor
    26 	privateIn:InternationalLanguageTranslationEditor
    27 !
    27 !
    28 
    28 
    29 Collection subclass:#KeyStringsToLanguageMappings
    29 Collection subclass:#KeyStringsToLanguageMappings
    30 	instanceVariableNames:'keys keyInfo perLanguageInfo perLanguageMappings languageMappings
    30 	instanceVariableNames:'keys keyInfo perLanguageInfo perLanguageMappings languageMappings
    31 		languages'
    31 		languages rowPerKey'
    32 	classVariableNames:''
    32 	classVariableNames:''
    33 	poolDictionaries:''
    33 	poolDictionaries:''
    34 	privateIn:InternationalLanguageTranslationEditor
    34 	privateIn:InternationalLanguageTranslationEditor
    35 !
    35 !
    36 
    36 
   110        (WindowSpec
   110        (WindowSpec
   111           label: 'InternationalLanguageTranslationEditor'
   111           label: 'InternationalLanguageTranslationEditor'
   112           name: 'InternationalLanguageTranslationEditor'
   112           name: 'InternationalLanguageTranslationEditor'
   113           min: (Point 10 10)
   113           min: (Point 10 10)
   114           max: (Point 1024 768)
   114           max: (Point 1024 768)
   115           bounds: (Rectangle 0 0 640 400)
   115           bounds: (Rectangle 0 0 636 396)
   116           menu: mainMenu
   116           menu: mainMenu
   117         )
   117         )
   118         component: 
   118         component: 
   119        (SpecCollection
   119        (SpecCollection
   120           collection: (
   120           collection: (
   135                     model: selectedKeyRow
   135                     model: selectedKeyRow
   136                     hasHorizontalScrollBar: true
   136                     hasHorizontalScrollBar: true
   137                     hasVerticalScrollBar: true
   137                     hasVerticalScrollBar: true
   138                     dataList: keyStringAndLanguageSelectionTable
   138                     dataList: keyStringAndLanguageSelectionTable
   139                     columnHolder: keyStringAndLanguageSelectionTableColumnDescriptionHolder
   139                     columnHolder: keyStringAndLanguageSelectionTableColumnDescriptionHolder
       
   140                     beDependentOfRows: true
   140                     columnAdaptor: yourself
   141                     columnAdaptor: yourself
   141                     postBuildCallback: postBuildDataSet:
   142                     postBuildCallback: postBuildDataSet:
   142                   )
   143                   )
   143                  (ViewSpec
   144                  (ViewSpec
   144                     name: 'Box1'
   145                     name: 'Box1'
   182                           model: languageTextHolder
   183                           model: languageTextHolder
   183                           hasHorizontalScrollBar: true
   184                           hasHorizontalScrollBar: true
   184                           hasVerticalScrollBar: true
   185                           hasVerticalScrollBar: true
   185                           acceptChannel: languageTextAcceptHolder
   186                           acceptChannel: languageTextAcceptHolder
   186                           modifiedChannel: languageTextModifiedHolder
   187                           modifiedChannel: languageTextModifiedHolder
       
   188                           postBuildCallback: languageEditorBuilt:
   187                         )
   189                         )
   188                        )
   190                        )
   189                      
   191                      
   190                     )
   192                     )
   191                   )
   193                   )
   466 
   468 
   467     "Do not manually edit this!! If it is corrupted,
   469     "Do not manually edit this!! If it is corrupted,
   468      the DataSetBuilder may not be able to read the specification."
   470      the DataSetBuilder may not be able to read the specification."
   469 
   471 
   470     "
   472     "
   471      DataSetBuilder new openOnClass:Tools::InternationalLanguageTranslationEditor andSelector:#keyTableColumn
   473      DataSetBuilder new openOnClass:Tools::InternationalLanguageTranslationEditor andSelector:#languageTableColumn
   472     "
   474     "
   473 
   475 
   474     <resource: #tableColumns>
   476     <resource: #tableColumns>
   475 
   477 
   476     ^#(
   478     ^#(
   477               #(DataSetColumnSpec
   479       (DataSetColumnSpec
   478                  label: #lang
   480          label: lang
   479                  labelAlignment: center
   481          labelButtonType: Button
   480                  labelButtonType: Button
   482          minWidth: 50
   481                  minWidth: 50
   483          editorType: None
   482                  model: #columnInRow:at:
   484          model: columnInRow:at:
   483                  canSelect: true
   485          backgroundSelector: getBackgroundForRow:rowNr:col:
   484                  isResizeable: true
   486        )
   485                  showRowSeparator: true
       
   486                  showColSeparator: true
       
   487                  backgroundSelector: #getBackgroundForRow:rowNr:col:
       
   488                )
       
   489 
       
   490       )
   487       )
       
   488 ! !
       
   489 
       
   490 !InternationalLanguageTranslationEditor methodsFor:'accessing'!
       
   491 
       
   492 autoAccept
       
   493     autoAccept isNil ifTrue:[autoAccept := true].
       
   494     ^ autoAccept
       
   495 !
       
   496 
       
   497 autoAccept:something
       
   498     autoAccept := something.
       
   499 !
       
   500 
       
   501 newLanguageText
       
   502 "/   languageEditor accept
       
   503 ^self languageTextHolder value isNil 
       
   504     ifTrue:['']
       
   505     ifFalse:[self languageTextHolder value asCollectionOfLines first.]
   491 ! !
   506 ! !
   492 
   507 
   493 !InternationalLanguageTranslationEditor methodsFor:'aspects'!
   508 !InternationalLanguageTranslationEditor methodsFor:'aspects'!
   494 
   509 
   495 keyStringAndLanguageSelectionTable
   510 keyStringAndLanguageSelectionTable
   536 !
   551 !
   537 
   552 
   538 languageTextAcceptHolder
   553 languageTextAcceptHolder
   539     languageTextAcceptHolder isNil ifTrue:[
   554     languageTextAcceptHolder isNil ifTrue:[
   540         languageTextAcceptHolder := false asValue.
   555         languageTextAcceptHolder := false asValue.
       
   556         languageTextAcceptHolder onChangeSend:#languageTextAccepted to:self.
   541     ].
   557     ].
   542     ^ languageTextAcceptHolder.
   558     ^ languageTextAcceptHolder.
       
   559 !
       
   560 
       
   561 languageTextAccepted       
       
   562                                          "
       
   563 self updateLanguageTextModification.    "
       
   564 self selectedKeyRow value: self selectedKeyRow value + 1.
   543 !
   565 !
   544 
   566 
   545 languageTextHolder
   567 languageTextHolder
   546     languageTextHolder isNil ifTrue:[
   568     languageTextHolder isNil ifTrue:[
   547         languageTextHolder := '' asValue.
   569         languageTextHolder := '' asValue.
   594 
   616 
   595 shownLanguages
   617 shownLanguages
   596     shownLanguages isNil ifTrue:[
   618     shownLanguages isNil ifTrue:[
   597         shownLanguages := List new.
   619         shownLanguages := List new.
   598         shownLanguages addAll:(self languagesList).
   620         shownLanguages addAll:(self languagesList).
   599         "/ shownLanguages addDependent:self. 
       
   600         shownLanguages onChangeSend:#shownLanguagesChanged to:self.
   621         shownLanguages onChangeSend:#shownLanguagesChanged to:self.
   601     ].
   622     ].
   602     ^ shownLanguages.
   623     ^ shownLanguages.
   603 !
   624 !
   604 
   625 
   605 stopApplicationIconVisibleHolder
   626 stopApplicationIconVisibleHolder
   606     stopApplicationIconVisibleHolder isNil ifTrue:[
   627     stopApplicationIconVisibleHolder isNil ifTrue:[
   607         stopApplicationIconVisibleHolder := false asValue.
   628         stopApplicationIconVisibleHolder := false asValue.
   608     ].
   629     ].
   609     ^ stopApplicationIconVisibleHolder.
   630     ^ stopApplicationIconVisibleHolder.
       
   631 !
       
   632 
       
   633 updateLanguageAndKeySelection
       
   634 
       
   635     |rowSelectionIndex colSelectionIndex language selectedKey originalText languageText|
       
   636 
       
   637     colSelectionIndex := dataSetView selectedColIndex.
       
   638     language := colSelectionIndex > 1 ifTrue:[ shownLanguages at:colSelectionIndex-1 ] ifFalse:nil.
       
   639 
       
   640     rowSelectionIndex := self selectedKeyRow value.
       
   641     rowSelectionIndex ~~ 0 ifTrue:[
       
   642         selectedKey := keyStringsToLanguageMappings keyAt:rowSelectionIndex.
       
   643         originalText := selectedKey storeString.
       
   644         language notNil ifTrue:[
       
   645             languageText := keyStringsToLanguageMappings at:selectedKey language:language.
       
   646             languageText notNil ifTrue:[
       
   647                 languageText := languageText storeString.
       
   648             ]
       
   649         ]
       
   650     ].              
       
   651     self originalTextHolder value:originalText.
       
   652     self languageTextHolder value:languageText.
       
   653     lastLanguage := language.
       
   654     lastSelectedKey := selectedKey. 
   610 ! !
   655 ! !
   611 
   656 
   612 !InternationalLanguageTranslationEditor methodsFor:'change & update'!
   657 !InternationalLanguageTranslationEditor methodsFor:'change & update'!
   613 
   658 
   614 update:something with:aParameter from:changedObject
   659 update:something with:aParameter from:changedObject
   615     changedObject == shownLanguages ifTrue:[
   660     changedObject == shownLanguages ifTrue:[
   616          self shownLanguagesChanged.
   661          self shownLanguagesChanged.
   617          ^ self.
   662          ^ self.
       
   663     ].
       
   664     changedObject == languageTextAcceptHolder ifTrue:[
       
   665          self updateLanguageTextModification.
       
   666          ^ self.
       
   667     ].
       
   668 !
       
   669 
       
   670 updateKeyStringsToLanguageMappings           
       
   671 
       
   672       keyStringsToLanguageMappings 
       
   673         at:lastSelectedKey 
       
   674         language:lastLanguage 
       
   675         put: self newLanguageText.
       
   676 !
       
   677 
       
   678 updateLanguageTextModification 
       
   679      self languageTextModifiedHolder value ifTrue:[ 
       
   680         (self autoAccept or:[Dialog confirm:'Accept changed translation ?']) ifTrue:[
       
   681             self languageTextModifiedHolder value:false.
       
   682             self languageTextHolder value:languageEditor contents.
       
   683             lastLanguage notNil ifTrue:[self updateKeyStringsToLanguageMappings.]
       
   684         ]
       
   685     ].
       
   686 !
       
   687 
       
   688 updateOriginalTextModification
       
   689 
       
   690 |answer|
       
   691 
       
   692     self originalTextModifiedHolder value ifTrue:[ 
       
   693         answer := OptionBox 
       
   694                       request:'Accept changed original text (key) ?' 
       
   695                       label:'Original text (key) changed'
       
   696                       image:(WarningBox iconBitmap)
       
   697                       buttonLabels:#('Cancel' 'Accept' 'Accept As New')
       
   698                       values:#(nil #accept #acceptAsNew)
       
   699                       default:#acceptAsNew.
       
   700 
       
   701         answer isNil ifTrue:[^ self originalTextModifiedHolder value:false. ].
       
   702         answer == #accept ifTrue:[
       
   703 self halt.        ].
       
   704         answer == #acceptAsNew ifTrue:[
       
   705 self halt.        ].
   618     ].
   706     ].
   619 ! !
   707 ! !
   620 
   708 
   621 !InternationalLanguageTranslationEditor methodsFor:'initialization & release'!
   709 !InternationalLanguageTranslationEditor methodsFor:'initialization & release'!
   622 
   710 
   638     modified := false.
   726     modified := false.
   639     inSingleFileMode := false.
   727     inSingleFileMode := false.
   640     super initialize
   728     super initialize
   641 !
   729 !
   642 
   730 
       
   731 languageEditorBuilt:aView
       
   732     languageEditor := aView.
       
   733 !
       
   734 
   643 postBuildDataSet:aView
   735 postBuildDataSet:aView
   644     dataSetView := aView
   736     dataSetView := aView.
       
   737     aView selectedColIndexHolder onChangeSend:#selectionChanged to:self.
   645 ! !
   738 ! !
   646 
   739 
   647 !InternationalLanguageTranslationEditor methodsFor:'menu actions'!
   740 !InternationalLanguageTranslationEditor methodsFor:'menu actions'!
   648 
   741 
   649 addLanguage
   742 addLanguage
  1260     ^ row keyString
  1353     ^ row keyString
  1261 ! !
  1354 ! !
  1262 
  1355 
  1263 !InternationalLanguageTranslationEditor methodsFor:'user actions'!
  1356 !InternationalLanguageTranslationEditor methodsFor:'user actions'!
  1264 
  1357 
  1265 selectionChanged
  1358 selectionChanged                
  1266     |rowSelectionIndex colSelectionIndex language selectedKey originalText languageText
  1359 
  1267      answer newText autoAccept|
  1360    self updateOriginalTextModification.
  1268 
  1361    self updateLanguageTextModification.
  1269     autoAccept := true.
  1362    self updateLanguageAndKeySelection.
  1270 
  1363 
  1271     self originalTextModifiedHolder value ifTrue:[ 
  1364    self originalTextModifiedHolder value:false.
  1272         answer := OptionBox 
  1365    self languageTextModifiedHolder value:false.
  1273                       request:'Accept changed original text (key) ?' 
       
  1274                       label:'Original text (key) changed'
       
  1275                       image:(WarningBox iconBitmap)
       
  1276                       buttonLabels:#('Cancel' 'Accept' 'Accept As New')
       
  1277                       values:#(nil #accept #acceptAsNew)
       
  1278                       default:#acceptAsNew.
       
  1279 
       
  1280         answer isNil ifTrue:[^ self ].
       
  1281         answer == #accept ifTrue:[
       
  1282 self halt.        ].
       
  1283         answer == #acceptAsNew ifTrue:[
       
  1284 self halt.        ].
       
  1285     ].
       
  1286     self languageTextModifiedHolder value ifTrue:[ 
       
  1287         (autoAccept or:[Dialog confirm:'Accept changed translation ?']) ifTrue:[
       
  1288             languageTextAcceptHolder value:true.
       
  1289 self halt.
       
  1290             lastLanguage notNil ifTrue:[
       
  1291                 newText := self languageTextHolder value asCollectionOfLines first.
       
  1292                 keyStringsToLanguageMappings at:lastSelectedKey language:lastLanguage put:newText.
       
  1293             ]
       
  1294         ]
       
  1295     ].
       
  1296 
       
  1297     colSelectionIndex := dataSetView selectedColIndex.
       
  1298     language := colSelectionIndex > 1 ifTrue:[ shownLanguages at:colSelectionIndex-1 ] ifFalse:nil.
       
  1299 
       
  1300     rowSelectionIndex := self selectedKeyRow value.
       
  1301     rowSelectionIndex ~~ 0 ifTrue:[
       
  1302         selectedKey := keyStringsToLanguageMappings keyAt:rowSelectionIndex.
       
  1303         originalText := selectedKey storeString.
       
  1304         language notNil ifTrue:[
       
  1305             languageText := keyStringsToLanguageMappings at:selectedKey language:language.
       
  1306             languageText notNil ifTrue:[
       
  1307                 languageText := languageText storeString.
       
  1308             ]
       
  1309         ]
       
  1310     ].
       
  1311 
       
  1312     self originalTextHolder value:originalText.
       
  1313     self languageTextHolder value:languageText.
       
  1314 
       
  1315     self originalTextModifiedHolder value:false.
       
  1316     self languageTextModifiedHolder value:false.
       
  1317 
       
  1318     lastLanguage := language.
       
  1319     lastSelectedKey := selectedKey.
       
  1320 !
  1366 !
  1321 
  1367 
  1322 shownLanguagesChanged
  1368 shownLanguagesChanged
  1323     self keyStringAndLanguageSelectionTableColumnDescriptionHolder 
  1369     self keyStringAndLanguageSelectionTableColumnDescriptionHolder 
  1324         value:(self keyStringAndLanguageSelectionTableColumnDescription).
  1370         value:(self keyStringAndLanguageSelectionTableColumnDescription).
  1369     ^ (perLanguageMappings at:language) at:aKey ifAbsent:nil
  1415     ^ (perLanguageMappings at:language) at:aKey ifAbsent:nil
  1370 !
  1416 !
  1371 
  1417 
  1372 at:aKey language:language put:value
  1418 at:aKey language:language put:value
  1373     self addKey:aKey.
  1419     self addKey:aKey.
  1374     ^ (perLanguageMappings at:language) at:aKey put:value
  1420     (perLanguageMappings at:language) at:aKey put:value.
       
  1421     (self rowForKey:aKey) changed
  1375 !
  1422 !
  1376 
  1423 
  1377 keyAt:index
  1424 keyAt:index
  1378     ^ keys at:index.
  1425     ^ keys at:index.
  1379 !
  1426 !
  1396         eachMapping removeKey:aKey ifAbsent:[].
  1443         eachMapping removeKey:aKey ifAbsent:[].
  1397     ].
  1444     ].
  1398     self changed.
  1445     self changed.
  1399 !
  1446 !
  1400 
  1447 
       
  1448 rowForKey:aKey
       
  1449     ^ rowPerKey 
       
  1450             at:aKey
       
  1451             ifAbsentPut:[InternationalLanguageTranslationEditor::LanguageMappingRow new 
       
  1452                             key:aKey; mappings:self].
       
  1453 !
       
  1454 
  1401 size
  1455 size
  1402     ^ keys size
  1456     ^ keys size
  1403 ! !
  1457 ! !
  1404 
  1458 
  1405 !InternationalLanguageTranslationEditor::KeyStringsToLanguageMappings methodsFor:'enumerating'!
  1459 !InternationalLanguageTranslationEditor::KeyStringsToLanguageMappings methodsFor:'enumerating'!
  1406 
  1460 
  1407 do:aBlock
  1461 do:aBlock
  1408     keys do:[:eachKey |
  1462     keys do:[:eachKey |
  1409         aBlock value:(InternationalLanguageTranslationEditor::LanguageMappingRow new 
  1463         aBlock value:(self rowForKey:eachKey).
  1410                                 key:eachKey; mappings:self).
       
  1411     ].
  1464     ].
  1412 ! !
  1465 ! !
  1413 
  1466 
  1414 !InternationalLanguageTranslationEditor::KeyStringsToLanguageMappings methodsFor:'initialization'!
  1467 !InternationalLanguageTranslationEditor::KeyStringsToLanguageMappings methodsFor:'initialization'!
  1415 
  1468 
  1418 
  1471 
  1419     keys := OrderedSet new.
  1472     keys := OrderedSet new.
  1420     languages := OrderedCollection new.
  1473     languages := OrderedCollection new.
  1421     perLanguageMappings := Dictionary new.
  1474     perLanguageMappings := Dictionary new.
  1422     perLanguageInfo := Dictionary new.
  1475     perLanguageInfo := Dictionary new.
       
  1476     rowPerKey := Dictionary new.
  1423 
  1477 
  1424     self addLanguage:#'de'.
  1478     self addLanguage:#'de'.
  1425     self addLanguage:#'fr'.
  1479     self addLanguage:#'fr'.
  1426     self addLanguage:#'es'.
  1480     self addLanguage:#'es'.
  1427     self addLanguage:(Smalltalk language).
  1481     self addLanguage:(Smalltalk language).