Changeset 30052


Ignore:
Timestamp:
2015-07-22T20:27:19+12:00 (9 years ago)
Author:
ak19
Message:

Installer language selection now uses a dropdown in place of radio buttons to accomodate additional language translations submitted for the gsinstaller module. To get the dropdown <large-select> to work like the radio buttons <select>, Dr Bainbridge figured out that Oran had made some code changes to <select> in AntInstaller's LoadConfigFilter.java. Added the same change in for the <large-select> and then needed to port Oran's additional changes to SelectInput.java into LargeSelectInput.java (didn't put the changes in the superclass InputField.java since a lot of other AntInstaller classes inherit from that).

Location:
main/trunk/release-kits
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/release-kits/kits/rk3/installer/antinstall-config.xml

    r29944 r30052  
    1313
    1414    <!-- select language page -->
     15    <!-- We want a dropdown for installer language selection.
     16    <select> is rendered as radio buttons in the GUI version.
     17    antinstaller.sourceforge.net/manual.html
     18    <large-select>: "The large select has identical options to the select input.
     19    Large select enables the list of options to be greater and is displayed differently.
     20    In the Swing GUI the options are rendered as a drop-down list.
     21    In the text/console UI the options are shown to the user 20 lines at a time."
     22    An example: https://github.com/ykyuen/maven-h2o/blob/master/h2o-installer/ant-installer/antinstall-config.xml
     23   
     24    However, to get <large-select> to work as <select> did, needed to modify the AntInstaller code itself
     25    in release-kits\shared\core\ant-installer\src\org\tp23\antinstaller\runtime\exe\LoadConfigFilter.java,
     26    and also bring the code in antinstaller\input\LargeSelectInput.java up to speed with Oran's changes to <select>
     27    in ant-installer\src\org\tp23\antinstaller\input\SelectInput.java
     28   
     29    <option value="hy" text="Armenian"/>
     30    <option value="jp" text="日本語 (Japanese)"/>
     31    -->
    1532    <page type="input" name="language-selector" displayText="">
    1633        <comment name="language-selector-explanation"/>
    17         <select property="language" defaultValue="en" displayText="" useAsLocale="true">
     34        <large-select property="language" defaultValue="en" displayText="" useAsLocale="true">
    1835            <option value="en" text="English"/>
    1936            <option value="fr" text="Français (French)"/>
     
    2340            <option value="zh" text="äž­æ–‡ (Chinese)"/>
    2441            <option value="ar" text="Arabic"/>
    25         </select>
     42            <option value="kk" text="Қазақ (Kazakh)"/>
     43        </large-select>
    2644    </page>
    2745
  • main/trunk/release-kits/shared/core/ant-installer/src/org/tp23/antinstaller/input/LargeSelectInput.java

    r17514 r30052  
    1919import java.util.MissingResourceException;
    2020import java.util.ResourceBundle;
     21import java.util.Locale;
    2122
    2223import org.tp23.antinstaller.InstallerContext;
     
    4142    private LargeSelectInput.Option[] options;
    4243
     44    private boolean useAsLocale = false;
     45   
    4346    public LargeSelectInput() {
    4447    }
    4548
    46 
     49    public void setUseAsLocale(boolean ual) {
     50        this.useAsLocale = ual;
     51    }
     52   
    4753    public LargeSelectInput.Option[] getOptions() {
    4854        return options;
     
    6672        public String getText() {
    6773            if( org.tp23.antinstaller.Installer.langPack != null ) {
    68                 return org.tp23.antinstaller.Installer.langPack.getString(getProperty() + "." + idx +".displayText");
     74                return org.tp23.antinstaller.Installer.langPack.getString(getProperty() + "." + idx +".displayText");               
    6975            }
    7076            return text;
     
    7278    }
    7379   
    74     public void setValue(String dir){
    75         setInputResult(dir);
     80    public void setValue(String value){ //param name used to be "dir" not "value", but bringing in line with SelectInput.java
     81        setInputResult(value);
     82        if ( useAsLocale ) {
     83            //expect something like 'en' or or something like 'en_US'
     84            Locale newLocale = null;
     85            if ( value.length() == 2 ) {
     86                newLocale = new Locale(value);
     87                Locale.setDefault( newLocale );
     88            } else if ( value.length() == 5 ) {
     89                newLocale = new Locale(value.substring(0,2), value.substring(3,5));
     90                Locale.setDefault( newLocale );
     91            } //else { you're out of luck }
     92            org.tp23.antinstaller.Installer.langPack = ResourceBundle.getBundle("resources.LanguagePack", newLocale );
     93        }
    7694    }
    7795    /**
  • main/trunk/release-kits/shared/core/ant-installer/src/org/tp23/antinstaller/input/SelectInput.java

    r17517 r30052  
    7474                    String r = org.tp23.antinstaller.Installer.langPack.getString( getProperty() + "." + idx + ".displayText" );
    7575                    return r;
    76                 } catch ( java.util.MissingResourceException mre ) {}
     76                } catch ( java.util.MissingResourceException mre ) {} // restoring original comment: ignore, signifies no language packs installed
    7777            }
    7878            return text;
  • main/trunk/release-kits/shared/core/ant-installer/src/org/tp23/antinstaller/runtime/exe/LoadConfigFilter.java

    r17514 r30052  
    345345
    346346            String s = field.getAttribute("useAsLocale");
    347             if ( s != null || !s.equals("") ) {
     347            if ( s != null && s.equals("true") ) {
    348348                sInput.setUseAsLocale(true);
    349349            }
     
    383383            sInput.setOptions(optionArr);
    384384
     385            String s = field.getAttribute("useAsLocale");
     386            if ( s != null && s.equals("true") ) {
     387                sInput.setUseAsLocale(true);
     388            }
    385389            return sInput;
    386390        }
Note: See TracChangeset for help on using the changeset viewer.