Browse Source

REPORT-47797 本地和远程工程切换,日志有两个插件的报错

【问题原因】有些插件只用了_normal和_selected两种图标,没有使用_disabled图标,但是之前的逻辑没有对资源是否存在进行判断,会导致IOUtils中输出错误日志
【改动思路】添加判断;把适配插件的逻辑抽取一下
feature/big-screen
Yvan 4 years ago
parent
commit
035883fd57
  1. 16
      designer-base/src/main/java/com/fr/base/svg/IconUtils.java

16
designer-base/src/main/java/com/fr/base/svg/IconUtils.java

@ -38,9 +38,8 @@ public class IconUtils {
if (IOUtils.readResource(resource) != null) { if (IOUtils.readResource(resource) != null) {
return SVGIcon.readSVGIcon(resource); return SVGIcon.readSVGIcon(resource);
} }
// 适配某些插件里是_normal.png、_selected.png的情况 // 适配插件
String pngResource = resource.replace(ICON_SUFFIX_SVG, ICON_SUFFIX_PNG); return adjustPluginsPng(resource);
return IOUtils.readIcon(pngResource);
} }
return IOUtils.readIcon(resource); return IOUtils.readIcon(resource);
} }
@ -48,6 +47,17 @@ public class IconUtils {
return readNoSuffixResource(resource, ICON_TYPE_NORMAL); return readNoSuffixResource(resource, ICON_TYPE_NORMAL);
} }
/**
* 适配插件中使用_normal.png_selected.png_disabled.png的情况
* @param resource 图片路径
* @return Icon
*/
private static Icon adjustPluginsPng(String resource) {
String pngResource = resource.replace(ICON_SUFFIX_SVG, ICON_SUFFIX_PNG);
// 考虑到某些插件可能只会使用三种图标中的一部分,这里做个判断,不然就会因为资源不存在而报错
return IOUtils.readResource(pngResource) == null ? new ImageIcon() : IOUtils.readIcon(pngResource);
}
/** /**
* 尝试读取不带扩展名的图标svg优先其次png最后gif都没读到就打印错误日志返回空白Icon * 尝试读取不带扩展名的图标svg优先其次png最后gif都没读到就打印错误日志返回空白Icon
* @param resource 图片路径 * @param resource 图片路径

Loading…
Cancel
Save