mirror of
https://github.com/DSheirer/sdrtrunk.git
synced 2026-11-12 16:47:31 -05:00
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:
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user