From: Jim Procter Date: Mon, 13 Jun 2022 11:22:31 +0000 (+0100) Subject: Merge branch 'improvement/JAL-1988+JAL-3416_Java8_macOS_APQHandlers_and_FlatLaF_optio... X-Git-Tag: Release_2_11_2_6~44^2~4^2 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=2ea4d68a1f9534dd2285b699862926395ad00f8b;hp=-c;p=jalview.git Merge branch 'improvement/JAL-1988+JAL-3416_Java8_macOS_APQHandlers_and_FlatLaF_option' into improvement/JAL-1988+JAL-3416_flatlaf_osx_apqhandler --- 2ea4d68a1f9534dd2285b699862926395ad00f8b diff --combined src/jalview/bin/Jalview.java index fc4c821,ca850eb..fd1783a --- a/src/jalview/bin/Jalview.java +++ b/src/jalview/bin/Jalview.java @@@ -20,6 -20,7 +20,7 @@@ */ package jalview.bin; + import java.awt.Color; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; @@@ -44,12 -45,14 +45,15 @@@ import java.util.logging.ConsoleHandler import java.util.logging.Level; import java.util.logging.Logger; + import javax.swing.SwingUtilities; import javax.swing.UIManager; import javax.swing.UIManager.LookAndFeelInfo; + import com.formdev.flatlaf.FlatLightLaf; + import com.formdev.flatlaf.util.SystemInfo; import com.threerings.getdown.util.LaunchUtil; +//import edu.stanford.ejalbert.launching.IBrowserLaunching; import groovy.lang.Binding; import groovy.util.GroovyScriptEngine; import jalview.ext.so.SequenceOntology; @@@ -96,10 -99,6 +100,10 @@@ public class Jalvie static { Platform.getURLCommandArguments(); + Platform.addJ2SDirectDatabaseCall("https://www.jalview.org"); + Platform.addJ2SDirectDatabaseCall("http://www.jalview.org"); + Platform.addJ2SDirectDatabaseCall("http://www.compbio.dundee.ac.uk"); + Platform.addJ2SDirectDatabaseCall("https://www.compbio.dundee.ac.uk"); } /* @@@ -370,10 -369,9 +374,10 @@@ } System.setProperty("http.agent", "Jalview Desktop/" + Cache.getDefault("VERSION", "Unknown")); + try { - Cache.initLogger(); + Console.initLogger(); } catch (NoClassDefFoundError error) { error.printStackTrace(); @@@ -407,13 -405,13 +411,13 @@@ JalviewTaskbar.setTaskbar(this); } catch (Exception e) { - Cache.log.info("Cannot set Taskbar"); - Cache.log.error(e.getMessage()); + Console.info("Cannot set Taskbar"); + Console.error(e.getMessage()); // e.printStackTrace(); } catch (Throwable t) { - Cache.log.info("Cannot set Taskbar"); - Cache.log.error(t.getMessage()); + Console.info("Cannot set Taskbar"); + Console.error(t.getMessage()); // t.printStackTrace(); } @@@ -449,7 -447,7 +453,7 @@@ { // Start the desktop questionnaire prompter with the specified // questionnaire - Cache.log.debug("Starting questionnaire url at " + url); + Console.debug("Starting questionnaire url at " + url); desktop.checkForQuestionnaire(url); System.out.println("CMD questionnaire[-" + url + "] executed successfully!"); @@@ -464,7 -462,7 +468,7 @@@ // "http://anaplog.compbio.dundee.ac.uk/cgi-bin/questionnaire.pl"; // // String defurl = "https://www.jalview.org/cgi-bin/questionnaire.pl"; - Cache.log.debug( + Console.debug( "Starting questionnaire with default url: " + defurl); desktop.checkForQuestionnaire(defurl); } @@@ -476,17 -474,12 +480,17 @@@ .println("CMD [-noquestionnaire] executed successfully!"); } - if (!aparser.contains("nonews")) + if (!aparser.contains("nonews") + || Cache.getProperty("NONEWS") == null) { desktop.checkForNews(); } - BioJsHTMLOutput.updateBioJS(); + if (!aparser.contains("nohtmltemplates") + || Cache.getProperty("NOHTMLTEMPLATES") == null) + { + BioJsHTMLOutput.updateBioJS(); + } } } @@@ -797,8 -790,9 +801,8 @@@ * @j2sIgnore */ { - file = jalview.bin.Cache.getDefault("STARTUP_FILE", - jalview.bin.Cache.getDefault("www.jalview.org", - "https://www.jalview.org") + file = Cache.getDefault("STARTUP_FILE", + Cache.getDefault("www.jalview.org", "https://www.jalview.org") + "/examples/exampleFile_2_7.jvp"); if (file.equals("http://www.jalview.org/examples/exampleFile_2_3.jar") || file.equals( @@@ -862,8 -856,8 +866,8 @@@ private static void setLookAndFeel() { - // property laf = "crossplatform", "system", "gtk", "metal", "nimbus" or - // "mac" + // property laf = "crossplatform", "system", "gtk", "metal", "nimbus", + // "mac" or "flat" // If not set (or chosen laf fails), use the normal SystemLaF and if on Mac, // try Quaqua/Vaqua. String lafProp = System.getProperty("laf"); @@@ -884,62 -878,69 +888,69 @@@ lafSet = setCrossPlatformLookAndFeel(); if (!lafSet) { - Cache.log.error("Could not set requested laf=" + laf); + Console.error("Could not set requested laf=" + laf); } break; case "system": lafSet = setSystemLookAndFeel(); if (!lafSet) { - Cache.log.error("Could not set requested laf=" + laf); + Console.error("Could not set requested laf=" + laf); } break; case "gtk": lafSet = setGtkLookAndFeel(); if (!lafSet) { - Cache.log.error("Could not set requested laf=" + laf); + Console.error("Could not set requested laf=" + laf); } break; case "metal": lafSet = setMetalLookAndFeel(); if (!lafSet) { - Cache.log.error("Could not set requested laf=" + laf); + Console.error("Could not set requested laf=" + laf); } break; case "nimbus": lafSet = setNimbusLookAndFeel(); if (!lafSet) { - Cache.log.error("Could not set requested laf=" + laf); + Console.error("Could not set requested laf=" + laf); } break; + case "flat": + lafSet = setFlatLookAndFeel(); + if (!lafSet) + { - Cache.log.error("Could not set requested laf=" + laf); ++ Console.error("Could not set requested laf=" + laf); + } + break; case "quaqua": lafSet = setQuaquaLookAndFeel(); if (!lafSet) { - Cache.log.error("Could not set requested laf=" + laf); + Console.error("Could not set requested laf=" + laf); } break; case "vaqua": lafSet = setVaquaLookAndFeel(); if (!lafSet) { - Cache.log.error("Could not set requested laf=" + laf); + Console.error("Could not set requested laf=" + laf); } break; case "mac": lafSet = setMacLookAndFeel(); if (!lafSet) { - Cache.log.error("Could not set requested laf=" + laf); + Console.error("Could not set requested laf=" + laf); } break; case "none": break; default: - Cache.log.error("Requested laf=" + laf + " not implemented"); + Console.error("Requested laf=" + laf + " not implemented"); } if (!lafSet) { @@@ -965,9 -966,9 +976,9 @@@ set = true; } catch (Exception ex) { - Cache.log.error("Unexpected Look and Feel Exception"); - Cache.log.error(ex.getMessage()); - Cache.log.debug(Cache.getStackTraceString(ex)); + Console.error("Unexpected Look and Feel Exception"); + Console.error(ex.getMessage()); + Console.debug(Cache.getStackTraceString(ex)); } return set; } @@@ -981,9 -982,9 +992,9 @@@ set = true; } catch (Exception ex) { - Cache.log.error("Unexpected Look and Feel Exception"); - Cache.log.error(ex.getMessage()); - Cache.log.debug(Cache.getStackTraceString(ex)); + Console.error("Unexpected Look and Feel Exception"); + Console.error(ex.getMessage()); + Console.debug(Cache.getStackTraceString(ex)); } return set; } @@@ -1010,9 -1011,9 +1021,9 @@@ set = true; } catch (Exception ex) { - Cache.log.error("Unexpected Look and Feel Exception"); - Cache.log.error(ex.getMessage()); - Cache.log.debug(Cache.getStackTraceString(ex)); + Console.error("Unexpected Look and Feel Exception"); + Console.error(ex.getMessage()); + Console.debug(Cache.getStackTraceString(ex)); } return set; } @@@ -1035,6 -1036,45 +1046,45 @@@ "javax.swing.plaf.nimbus.NimbusLookAndFeel", false); } + private static boolean setFlatLookAndFeel() + { + boolean set = setSpecificLookAndFeel("flatlaf light", + "com.formdev.flatlaf.FlatLightLaf", false); + if (set) + { + if (Platform.isMac()) + { + System.setProperty("apple.laf.useScreenMenuBar", "true"); + System.setProperty("apple.awt.application.name", + ChannelProperties.getProperty("app_name")); + System.setProperty("apple.awt.application.appearance", "system"); + if (SystemInfo.isMacFullWindowContentSupported + && Desktop.desktop != null) + { + Desktop.desktop.getRootPane() + .putClientProperty("apple.awt.fullWindowContent", true); + Desktop.desktop.getRootPane() + .putClientProperty("apple.awt.transparentTitleBar", true); + } + + SwingUtilities.invokeLater(() -> { + FlatLightLaf.setup(); + }); + } + + UIManager.put("TabbedPane.showTabSeparators", true); + UIManager.put("TabbedPane.tabSeparatorsFullHeight", true); + UIManager.put("TabbedPane.tabsOverlapBorder", true); + // UIManager.put("TabbedPane.hasFullBorder", true); + UIManager.put("TabbedPane.tabLayoutPolicy", "scroll"); + UIManager.put("TabbedPane.scrollButtonsPolicy", "asNeeded"); + UIManager.put("TabbedPane.smoothScrolling", true); + UIManager.put("TabbedPane.tabWidthMode", "compact"); + UIManager.put("TabbedPane.selectedBackground", Color.white); + } + return set; + } + private static boolean setQuaquaLookAndFeel() { return setSpecificLookAndFeel("quaqua", @@@ -1122,17 -1162,17 +1172,17 @@@ @Override public void run() { - Cache.log.debug( + Console.debug( "Initialising googletracker for usage stats."); Cache.initGoogleTracker(); - Cache.log.debug("Tracking enabled."); + Console.debug("Tracking enabled."); } }, new Runnable() { @Override public void run() { - Cache.log.debug("Not enabling Google Tracking."); + Console.debug("Not enabling Google Tracking."); } }, null, true); desktop.addDialogThread(prompter);