Resolves issue with including icons in gradle build product. Updates

all icon handling code to use absolute path for bundled icons.
This commit is contained in:
Denny
2017-12-26 07:13:15 -05:00
parent 42aec490bd
commit 3d9044802e
61 changed files with 211 additions and 108 deletions

View File

@@ -24,7 +24,8 @@ import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.swing.*;
import javax.swing.ImageIcon;
import java.net.URL;
@JacksonXmlRootElement(localName = "icon")
public class Icon implements Comparable<Icon>
@@ -80,7 +81,17 @@ public class Icon implements Comparable<Icon>
{
try
{
mImageIcon = new ImageIcon(mPath);
URL imageURL = Icon.class.getResource(mPath);
if(imageURL == null && !mPath.startsWith("/"))
{
imageURL = (Icon.class.getResource("/" + mPath));
}
if(imageURL != null)
{
mImageIcon = new ImageIcon(imageURL);
}
}
catch(Exception e)
{

View File

@@ -25,10 +25,12 @@ import io.github.dsheirer.util.ThreadPool;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.swing.*;
import javax.swing.ImageIcon;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import java.awt.*;
import java.awt.Component;
import java.awt.EventQueue;
import java.awt.Image;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
@@ -154,7 +156,7 @@ public class IconManager
return mResizedIcons.get(scaledIconName);
}
io.github.dsheirer.icon.Icon icon = getModel().getIcon(name);
Icon icon = getModel().getIcon(name);
ImageIcon scaledIcon = getScaledIcon(icon.getIcon(), height);
mResizedIcons.put(scaledIconName, scaledIcon);
@@ -181,6 +183,19 @@ public class IconManager
return new ImageIcon(scaledImage);
}
/**
* Constructs an icon and scales it to the specified height
* @param path
* @param height
* @return
*/
public static ImageIcon getScaledIcon(String path, int height)
{
Icon icon = new Icon("", path);
return getScaledIcon(icon.getIcon(), height);
}
/**
* Folder where icon, backup and lock files are stored
*/
@@ -359,26 +374,26 @@ public class IconManager
{
IconSet iconSet = new IconSet();
io.github.dsheirer.icon.Icon defaultIcon = new io.github.dsheirer.icon.Icon(IconTableModel.DEFAULT_ICON, "images/no_icon.png");
Icon defaultIcon = new Icon(IconTableModel.DEFAULT_ICON, "images/no_icon.png");
iconSet.add(defaultIcon);
iconSet.setDefaultIcon(defaultIcon.getName());
iconSet.add(new io.github.dsheirer.icon.Icon("Ambulance", "images/ambulance.png"));
iconSet.add(new io.github.dsheirer.icon.Icon("Block Truck", "images/concrete_block_truck.png"));
iconSet.add(new io.github.dsheirer.icon.Icon("CWID", "images/cwid.png"));
iconSet.add(new io.github.dsheirer.icon.Icon("Dispatcher", "images/dispatcher.png"));
iconSet.add(new io.github.dsheirer.icon.Icon("Dump Truck", "images/dump_truck_red.png"));
iconSet.add(new io.github.dsheirer.icon.Icon("Fire Truck", "images/fire_truck.png"));
iconSet.add(new io.github.dsheirer.icon.Icon("Garbage Truck", "images/garbage_truck.png"));
iconSet.add(new io.github.dsheirer.icon.Icon("Loader", "images/loader.png"));
iconSet.add(new io.github.dsheirer.icon.Icon("Police", "images/police.png"));
iconSet.add(new io.github.dsheirer.icon.Icon("Propane Truck", "images/propane_truck.png"));
iconSet.add(new io.github.dsheirer.icon.Icon("Rescue Truck", "images/rescue_truck.png"));
iconSet.add(new io.github.dsheirer.icon.Icon("School Bus", "images/school_bus.png"));
iconSet.add(new io.github.dsheirer.icon.Icon("Taxi", "images/taxi.png"));
iconSet.add(new io.github.dsheirer.icon.Icon("Train", "images/train.png"));
iconSet.add(new io.github.dsheirer.icon.Icon("Transport Bus", "images/opt_bus.png"));
iconSet.add(new io.github.dsheirer.icon.Icon("Van", "images/van.png"));
iconSet.add(new Icon("Ambulance", "images/ambulance.png"));
iconSet.add(new Icon("Block Truck", "images/concrete_block_truck.png"));
iconSet.add(new Icon("CWID", "images/cwid.png"));
iconSet.add(new Icon("Dispatcher", "images/dispatcher.png"));
iconSet.add(new Icon("Dump Truck", "images/dump_truck_red.png"));
iconSet.add(new Icon("Fire Truck", "images/fire_truck.png"));
iconSet.add(new Icon("Garbage Truck", "images/garbage_truck.png"));
iconSet.add(new Icon("Loader", "images/loader.png"));
iconSet.add(new Icon("Police", "images/police.png"));
iconSet.add(new Icon("Propane Truck", "images/propane_truck.png"));
iconSet.add(new Icon("Rescue Truck", "images/rescue_truck.png"));
iconSet.add(new Icon("School Bus", "images/school_bus.png"));
iconSet.add(new Icon("Taxi", "images/taxi.png"));
iconSet.add(new Icon("Train", "images/train.png"));
iconSet.add(new Icon("Transport Bus", "images/opt_bus.png"));
iconSet.add(new Icon("Van", "images/van.png"));
return iconSet;
}

View File

@@ -18,7 +18,7 @@
******************************************************************************/
package io.github.dsheirer.icon;
import javax.swing.*;
import javax.swing.ImageIcon;
import javax.swing.table.AbstractTableModel;
import java.util.ArrayList;
import java.util.Collections;
@@ -32,10 +32,10 @@ public class IconTableModel extends AbstractTableModel
public static final int COLUMN_IMAGE_ICON = 0;
public static final int COLUMN_ICON_NAME = 1;
private io.github.dsheirer.icon.Icon mDefaultIcon;
private Icon mDefaultIcon;
private Map<String,io.github.dsheirer.icon.Icon> mIconMap = new HashMap<>();
private List<io.github.dsheirer.icon.Icon> mIcons = new ArrayList<>();
private Map<String,Icon> mIconMap = new HashMap<>();
private List<Icon> mIcons = new ArrayList<>();
public IconTableModel()
{
@@ -49,7 +49,7 @@ public class IconTableModel extends AbstractTableModel
fireTableDataChanged();
for(io.github.dsheirer.icon.Icon icon: iconSet.getIcons())
for(Icon icon: iconSet.getIcons())
{
add(icon);
}
@@ -60,7 +60,7 @@ public class IconTableModel extends AbstractTableModel
/**
* Adds the icon to the model
*/
public void add(io.github.dsheirer.icon.Icon icon)
public void add(Icon icon)
{
if(icon != null)
{
@@ -75,7 +75,7 @@ public class IconTableModel extends AbstractTableModel
/**
* Removes the icon from the model
*/
public void remove(io.github.dsheirer.icon.Icon icon)
public void remove(Icon icon)
{
if(icon != null && mIcons.contains(icon))
{
@@ -89,7 +89,7 @@ public class IconTableModel extends AbstractTableModel
}
public io.github.dsheirer.icon.Icon get(int row)
public Icon get(int row)
{
if(row < mIcons.size())
{
@@ -116,7 +116,7 @@ public class IconTableModel extends AbstractTableModel
{
if(rowIndex < mIcons.size() && columnIndex < getColumnCount())
{
io.github.dsheirer.icon.Icon icon = get(rowIndex);
Icon icon = get(rowIndex);
switch(columnIndex)
{
@@ -162,19 +162,19 @@ public class IconTableModel extends AbstractTableModel
/**
* Icons in an array - suitable for use in a JComboBox
*/
public io.github.dsheirer.icon.Icon[] getIconsAsArray()
public Icon[] getIconsAsArray()
{
List<io.github.dsheirer.icon.Icon> icons = new ArrayList<>(mIconMap.values());
List<Icon> icons = new ArrayList<>(mIconMap.values());
Collections.sort(icons);
return icons.toArray(new io.github.dsheirer.icon.Icon[icons.size()]);
return icons.toArray(new Icon[icons.size()]);
}
/**
* Returns the current default icon
*/
public io.github.dsheirer.icon.Icon getDefaultIcon()
public Icon getDefaultIcon()
{
return mDefaultIcon;
}
@@ -182,7 +182,7 @@ public class IconTableModel extends AbstractTableModel
/**
* Indicates if the icon argument is the current default icon
*/
public boolean isDefaultIcon(io.github.dsheirer.icon.Icon icon)
public boolean isDefaultIcon(Icon icon)
{
return icon == getDefaultIcon();
}
@@ -198,7 +198,7 @@ public class IconTableModel extends AbstractTableModel
return name != null && !name.isEmpty() && mIconMap.containsKey(name);
}
public void setDefaultIcon(io.github.dsheirer.icon.Icon icon)
public void setDefaultIcon(Icon icon)
{
if(icon != null)
{
@@ -223,7 +223,7 @@ public class IconTableModel extends AbstractTableModel
name = DEFAULT_ICON;
}
io.github.dsheirer.icon.Icon defaultIcon = mIconMap.get(name);
Icon defaultIcon = mIconMap.get(name);
if(defaultIcon != null)
{
@@ -231,7 +231,7 @@ public class IconTableModel extends AbstractTableModel
}
else
{
defaultIcon = new io.github.dsheirer.icon.Icon(DEFAULT_ICON, "images/no_icon.png");
defaultIcon = new Icon(DEFAULT_ICON, "images/no_icon.png");
add(defaultIcon);
setDefaultIcon(defaultIcon);
}
@@ -240,14 +240,14 @@ public class IconTableModel extends AbstractTableModel
/**
* Returns the named icon or the default icon if the named icon does not exist
*/
public io.github.dsheirer.icon.Icon getIcon(String name)
public Icon getIcon(String name)
{
if(name == null || name.isEmpty())
{
return mDefaultIcon;
}
io.github.dsheirer.icon.Icon icon = mIconMap.get(name);
Icon icon = mIconMap.get(name);
if(icon == null)
{
@@ -263,7 +263,7 @@ public class IconTableModel extends AbstractTableModel
public IconSet getIconSet()
{
IconSet iconSet = new IconSet();
iconSet.setIcons(new ArrayList<io.github.dsheirer.icon.Icon>(mIconMap.values()));
iconSet.setIcons(new ArrayList<Icon>(mIconMap.values()));
iconSet.setDefaultIcon(getDefaultIcon().getName());
return iconSet;
}