/** * Copyright 2012 multibit.org * * Licensed under the MIT license (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://opensource.org/licenses/mit-license.php * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.bither.utils; import net.bither.bitherj.core.Tx; import net.bither.viewsystem.MainFrame; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.swing.*; import java.awt.*; public final class ImageLoader { private static final Logger log = LoggerFactory.getLogger(ImageLoader.class); public static final String BITHER_ICON_FILE = "/images/bither_icon.png"; public static final String SHAPE_TRIANGLE_ICON_FILE = "/images/shapeTriangle.png"; public static final String SHAPE_SQUARE_ICON_FILE = "/images/shapeSquare.png"; public static final String SHAPE_PENTAGON_ICON_FILE = "/images/shapePentagon.png"; public static final String SHAPE_HEXAGON_ICON_FILE = "/images/shapeHexagon.png"; public static final String TICK_ICON_FILE = "/images/tick.png"; public static final String TRANSACTIONS_ICON_FILE = "/images/transactions.png"; public static final ImageIcon CHECK_MARK = ImageLoader.createImageIcon("/images/checkmark.png"); public static final ImageIcon CHECK_FAILED = ImageLoader.createImageIcon("/images/check_failed.png"); public static final String PROGRESS_0_ICON_FILE = "/images/circleProgress0.png"; private static final String PROGRESS_1_ICON_FILE = "/images/circleProgress1.png"; private static final String PROGRESS_2_ICON_FILE = "/images/circleProgress2.png"; private static final String PROGRESS_3_ICON_FILE = "/images/circleProgress3.png"; private static final String PROGRESS_4_ICON_FILE = "/images/circleProgress4.png"; private static final String PROGRESS_5_ICON_FILE = "/images/circleProgress5.png"; private static final String RTL_PROGRESS_1_ICON_FILE = "/images/circleProgress1.png"; private static final String RTL_PROGRESS_2_ICON_FILE = "/images/circleProgress2.png"; private static final String RTL_PROGRESS_3_ICON_FILE = "/images/circleProgress3.png"; private static final String RTL_PROGRESS_4_ICON_FILE = "/images/circleProgress4.png"; private static final String RTL_PROGRESS_5_ICON_FILE = "/images/circleProgress5.png"; private static final String PICKAXE_ICON_FILE = "/images/pickaxe.png"; private static final String SMALL_EXCLAMATION_MARK_ICON_FILE = "/images/smallExclamationMark.png"; public static ImageIcon pickaxeIcon = ImageLoader.createImageIcon(PICKAXE_ICON_FILE); private static ImageIcon tickIcon = ImageLoader.createImageIcon(TICK_ICON_FILE); private static ImageIcon progress0Icon = ImageLoader.createImageIcon(PROGRESS_0_ICON_FILE); private static ImageIcon progress1Icon = ImageLoader.createImageIcon(PROGRESS_1_ICON_FILE); private static ImageIcon progress2Icon = ImageLoader.createImageIcon(PROGRESS_2_ICON_FILE); private static ImageIcon progress3Icon = ImageLoader.createImageIcon(PROGRESS_3_ICON_FILE); private static ImageIcon progress4Icon = ImageLoader.createImageIcon(PROGRESS_4_ICON_FILE); private static ImageIcon progress5Icon = ImageLoader.createImageIcon(PROGRESS_5_ICON_FILE); private static ImageIcon rtlProgress1Icon = ImageLoader.createImageIcon(RTL_PROGRESS_1_ICON_FILE); private static ImageIcon rtlProgress2Icon = ImageLoader.createImageIcon(RTL_PROGRESS_2_ICON_FILE); private static ImageIcon rtlProgress3Icon = ImageLoader.createImageIcon(RTL_PROGRESS_3_ICON_FILE); private static ImageIcon rtlProgress4Icon = ImageLoader.createImageIcon(RTL_PROGRESS_4_ICON_FILE); private static ImageIcon rtlProgress5Icon = ImageLoader.createImageIcon(RTL_PROGRESS_5_ICON_FILE); private static ImageIcon shapeTriangleIcon; private static ImageIcon shapeSquareIcon; private static ImageIcon shapeHeptagonIcon; private static ImageIcon shapeHexagonIcon; static { shapeTriangleIcon = ImageLoader.createImageIcon(ImageLoader.SHAPE_TRIANGLE_ICON_FILE); shapeSquareIcon = ImageLoader.createImageIcon(ImageLoader.SHAPE_SQUARE_ICON_FILE); shapeHeptagonIcon = ImageLoader.createImageIcon(ImageLoader.SHAPE_PENTAGON_ICON_FILE); shapeHexagonIcon = ImageLoader.createImageIcon(ImageLoader.SHAPE_HEXAGON_ICON_FILE); } /** * Utility class should not have a public constructor */ private ImageLoader() { } /** * Returns an ImageIcon, or null if the path was invalid. */ public static ImageIcon createImageIcon(String path) { if (path == null) { return null; } java.net.URL imgURL = MainFrame.class.getResource(path); if (imgURL != null) { return new ImageIcon(imgURL); } else { log.error("createImageIcon: Could not find file: " + path); return null; } } public static ImageIcon getBuildingIcon(Tx transaction, int numberOfBlocksEmbedded) { if (numberOfBlocksEmbedded < 0) { numberOfBlocksEmbedded = 0; } if (numberOfBlocksEmbedded > 6) { numberOfBlocksEmbedded = 6; } boolean isLeftToRight = ComponentOrientation.getOrientation(LocaliserUtils.getLocale()).isLeftToRight(); switch (numberOfBlocksEmbedded) { case 0: { return getConfidenceIcon(transaction); } case 1: { if (isLeftToRight) { return progress1Icon; } else { return rtlProgress1Icon; } } case 2: { if (isLeftToRight) { return progress2Icon; } else { return rtlProgress2Icon; } } case 3: { if (isLeftToRight) { return progress3Icon; } else { return rtlProgress3Icon; } } case 4: { if (isLeftToRight) { return progress4Icon; } else { return rtlProgress4Icon; } } case 5: { if (isLeftToRight) { return progress5Icon; } else { return rtlProgress5Icon; } } case 6: { return tickIcon; } default: return getConfidenceIcon(transaction); } } private static ImageIcon getConfidenceIcon(Tx tx) { // By default return a triangle which indicates the least known. ImageIcon iconToReturn = shapeTriangleIcon; if (tx.getConfirmationCount() == 0) { return progress0Icon; } return iconToReturn; } public static ImageIcon getConfidenceIcon(int numberOfPeers) { // By default return a triangle which indicates the least known. ImageIcon iconToReturn; if (numberOfPeers >= 4) { return progress0Icon; } else { switch (numberOfPeers) { case 0: iconToReturn = shapeTriangleIcon; break; case 1: iconToReturn = shapeSquareIcon; break; case 2: iconToReturn = shapeHeptagonIcon; break; case 3: iconToReturn = shapeHexagonIcon; break; default: iconToReturn = shapeTriangleIcon; } } return iconToReturn; } }