X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Futil%2FChannelProperties.java;h=4832588b196b8f1cd404d57219bb29a0c2ad6c24;hb=66270dda280788c15956c7a0485f0b9adf03c62a;hp=2194c4d9d781fe9e7e005c4f374f6d626e9ae266;hpb=b6f8ec5c6678d0f363c521b97bda9574d04c6338;p=jalview.git diff --git a/src/jalview/util/ChannelProperties.java b/src/jalview/util/ChannelProperties.java index 2194c4d..4832588 100644 --- a/src/jalview/util/ChannelProperties.java +++ b/src/jalview/util/ChannelProperties.java @@ -1,6 +1,29 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ package jalview.util; import java.awt.Image; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.net.URL; @@ -13,19 +36,19 @@ import java.util.Properties; import javax.swing.ImageIcon; -import jalview.bin.Cache; - public class ChannelProperties { - private static final String CHANNEL_PROPERTIES_FILENAME = "/channel_properties"; + public static final String CHANNEL_PROPERTIES_FILENAME = "channel.props"; - private static final Properties channelProps; + private static Properties channelProps; private static final Properties defaultProps; private static Map imageMap = new HashMap(); + private static Map urlMap = new HashMap(); + private static final ArrayList iconList; static @@ -45,20 +68,29 @@ public class ChannelProperties defaultProps.put("logo.512", "/default_images/jalview_logo-512.png"); defaultProps.put("rotatable_logo.48", "/default_images/rotatable_jalview_logo-38.png"); - defaultProps.put("bg_logo.62", "/default_images/barton_group-62.png"); - defaultProps.put("uod_banner", "/default_images/UoD_banner.png"); + defaultProps.put("bg_logo.28", "/default_images/barton_group-28.png"); + defaultProps.put("bg_logo.30", "/default_images/barton_group-30.png"); + defaultProps.put("bg_logo.32", "/default_images/barton_group-32.png"); + defaultProps.put("uod_banner.28", "/default_images/UoD_banner-28.png"); + defaultProps.put("uod_banner.30", "/default_images/UoD_banner-30.png"); + defaultProps.put("uod_banner.32", "/default_images/UoD_banner-32.png"); defaultProps.put("default_appbase", "https://www.jalview.org/getdown/release/1.8"); + defaultProps.put("preferences.filename", ".jalview_properties"); + defaultProps.put("channel", "none"); // load channel_properties Properties tryChannelProps = new Properties(); URL channelPropsURL = ChannelProperties.class - .getResource(CHANNEL_PROPERTIES_FILENAME); + .getResource("/" + CHANNEL_PROPERTIES_FILENAME); if (channelPropsURL == null) { // complete failure of channel_properties, set all properties to defaults - System.err.println("Failed to find '" + CHANNEL_PROPERTIES_FILENAME - + "' file, using defaults"); + System.err.println("Failed to find '/" + CHANNEL_PROPERTIES_FILENAME + + "' file at '" + + (channelPropsURL == null ? "null" + : channelPropsURL.toString()) + + "'. Using class defaultProps."); tryChannelProps = defaultProps; } else @@ -70,7 +102,7 @@ public class ChannelProperties channelPropsIS.close(); } catch (IOException e) { - Cache.log.warn(e.getMessage()); + System.err.println(e.getMessage()); // return false; } } @@ -103,7 +135,9 @@ public class ChannelProperties Image logo = null; String path = defaultProps.getProperty("logo." + size); URL imageURL = ChannelProperties.class.getResource(path); - logo = new ImageIcon(imageURL).getImage(); + ImageIcon imgIcon = imageURL == null ? null + : new ImageIcon(imageURL); + logo = imgIcon == null ? null : imgIcon.getImage(); if (logo != null) { iconList.add(logo); @@ -112,6 +146,25 @@ public class ChannelProperties } } + protected static void loadProps(File dir) + { + File channelPropsFile = new File(dir, CHANNEL_PROPERTIES_FILENAME); + if (channelPropsFile.exists()) + { + try + { + InputStream is = new FileInputStream(channelPropsFile); + channelProps.load(is); + } catch (FileNotFoundException e) + { + System.err.println(e.getMessage()); + } catch (IOException e) + { + System.err.println(e.getMessage()); + } + } + } + private static Properties channelProps() { return channelProps; @@ -122,6 +175,11 @@ public class ChannelProperties return imageMap; } + private static Map urlMap() + { + return urlMap; + } + /* * getProperty(key) will get property value from channel_properties for key. * If no property for key is found, it will fall back to using the defaultProps defined for this class. @@ -204,7 +262,8 @@ public class ChannelProperties } URL imageURL = ChannelProperties.class.getResource(path); - img = new ImageIcon(imageURL).getImage(); + ImageIcon imgIcon = imageURL == null ? null : new ImageIcon(imageURL); + img = imgIcon == null ? null : imgIcon.getImage(); if (img == null) { System.err.println( @@ -217,16 +276,34 @@ public class ChannelProperties else { imageMap().put(key, img); + urlMap.put(key, imageURL); } } return img; } /* + * Public method to get the URL object pointing to a cached image. + */ + public static URL getImageURL(String key) + { + if (getImage(key) != null) + { + if (urlMap().containsKey(key)) + { + return urlMap().getOrDefault(key, null); + } + System.err.println( + "Do not use getImageURL(key) before using getImage(key...)"); + } + return null; + } + + /* * Get a List of Icon images of different sizes. */ public static ArrayList getIconList() { return iconList; } -} \ No newline at end of file +}