--- a/Tools__InternationalLanguageTranslationEditor.st Mon May 15 15:49:52 2006 +0200
+++ b/Tools__InternationalLanguageTranslationEditor.st Fri May 19 19:09:40 2006 +0200
@@ -12,7 +12,7 @@
monitoredApplication originalTextModifiedHolder
languageTextModifiedHolder languageTextAcceptHolder
inSingleFileMode lastExtractedProject lastLanguage
- lastSelectedKey'
+ lastSelectedKey autoAccept languageEditor selectedColIndexHolder'
classVariableNames:'LastExtractedClass LastExtractedApplicationClass
LastExtractedProject'
poolDictionaries:''
@@ -28,7 +28,7 @@
Collection subclass:#KeyStringsToLanguageMappings
instanceVariableNames:'keys keyInfo perLanguageInfo perLanguageMappings languageMappings
- languages'
+ languages rowPerKey'
classVariableNames:''
poolDictionaries:''
privateIn:InternationalLanguageTranslationEditor
@@ -112,7 +112,7 @@
name: 'InternationalLanguageTranslationEditor'
min: (Point 10 10)
max: (Point 1024 768)
- bounds: (Rectangle 0 0 640 400)
+ bounds: (Rectangle 0 0 636 396)
menu: mainMenu
)
component:
@@ -137,6 +137,7 @@
hasVerticalScrollBar: true
dataList: keyStringAndLanguageSelectionTable
columnHolder: keyStringAndLanguageSelectionTableColumnDescriptionHolder
+ beDependentOfRows: true
columnAdaptor: yourself
postBuildCallback: postBuildDataSet:
)
@@ -184,6 +185,7 @@
hasVerticalScrollBar: true
acceptChannel: languageTextAcceptHolder
modifiedChannel: languageTextModifiedHolder
+ postBuildCallback: languageEditorBuilt:
)
)
@@ -468,26 +470,39 @@
the DataSetBuilder may not be able to read the specification."
"
- DataSetBuilder new openOnClass:Tools::InternationalLanguageTranslationEditor andSelector:#keyTableColumn
+ DataSetBuilder new openOnClass:Tools::InternationalLanguageTranslationEditor andSelector:#languageTableColumn
"
<resource: #tableColumns>
^#(
- #(DataSetColumnSpec
- label: #lang
- labelAlignment: center
- labelButtonType: Button
- minWidth: 50
- model: #columnInRow:at:
- canSelect: true
- isResizeable: true
- showRowSeparator: true
- showColSeparator: true
- backgroundSelector: #getBackgroundForRow:rowNr:col:
- )
+ (DataSetColumnSpec
+ label: lang
+ labelButtonType: Button
+ minWidth: 50
+ editorType: None
+ model: columnInRow:at:
+ backgroundSelector: getBackgroundForRow:rowNr:col:
+ )
+ )
+! !
+
+!InternationalLanguageTranslationEditor methodsFor:'accessing'!
- )
+autoAccept
+ autoAccept isNil ifTrue:[autoAccept := true].
+ ^ autoAccept
+!
+
+autoAccept:something
+ autoAccept := something.
+!
+
+newLanguageText
+"/ languageEditor accept
+^self languageTextHolder value isNil
+ ifTrue:['']
+ ifFalse:[self languageTextHolder value asCollectionOfLines first.]
! !
!InternationalLanguageTranslationEditor methodsFor:'aspects'!
@@ -538,10 +553,17 @@
languageTextAcceptHolder
languageTextAcceptHolder isNil ifTrue:[
languageTextAcceptHolder := false asValue.
+ languageTextAcceptHolder onChangeSend:#languageTextAccepted to:self.
].
^ languageTextAcceptHolder.
!
+languageTextAccepted
+ "
+self updateLanguageTextModification. "
+self selectedKeyRow value: self selectedKeyRow value + 1.
+!
+
languageTextHolder
languageTextHolder isNil ifTrue:[
languageTextHolder := '' asValue.
@@ -596,7 +618,6 @@
shownLanguages isNil ifTrue:[
shownLanguages := List new.
shownLanguages addAll:(self languagesList).
- "/ shownLanguages addDependent:self.
shownLanguages onChangeSend:#shownLanguagesChanged to:self.
].
^ shownLanguages.
@@ -607,6 +628,30 @@
stopApplicationIconVisibleHolder := false asValue.
].
^ stopApplicationIconVisibleHolder.
+!
+
+updateLanguageAndKeySelection
+
+ |rowSelectionIndex colSelectionIndex language selectedKey originalText languageText|
+
+ colSelectionIndex := dataSetView selectedColIndex.
+ language := colSelectionIndex > 1 ifTrue:[ shownLanguages at:colSelectionIndex-1 ] ifFalse:nil.
+
+ rowSelectionIndex := self selectedKeyRow value.
+ rowSelectionIndex ~~ 0 ifTrue:[
+ selectedKey := keyStringsToLanguageMappings keyAt:rowSelectionIndex.
+ originalText := selectedKey storeString.
+ language notNil ifTrue:[
+ languageText := keyStringsToLanguageMappings at:selectedKey language:language.
+ languageText notNil ifTrue:[
+ languageText := languageText storeString.
+ ]
+ ]
+ ].
+ self originalTextHolder value:originalText.
+ self languageTextHolder value:languageText.
+ lastLanguage := language.
+ lastSelectedKey := selectedKey.
! !
!InternationalLanguageTranslationEditor methodsFor:'change & update'!
@@ -616,6 +661,49 @@
self shownLanguagesChanged.
^ self.
].
+ changedObject == languageTextAcceptHolder ifTrue:[
+ self updateLanguageTextModification.
+ ^ self.
+ ].
+!
+
+updateKeyStringsToLanguageMappings
+
+ keyStringsToLanguageMappings
+ at:lastSelectedKey
+ language:lastLanguage
+ put: self newLanguageText.
+!
+
+updateLanguageTextModification
+ self languageTextModifiedHolder value ifTrue:[
+ (self autoAccept or:[Dialog confirm:'Accept changed translation ?']) ifTrue:[
+ self languageTextModifiedHolder value:false.
+ self languageTextHolder value:languageEditor contents.
+ lastLanguage notNil ifTrue:[self updateKeyStringsToLanguageMappings.]
+ ]
+ ].
+!
+
+updateOriginalTextModification
+
+|answer|
+
+ self originalTextModifiedHolder value ifTrue:[
+ answer := OptionBox
+ request:'Accept changed original text (key) ?'
+ label:'Original text (key) changed'
+ image:(WarningBox iconBitmap)
+ buttonLabels:#('Cancel' 'Accept' 'Accept As New')
+ values:#(nil #accept #acceptAsNew)
+ default:#acceptAsNew.
+
+ answer isNil ifTrue:[^ self originalTextModifiedHolder value:false. ].
+ answer == #accept ifTrue:[
+self halt. ].
+ answer == #acceptAsNew ifTrue:[
+self halt. ].
+ ].
! !
!InternationalLanguageTranslationEditor methodsFor:'initialization & release'!
@@ -640,8 +728,13 @@
super initialize
!
+languageEditorBuilt:aView
+ languageEditor := aView.
+!
+
postBuildDataSet:aView
- dataSetView := aView
+ dataSetView := aView.
+ aView selectedColIndexHolder onChangeSend:#selectionChanged to:self.
! !
!InternationalLanguageTranslationEditor methodsFor:'menu actions'!
@@ -1262,61 +1355,14 @@
!InternationalLanguageTranslationEditor methodsFor:'user actions'!
-selectionChanged
- |rowSelectionIndex colSelectionIndex language selectedKey originalText languageText
- answer newText autoAccept|
-
- autoAccept := true.
-
- self originalTextModifiedHolder value ifTrue:[
- answer := OptionBox
- request:'Accept changed original text (key) ?'
- label:'Original text (key) changed'
- image:(WarningBox iconBitmap)
- buttonLabels:#('Cancel' 'Accept' 'Accept As New')
- values:#(nil #accept #acceptAsNew)
- default:#acceptAsNew.
+selectionChanged
- answer isNil ifTrue:[^ self ].
- answer == #accept ifTrue:[
-self halt. ].
- answer == #acceptAsNew ifTrue:[
-self halt. ].
- ].
- self languageTextModifiedHolder value ifTrue:[
- (autoAccept or:[Dialog confirm:'Accept changed translation ?']) ifTrue:[
- languageTextAcceptHolder value:true.
-self halt.
- lastLanguage notNil ifTrue:[
- newText := self languageTextHolder value asCollectionOfLines first.
- keyStringsToLanguageMappings at:lastSelectedKey language:lastLanguage put:newText.
- ]
- ]
- ].
-
- colSelectionIndex := dataSetView selectedColIndex.
- language := colSelectionIndex > 1 ifTrue:[ shownLanguages at:colSelectionIndex-1 ] ifFalse:nil.
+ self updateOriginalTextModification.
+ self updateLanguageTextModification.
+ self updateLanguageAndKeySelection.
- rowSelectionIndex := self selectedKeyRow value.
- rowSelectionIndex ~~ 0 ifTrue:[
- selectedKey := keyStringsToLanguageMappings keyAt:rowSelectionIndex.
- originalText := selectedKey storeString.
- language notNil ifTrue:[
- languageText := keyStringsToLanguageMappings at:selectedKey language:language.
- languageText notNil ifTrue:[
- languageText := languageText storeString.
- ]
- ]
- ].
-
- self originalTextHolder value:originalText.
- self languageTextHolder value:languageText.
-
- self originalTextModifiedHolder value:false.
- self languageTextModifiedHolder value:false.
-
- lastLanguage := language.
- lastSelectedKey := selectedKey.
+ self originalTextModifiedHolder value:false.
+ self languageTextModifiedHolder value:false.
!
shownLanguagesChanged
@@ -1371,7 +1417,8 @@
at:aKey language:language put:value
self addKey:aKey.
- ^ (perLanguageMappings at:language) at:aKey put:value
+ (perLanguageMappings at:language) at:aKey put:value.
+ (self rowForKey:aKey) changed
!
keyAt:index
@@ -1398,6 +1445,13 @@
self changed.
!
+rowForKey:aKey
+ ^ rowPerKey
+ at:aKey
+ ifAbsentPut:[InternationalLanguageTranslationEditor::LanguageMappingRow new
+ key:aKey; mappings:self].
+!
+
size
^ keys size
! !
@@ -1406,8 +1460,7 @@
do:aBlock
keys do:[:eachKey |
- aBlock value:(InternationalLanguageTranslationEditor::LanguageMappingRow new
- key:eachKey; mappings:self).
+ aBlock value:(self rowForKey:eachKey).
].
! !
@@ -1420,6 +1473,7 @@
languages := OrderedCollection new.
perLanguageMappings := Dictionary new.
perLanguageInfo := Dictionary new.
+ rowPerKey := Dictionary new.
self addLanguage:#'de'.
self addLanguage:#'fr'.