vertical layout
All checks were successful
/ example-docker-compose (push) Successful in 15m31s

This commit is contained in:
Failure 2025-02-15 20:59:50 -08:00
parent 818a9442a9
commit ee75192f0a
5 changed files with 83 additions and 12 deletions

View file

@ -21,6 +21,26 @@ public final class Constants {
} }
public static final ImmutableList<Pair<String, String[]>> foulMagicsSets = ImmutableList.of( public static final ImmutableList<Pair<String, String[]>> foulMagicsSets = ImmutableList.of(
new Pair<String, String[]>("Set 2.5 - Ravnica Cultural Exchange", new String[] {
"* March of the Machine Block",
"* Phyrexia: All Will Be One Block",
"* The Brothers' War Block",
"* Dominaria United Block",
"* Kamigawa: Neon Dynasty Block",
"* Theros Beyond Death Block",
"* Strixhaven: School of Mages Block",
"* The Lost Caverns of Ixalan Block",
"* Ikoria: Lair of Behemoths Block",
"* Adventures in the Forgotten Realms Block",
"Modern Horizons 3",
"The Lord of the Rings: Tales of Middle-earth",
"Double Masters 2022",
"Rise of the Eldrazi",
"Modern Horizons 2",
"* Foundations Block",
"* Guilds of Ravnica Block",
"* Return to Ravnica Block",
}),
new Pair<String, String[]>("Set 2 - Phyrexians, Eldrazi, Asians - Oh my!", new String[] { new Pair<String, String[]>("Set 2 - Phyrexians, Eldrazi, Asians - Oh my!", new String[] {
"* March of the Machine Block", "* March of the Machine Block",
"* Phyrexia: All Will Be One Block", "* Phyrexia: All Will Be One Block",

View file

@ -1332,6 +1332,11 @@
<Property name="text" type="java.lang.String" value="set to default"/> <Property name="text" type="java.lang.String" value="set to default"/>
</Properties> </Properties>
</Component> </Component>
<Component class="javax.swing.JCheckBox" name="cbVerticalLayout">
<Properties>
<Property name="text" type="java.lang.String" value="Vertical Layout (Experimental)"/>
</Properties>
</Component>
</SubComponents> </SubComponents>
</Container> </Container>
<Container class="javax.swing.JPanel" name="panelSizeDetailedSettings"> <Container class="javax.swing.JPanel" name="panelSizeDetailedSettings">

View file

@ -70,6 +70,9 @@ public class PreferencesDialog extends javax.swing.JDialog {
public static final String KEY_GAME_USE_PROFANITY_FILTER = "gameUseProfanityFilter"; public static final String KEY_GAME_USE_PROFANITY_FILTER = "gameUseProfanityFilter";
// size settings // size settings
public static final String KEY_GUI_VERTICAL_LAYOUT = "guiVerticalLayoyut";
public static final String KEY_GUI_CARD_BATTLEFIELD_SIZE = "guiCardBattlefieldSize"; public static final String KEY_GUI_CARD_BATTLEFIELD_SIZE = "guiCardBattlefieldSize";
public static final String KEY_GUI_CARD_HAND_SIZE = "guiCardHandSize"; public static final String KEY_GUI_CARD_HAND_SIZE = "guiCardHandSize";
public static final String KEY_GUI_CARD_EDITOR_SIZE = "guiCardEditorSize"; public static final String KEY_GUI_CARD_EDITOR_SIZE = "guiCardEditorSize";
@ -866,6 +869,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
buttonSizeDefault4 = new javax.swing.JButton(); buttonSizeDefault4 = new javax.swing.JButton();
buttonSizeDefault5 = new javax.swing.JButton(); buttonSizeDefault5 = new javax.swing.JButton();
buttonSizeDefault6 = new javax.swing.JButton(); buttonSizeDefault6 = new javax.swing.JButton();
cbVerticalLayout = new javax.swing.JCheckBox();
panelSizeDetailedSettings = new javax.swing.JPanel(); panelSizeDetailedSettings = new javax.swing.JPanel();
labelSizeGroup1 = new javax.swing.JLabel(); labelSizeGroup1 = new javax.swing.JLabel();
panelSize1 = new javax.swing.JPanel(); panelSize1 = new javax.swing.JPanel();
@ -1735,6 +1739,9 @@ public class PreferencesDialog extends javax.swing.JDialog {
buttonSizeDefault6.setText("set to default"); buttonSizeDefault6.setText("set to default");
panelSizeDefaultSettings.add(buttonSizeDefault6); panelSizeDefaultSettings.add(buttonSizeDefault6);
cbVerticalLayout.setText("Vertical Layout (Experimental)");
panelSizeDetailedSettings.add(cbVerticalLayout);
panelSizeDetailedSettings.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Detailed settings")); panelSizeDetailedSettings.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Detailed settings"));
panelSizeDetailedSettings.setLayout(new java.awt.GridLayout(16, 1)); panelSizeDetailedSettings.setLayout(new java.awt.GridLayout(16, 1));
@ -2991,6 +2998,8 @@ public class PreferencesDialog extends javax.swing.JDialog {
prefs.putInt(paramName, paramValue); prefs.putInt(paramName, paramValue);
updateCache(paramName, Integer.toString(paramValue)); updateCache(paramName, Integer.toString(paramValue));
} }
// Hopefully this works
save(prefs, dialog.cbVerticalLayout, KEY_GUI_VERTICAL_LAYOUT, "true", "false");
saveGUISize(false, false); saveGUISize(false, false);
@ -3416,6 +3425,8 @@ public class PreferencesDialog extends javax.swing.JDialog {
load(prefs, dialog.cbDraftLogAutoSave, KEY_DRAFT_LOG_AUTO_SAVE, "true"); load(prefs, dialog.cbDraftLogAutoSave, KEY_DRAFT_LOG_AUTO_SAVE, "true");
load(prefs, dialog.cbLimitedDeckAutoSave, KEY_LIMITED_DECK_AUTO_SAVE, "true"); load(prefs, dialog.cbLimitedDeckAutoSave, KEY_LIMITED_DECK_AUTO_SAVE, "true");
load(prefs, dialog.cbGameJsonLogAutoSave, KEY_JSON_GAME_LOG_AUTO_SAVE, "true", "false"); load(prefs, dialog.cbGameJsonLogAutoSave, KEY_JSON_GAME_LOG_AUTO_SAVE, "true", "false");
load(prefs, dialog.cbVerticalLayout, KEY_GUI_VERTICAL_LAYOUT, "true", "false");
String autoTargetParam; String autoTargetParam;
try { try {
@ -4073,6 +4084,7 @@ public class PreferencesDialog extends javax.swing.JDialog {
private javax.swing.JCheckBox cbUseDefaultImageFolder; private javax.swing.JCheckBox cbUseDefaultImageFolder;
private javax.swing.JCheckBox cbUseRandomBattleImage; private javax.swing.JCheckBox cbUseRandomBattleImage;
private javax.swing.JCheckBox cbUseSameSettingsForReplacementEffect; private javax.swing.JCheckBox cbUseSameSettingsForReplacementEffect;
private javax.swing.JCheckBox cbVerticalLayout;
private javax.swing.JCheckBox checkBoxBeforeCOthers; private javax.swing.JCheckBox checkBoxBeforeCOthers;
private javax.swing.JCheckBox checkBoxBeforeCYou; private javax.swing.JCheckBox checkBoxBeforeCYou;
private javax.swing.JCheckBox checkBoxDrawOthers; private javax.swing.JCheckBox checkBoxDrawOthers;

View file

@ -131,6 +131,8 @@ public final class GamePanel extends javax.swing.JPanel {
private final Map<String, MageSplitter> splitters = new LinkedHashMap<>(); // settings key, splitter private final Map<String, MageSplitter> splitters = new LinkedHashMap<>(); // settings key, splitter
// do not save splitters in intermediate state, e.g. connection to new server with active game // do not save splitters in intermediate state, e.g. connection to new server with active game
private boolean isSplittersFullyRestored = false; private boolean isSplittersFullyRestored = false;
private boolean vertical = false;
public static class MageSplitter { public static class MageSplitter {
JSplitPane splitPane; JSplitPane splitPane;
@ -228,6 +230,7 @@ public final class GamePanel extends javax.swing.JPanel {
} }
public GamePanel() { public GamePanel() {
this.vertical = PreferencesDialog.getCachedValue(KEY_GUI_VERTICAL_LAYOUT, "false").equals("true");
initComponents = true; initComponents = true;
initComponents(); initComponents();
@ -259,9 +262,16 @@ public final class GamePanel extends javax.swing.JPanel {
pnlCommandsSkipAndStack.add(pnlShortCuts, BorderLayout.NORTH); pnlCommandsSkipAndStack.add(pnlShortCuts, BorderLayout.NORTH);
pnlCommandsSkipAndStack.add(stackObjects, BorderLayout.CENTER); pnlCommandsSkipAndStack.add(stackObjects, BorderLayout.CENTER);
// ... split: feedback + hand <|> skip + stack // ... split: feedback + hand <|> skip + stack
splitHandAndStack.setLeftComponent(pnlCommandsFeedbackAndHand); if (vertical) {
splitHandAndStack.setRightComponent(pnlCommandsSkipAndStack); splitHandAndStack.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
splitHandAndStack.setResizeWeight(DIVIDER_KEEP_RIGHT_COMPONENT); splitHandAndStack.setBottomComponent(pnlCommandsFeedbackAndHand);
splitHandAndStack.setTopComponent(pnlCommandsSkipAndStack);
splitHandAndStack.setResizeWeight(DIVIDER_KEEP_RIGHT_COMPONENT);
} else {
splitHandAndStack.setLeftComponent(pnlCommandsFeedbackAndHand);
splitHandAndStack.setRightComponent(pnlCommandsSkipAndStack);
splitHandAndStack.setResizeWeight(DIVIDER_KEEP_RIGHT_COMPONENT);
}
pnlCommandsFeedbackAndHand.setMinimumSize(new Dimension(0, 0)); // allow any sizes for hand pnlCommandsFeedbackAndHand.setMinimumSize(new Dimension(0, 0)); // allow any sizes for hand
pnlCommandsSkipAndStack.setMinimumSize(new Dimension(0, 0)); // allow any sizes for stack pnlCommandsSkipAndStack.setMinimumSize(new Dimension(0, 0)); // allow any sizes for stack
// ... all // ... all
@ -302,7 +312,9 @@ public final class GamePanel extends javax.swing.JPanel {
final JLayeredPane jLayeredBackgroundPane = new JLayeredPane(); final JLayeredPane jLayeredBackgroundPane = new JLayeredPane();
jLayeredBackgroundPane.setSize(1024, 768); jLayeredBackgroundPane.setSize(1024, 768);
this.add(jLayeredBackgroundPane); this.add(jLayeredBackgroundPane);
jLayeredBackgroundPane.add(splitGameAndBigCard, JLayeredPane.DEFAULT_LAYER); var basePane = this.vertical ? splitBattlefieldAndChats : splitGameAndBigCard;
jLayeredBackgroundPane.add(basePane, JLayeredPane.DEFAULT_LAYER);
Map<String, JComponent> myUi = getUIComponents(jLayeredBackgroundPane); Map<String, JComponent> myUi = getUIComponents(jLayeredBackgroundPane);
Plugins.instance.updateGamePanel(myUi); Plugins.instance.updateGamePanel(myUi);
@ -314,7 +326,7 @@ public final class GamePanel extends javax.swing.JPanel {
int width = ((JComponent) e.getSource()).getWidth(); int width = ((JComponent) e.getSource()).getWidth();
int height = ((JComponent) e.getSource()).getHeight(); int height = ((JComponent) e.getSource()).getHeight();
jLayeredBackgroundPane.setSize(width, height); jLayeredBackgroundPane.setSize(width, height);
splitGameAndBigCard.setSize(width, height); basePane.setSize(width, height);
if (height < storedHeight) { if (height < storedHeight) {
// TODO: wtf, is it needs? Research and delete that code with storedHeight // TODO: wtf, is it needs? Research and delete that code with storedHeight
@ -552,7 +564,11 @@ public final class GamePanel extends javax.swing.JPanel {
float guiScale = GUISizeHelper.dialogGuiScale; float guiScale = GUISizeHelper.dialogGuiScale;
int hGap = GUISizeHelper.guiSizeScale(SKIP_BUTTONS_SPACE_H, guiScale); int hGap = GUISizeHelper.guiSizeScale(SKIP_BUTTONS_SPACE_H, guiScale);
int vGap = GUISizeHelper.guiSizeScale(SKIP_BUTTONS_SPACE_V, guiScale); int vGap = GUISizeHelper.guiSizeScale(SKIP_BUTTONS_SPACE_V, guiScale);
pnlShortCuts.setLayout(new FlowLayout(FlowLayout.RIGHT, hGap, vGap)); if (vertical) {
pnlShortCuts.setLayout(new FlowLayout(FlowLayout.CENTER, 1, vGap));
} else {
pnlShortCuts.setLayout(new FlowLayout(FlowLayout.RIGHT, hGap, vGap));
}
// skip buttons - sizes // skip buttons - sizes
Dimension strictSize = new Dimension(2 * GUISizeHelper.gameCommandButtonHeight, GUISizeHelper.gameCommandButtonHeight); Dimension strictSize = new Dimension(2 * GUISizeHelper.gameCommandButtonHeight, GUISizeHelper.gameCommandButtonHeight);
setSkipButtonSize(btnCancelSkip, guiScale, strictSize); setSkipButtonSize(btnCancelSkip, guiScale, strictSize);
@ -2274,7 +2290,7 @@ public final class GamePanel extends javax.swing.JPanel {
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private void initComponents() { private boolean initComponents() {
abilityPicker = new mage.client.components.ability.AbilityPicker(GUISizeHelper.dialogGuiScale); abilityPicker = new mage.client.components.ability.AbilityPicker(GUISizeHelper.dialogGuiScale);
pnlHelperHandButtonsStackArea = new javax.swing.JPanel(); pnlHelperHandButtonsStackArea = new javax.swing.JPanel();
pnlShortCuts = new javax.swing.JPanel(); pnlShortCuts = new javax.swing.JPanel();
@ -2358,7 +2374,11 @@ public final class GamePanel extends javax.swing.JPanel {
// split: chat <|> game logs // split: chat <|> game logs
splitChatAndLogs = new javax.swing.JSplitPane(); splitChatAndLogs = new javax.swing.JSplitPane();
splitChatAndLogs.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT); if (vertical) {
splitChatAndLogs.setOrientation(javax.swing.JSplitPane.HORIZONTAL_SPLIT);
} else {
splitChatAndLogs.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
}
splitChatAndLogs.setResizeWeight(DIVIDER_KEEP_LEFT_COMPONENT); splitChatAndLogs.setResizeWeight(DIVIDER_KEEP_LEFT_COMPONENT);
splitChatAndLogs.setTopComponent(userChatPanel); splitChatAndLogs.setTopComponent(userChatPanel);
splitChatAndLogs.setBottomComponent(gameChatPanel); splitChatAndLogs.setBottomComponent(gameChatPanel);
@ -2368,8 +2388,15 @@ public final class GamePanel extends javax.swing.JPanel {
splitBattlefieldAndChats.setBorder(null); splitBattlefieldAndChats.setBorder(null);
splitBattlefieldAndChats.setResizeWeight(DIVIDER_KEEP_RIGHT_COMPONENT); splitBattlefieldAndChats.setResizeWeight(DIVIDER_KEEP_RIGHT_COMPONENT);
splitBattlefieldAndChats.setOneTouchExpandable(true); splitBattlefieldAndChats.setOneTouchExpandable(true);
splitBattlefieldAndChats.setLeftComponent(pnlHelperHandButtonsStackArea);
splitBattlefieldAndChats.setRightComponent(splitChatAndLogs); if (vertical) {
splitBattlefieldAndChats.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
splitBattlefieldAndChats.setBottomComponent(pnlHelperHandButtonsStackArea);
splitBattlefieldAndChats.setTopComponent(splitChatAndLogs);
} else {
splitBattlefieldAndChats.setLeftComponent(pnlHelperHandButtonsStackArea);
splitBattlefieldAndChats.setRightComponent(splitChatAndLogs);
}
// warning, it's important to store/restore splitters in same order as real life GUI // warning, it's important to store/restore splitters in same order as real life GUI
// from outer to inner (otherwise panels will be hidden or weird) // from outer to inner (otherwise panels will be hidden or weird)
@ -2752,7 +2779,10 @@ public final class GamePanel extends javax.swing.JPanel {
// split: game <|> chat/log // split: game <|> chat/log
splitGameAndBigCard.setLeftComponent(splitBattlefieldAndChats); splitGameAndBigCard.setLeftComponent(splitBattlefieldAndChats);
splitGameAndBigCard.setRightComponent(bigCardPanel); if (!vertical) {
splitGameAndBigCard.setRightComponent(bigCardPanel);
}
return vertical;
} }
private void removeListener() { private void removeListener() {
@ -2820,7 +2850,7 @@ public final class GamePanel extends javax.swing.JPanel {
this.btnSkipForward.removeActionListener(al); this.btnSkipForward.removeActionListener(al);
} }
final BasicSplitPaneUI myUi = (BasicSplitPaneUI) splitGameAndBigCard.getUI(); final BasicSplitPaneUI myUi = vertical ? (BasicSplitPaneUI) splitBattlefieldAndChats.getUI() : (BasicSplitPaneUI) splitGameAndBigCard.getUI();
final BasicSplitPaneDivider divider = myUi.getDivider(); final BasicSplitPaneDivider divider = myUi.getDivider();
final JButton upArrowButton = (JButton) divider.getComponent(0); final JButton upArrowButton = (JButton) divider.getComponent(0);
for (ActionListener al : upArrowButton.getActionListeners()) { for (ActionListener al : upArrowButton.getActionListeners()) {

View file

@ -56,6 +56,10 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin> </plugin>
<plugin> <plugin>