import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.Proxy;
+import java.net.SocketAddress;
+import java.net.InetSocketAddress;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.regex.Pattern;
import java.util.zip.GZIPInputStream;
+import jalview.bin.HiDPISetting;
import jalview.bin.MemorySetting;
-import com.install4j.api.launcher.Variables;
+//import com.install4j.api.launcher.Variables;
import com.threerings.getdown.util.*;
// avoid ambiguity with java.util.Base64 which we can't use as it's 1.8+
/** A special classname that means 'use -jar code.jar' instead of a classname. */
public static final String MANIFEST_CLASS = "manifest";
+ /** Set this if SHIFT key is down -- reverts to the BACKUP_CONFIG_DIR ("install") */
+ private static boolean shiftKeyPressed = false;
+
/** Used to communicate information about the UI displayed when updating the application. */
public static final class UpdateInterface
{
} catch (Exception e) {
log.warning("Failure reading config file", "file", _config, e);
}
- if (config == null || config.getString("appbase") == null || config.getString("appbase").isEmpty()) {
+
+System.out.println("3 SHIFT key"+(getShiftKeyPressed()?"":" not")+" pressed");
+ if (getShiftKeyPressed() || config == null || config.getString("appbase") == null || config.getString("appbase").isEmpty()) {
+System.out.println("4 SHIFT key"+(getShiftKeyPressed()?"":" not")+" pressed");
try {
Config backupConfig = Config.parseConfig(_backupConfig, opts);
config = backupConfig;
}
// pass along our proxy settings
- String proxyHost;
- if ((proxyHost = System.getProperty("http.proxyHost")) != null) {
+ String proxyHost = System.getProperty("http.proxyHost");
+ String proxyPort = StringUtil.isBlank(System.getProperty("http.proxyPort")) ? "80" : System.getProperty("http.proxyPort");
+ if (StringUtil.isBlank(proxyHost) && ! proxy.equals(Proxy.NO_PROXY)) {
+ try {
+ SocketAddress a = proxy.address();
+ if (a != null && a instanceof InetSocketAddress) {
+ InetSocketAddress ia = (InetSocketAddress)a;
+ proxyHost = ia.getHostString();
+ proxyPort = String.valueOf(ia.getPort());
+ }
+ } catch (Exception e) {
+ log.error("Problem obtaining proxy settings from Proxy object");
+ e.printStackTrace();
+ }
+ }
+ if (proxyHost != null) {
+ log.info("Using proxy settings "+proxyHost+":"+proxyPort);
args.add("-Dhttp.proxyHost=" + proxyHost);
- args.add("-Dhttp.proxyPort=" + System.getProperty("http.proxyPort"));
+ args.add("-Dhttp.proxyPort=" + proxyPort);
args.add("-Dhttps.proxyHost=" + proxyHost);
- args.add("-Dhttps.proxyPort=" + System.getProperty("http.proxyPort"));
- }
+ args.add("-Dhttps.proxyPort=" + proxyPort);
+ } else {
+ log.info("Not setting proxy");
+ }
// add the marker indicating the app is running in getdown
args.add("-D" + Properties.GETDOWN + "=true");
args.add("-Dinstaller_template_version=" + System.getProperty("installer_template_version"));
args.add("-Dlauncher_version=" + Build.version());
+ // set HiDPI property if wanted
+ String scalePropertyArg = HiDPISetting.getScalePropertyArg();
+ if (scalePropertyArg != null)
+ {
+ args.add(scalePropertyArg);
+ }
+
// set the native library path if we have native resources
// @TODO optional getdown.txt parameter to set addCurrentLibraryPath to true or false?
ClassPath javaLibPath = PathBuilder.buildLibsPath(this, true);
clearValidationMarkers();
// if the new copy validates, reinitialize ourselves; otherwise report baffling hoseage
if (_digest.validateResource(crsrc, null)) {
+ // unset _initialisedConfig so new file is initialised
+ _initialisedConfig = null;
init(true);
} else {
log.warning(CONFIG_FILE + " failed to validate even after redownloading. " +
public String getAppbase() {
return _appbase;
}
+
+ public static boolean getShiftKeyPressed() {
+ return shiftKeyPressed;
+ }
+
+ public static void setShiftKeyPressed(boolean down) {
+ shiftKeyPressed |= down;
+ }
+ public boolean isInstallationAppbase() {
+ // if not on the installation appbase, give half a second for SHIFT key to be pressed
+ Config.ParseOpts opts = null;
+ Config config = null;
+ try {
+ Config backupConfig = Config.parseConfig(_backupConfig, opts);
+System.out.println("1 SHIFT key"+(getShiftKeyPressed()?"":" not")+" pressed");
+ Thread.sleep(2000);
+System.out.println("2 SHIFT key"+(getShiftKeyPressed()?"":" not")+" pressed");
+ return (true || (config != null && backupConfig != null && backupConfig.getString("appbase") != null && (!backupConfig.getString("appbase").equals(config.getString("appbase")))));
+
+ } catch (NullPointerException e) {
+ e.printStackTrace();
+ } catch (InterruptedException e) {
+ e.printStackTrace();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ return false;
+ }
+
protected final EnvConfig _envc;
protected File _config;
protected File _backupConfig;