Fixed Ticket #4447 and #4535
authorAlexander Oppermann <a.oppermann@bgbm.org>
Tue, 28 Apr 2015 11:59:35 +0000 (11:59 +0000)
committerAlexander Oppermann <a.oppermann@bgbm.org>
Tue, 28 Apr 2015 11:59:35 +0000 (11:59 +0000)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/LanguageEditorPreferencePage.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/preference/PreferencesUtil.java

index 53ec0636f098db34d78adba45f26930d0d42c297..6c884bfd0eea0973c5b430504c5c7b558a16e47f 100644 (file)
@@ -11,6 +11,7 @@
 package eu.etaxonomy.taxeditor.preference;
 
 import java.io.IOException;
 package eu.etaxonomy.taxeditor.preference;
 
 import java.io.IOException;
+import java.util.Locale;
 
 import org.apache.commons.lang.StringUtils;
 import org.eclipse.jface.dialogs.MessageDialog;
 
 import org.apache.commons.lang.StringUtils;
 import org.eclipse.jface.dialogs.MessageDialog;
@@ -29,6 +30,7 @@ import org.eclipse.ui.IWorkbenchPreferencePage;
 import org.eclipse.ui.PlatformUI;
 
 import eu.etaxonomy.taxeditor.Messages;
 import org.eclipse.ui.PlatformUI;
 
 import eu.etaxonomy.taxeditor.Messages;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
 
 /**
  * @author n.hoffmann
 
 /**
  * @author n.hoffmann
@@ -39,6 +41,7 @@ public class LanguageEditorPreferencePage extends PreferencePage implements IWor
 
     private CCombo combo;
     PreferencesUtil preferencesUtil = new PreferencesUtil();
 
     private CCombo combo;
     PreferencesUtil preferencesUtil = new PreferencesUtil();
+    private boolean isSelectionChanged = false;
 
        /* (non-Javadoc)
         * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
 
        /* (non-Javadoc)
         * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite)
@@ -80,8 +83,10 @@ public class LanguageEditorPreferencePage extends PreferencePage implements IWor
             public void widgetSelected(SelectionEvent e) {
                 try {
                     preferencesUtil.writePropertyToConfigFile(combo.getSelectionIndex());
             public void widgetSelected(SelectionEvent e) {
                 try {
                     preferencesUtil.writePropertyToConfigFile(combo.getSelectionIndex());
+                    isSelectionChanged = true;
                 } catch (IOException e1) {
                 } catch (IOException e1) {
-                    e1.printStackTrace();
+                    MessagingUtils.messageDialog("Failed to write Config.ini", LanguageEditorPreferencePage.class,
+                            "Language switch failed, because could not write to Folder. No writing permissions!", null);
                 }
             }
 
                 }
             }
 
@@ -104,6 +109,13 @@ public class LanguageEditorPreferencePage extends PreferencePage implements IWor
             }else if(rememberedValue.equalsIgnoreCase("de")){ //$NON-NLS-1$
                  combo.select(0);
             }
             }else if(rememberedValue.equalsIgnoreCase("de")){ //$NON-NLS-1$
                  combo.select(0);
             }
+        }else{
+            Locale locale = Locale.getDefault();
+            if(locale.getLanguage().equals(new Locale("de").getLanguage())){
+                combo.select(0);
+            }else if(locale.getLanguage().equals(new Locale("en").getLanguage())){
+                combo.select(1);
+            }
         }
     }
 
         }
     }
 
@@ -137,11 +149,13 @@ public class LanguageEditorPreferencePage extends PreferencePage implements IWor
        @Override
        public boolean performOk() {
         try {
        @Override
        public boolean performOk() {
         try {
-            preferencesUtil.writePropertyToConfigFile(combo.getSelectionIndex());
-            boolean result = MessageDialog.openConfirm(getShell(), Messages.LanguageEditorPreferencePage_PleaseRestart, Messages.LanguageEditorPreferencePage_EditorHasToRestart);
-            if(result){
-                //Press Ok
-                PlatformUI.getWorkbench().restart();
+            if(isSelectionChanged){
+                preferencesUtil.writePropertyToConfigFile(combo.getSelectionIndex());
+                boolean result = MessageDialog.openConfirm(getShell(), Messages.LanguageEditorPreferencePage_PleaseRestart, Messages.LanguageEditorPreferencePage_EditorHasToRestart);
+                if(result){
+                    //Press Ok
+                    PlatformUI.getWorkbench().restart();
+                }
             }
         } catch (IOException e) {
             e.printStackTrace();
             }
         } catch (IOException e) {
             e.printStackTrace();
index 78b3c927dbe6356f720bb49773f5fe5619f7e9bd..bbca40e5a93ea95f652007fa35c2cca6a40d4fb3 100644 (file)
@@ -630,6 +630,10 @@ public class PreferencesUtil implements IPreferenceKeys {
         */
     public void writePropertyToConfigFile(int setLanguage) throws IOException {
         File file = org.eclipse.core.runtime.preferences.ConfigurationScope.INSTANCE.getLocation().toFile();
         */
     public void writePropertyToConfigFile(int setLanguage) throws IOException {
         File file = org.eclipse.core.runtime.preferences.ConfigurationScope.INSTANCE.getLocation().toFile();
+        //give warning to user if the directory has no write access
+        if(file == null){
+            throw new IOException();
+        }
         Properties properties = load(file.getAbsolutePath()+"/config.ini");
         switch(setLanguage){
         case 0:
         Properties properties = load(file.getAbsolutePath()+"/config.ini");
         switch(setLanguage){
         case 0: