GUI: added gui scale support for skip and phase button on game panel (part of #969, #6887):

- reworked skip and phase buttons to use layouts instead IDE designer;
- added GUI scale support skip and phase buttons (depend on dialogs font size from preferences settings);
This commit is contained in:
Oleg Agafonov 2024-07-28 18:01:15 +04:00
parent 8186b35dfb
commit 1d701df0e8
8 changed files with 274 additions and 144 deletions

View file

@ -78,7 +78,7 @@ public class HoverButton extends JPanel implements MouseListener {
private boolean doGainFade = true;
public HoverButton(String text, Image image, Rectangle size) {
this(text, image, image, null, image, size);
this(text, image, image, image, image, size);
if (image == null) {
throw new IllegalArgumentException("Image can't be null");
}
@ -370,10 +370,6 @@ public class HoverButton extends JPanel implements MouseListener {
this.drawSet = true;
}
public void update(String text, Image image) {
update(text, image, this.hoverImage, this.selectedImage, this.disabledImage, this.imageSize);
}
public void update(String text, Image image, Image hover, Image selected, Image disabled, Rectangle size) {
this.text = text;
this.image = image;
@ -381,7 +377,7 @@ public class HoverButton extends JPanel implements MouseListener {
this.selectedImage = selected;
this.disabledImage = disabled;
this.imageSize = size;
repaint();
this.invalidate();
}
public void execute() {

View file

@ -1,6 +1,7 @@
package mage.client.components;
import mage.client.dialog.PreferencesDialog;
import mage.client.util.GUISizeHelper;
import javax.swing.*;
import java.awt.*;
@ -12,19 +13,25 @@ import java.awt.*;
*/
public class KeyboundButton extends JButton {
private float guiScale = 1.0f;
private final String key;
private boolean showKey;
private String drawingText;
private static final Font keyFont = new Font(Font.SANS_SERIF, Font.BOLD, 13);
private Font keyFont;
private boolean tinting = false;
public KeyboundButton(String key, boolean showKey) {
this.key = key;
this.showKey = showKey;
updateFont();
updateDrawingText();
}
private void updateFont() {
this.keyFont = new Font(Font.SANS_SERIF, Font.BOLD, sizeMod(13));
}
private void updateDrawingText() {
if (this.showKey) {
this.drawingText = PreferencesDialog.getCachedKeyText(key);
@ -33,6 +40,12 @@ public class KeyboundButton extends JButton {
}
}
public void updateGuiScale(float guiScale) {
this.guiScale = guiScale;
updateFont();
invalidate();
}
public void setShowKey(boolean showKey) {
this.showKey = showKey;
updateDrawingText();
@ -48,7 +61,7 @@ public class KeyboundButton extends JButton {
if (tinting) {
sg.setColor(new Color(0, 0, 0, 32));
sg.fillRoundRect(2, 2, getWidth() - 4, getHeight() - 4, 6, 6);
sg.fillRoundRect(sizeMod(2), sizeMod(2), getWidth() - sizeMod(4), getHeight() - sizeMod(4), sizeMod(6), sizeMod(6));
}
sg.setColor(tinting ? Color.lightGray : Color.white);
@ -58,7 +71,7 @@ public class KeyboundButton extends JButton {
int textWidth = sg.getFontMetrics(keyFont).stringWidth(this.drawingText);
int centerX = (getWidth() - textWidth) / 2;
sg.drawString(this.drawingText, centerX, 28);
sg.drawString(this.drawingText, centerX, sizeMod(28));
}
} finally {
sg.dispose();
@ -70,4 +83,12 @@ public class KeyboundButton extends JButton {
this.tinting = tinting;
repaint();
}
private int sizeMod(int value) {
return GUISizeHelper.guiSizeScale(value, this.guiScale);
}
private float sizeMod(float value) {
return GUISizeHelper.guiSizeScale(value, this.guiScale);
}
}