Tools__InternationalLanguageTranslationEditor.st
changeset 2049 d10762e5d924
parent 2048 dcec4e818069
child 2050 998f72439bfc
--- 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'.