Skip to content

Commit 794f0d8

Browse files
authored
Scale the clipart when resizing the dialog (winder#2538)
1 parent 99ae4ef commit 794f0d8

37 files changed

+187
-170
lines changed

ugs-core/src/resources/MessagesBundle_en_US.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -726,6 +726,7 @@ platform.plugin.toolbox.title=Toolbox
726726
platform.plugin.toolbox.tooltip=Toolbox
727727
platform.plugin.toolbox.settings.title=Edit toolbox buttons...
728728
platform.plugin.editor.showOnOpen=Show editor when opening g-code files
729+
platform.plugin.designer.clipart.all=All
729730
platform.plugin.designer.clipart.animals=Animals
730731
platform.plugin.designer.clipart.buildings=Buildings
731732
platform.plugin.designer.clipart.computer=Computer

ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/gui/clipart/Category.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ This file is part of Universal Gcode Sender (UGS).
2424
* @author Joacim Breiler
2525
*/
2626
public enum Category {
27+
ALL("platform.plugin.designer.clipart.all"),
2728
ANIMALS("platform.plugin.designer.clipart.animals"),
2829
BUILDINGS("platform.plugin.designer.clipart.buildings"),
2930
DECORATIONS("platform.plugin.designer.clipart.decorations"),

ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/gui/clipart/ClipartButton.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,14 @@ This file is part of Universal Gcode Sender (UGS).
3131
* @author Joacim Breiler
3232
*/
3333
public class ClipartButton extends RoundedPanel {
34-
private final Clipart clipart;
34+
private final transient Clipart clipart;
3535

3636
public ClipartButton(Clipart clipart, ClipartTooltip tooltip) {
3737
super(12);
3838
this.clipart = clipart;
3939
setLayout(new MigLayout("fill, inset 0"));
4040
setMinimumSize(new Dimension(128, 128));
41+
setMaximumSize(new Dimension(512, 512));
4142
setForeground(ThemeColors.LIGHT_GREY);
4243
setBackground(Color.WHITE);
4344
setHoverBackground(ThemeColors.LIGHT_GREY);
@@ -49,4 +50,11 @@ public ClipartButton(Clipart clipart, ClipartTooltip tooltip) {
4950
public Clipart getClipart() {
5051
return clipart;
5152
}
53+
54+
@Override
55+
public Dimension getPreferredSize() {
56+
Dimension d = super.getSize();
57+
int width = (int) Math.round(d.getWidth());
58+
return new Dimension(width, width); // Make the buttion square
59+
}
5260
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package com.willwinder.ugs.nbp.designer.gui.clipart;
2+
3+
import javax.swing.JLabel;
4+
import java.awt.event.ComponentAdapter;
5+
import java.awt.event.ComponentEvent;
6+
import java.awt.font.FontRenderContext;
7+
import java.awt.geom.AffineTransform;
8+
import java.awt.geom.Rectangle2D;
9+
10+
public class ClipartLabel extends JLabel {
11+
public ClipartLabel(String text) {
12+
super(text);
13+
AffineTransform affinetransform = new AffineTransform();
14+
FontRenderContext frc = new FontRenderContext(affinetransform, true, true);
15+
16+
addComponentListener(new ComponentAdapter() {
17+
@Override
18+
public void componentResized(ComponentEvent e) {
19+
Rectangle2D stringBounds = getFont().getStringBounds(getText(), frc);
20+
int currentSize = (int) Math.round(Math.max(stringBounds.getWidth(), stringBounds.getHeight()));
21+
float sizeChange = (float) Math.min(getWidth(), getHeight()) / (float) currentSize;
22+
if (sizeChange < 1f || sizeChange > 1.1f) {
23+
int newFontSize = Math.min(Math.round((getFont().getSize() * sizeChange)), getHeight());
24+
setFont(getFont().deriveFont((float) newFontSize));
25+
}
26+
}
27+
});
28+
}
29+
}

ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/gui/clipart/ClipartSource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public interface ClipartSource {
3434

3535
String getUrl();
3636

37-
List<Clipart> getCliparts(Category category);
37+
List<? extends Clipart> getCliparts(Category category);
3838

3939
String getLicense();
4040
}

ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/gui/clipart/FontClipart.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,12 @@ This file is part of Universal Gcode Sender (UGS).
2222
import com.willwinder.ugs.nbp.designer.entities.cuttable.Path;
2323
import com.willwinder.universalgcodesender.uielements.helpers.ThemeColors;
2424

25-
import javax.swing.*;
26-
import java.awt.*;
25+
import javax.swing.JLabel;
26+
import javax.swing.SwingConstants;
27+
import java.awt.Component;
28+
import java.awt.Font;
29+
import java.awt.Graphics2D;
30+
import java.awt.Shape;
2731
import java.awt.font.GlyphVector;
2832
import java.awt.geom.AffineTransform;
2933
import java.awt.image.BufferedImage;
@@ -48,7 +52,7 @@ public FontClipart(String name, Category category, Font font, String text, Clipa
4852
this.font = font;
4953
this.source = source;
5054

51-
label = new JLabel(text);
55+
label = new ClipartLabel(text);
5256
label.setFont(font);
5357
label.setHorizontalAlignment(SwingConstants.CENTER);
5458
label.setForeground(ThemeColors.VERY_DARK_GREY);

ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/gui/clipart/PreviewListPanel.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ public void setCategory(Category category) {
124124
selectedClipart = clipart;
125125
selectAction.actionPerformed(new ActionEvent(roundedPanel, 0, "selected_clipart"));
126126
});
127-
buttonsPanel.add(roundedPanel);
127+
buttonsPanel.add(roundedPanel, "grow, w 100:100:400");
128128
});
129129
buttonsPanel.revalidate();
130130
buttonsPanel.repaint();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.willwinder.ugs.nbp.designer.gui.clipart.sources;
2+
3+
import com.willwinder.ugs.nbp.designer.gui.clipart.Category;
4+
import com.willwinder.ugs.nbp.designer.gui.clipart.Clipart;
5+
import com.willwinder.ugs.nbp.designer.gui.clipart.ClipartSource;
6+
7+
import java.util.List;
8+
9+
public abstract class AbstractClipartSource implements ClipartSource {
10+
public abstract List<? extends Clipart> getCliparts();
11+
12+
@Override
13+
public List<? extends Clipart> getCliparts(Category category) {
14+
return getCliparts()
15+
.stream()
16+
.filter(clipart -> clipart.getCategory() == category || category == Category.ALL)
17+
.toList();
18+
}
19+
}

ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/gui/clipart/sources/BuDingbatsSource.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ This file is part of Universal Gcode Sender (UGS).
2020

2121
import com.willwinder.ugs.nbp.designer.gui.clipart.Category;
2222
import com.willwinder.ugs.nbp.designer.gui.clipart.Clipart;
23-
import com.willwinder.ugs.nbp.designer.gui.clipart.ClipartSource;
2423
import com.willwinder.ugs.nbp.designer.gui.clipart.ClipartSourceException;
2524
import com.willwinder.ugs.nbp.designer.gui.clipart.FontClipart;
2625

@@ -29,12 +28,11 @@ This file is part of Universal Gcode Sender (UGS).
2928
import java.io.IOException;
3029
import java.util.ArrayList;
3130
import java.util.List;
32-
import java.util.stream.Collectors;
3331

3432
/**
3533
* @author Joacim Breiler
3634
*/
37-
public class BuDingbatsSource implements ClipartSource {
35+
public class BuDingbatsSource extends AbstractClipartSource {
3836
private final List<FontClipart> cliparts = new ArrayList<>();
3937

4038
public BuDingbatsSource() {
@@ -117,8 +115,8 @@ public String getUrl() {
117115
}
118116

119117
@Override
120-
public List<Clipart> getCliparts(Category category) {
121-
return cliparts.stream().filter(clipart -> clipart.getCategory() == category).collect(Collectors.toList());
118+
public List<? extends Clipart> getCliparts() {
119+
return cliparts;
122120
}
123121

124122
@Override

ugs-platform/ugs-platform-plugin-designer/src/main/java/com/willwinder/ugs/nbp/designer/gui/clipart/sources/ChristmasSource.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,19 @@ This file is part of Universal Gcode Sender (UGS).
2020

2121
import com.willwinder.ugs.nbp.designer.gui.clipart.Category;
2222
import com.willwinder.ugs.nbp.designer.gui.clipart.Clipart;
23-
import com.willwinder.ugs.nbp.designer.gui.clipart.ClipartSource;
2423
import com.willwinder.ugs.nbp.designer.gui.clipart.ClipartSourceException;
2524
import com.willwinder.ugs.nbp.designer.gui.clipart.FontClipart;
2625

27-
import java.awt.*;
26+
import java.awt.Font;
27+
import java.awt.FontFormatException;
2828
import java.io.IOException;
2929
import java.util.ArrayList;
3030
import java.util.List;
31-
import java.util.stream.Collectors;
3231

3332
/**
3433
* @author Joacim Breiler
3534
*/
36-
public class ChristmasSource implements ClipartSource {
35+
public class ChristmasSource extends AbstractClipartSource {
3736
private final List<FontClipart> cliparts = new ArrayList<>();
3837

3938
public ChristmasSource() {
@@ -153,11 +152,9 @@ public String getUrl() {
153152
return "https://www.fontspace.com/christmas-font-f4808";
154153
}
155154

156-
157-
158155
@Override
159-
public List<Clipart> getCliparts(Category category) {
160-
return cliparts.stream().filter(clipart -> clipart.getCategory() == category).collect(Collectors.toList());
156+
public List<? extends Clipart> getCliparts() {
157+
return cliparts;
161158
}
162159

163160
@Override

0 commit comments

Comments
 (0)