diff -r dcec4e818069 -r d10762e5d924 Tools__InternationalLanguageTranslationEditor.st --- 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 " ^#( - #(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'.