This is an automated email from the ASF dual-hosted git repository.
ebakke pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push:
new 6fcd2c037c1 Prefer Icon.paintIcon over Graphics.drawImage to preserve
HiDPI icon resolution.
6fcd2c037c1 is described below
commit 6fcd2c037c18afe64fc839e39d3a48127df43b38
Author: Eirik Bakke <[email protected]>
AuthorDate: Mon Mar 10 16:41:24 2025 -0400
Prefer Icon.paintIcon over Graphics.drawImage to preserve HiDPI icon
resolution.
Various SVG icons were previously shown in a lower resolution due to being
painted with Graphics.drawImage(ImageIcon, x, y, null) instead of
Icon.paintIcon(null, Graphics, x, y). This PR changes the former to the latter
in all the simple cases that were found throughout the codebase (by grepping
for 'drawImage' and manually reviewing each case).
For example, the lightbulb icons in the editor gutter, and the actions in
the menu that shows up when you click them, were shown in low resolution on
Windows 11 with 150% HiDPI scaling enabled.
This is mostly an improvement for screens with a fractional HiDPI scaling
(e.g. 150%) on Windows. On 200% scaling (including on MacOS), icons are drawn
properly even with drawImage, due to ImageUtilities returning
MultiResolutionImage instances nowadays with 1x and 2x resolutions present.
---
.../web/jsf/navigation/graph/PageFlowScene.java | 10 ++++----
.../modules/db/dataview/output/DataViewUI.java | 6 ++---
.../visualizer/editable/DiffSplitPaneDivider.java | 13 +++++-----
.../visualizer/editable/LineNumbersActionsBar.java | 23 +++++++++--------
.../modules/editor/completion/CompletionJList.java | 4 +--
.../src/org/netbeans/editor/GlyphGutter.java | 21 +++++++--------
.../modules/editor/lib/drawing/DrawGraphics.java | 7 +++--
.../editor/hints/borrowed/ListCompletionView.java | 4 +--
.../src/org/netbeans/modules/form/HandleLayer.java | 28 ++++++++++----------
.../modules/form/layoutdesign/LayoutPainter.java | 15 ++++++-----
.../form/layoutsupport/griddesigner/GlassPane.java | 30 +++++++++++-----------
.../layoutsupport/griddesigner/GridDesigner.java | 6 ++---
.../src/org/openide/explorer/view/IconPanel.java | 17 ++++++------
13 files changed, 92 insertions(+), 92 deletions(-)
diff --git
a/enterprise/web.jsf.navigation/src/org/netbeans/modules/web/jsf/navigation/graph/PageFlowScene.java
b/enterprise/web.jsf.navigation/src/org/netbeans/modules/web/jsf/navigation/graph/PageFlowScene.java
index bec6847b707..763347688e9 100644
---
a/enterprise/web.jsf.navigation/src/org/netbeans/modules/web/jsf/navigation/graph/PageFlowScene.java
+++
b/enterprise/web.jsf.navigation/src/org/netbeans/modules/web/jsf/navigation/graph/PageFlowScene.java
@@ -48,6 +48,7 @@ import java.util.List;
import javax.swing.Action;
import javax.swing.ActionMap;
import javax.swing.BorderFactory;
+import javax.swing.Icon;
import javax.swing.InputMap;
import javax.swing.KeyStroke;
import javax.swing.border.Border;
@@ -76,7 +77,6 @@ import
org.netbeans.modules.web.jsf.navigation.graph.actions.PageFlowPopupProvid
import
org.netbeans.modules.web.jsf.navigation.graph.layout.ConnectionWrapperLayout;
import org.openide.actions.DeleteAction;
import org.openide.util.ImageUtilities;
-import org.openide.util.Utilities;
import org.openide.util.actions.CallbackSystemAction;
import org.openide.util.actions.SystemAction;
@@ -125,12 +125,12 @@ public class PageFlowScene extends GraphPinScene<Page,
NavigationCaseEdge, Pin>
private PFObjectSceneListener pfObjectSceneListener;
private static Paint PAINT_BACKGROUND;
static {
- Image sourceImage =
ImageUtilities.loadImage("org/netbeans/modules/web/jsf/navigation/graph/resources/paper_grid.png");
// NOI18N
- int width = sourceImage.getWidth(null);
- int height = sourceImage.getHeight(null);
+ Icon sourceIcon =
ImageUtilities.loadIcon("org/netbeans/modules/web/jsf/navigation/graph/resources/paper_grid.png");
// NOI18N
+ int width = sourceIcon.getIconWidth();
+ int height = sourceIcon.getIconHeight();
BufferedImage image = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = image.createGraphics();
- graphics.drawImage(sourceImage, 0, 0, null);
+ sourceIcon.paintIcon(null, graphics, 0, 0);
graphics.dispose();
PAINT_BACKGROUND = new TexturePaint(image, new Rectangle(0, 0, width,
height));
}
diff --git
a/ide/db.dataview/src/org/netbeans/modules/db/dataview/output/DataViewUI.java
b/ide/db.dataview/src/org/netbeans/modules/db/dataview/output/DataViewUI.java
index 10adab52e08..aafe0155d4b 100644
---
a/ide/db.dataview/src/org/netbeans/modules/db/dataview/output/DataViewUI.java
+++
b/ide/db.dataview/src/org/netbeans/modules/db/dataview/output/DataViewUI.java
@@ -43,7 +43,7 @@ import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.DefaultRowSorter;
-import javax.swing.ImageIcon;
+import javax.swing.Icon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
@@ -237,7 +237,7 @@ class DataViewUI extends JPanel {
dataPanelScrollPane.setRowHeaderView(rowHeader);
dataPanelScrollPane.setCorner(JScrollPane.UPPER_LEFT_CORNER,
rowHeader.getTableHeader());
- ImageIcon icon = ImageUtilities.loadImageIcon(IMG_PREFIX +
"preferences-desktop.png", false); // NOI18N
+ Icon icon = ImageUtilities.loadIcon(IMG_PREFIX +
"preferences-desktop.png", false); // NOI18N
JButton cornerButton = new JButton() {
@Override
protected void paintComponent(Graphics g) {
@@ -247,7 +247,7 @@ class DataViewUI extends JPanel {
g2d.setColor(getBackground());
g2d.fillRect(0, 0, getWidth(), getHeight());
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
- g2d.drawImage(icon.getImage(), (getWidth() - iconSize) / 2,
(getHeight() - iconSize) / 2, iconSize, iconSize, null);
+ icon.paintIcon(null, g2d, (getWidth() - iconSize) / 2,
(getHeight() - iconSize) / 2);
}
};
cornerButton.addActionListener(popupActionListener);
diff --git
a/ide/diff/src/org/netbeans/modules/diff/builtin/visualizer/editable/DiffSplitPaneDivider.java
b/ide/diff/src/org/netbeans/modules/diff/builtin/visualizer/editable/DiffSplitPaneDivider.java
index 68b5400e3f3..7813003315c 100644
---
a/ide/diff/src/org/netbeans/modules/diff/builtin/visualizer/editable/DiffSplitPaneDivider.java
+++
b/ide/diff/src/org/netbeans/modules/diff/builtin/visualizer/editable/DiffSplitPaneDivider.java
@@ -35,6 +35,7 @@ import java.awt.geom.GeneralPath;
import java.util.*;
import java.util.List;
import org.openide.awt.GraphicsUtils;
+import org.openide.util.ImageUtilities;
/**
* Split pane divider with Diff decorations.
@@ -43,8 +44,8 @@ import org.openide.awt.GraphicsUtils;
*/
class DiffSplitPaneDivider extends BasicSplitPaneDivider implements
MouseMotionListener, MouseListener, Accessible {
- private final Image insertAllImage =
org.openide.util.Utilities.loadImage("org/netbeans/modules/diff/builtin/visualizer/editable/move_all.png");
// NOI18N
- private final Image insertAllActiveImage =
org.openide.util.Utilities.loadImage("org/netbeans/modules/diff/builtin/visualizer/editable/move_all_active.png");
// NOI18N
+ private final Icon insertAllIcon =
ImageUtilities.loadIcon("org/netbeans/modules/diff/builtin/visualizer/editable/move_all.png");
// NOI18N
+ private final Icon insertAllActiveIcon =
ImageUtilities.loadIcon("org/netbeans/modules/diff/builtin/visualizer/editable/move_all_active.png");
// NOI18N
private final int actionIconsHeight;
private final int actionIconsWidth;
private final Point POINT_ZERO = new Point(0, 0);
@@ -64,8 +65,8 @@ class DiffSplitPaneDivider extends BasicSplitPaneDivider
implements MouseMotionL
this.master = master;
fontColor = new JLabel().getForeground();
- actionIconsHeight = insertAllImage.getHeight(this);
- actionIconsWidth = insertAllImage.getWidth(this);
+ actionIconsHeight = insertAllIcon.getIconHeight();
+ actionIconsWidth = insertAllIcon.getIconWidth();
setBorder(null);
setLayout(new BorderLayout());
@@ -254,9 +255,9 @@ class DiffSplitPaneDivider extends BasicSplitPaneDivider
implements MouseMotionL
if (master.isActionsEnabled() && everythingEditable) {
hotSpot = new Rectangle((getWidth() - actionIconsWidth) /2,
editorsOffset, actionIconsWidth, actionIconsHeight);
if (hotSpot.contains(lastMousePosition)) {
- g.drawImage(insertAllActiveImage, hotSpot.x, hotSpot.y,
this);
+ insertAllActiveIcon.paintIcon(null, g, hotSpot.x,
hotSpot.y);
} else {
- g.drawImage(insertAllImage, hotSpot.x, hotSpot.y, this);
+ insertAllIcon.paintIcon(null, g, hotSpot.x, hotSpot.y);
}
rollbackAction.initRect(hotSpot);
newActionIcons.add(rollbackAction);
diff --git
a/ide/diff/src/org/netbeans/modules/diff/builtin/visualizer/editable/LineNumbersActionsBar.java
b/ide/diff/src/org/netbeans/modules/diff/builtin/visualizer/editable/LineNumbersActionsBar.java
index fab49c1195a..b99a4e1548c 100644
---
a/ide/diff/src/org/netbeans/modules/diff/builtin/visualizer/editable/LineNumbersActionsBar.java
+++
b/ide/diff/src/org/netbeans/modules/diff/builtin/visualizer/editable/LineNumbersActionsBar.java
@@ -25,7 +25,6 @@ import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
-import java.awt.Image;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Stroke;
@@ -43,6 +42,7 @@ import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeEvent;
import java.util.ArrayList;
import java.util.Map;
+import javax.swing.Icon;
import javax.swing.JPanel;
import javax.swing.Scrollable;
import javax.swing.SwingUtilities;
@@ -59,6 +59,7 @@ import org.netbeans.editor.Coloring;
import org.netbeans.editor.EditorUI;
import org.netbeans.editor.Utilities;
import org.netbeans.lib.editor.util.swing.DocumentUtilities;
+import org.openide.util.ImageUtilities;
/**
* Draws both line numbers and diff actions for a decorated editor pane.
@@ -71,11 +72,11 @@ class LineNumbersActionsBar extends JPanel implements
Scrollable, MouseMotionLis
private static final int LINES_BORDER_WIDTH = 4;
private static final Point POINT_ZERO = new Point(0, 0);
- private final Image insertImage =
org.openide.util.Utilities.loadImage("org/netbeans/modules/diff/builtin/visualizer/editable/insert.png");
// NOI18N
- private final Image removeImage =
org.openide.util.Utilities.loadImage("org/netbeans/modules/diff/builtin/visualizer/editable/remove.png");
// NOI18N
+ private final Icon insertIcon =
ImageUtilities.loadIcon("org/netbeans/modules/diff/builtin/visualizer/editable/insert.png");
// NOI18N
+ private final Icon removeIcon =
ImageUtilities.loadIcon("org/netbeans/modules/diff/builtin/visualizer/editable/remove.png");
// NOI18N
- private final Image insertActiveImage =
org.openide.util.Utilities.loadImage("org/netbeans/modules/diff/builtin/visualizer/editable/insert_active.png");
// NOI18N
- private final Image removeActiveImage =
org.openide.util.Utilities.loadImage("org/netbeans/modules/diff/builtin/visualizer/editable/remove_active.png");
// NOI18N
+ private final Icon insertActiveIcon =
ImageUtilities.loadIcon("org/netbeans/modules/diff/builtin/visualizer/editable/insert_active.png");
// NOI18N
+ private final Icon removeActiveIcon =
ImageUtilities.loadIcon("org/netbeans/modules/diff/builtin/visualizer/editable/remove_active.png");
// NOI18N
private final DiffContentPanel master;
private final boolean actionsEnabled;
@@ -100,8 +101,8 @@ class LineNumbersActionsBar extends JPanel implements
Scrollable, MouseMotionLis
this.master = master;
this.actionsEnabled = actionsEnabled;
actionsWidth = actionsEnabled ? ACTIONS_BAR_WIDTH : 0;
- actionIconsHeight = insertImage.getHeight(this);
- actionIconsWidth = insertImage.getWidth(this);
+ actionIconsHeight = insertIcon.getIconHeight();
+ actionIconsWidth = insertIcon.getIconWidth();
setOpaque(true);
setToolTipText(""); // NOI18N
master.getMaster().addPropertyChangeListener(this);
@@ -340,13 +341,13 @@ class LineNumbersActionsBar extends JPanel implements
Scrollable, MouseMotionLis
if (actionsEnabled && dd.canRollback()) {
if (master.isFirst() && dd.getDiff().getType() !=
Difference.ADD
|| !master.isFirst() && dd.getDiff().getType() ==
Difference.ADD) {
- Image activeImage = master.isFirst() ? insertActiveImage :
removeActiveImage;
- Image image = master.isFirst() ? insertImage : removeImage;
+ Icon activeIcon = master.isFirst() ? insertActiveIcon :
removeActiveIcon;
+ Icon icon = master.isFirst() ? insertIcon : removeIcon;
Rectangle hotSpot = new Rectangle((master.isFirst() ? 0 :
offset) + 1, top + actionsYOffset, actionIconsWidth, actionIconsHeight);
if (hotSpot.contains(lastMousePosition) || idx ==
currentDifference) {
- g.drawImage(activeImage, hotSpot.x, hotSpot.y, this);
+ activeIcon.paintIcon(null, g, hotSpot.x, hotSpot.y);
} else {
- g.drawImage(image, hotSpot.x, hotSpot.y, this);
+ icon.paintIcon(null, g, hotSpot.x, hotSpot.y);
}
newActionIcons.add(new HotSpot(hotSpot, dd.getDiff()));
}
diff --git
a/ide/editor.completion/src/org/netbeans/modules/editor/completion/CompletionJList.java
b/ide/editor.completion/src/org/netbeans/modules/editor/completion/CompletionJList.java
index 9209c0332fe..ea195817229 100644
---
a/ide/editor.completion/src/org/netbeans/modules/editor/completion/CompletionJList.java
+++
b/ide/editor.completion/src/org/netbeans/modules/editor/completion/CompletionJList.java
@@ -45,7 +45,7 @@ public class CompletionJList extends JList {
private static final int DARKER_COLOR_COMPONENT = 5;
private static final int SUB_MENU_ICON_GAP = 1;
- private static final ImageIcon subMenuIcon =
ImageUtilities.loadImageIcon("org/netbeans/modules/editor/completion/resources/suggestion.png",
false); // NOI18N
+ private static final Icon subMenuIcon =
ImageUtilities.loadIcon("org/netbeans/modules/editor/completion/resources/suggestion.png",
false); // NOI18N
private final RenderComponent renderComponent;
@@ -345,7 +345,7 @@ public class CompletionJList extends JList {
item.render(g, CompletionJList.this.getFont(), getForeground(),
bgColor,
itemRenderWidth, getHeight(), selected);
if (selected && item instanceof CompositeCompletionItem &&
!((CompositeCompletionItem)item).getSubItems().isEmpty()) {
- g.drawImage(subMenuIcon.getImage(), itemRenderWidth -
subMenuIcon.getIconWidth() - SUB_MENU_ICON_GAP, (height -
subMenuIcon.getIconHeight()) / 2, null);
+ subMenuIcon.paintIcon(null, g, itemRenderWidth -
subMenuIcon.getIconWidth() - SUB_MENU_ICON_GAP, (height -
subMenuIcon.getIconHeight()) / 2);
}
if (separator) {
diff --git a/ide/editor.lib/src/org/netbeans/editor/GlyphGutter.java
b/ide/editor.lib/src/org/netbeans/editor/GlyphGutter.java
index b96300a97da..11669adf1a3 100644
--- a/ide/editor.lib/src/org/netbeans/editor/GlyphGutter.java
+++ b/ide/editor.lib/src/org/netbeans/editor/GlyphGutter.java
@@ -55,6 +55,7 @@ import java.util.prefs.PreferenceChangeListener;
import java.util.prefs.Preferences;
import javax.swing.Action;
import javax.accessibility.*;
+import javax.swing.Icon;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.text.AbstractDocument;
@@ -99,7 +100,7 @@ public class GlyphGutter extends JComponent implements
Annotations.AnnotationsLi
private Annotations annos;
/** Cycling button image */
- private Image gutterButton;
+ private Icon gutterButton;
/** Background color of the gutter */
private Color backgroundColor;
@@ -252,7 +253,7 @@ public class GlyphGutter extends JComponent implements
Annotations.AnnotationsLi
if (editorUI == null)
return ;
- gutterButton =
ImageUtilities.icon2Image(ImageUtilities.loadImageIcon("org/netbeans/editor/resources/glyphbutton.gif",
false));
+ gutterButton =
ImageUtilities.loadIcon("org/netbeans/editor/resources/glyphbutton.gif", false);
setToolTipText ("");
getAccessibleContext().setAccessibleName(NbBundle.getBundle(BaseKit.class).getString("ACSN_Glyph_Gutter"));
// NOI18N
@@ -601,22 +602,18 @@ public class GlyphGutter extends JComponent implements
Annotations.AnnotationsLi
// draw the glyph only when the annotation
type has its own icon (no the default one)
// or in case there is more than one
annotations on the line
if (!(annoCount == 1 &&
annoDesc.isDefaultGlyph())) {
- g.drawImage(
- annoGlyph,
+ // Draw as Icon to get full resolution
for SVG icons.
+ Icon annoGlyphIcon =
ImageUtilities.image2Icon(annoGlyph);
+ annoGlyphIcon.paintIcon(null, g,
xPos,
- (int) Math.round(pViewRect.y +
(rowHeight - glyphHeight) / 2 + 1),
- null
- );
+ (int) Math.round(pViewRect.y +
(rowHeight - glyphHeight) / 2 + 1));
}
// draw cycling button if there is more
than one annotations on the line
if (annoCount > 1) {
- g.drawImage(
- gutterButton,
+ gutterButton.paintIcon(null, g,
xPos + glyphWidth - 1,
- (int) Math.round(pViewRect.y +
(rowHeight - glyphHeight) / 2),
- null
- );
+ (int) Math.round(pViewRect.y +
(rowHeight - glyphHeight) / 2));
}
}
lineWithAnno = -1;
diff --git
a/ide/editor.lib/src/org/netbeans/modules/editor/lib/drawing/DrawGraphics.java
b/ide/editor.lib/src/org/netbeans/modules/editor/lib/drawing/DrawGraphics.java
index c32dd80837e..4264e2e15ac 100644
---
a/ide/editor.lib/src/org/netbeans/modules/editor/lib/drawing/DrawGraphics.java
+++
b/ide/editor.lib/src/org/netbeans/modules/editor/lib/drawing/DrawGraphics.java
@@ -29,6 +29,7 @@ import java.awt.Shape;
import java.awt.Rectangle;
import java.awt.font.FontRenderContext;
import java.awt.font.TextLayout;
+import javax.swing.Icon;
import javax.swing.JComponent;
import javax.swing.text.View;
import org.netbeans.editor.Analyzer;
@@ -37,6 +38,7 @@ import org.netbeans.editor.AnnotationTypes;
import org.netbeans.editor.Annotations;
import org.netbeans.editor.FontMetricsCache;
import org.netbeans.editor.PrintContainer;
+import org.openide.util.ImageUtilities;
/** Draw graphics functions as abstraction over various kinds of drawing. It's
used
* for drawing into classic graphics, printing and measuring.
@@ -587,8 +589,9 @@ public interface DrawGraphics {
graphics.setClip(clip);
for (int i=0; i < passiveAnnosAtY.length; i++) {
- g2d.drawImage(passiveAnnosAtY[i].getGlyph(), glyphX, y,
null);
- glyphX += passiveAnnosAtY[i].getGlyph().getWidth(null)+1;
+ Icon glyphIcon =
ImageUtilities.image2Icon(passiveAnnosAtY[i].getGlyph());
+ glyphIcon.paintIcon(null, g2d, glyphX, y);
+ glyphX += glyphIcon.getIconWidth() + 1;
}
// restore original clip region
diff --git
a/ide/spi.editor.hints/src/org/netbeans/modules/editor/hints/borrowed/ListCompletionView.java
b/ide/spi.editor.hints/src/org/netbeans/modules/editor/hints/borrowed/ListCompletionView.java
index 6fc2db8be27..eeddc7ea8dc 100644
---
a/ide/spi.editor.hints/src/org/netbeans/modules/editor/hints/borrowed/ListCompletionView.java
+++
b/ide/spi.editor.hints/src/org/netbeans/modules/editor/hints/borrowed/ListCompletionView.java
@@ -358,9 +358,7 @@ public class ListCompletionView extends JList {
private void renderHtml(Fix f, Graphics g, Font defaultFont, Color
defaultColor,
int width, int height, boolean selected) {
if (icon != null) {
- // The image of the ImageIcon should already be loaded
- // so no ImageObserver should be necessary
- g.drawImage(ImageUtilities.icon2Image(icon), BEFORE_ICON_GAP,
(height - icon.getIconHeight()) /2, this);
+ icon.paintIcon(null, g, BEFORE_ICON_GAP, (height -
icon.getIconHeight()) /2);
}
int iconWidth = BEFORE_ICON_GAP + icon.getIconWidth() + AFTER_ICON_GAP;
int textEnd = width - AFTER_ICON_GAP - subMenuIcon.getIconWidth() -
AFTER_TEXT_GAP;
diff --git a/java/form/src/org/netbeans/modules/form/HandleLayer.java
b/java/form/src/org/netbeans/modules/form/HandleLayer.java
index bc7ae6cf4c7..6f58248b8ac 100644
--- a/java/form/src/org/netbeans/modules/form/HandleLayer.java
+++ b/java/form/src/org/netbeans/modules/form/HandleLayer.java
@@ -97,7 +97,7 @@ public class HandleLayer extends JPanel implements
MouseListener, MouseMotionLis
private boolean draggingSuspended;
private SelectionDragger selectionDragger;
- private Image resizeHandle;
+ private Icon resizeHandle;
private DropTarget dropTarget;
private DropTargetListener dropListener;
@@ -356,32 +356,32 @@ public class HandleLayer extends JPanel implements
MouseListener, MouseMotionLis
g.drawRect(x, y, width, height);
g.setStroke(oldStroke);
if (inLayout) {
- Image resizeHandle = resizeHandle();
- int iconHeight = resizeHandle.getHeight(null);
- int iconWidth = resizeHandle.getWidth(null);
+ Icon resizeHandle = resizeHandle();
+ int iconHeight = resizeHandle.getIconHeight();
+ int iconWidth = resizeHandle.getIconWidth();
if ((resizable & LayoutSupportManager.RESIZE_LEFT) != 0) {
- g.drawImage(resizeHandle, x-iconWidth+1,
y+(height-iconHeight)/2, null);
+ resizeHandle.paintIcon(null, g, x-iconWidth+1,
y+(height-iconHeight)/2);
if ((resizable & LayoutSupportManager.RESIZE_UP) != 0) {
- g.drawImage(resizeHandle, x-iconWidth+1,
y-iconHeight+1, null);
+ resizeHandle.paintIcon(null, g, x-iconWidth+1,
y-iconHeight+1);
}
if ((resizable & LayoutSupportManager.RESIZE_DOWN) != 0) {
- g.drawImage(resizeHandle, x-iconWidth+1, y+height,
null);
+ resizeHandle.paintIcon(null, g, x-iconWidth+1,
y+height);
}
}
if ((resizable & LayoutSupportManager.RESIZE_RIGHT) != 0) {
- g.drawImage(resizeHandle, x+width,
y+(height-iconHeight)/2, null);
+ resizeHandle.paintIcon(null, g, x+width,
y+(height-iconHeight)/2);
if ((resizable & LayoutSupportManager.RESIZE_UP) != 0) {
- g.drawImage(resizeHandle, x+width, y-iconHeight+1,
null);
+ resizeHandle.paintIcon(null, g, x+width,
y-iconHeight+1);
}
if ((resizable & LayoutSupportManager.RESIZE_DOWN) != 0) {
- g.drawImage(resizeHandle, x+width, y+height, null);
+ resizeHandle.paintIcon(null, g, x+width, y+height);
}
}
if ((resizable & LayoutSupportManager.RESIZE_UP) != 0) {
- g.drawImage(resizeHandle, x+(width-iconWidth)/2,
y-iconHeight+1, null);
+ resizeHandle.paintIcon(null, g, x+(width-iconWidth)/2,
y-iconHeight+1);
}
if ((resizable & LayoutSupportManager.RESIZE_DOWN) != 0) {
- g.drawImage(resizeHandle, x+(width-iconWidth)/2, y+height,
null);
+ resizeHandle.paintIcon(null, g, x+(width-iconWidth)/2,
y+height);
}
}
}
@@ -701,9 +701,9 @@ public class HandleLayer extends JPanel implements
MouseListener, MouseMotionLis
counts[start ? 0 : 1]++;
}
- private Image resizeHandle() {
+ private Icon resizeHandle() {
if (resizeHandle == null) {
- resizeHandle =
ImageUtilities.loadImageIcon("org/netbeans/modules/form/resources/resize_handle.png",
false).getImage(); // NOI18N
+ resizeHandle =
ImageUtilities.loadIcon("org/netbeans/modules/form/resources/resize_handle.png",
false); // NOI18N
}
return resizeHandle;
}
diff --git
a/java/form/src/org/netbeans/modules/form/layoutdesign/LayoutPainter.java
b/java/form/src/org/netbeans/modules/form/layoutdesign/LayoutPainter.java
index b109dddfb18..e8a922b278c 100644
--- a/java/form/src/org/netbeans/modules/form/layoutdesign/LayoutPainter.java
+++ b/java/form/src/org/netbeans/modules/form/layoutdesign/LayoutPainter.java
@@ -21,6 +21,7 @@ package org.netbeans.modules.form.layoutdesign;
import java.awt.*;
import java.util.*;
import java.util.List;
+import javax.swing.Icon;
import javax.swing.UIManager;
import org.openide.util.ImageUtilities;
import static org.netbeans.modules.form.layoutdesign.VisualState.GapInfo;
@@ -45,7 +46,7 @@ public class LayoutPainter implements LayoutConstants {
private static final int BOTH_DIMENSIONS = 2;
- private Image warningImage;
+ private Icon warningIcon;
private static boolean PAINT_RES_GAP_MIN_SIZE;
@@ -171,15 +172,15 @@ public class LayoutPainter implements LayoutConstants {
private void paintUnplacedWarningImage(Graphics2D g, LayoutComponent comp)
{
LayoutRegion region = comp.getCurrentSpace();
Rectangle rect = region.toRectangle(new Rectangle());
- Image image = getWarningImage();
- g.drawImage(image, rect.x+rect.width-image.getWidth(null), rect.y,
null);
+ Icon icon = getWarningIcon();
+ icon.paintIcon(null, g, rect.x+rect.width-icon.getIconWidth(), rect.y);
}
- private Image getWarningImage() {
- if (warningImage == null) {
- warningImage =
ImageUtilities.loadImage("org/netbeans/modules/form/layoutsupport/resources/warning.png");
// NOI18N
+ private Icon getWarningIcon() {
+ if (warningIcon == null) {
+ warningIcon =
ImageUtilities.loadIcon("org/netbeans/modules/form/layoutsupport/resources/warning.png");
// NOI18N
}
- return warningImage;
+ return warningIcon;
}
private void paintLinks(Graphics2D g, LayoutComponent component) {
diff --git
a/java/form/src/org/netbeans/modules/form/layoutsupport/griddesigner/GlassPane.java
b/java/form/src/org/netbeans/modules/form/layoutsupport/griddesigner/GlassPane.java
index dd1f8c4ee24..6cd4d4a8e41 100644
---
a/java/form/src/org/netbeans/modules/form/layoutsupport/griddesigner/GlassPane.java
+++
b/java/form/src/org/netbeans/modules/form/layoutsupport/griddesigner/GlassPane.java
@@ -24,7 +24,6 @@ import java.awt.Component;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.Graphics;
-import java.awt.Image;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Toolkit;
@@ -42,6 +41,7 @@ import java.util.List;
import java.util.Set;
import javax.swing.AbstractAction;
import javax.swing.BorderFactory;
+import javax.swing.Icon;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
@@ -475,24 +475,24 @@ public class GlassPane extends JPanel implements
GridActionPerformer {
int w = rect.width/2+1;
int h = rect.height/2+1;
g.drawRect(x, y, rect.width+1, rect.height+1);
- Image resizeHandle = GridDesigner.RESIZE_HANDLE;
- int rw = resizeHandle.getWidth(null);
- int rh = resizeHandle.getHeight(null);
- g.drawImage(resizeHandle, x-rw, y-rh, null); // left-top
+ Icon resizeHandle = GridDesigner.RESIZE_HANDLE;
+ int rw = resizeHandle.getIconWidth();
+ int rh = resizeHandle.getIconHeight();
+ resizeHandle.paintIcon(null, g, x-rw, y-rh); // left-top
x += w;
- g.drawImage(resizeHandle, x-rw/2, y-rh, null); // top
+ resizeHandle.paintIcon(null, g, x-rw/2, y-rh); // top
x += rect.width+2-w;
- g.drawImage(resizeHandle, x, y-rh, null); // right-top
+ resizeHandle.paintIcon(null, g, x, y-rh); // right-top
y += h;
- g.drawImage(resizeHandle, x, y-rh/2, null); // right
+ resizeHandle.paintIcon(null, g, x, y-rh/2); // right
y += rect.height+2-h;
- g.drawImage(resizeHandle, x, y, null); // right-bottom
+ resizeHandle.paintIcon(null, g, x, y); // right-bottom
x -= rect.width+2-w;
- g.drawImage(resizeHandle, x-rw/2, y, null); // bottom
+ resizeHandle.paintIcon(null, g, x-rw/2, y); // bottom
x -= w;
- g.drawImage(resizeHandle, x-rw, y, null); // left-bottom
+ resizeHandle.paintIcon(null, g, x-rw, y); // left-bottom
y -= rect.height+2-h;
- g.drawImage(resizeHandle, x-rw, y-rh/2, null); // left
+ resizeHandle.paintIcon(null, g, x-rw, y-rh/2); // left
}
gClip.dispose();
}
@@ -789,9 +789,9 @@ public class GlassPane extends JPanel implements
GridActionPerformer {
} else {
int x = cursorLocation.x;
int y = cursorLocation.y;
- Image resizeHandle = GridDesigner.RESIZE_HANDLE;
- int rw = resizeHandle.getWidth(null);
- int rh = resizeHandle.getHeight(null);
+ Icon resizeHandle = GridDesigner.RESIZE_HANDLE;
+ int rw = resizeHandle.getIconWidth();
+ int rh = resizeHandle.getIconHeight();
for (Component selComp : selection) {
Rectangle rect =
fromComponentPane(selectionResizingBounds(selComp));
boolean w = (rect.x-rw<=x) && (x<=rect.x+rect.width+rw);
diff --git
a/java/form/src/org/netbeans/modules/form/layoutsupport/griddesigner/GridDesigner.java
b/java/form/src/org/netbeans/modules/form/layoutsupport/griddesigner/GridDesigner.java
index 963387462cb..2c6ba9e0e2f 100644
---
a/java/form/src/org/netbeans/modules/form/layoutsupport/griddesigner/GridDesigner.java
+++
b/java/form/src/org/netbeans/modules/form/layoutsupport/griddesigner/GridDesigner.java
@@ -25,9 +25,6 @@ import java.awt.Component;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.EventQueue;
-import java.awt.GridBagLayout;
-import java.awt.Image;
-import java.awt.LayoutManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
@@ -41,6 +38,7 @@ import javax.swing.Action;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.GroupLayout;
+import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComponent;
@@ -101,7 +99,7 @@ public class GridDesigner extends JPanel {
/** Color of the selection. */
public static final Color SELECTION_COLOR =
FormLoaderSettings.getInstance().getSelectionBorderColor();
/** Image of the resizing handle. */
- public static final Image RESIZE_HANDLE =
ImageUtilities.loadImageIcon("org/netbeans/modules/form/resources/resize_handle.png",
false).getImage(); // NOI18N
+ public static final Icon RESIZE_HANDLE =
ImageUtilities.loadIcon("org/netbeans/modules/form/resources/resize_handle.png",
false); // NOI18N
/** The "main" panel of the designer. */
private JPanel innerPane;
/** Glass pane of the designer. */
diff --git
a/platform/openide.explorer/src/org/openide/explorer/view/IconPanel.java
b/platform/openide.explorer/src/org/openide/explorer/view/IconPanel.java
index 33dc6220d8b..a9524a5d11f 100644
--- a/platform/openide.explorer/src/org/openide/explorer/view/IconPanel.java
+++ b/platform/openide.explorer/src/org/openide/explorer/view/IconPanel.java
@@ -26,14 +26,16 @@ import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.beans.BeanInfo;
+import javax.swing.Icon;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.ListCellRenderer;
import javax.swing.UIManager;
import org.openide.nodes.Node;
+import org.openide.util.ImageUtilities;
final class IconPanel extends JPanel implements ListCellRenderer {
- private Image thumbImage;
+ private Icon thumbIcon;
private boolean selected;
private boolean focused;
@@ -44,7 +46,7 @@ final class IconPanel extends JPanel implements
ListCellRenderer {
@Override
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
Node node = Visualizer.findNode(value);
- thumbImage = node.getIcon(BeanInfo.ICON_COLOR_32x32);
+ thumbIcon =
ImageUtilities.image2Icon(node.getIcon(BeanInfo.ICON_COLOR_32x32));
this.selected = isSelected;
label.setOpaque(selected);
if (selected) {
@@ -111,17 +113,16 @@ final class IconPanel extends JPanel implements
ListCellRenderer {
g.drawRect(18, 18, getWidth() - (2 * 18), getHeight() - (2 *
18));
g.setStroke(new BasicStroke(1f));
}
- g.drawImage(thumbImage,
- getWidth() / 2 - thumbImage.getWidth(this) / 2,
- getHeight() / 2 - thumbImage.getHeight(this) / 2, this
- );
+ thumbIcon.paintIcon(this, g,
+ getWidth() / 2 - thumbIcon.getIconWidth() / 2,
+ getHeight() / 2 - thumbIcon.getIconHeight() / 2);
}
@Override
public Dimension getPreferredSize() {
return new Dimension(
- thumbImage.getWidth(this) + getInsets().left +
getInsets().right,
- thumbImage.getHeight(this) + getInsets().top +
getInsets().bottom
+ thumbIcon.getIconWidth() + getInsets().left +
getInsets().right,
+ thumbIcon.getIconHeight() + getInsets().top +
getInsets().bottom
);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists