author | wenzelm |
Wed, 16 Apr 2025 12:41:46 +0200 | |
changeset 82548 | afa1c2d485ae |
parent 82546 | 553aa1dd0feb |
child 82549 | 1abc4fc6a5f8 |
permissions | -rw-r--r-- |
82546
553aa1dd0feb
support for SVG icons via com.formdev.flatlaf.extras.FlatSVGIcon from flatlaf-extras (which is based on JSVG);
wenzelm
parents:
diff
changeset
|
1 |
diff -ru jedit5.7.0/jEdit/ivy.xml jedit5.7.0-patched/jEdit/ivy.xml |
553aa1dd0feb
support for SVG icons via com.formdev.flatlaf.extras.FlatSVGIcon from flatlaf-extras (which is based on JSVG);
wenzelm
parents:
diff
changeset
|
2 |
--- jedit5.7.0/jEdit/ivy.xml 2024-08-03 19:53:28.000000000 +0200 |
82548
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
3 |
+++ jedit5.7.0-patched/jEdit/ivy.xml 2025-04-16 12:22:57.782535840 +0200 |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
4 |
@@ -94,5 +94,8 @@ |
82546
553aa1dd0feb
support for SVG icons via com.formdev.flatlaf.extras.FlatSVGIcon from flatlaf-extras (which is based on JSVG);
wenzelm
parents:
diff
changeset
|
5 |
<dependency org="com.google.code.findbugs" name="jsr305" rev="3.0.2"/> |
553aa1dd0feb
support for SVG icons via com.formdev.flatlaf.extras.FlatSVGIcon from flatlaf-extras (which is based on JSVG);
wenzelm
parents:
diff
changeset
|
6 |
|
553aa1dd0feb
support for SVG icons via com.formdev.flatlaf.extras.FlatSVGIcon from flatlaf-extras (which is based on JSVG);
wenzelm
parents:
diff
changeset
|
7 |
<dependency org="com.evolvedbinary.appbundler" name="appbundler" rev="1.3.0" conf="appbundler"/> |
553aa1dd0feb
support for SVG icons via com.formdev.flatlaf.extras.FlatSVGIcon from flatlaf-extras (which is based on JSVG);
wenzelm
parents:
diff
changeset
|
8 |
+ |
82548
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
9 |
+ <dependency org="com.formdev" name="flatlaf" rev="3.6"/> |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
10 |
+ <dependency org="com.formdev" name="flatlaf-extras" rev="3.6"/> |
82546
553aa1dd0feb
support for SVG icons via com.formdev.flatlaf.extras.FlatSVGIcon from flatlaf-extras (which is based on JSVG);
wenzelm
parents:
diff
changeset
|
11 |
</dependencies> |
553aa1dd0feb
support for SVG icons via com.formdev.flatlaf.extras.FlatSVGIcon from flatlaf-extras (which is based on JSVG);
wenzelm
parents:
diff
changeset
|
12 |
</ivy-module> |
553aa1dd0feb
support for SVG icons via com.formdev.flatlaf.extras.FlatSVGIcon from flatlaf-extras (which is based on JSVG);
wenzelm
parents:
diff
changeset
|
13 |
diff -ru jedit5.7.0/jEdit/org/gjt/sp/jedit/GUIUtilities.java jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/GUIUtilities.java |
553aa1dd0feb
support for SVG icons via com.formdev.flatlaf.extras.FlatSVGIcon from flatlaf-extras (which is based on JSVG);
wenzelm
parents:
diff
changeset
|
14 |
--- jedit5.7.0/jEdit/org/gjt/sp/jedit/GUIUtilities.java 2024-08-03 19:53:15.000000000 +0200 |
82548
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
15 |
+++ jedit5.7.0-patched/jEdit/org/gjt/sp/jedit/GUIUtilities.java 2025-04-16 12:21:09.744865617 +0200 |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
16 |
@@ -42,6 +42,8 @@ |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
17 |
import java.net.URL; |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
18 |
import java.util.*; |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
19 |
import java.util.List; |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
20 |
+import java.util.regex.Pattern; |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
21 |
+import java.util.regex.Matcher; |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
22 |
import java.lang.ref.SoftReference; |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
23 |
|
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
24 |
import javax.annotation.Nonnull; |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
25 |
@@ -72,6 +74,8 @@ |
82546
553aa1dd0feb
support for SVG icons via com.formdev.flatlaf.extras.FlatSVGIcon from flatlaf-extras (which is based on JSVG);
wenzelm
parents:
diff
changeset
|
26 |
import java.util.concurrent.ScheduledExecutorService; |
553aa1dd0feb
support for SVG icons via com.formdev.flatlaf.extras.FlatSVGIcon from flatlaf-extras (which is based on JSVG);
wenzelm
parents:
diff
changeset
|
27 |
import java.util.concurrent.TimeUnit; |
553aa1dd0feb
support for SVG icons via com.formdev.flatlaf.extras.FlatSVGIcon from flatlaf-extras (which is based on JSVG);
wenzelm
parents:
diff
changeset
|
28 |
import java.util.concurrent.atomic.AtomicLong; |
553aa1dd0feb
support for SVG icons via com.formdev.flatlaf.extras.FlatSVGIcon from flatlaf-extras (which is based on JSVG);
wenzelm
parents:
diff
changeset
|
29 |
+ |
553aa1dd0feb
support for SVG icons via com.formdev.flatlaf.extras.FlatSVGIcon from flatlaf-extras (which is based on JSVG);
wenzelm
parents:
diff
changeset
|
30 |
+import com.formdev.flatlaf.extras.FlatSVGIcon; |
553aa1dd0feb
support for SVG icons via com.formdev.flatlaf.extras.FlatSVGIcon from flatlaf-extras (which is based on JSVG);
wenzelm
parents:
diff
changeset
|
31 |
//}}} |
553aa1dd0feb
support for SVG icons via com.formdev.flatlaf.extras.FlatSVGIcon from flatlaf-extras (which is based on JSVG);
wenzelm
parents:
diff
changeset
|
32 |
|
553aa1dd0feb
support for SVG icons via com.formdev.flatlaf.extras.FlatSVGIcon from flatlaf-extras (which is based on JSVG);
wenzelm
parents:
diff
changeset
|
33 |
/** Various GUI utility functions related to icons, menus, toolbars, keyboard shortcuts, etc. |
82548
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
34 |
@@ -115,14 +119,14 @@ |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
35 |
* @return the icon |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
36 |
* @since jEdit 2.6pre7 |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
37 |
*/ |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
38 |
- public static Icon loadIcon(String iconName) |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
39 |
+ public static Icon loadIcon(String iconSpec) |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
40 |
{ |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
41 |
- if(iconName == null) |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
42 |
+ if(iconSpec == null) |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
43 |
return null; |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
44 |
|
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
45 |
// * Enable old icon naming scheme support |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
46 |
- if(deprecatedIcons.containsKey(iconName)) |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
47 |
- iconName = deprecatedIcons.get(iconName); |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
48 |
+ if(deprecatedIcons.containsKey(iconSpec)) |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
49 |
+ iconSpec = deprecatedIcons.get(iconSpec); |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
50 |
|
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
51 |
// check if there is a cached version first |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
52 |
Map<String, Icon> cache = null; |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
53 |
@@ -135,12 +139,25 @@ |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
54 |
cache = new HashMap<>(); |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
55 |
iconCache = new SoftReference<>(cache); |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
56 |
} |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
57 |
- Icon icon = cache.get(iconName); |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
58 |
+ Icon icon = cache.get(iconSpec); |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
59 |
if(icon != null) |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
60 |
return icon; |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
61 |
|
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
62 |
URL url; |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
63 |
|
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
64 |
+ float iconScale = 1.0f; |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
65 |
+ String iconName = iconSpec; |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
66 |
+ { |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
67 |
+ Matcher matcher = Pattern.compile("^([^?]+)\\?scale=(.+)$").matcher(iconSpec); |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
68 |
+ if (matcher.matches()) { |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
69 |
+ try { |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
70 |
+ iconScale = Float.valueOf(matcher.group(2)); |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
71 |
+ iconName = matcher.group(1); |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
72 |
+ } |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
73 |
+ catch (NumberFormatException e) { } |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
74 |
+ } |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
75 |
+ } |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
76 |
+ |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
77 |
try |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
78 |
{ |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
79 |
// get the icon |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
80 |
@@ -164,9 +181,11 @@ |
82546
553aa1dd0feb
support for SVG icons via com.formdev.flatlaf.extras.FlatSVGIcon from flatlaf-extras (which is based on JSVG);
wenzelm
parents:
diff
changeset
|
81 |
} |
553aa1dd0feb
support for SVG icons via com.formdev.flatlaf.extras.FlatSVGIcon from flatlaf-extras (which is based on JSVG);
wenzelm
parents:
diff
changeset
|
82 |
} |
553aa1dd0feb
support for SVG icons via com.formdev.flatlaf.extras.FlatSVGIcon from flatlaf-extras (which is based on JSVG);
wenzelm
parents:
diff
changeset
|
83 |
|
553aa1dd0feb
support for SVG icons via com.formdev.flatlaf.extras.FlatSVGIcon from flatlaf-extras (which is based on JSVG);
wenzelm
parents:
diff
changeset
|
84 |
- icon = new ImageIcon(url); |
82548
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
85 |
+ icon = |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
86 |
+ url.toString().endsWith(".svg") ? |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
87 |
+ new FlatSVGIcon(url).derive(iconScale) : new ImageIcon(url); |
82546
553aa1dd0feb
support for SVG icons via com.formdev.flatlaf.extras.FlatSVGIcon from flatlaf-extras (which is based on JSVG);
wenzelm
parents:
diff
changeset
|
88 |
|
82548
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
89 |
- cache.put(iconName,icon); |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
90 |
+ cache.put(iconSpec,icon); |
82546
553aa1dd0feb
support for SVG icons via com.formdev.flatlaf.extras.FlatSVGIcon from flatlaf-extras (which is based on JSVG);
wenzelm
parents:
diff
changeset
|
91 |
return icon; |
82548
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
92 |
} //}}} |
afa1c2d485ae
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
wenzelm
parents:
82546
diff
changeset
|
93 |