src/Tools/jEdit/patches/icons
author wenzelm
Wed, 16 Apr 2025 12:41:46 +0200
changeset 82548 afa1c2d485ae
parent 82546 553aa1dd0feb
child 82549 1abc4fc6a5f8
permissions -rw-r--r--
support scaled svg icons directly in GUIUtilities.loadIcon -- requires to update jedit component;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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