Compare commits

..

3 Commits

Author SHA1 Message Date
Denny
336669f1d5 Updates build version to 0.3.3 beta 3 2018-01-01 07:26:42 -05:00
Denny Sheirer
46cf7f4193 Merge pull request #309 from DSheirer/308-icon-manager-npe
308 IconManager throws NPE when loading external icons
2018-01-01 07:25:29 -05:00
Denny
e9aeb09011 Resolves issues with NPE handling and loading external icons. 2018-01-01 07:24:37 -05:00
4 changed files with 47 additions and 20 deletions

View File

@@ -15,7 +15,7 @@ repositories {
mavenCentral() mavenCentral()
} }
version = '0.3.3-beta.2' version = '0.3.3-beta.3'
sourceCompatibility = 1.8 sourceCompatibility = 1.8
sourceSets { sourceSets {

View File

@@ -81,16 +81,23 @@ public class Icon implements Comparable<Icon>
{ {
try try
{ {
URL imageURL = Icon.class.getResource(mPath); if(mPath.startsWith("/"))
if(imageURL == null && !mPath.startsWith("/"))
{ {
imageURL = (Icon.class.getResource("/" + mPath)); mImageIcon = new ImageIcon(mPath);
} }
else
if(imageURL != null)
{ {
mImageIcon = new ImageIcon(imageURL); 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) catch(Exception e)

View File

@@ -129,7 +129,7 @@ public class IconManager
/** /**
* All icons in a sorted array * All icons in a sorted array
*/ */
public io.github.dsheirer.icon.Icon[] getIcons() public Icon[] getIcons()
{ {
return getModel().getIconsAsArray(); return getModel().getIconsAsArray();
} }
@@ -159,7 +159,11 @@ public class IconManager
Icon icon = getModel().getIcon(name); Icon icon = getModel().getIcon(name);
ImageIcon scaledIcon = getScaledIcon(icon.getIcon(), height); ImageIcon scaledIcon = getScaledIcon(icon.getIcon(), height);
mResizedIcons.put(scaledIconName, scaledIcon);
if(scaledIcon != null)
{
mResizedIcons.put(scaledIconName, scaledIcon);
}
return scaledIcon; return scaledIcon;
} }
@@ -173,14 +177,19 @@ public class IconManager
*/ */
public static ImageIcon getScaledIcon(ImageIcon original, int height) public static ImageIcon getScaledIcon(ImageIcon original, int height)
{ {
double scale = (double) original.getIconHeight() / (double) height; if(original != null)
{
double scale = (double) original.getIconHeight() / (double) height;
int scaledWidth = (int) ((double) original.getIconWidth() / scale); int scaledWidth = (int) ((double) original.getIconWidth() / scale);
Image scaledImage = original.getImage().getScaledInstance(scaledWidth, Image scaledImage = original.getImage().getScaledInstance(scaledWidth,
height, java.awt.Image.SCALE_SMOOTH); height, java.awt.Image.SCALE_SMOOTH);
return new ImageIcon(scaledImage); return new ImageIcon(scaledImage);
}
return null;
} }
/** /**
@@ -191,9 +200,14 @@ public class IconManager
*/ */
public static ImageIcon getScaledIcon(String path, int height) public static ImageIcon getScaledIcon(String path, int height)
{ {
Icon icon = new Icon("", path); if(path != null)
{
Icon icon = new Icon("", path);
return getScaledIcon(icon.getIcon(), height); return getScaledIcon(icon.getIcon(), height);
}
return null;
} }
/** /**

View File

@@ -20,10 +20,16 @@ package io.github.dsheirer.icon;
import net.miginfocom.swing.MigLayout; import net.miginfocom.swing.MigLayout;
import javax.swing.*; import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener; import javax.swing.event.DocumentListener;
import java.awt.*; import java.awt.Dimension;
import java.awt.Frame;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.io.File; import java.io.File;
@@ -119,7 +125,7 @@ public class IconSelector extends JDialog implements DocumentListener
String name = mNameText.getText(); String name = mNameText.getText();
String path = mFileLabel.getText(); String path = mFileLabel.getText();
io.github.dsheirer.icon.Icon icon = new io.github.dsheirer.icon.Icon(name, path); Icon icon = new Icon(name, path);
mIconTableModel.add(icon); mIconTableModel.add(icon);
IconSelector.this.dispose(); IconSelector.this.dispose();