159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta/*
259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * Copyright (c) 2009-2012 jMonkeyEngine
359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * All rights reserved.
459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta *
559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * Redistribution and use in source and binary forms, with or without
659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * modification, are permitted provided that the following conditions are
759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * met:
859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta *
959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * * Redistributions of source code must retain the above copyright
1059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta *   notice, this list of conditions and the following disclaimer.
1159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta *
1259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * * Redistributions in binary form must reproduce the above copyright
1359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta *   notice, this list of conditions and the following disclaimer in the
1459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta *   documentation and/or other materials provided with the distribution.
1559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta *
1659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * * Neither the name of 'jMonkeyEngine' nor the names of its contributors
1759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta *   may be used to endorse or promote products derived from this software
1859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta *   without specific prior written permission.
1959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta *
2059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
2159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
2259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
2359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
2459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
2559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
2659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
2759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
2859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
2959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
3059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */
3259b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartapackage com.jme3.system;
3359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
3459b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport java.io.IOException;
3559b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport java.io.InputStream;
3659b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport java.io.OutputStream;
3759b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport java.io.UnsupportedEncodingException;
3859b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport java.util.HashMap;
3959b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport java.util.Map;
4059b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport java.util.Properties;
4159b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport java.util.prefs.BackingStoreException;
4259b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartaimport java.util.prefs.Preferences;
4359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
4459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta/**
4559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * <code>AppSettings</code> provides a store of configuration
4659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * to be used by the application.
4759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * <p>
4859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * By default only the {@link JmeContext context} uses the configuration,
4959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * however the user may set and retrieve the settings as well.
5059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta *
5159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta * @author Kirill Vainer
5259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta */
5359b2e6871c65f58fdad78cd7229c292f6a177578Scott Bartapublic final class AppSettings extends HashMap<String, Object> {
5459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
5559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    private static final AppSettings defaults = new AppSettings(false);
5659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
5759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
5859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Use LWJGL as the display system and force using the OpenGL1.1 renderer.
5959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     *
6059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see AppSettings#setRenderer(java.lang.String)
6159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
6259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public static final String LWJGL_OPENGL1 = "LWJGL-OPENGL1";
6359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
6459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
6559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Use LWJGL as the display system and force using the OpenGL2.0 renderer.
6659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * <p>
6759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * If the underlying system does not support OpenGL2.0, then the context
6859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * initialization will throw an exception.
6959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     *
7059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see AppSettings#setRenderer(java.lang.String)
7159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
7259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public static final String LWJGL_OPENGL2 = "LWJGL-OpenGL2";
7359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
7459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
7559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Use LWJGL as the display system and force using the core OpenGL3.3 renderer.
7659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * <p>
7759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * If the underlying system does not support OpenGL3.3, then the context
7859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * initialization will throw an exception. Note that currently jMonkeyEngine
7959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * does not have any shaders that support OpenGL3.3 therefore this
8059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * option is not useful.
8159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     *
8259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     *
8359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see AppSettings#setRenderer(java.lang.String)
8459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
8559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public static final String LWJGL_OPENGL3 = "LWJGL-OpenGL3";
8659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
8759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
8859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Use LWJGL as the display system and allow the context
8959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * to choose an appropriate renderer based on system capabilities.
9059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * <p>
9159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * If the GPU supports OpenGL2 or later, then the OpenGL2.0 renderer will
9259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * be used, otherwise, the OpenGL1.1 renderer is used.
9359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     *
9459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see AppSettings#setRenderer(java.lang.String)
9559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
9659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public static final String LWJGL_OPENGL_ANY = "LWJGL-OpenGL-Any";
9759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
9859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
9959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * The JOGL renderer is no longer supported by jME.
10059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     *
10159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @deprecated Use the LWJGL renderer instead.
10259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     *
10359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see AppSettings#setRenderer(java.lang.String)
10459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
10559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    @Deprecated
10659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public static final String JOGL = "JOGL";
10759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
10859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
10959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * The "NULL" option is no longer supported
11059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     *
11159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @deprecated Specify the "null" value instead
11259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     *
11359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see AppSettings#setRenderer(java.lang.String)
11459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see AppSettings#setAudioRenderer(java.lang.String)
11559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
11659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    @Deprecated
11759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public static final String NULL = "NULL";
11859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
11959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
12059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Use the LWJGL OpenAL based renderer for audio capabilities.
12159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     *
12259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see AppSettings#setAudioRenderer(java.lang.String)
12359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
12459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public static final String LWJGL_OPENAL = "LWJGL";
12559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
12659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    static {
12759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        defaults.put("Width", 640);
12859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        defaults.put("Height", 480);
12959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        defaults.put("BitsPerPixel", 24);
13059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        defaults.put("Frequency", 60);
13159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        defaults.put("DepthBits", 24);
13259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        defaults.put("StencilBits", 0);
13359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        defaults.put("Samples", 0);
13459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        defaults.put("Fullscreen", false);
13559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        defaults.put("Title", "jMonkey Engine 3.0");
13659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        defaults.put("Renderer", LWJGL_OPENGL2);
13759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        defaults.put("AudioRenderer", LWJGL_OPENAL);
13859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        defaults.put("DisableJoysticks", true);
13959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        defaults.put("UseInput", true);
14059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        defaults.put("VSync", false);
14159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        defaults.put("FrameRate", -1);
14259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        defaults.put("SettingsDialogImage", "/com/jme3/app/Monkey.png");
14359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta      //  defaults.put("Icons", null);
14459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
14559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
14659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
14759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Create a new instance of <code>AppSettings</code>.
14859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * <p>
14959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * If <code>loadDefaults</code> is true, then the default settings
15059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * will be set on the AppSettings.
15159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Use false if you want to change some settings but you would like the
15259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * application to load settings from previous launches.
15359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     *
15459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @param loadDefaults If default settings are to be loaded.
15559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
15659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public AppSettings(boolean loadDefaults) {
15759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        if (loadDefaults) {
15859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta            putAll(defaults);
15959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        }
16059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
16159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
16259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
16359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Copies all settings from <code>other</code> to <code>this</code>
16459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * AppSettings.
16559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * <p>
16659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Any settings that are specified in other will overwrite settings
16759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * set on this AppSettings.
16859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     *
16959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @param other The AppSettings to copy the settings from
17059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
17159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void copyFrom(AppSettings other) {
17259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        this.putAll(other);
17359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
17459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
17559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
17659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Same as {@link #copyFrom(com.jme3.system.AppSettings) }, except
17759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * doesn't overwrite settings that are already set.
17859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     *
17959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @param other  The AppSettings to merge the settings from
18059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
18159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void mergeFrom(AppSettings other) {
18259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        for (String key : other.keySet()) {
18359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta            if (get(key) == null) {
18459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta                put(key, other.get(key));
18559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta            }
18659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        }
18759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
18859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
18959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
19059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Loads the settings from the given properties input stream.
19159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     *
19259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @param in The InputStream to load from
19359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @throws IOException If an IOException occurs
19459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     *
19559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see #save(java.io.OutputStream)
19659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
19759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void load(InputStream in) throws IOException {
19859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        Properties props = new Properties();
19959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        props.load(in);
20059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        for (Map.Entry<Object, Object> entry : props.entrySet()) {
20159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta            String key = (String) entry.getKey();
20259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta            String val = (String) entry.getValue();
20359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta            if (val != null) {
20459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta                val = val.trim();
20559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta            }
20659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta            if (key.endsWith("(int)")) {
20759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta                key = key.substring(0, key.length() - 5);
20859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta                int iVal = Integer.parseInt(val);
20959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta                putInteger(key, iVal);
21059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta            } else if (key.endsWith("(string)")) {
21159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta                putString(key.substring(0, key.length() - 8), val);
21259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta            } else if (key.endsWith("(bool)")) {
21359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta                boolean bVal = Boolean.parseBoolean(val);
21459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta                putBoolean(key.substring(0, key.length() - 6), bVal);
21559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta            } else {
21659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta                throw new IOException("Cannot parse key: " + key);
21759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta            }
21859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        }
21959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
22059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
22159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
22259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Saves all settings to the given properties output stream.
22359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     *
22459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @param out The OutputStream to write to
22559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @throws IOException If an IOException occurs
22659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     *
22759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see #load(java.io.InputStream)
22859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
22959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void save(OutputStream out) throws IOException {
23059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        Properties props = new Properties();
23159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        for (Map.Entry<String, Object> entry : entrySet()) {
23259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta            Object val = entry.getValue();
23359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta            String type;
23459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta            if (val instanceof Integer) {
23559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta                type = "(int)";
23659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta            } else if (val instanceof String) {
23759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta                type = "(string)";
23859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta            } else if (val instanceof Boolean) {
23959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta                type = "(bool)";
24059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta            } else {
24159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta                throw new UnsupportedEncodingException();
24259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta            }
24359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta            props.setProperty(entry.getKey() + type, val.toString());
24459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        }
24559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        props.store(out, "jME3 AppSettings");
24659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
24759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
24859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
24959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Loads settings previously saved in the Java preferences.
25059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     *
25159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @param preferencesKey The preferencesKey previously used to save the settings.
25259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @throws BackingStoreException If an exception occurs with the preferences
25359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     *
25459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see #save(java.lang.String)
25559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
25659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void load(String preferencesKey) throws BackingStoreException {
25759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        Preferences prefs = Preferences.userRoot().node(preferencesKey);
25859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        String[] keys = prefs.keys();
25959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        if (keys != null) {
26059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta            for (String key : keys) {
26159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta                Object defaultValue = defaults.get(key);
26259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta                if (defaultValue instanceof Integer) {
26359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta                    put(key, prefs.getInt(key, (Integer) defaultValue));
26459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta                } else if (defaultValue instanceof String) {
26559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta                    put(key, prefs.get(key, (String) defaultValue));
26659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta                } else if (defaultValue instanceof Boolean) {
26759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta                    put(key, prefs.getBoolean(key, (Boolean) defaultValue));
26859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta                }
26959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta            }
27059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        }
27159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
27259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
27359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
27459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Saves settings into the Java preferences.
27559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * <p>
27659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * On the Windows operating system, the preferences are saved in the registry
27759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * at the following key:<br>
27859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * <code>HKEY_CURRENT_USER\Software\JavaSoft\Prefs\[preferencesKey]</code>
27959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     *
28059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @param preferencesKey The preferences key to save at. Generally the
28159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * application's unique name.
28259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     *
28359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @throws BackingStoreException If an exception occurs with the preferences
28459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
28559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void save(String preferencesKey) throws BackingStoreException {
28659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        Preferences prefs = Preferences.userRoot().node(preferencesKey);
28759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        for (String key : keySet()) {
28859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta            prefs.put(key, get(key).toString());
28959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        }
29059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
29159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
29259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
29359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Get an integer from the settings.
29459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * <p>
29559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * If the key is not set, then 0 is returned.
29659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
29759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public int getInteger(String key) {
29859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        Integer i = (Integer) get(key);
29959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        if (i == null) {
30059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta            return 0;
30159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        }
30259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
30359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        return i.intValue();
30459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
30559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
30659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
30759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Get a boolean from the settings.
30859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * <p>
30959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * If the key is not set, then false is returned.
31059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
31159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public boolean getBoolean(String key) {
31259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        Boolean b = (Boolean) get(key);
31359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        if (b == null) {
31459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta            return false;
31559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        }
31659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
31759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        return b.booleanValue();
31859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
31959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
32059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
32159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Get a string from the settings.
32259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * <p>
32359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * If the key is not set, then null is returned.
32459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
32559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public String getString(String key) {
32659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        String s = (String) get(key);
32759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        if (s == null) {
32859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta            return null;
32959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        }
33059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
33159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        return s;
33259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
33359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
33459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
33559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Set an integer on the settings.
33659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
33759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void putInteger(String key, int value) {
33859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        put(key, Integer.valueOf(value));
33959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
34059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
34159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
34259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Set a boolean on the settings.
34359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
34459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void putBoolean(String key, boolean value) {
34559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        put(key, Boolean.valueOf(value));
34659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
34759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
34859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
34959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Set a string on the settings.
35059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
35159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void putString(String key, String value) {
35259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        put(key, value);
35359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
35459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
35559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
35659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @param frameRate The frame-rate is the upper limit on how high
35759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * the application's frames-per-second can go.
35859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * (Default: -1 no frame rate limit imposed)
35959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
36059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void setFrameRate(int frameRate) {
36159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        putInteger("FrameRate", frameRate);
36259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
36359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
36459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
36559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @param use If true, the application will initialize and use input.
36659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Set to false for headless applications that do not require keyboard
36759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * or mouse input.
36859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * (Default: true)
36959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
37059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void setUseInput(boolean use) {
37159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        putBoolean("UseInput", use);
37259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
37359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
37459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
37559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @param use If true, the application will initialize and use joystick
37659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * input. Set to false if no joystick input is desired.
37759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * (Default: false)
37859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
37959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void setUseJoysticks(boolean use) {
38059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        putBoolean("DisableJoysticks", !use);
38159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
38259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
38359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
38459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Set the graphics renderer to use, one of:<br>
38559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * <ul>
38659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * <li>AppSettings.LWJGL_OPENGL1 - Force OpenGL1.1 compatability</li>
38759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * <li>AppSettings.LWJGL_OPENGL2 - Force OpenGL2 compatability</li>
38859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * <li>AppSettings.LWJGL_OPENGL3 - Force OpenGL3.3 compatability</li>
38959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * <li>AppSettings.LWJGL_OPENGL_ANY - Choose an appropriate
39059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * OpenGL version based on system capabilities</li>
39159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * <li>null - Disable graphics rendering</li>
39259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * </ul>
39359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @param renderer The renderer to set
39459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * (Default: AppSettings.LWJGL_OPENGL2)
39559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
39659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void setRenderer(String renderer) {
39759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        putString("Renderer", renderer);
39859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
39959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
40059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
40159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Set a custom graphics renderer to use. The class should implement
40259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * the {@link JmeContext} interface.
40359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @param clazz The custom context class.
40459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * (Default: not set)
40559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
40659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void setCustomRenderer(Class<? extends JmeContext> clazz){
40759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        put("Renderer", "CUSTOM" + clazz.getName());
40859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
40959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
41059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
41159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Set the audio renderer to use. One of:<br>
41259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * <ul>
41359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * <li>AppSettings.LWJGL_OPENAL - Default for LWJGL</li>
41459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * <li>null - Disable audio</li>
41559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * </ul>
41659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @param audioRenderer
41759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * (Default: LWJGL)
41859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
41959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void setAudioRenderer(String audioRenderer) {
42059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        putString("AudioRenderer", audioRenderer);
42159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
42259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
42359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
42459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @param value the width for the rendering display.
42559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * (Default: 640)
42659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
42759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void setWidth(int value) {
42859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        putInteger("Width", value);
42959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
43059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
43159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
43259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @param value the height for the rendering display.
43359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * (Default: 480)
43459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
43559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void setHeight(int value) {
43659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        putInteger("Height", value);
43759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
43859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
43959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
44059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Set the resolution for the rendering display
44159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @param width The width
44259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @param height The height
44359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * (Default: 640x480)
44459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
44559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void setResolution(int width, int height) {
44659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        setWidth(width);
44759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        setHeight(height);
44859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
44959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
45059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
45159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Set the frequency, also known as refresh rate, for the
45259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * rendering display.
45359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @param value The frequency
45459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * (Default: 60)
45559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
45659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void setFrequency(int value) {
45759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        putInteger("Frequency", value);
45859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
45959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
46059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
46159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Sets the number of depth bits to use.
46259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * <p>
46359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * The number of depth bits specifies the precision of the depth buffer.
46459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * To increase precision, specify 32 bits. To decrease precision, specify
46559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * 16 bits. On some platforms 24 bits might not be supported, in that case,
46659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * specify 16 bits.<p>
46759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * (Default: 24)
46859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     *
46959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @param value The depth bits
47059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
47159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void setDepthBits(int value){
47259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        putInteger("DepthBits", value);
47359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
47459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
47559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
47659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Set the number of stencil bits.
47759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * <p>
47859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * This value is only relevant when the stencil buffer is being used.
47959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Specify 8 to indicate an 8-bit stencil buffer, specify 0 to disable
48059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * the stencil buffer.
48159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * </p>
48259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * (Default: 0)
48359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     *
48459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @param value Number of stencil bits
48559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
48659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void setStencilBits(int value){
48759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        putInteger("StencilBits", value);
48859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
48959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
49059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
49159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Set the bits per pixel for the display. Appropriate
49259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * values are 16 for RGB565 color format, or 24 for RGB8 color format.
49359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     *
49459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @param value The bits per pixel to set
49559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * (Default: 24)
49659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
49759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void setBitsPerPixel(int value) {
49859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        putInteger("BitsPerPixel", value);
49959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
50059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
50159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
50259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Set the number of samples per pixel. A value of 1 indicates
50359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * each pixel should be single-sampled, higher values indicate
50459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * a pixel should be multi-sampled.
50559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     *
50659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @param value The number of samples
50759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * (Default: 1)
50859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
50959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void setSamples(int value) {
51059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        putInteger("Samples", value);
51159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
51259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
51359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
51459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @param title The title of the rendering display
51559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * (Default: jMonkeyEngine 3.0)
51659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
51759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void setTitle(String title) {
51859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        putString("Title", title);
51959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
52059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
52159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
52259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @param value true to enable full-screen rendering, false to render in a window
52359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * (Default: false)
52459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
52559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void setFullscreen(boolean value) {
52659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        putBoolean("Fullscreen", value);
52759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
52859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
52959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
53059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Set to true to enable vertical-synchronization, limiting and synchronizing
53159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * every frame rendered to the monitor's refresh rate.
53259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @param value
53359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * (Default: false)
53459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
53559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void setVSync(boolean value) {
53659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        putBoolean("VSync", value);
53759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
53859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
53959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
54059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Enable 3D stereo.
54159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * <p>This feature requires hardware support from the GPU driver.
54259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see <a href="http://en.wikipedia.org/wiki/Quad_buffering">http://en.wikipedia.org/wiki/Quad_buffering</a><br />
54359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Once enabled, filters or scene processors that handle 3D stereo rendering
54459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * could use this feature to render using hardware 3D stereo.</p>
54559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * (Default: false)
54659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
54759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void setStereo3D(boolean value){
54859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        putBoolean("Stereo3D", value);
54959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
55059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
55159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
55259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Sets the application icons to be used, with the most preferred first.
55359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * For Windows you should supply at least one 16x16 icon and one 32x32. The former is used for the title/task bar,
55459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * the latter for the alt-tab icon.
55559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Linux (and similar platforms) expect one 32x32 icon.
55659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Mac OS X should be supplied one 128x128 icon.
55759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * <br/>
55859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * The icon is used for the settings window, and the LWJGL render window. Not currently supported for JOGL.
55959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Note that a bug in Java 6 (bug ID 6445278, currently hidden but available in Google cache) currently prevents
56059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * the icon working for alt-tab on the settings dialog in Windows.
56159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     *
56259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @param value An array of BufferedImages to use as icons.
56359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * (Default: not set)
56459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
56559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void setIcons(Object[] value) {
56659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        put("Icons", value);
56759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
56859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
56959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
57059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Sets the path of the settings dialog image to use.
57159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * <p>
57259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * The image will be displayed in the settings dialog when the
57359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * application is started.
57459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * </p>
57559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * (Default: /com/jme3/app/Monkey.png)
57659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     *
57759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @param path The path to the image in the classpath.
57859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
57959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public void setSettingsDialogImage(String path) {
58059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        putString("SettingsDialogImage", path);
58159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
58259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
58359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
58459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Get the framerate.
58559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see #setFrameRate(int)
58659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
58759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public int getFrameRate() {
58859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        return getInteger("FrameRate");
58959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
59059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
59159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
59259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Get the use input state.
59359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see #setUseInput(boolean)
59459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
59559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public boolean useInput() {
59659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        return getBoolean("UseInput");
59759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
59859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
59959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
60059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Get the renderer
60159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see #setRenderer(java.lang.String)
60259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
60359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public String getRenderer() {
60459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        return getString("Renderer");
60559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
60659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
60759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
60859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Get the width
60959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see #setWidth(int)
61059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
61159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public int getWidth() {
61259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        return getInteger("Width");
61359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
61459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
61559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
61659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Get the height
61759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see #setHeight(int)
61859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
61959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public int getHeight() {
62059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        return getInteger("Height");
62159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
62259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
62359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
62459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Get the bits per pixel
62559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see #setBitsPerPixel(int)
62659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
62759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public int getBitsPerPixel() {
62859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        return getInteger("BitsPerPixel");
62959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
63059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
63159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
63259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Get the frequency
63359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see #setFrequency(int)
63459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
63559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public int getFrequency() {
63659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        return getInteger("Frequency");
63759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
63859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
63959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
64059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Get the number of depth bits
64159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see #setDepthBits(int)
64259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
64359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public int getDepthBits() {
64459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        return getInteger("DepthBits");
64559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
64659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
64759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
64859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Get the number of stencil bits
64959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see #setStencilBits(int)
65059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
65159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public int getStencilBits() {
65259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        return getInteger("StencilBits");
65359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
65459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
65559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
65659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Get the number of samples
65759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see #setSamples(int)
65859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
65959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public int getSamples() {
66059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        return getInteger("Samples");
66159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
66259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
66359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
66459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Get the application title
66559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see #setTitle(java.lang.String)
66659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
66759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public String getTitle() {
66859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        return getString("Title");
66959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
67059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
67159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
67259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Get the vsync state
67359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see #setVSync(boolean)
67459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
67559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public boolean isVSync() {
67659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        return getBoolean("VSync");
67759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
67859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
67959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
68059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Get the fullscreen state
68159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see #setFullscreen(boolean)
68259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
68359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public boolean isFullscreen() {
68459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        return getBoolean("Fullscreen");
68559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
68659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
68759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
68859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Get the use joysticks state
68959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see #setUseJoysticks(boolean)
69059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
69159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public boolean useJoysticks() {
69259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        return !getBoolean("DisableJoysticks");
69359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
69459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
69559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
69659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Get the audio renderer
69759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see #setAudioRenderer(java.lang.String)
69859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
69959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public String getAudioRenderer() {
70059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        return getString("AudioRenderer");
70159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
70259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
70359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
70459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Get the stereo 3D state
70559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see #setStereo3D(boolean)
70659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
70759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public boolean useStereo3D(){
70859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        return getBoolean("Stereo3D");
70959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
71059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
71159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
71259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Get the icon array
71359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see #setIcons(java.lang.Object[])
71459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
71559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public Object[] getIcons() {
71659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        return (Object[]) get("Icons");
71759b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
71859b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta
71959b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    /**
72059b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * Get the settings dialog image
72159b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     * @see #setSettingsDialogImage(java.lang.String)
72259b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta     */
72359b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    public String getSettingsDialogImage() {
72459b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta        return getString("SettingsDialogImage");
72559b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta    }
72659b2e6871c65f58fdad78cd7229c292f6a177578Scott Barta}
727