diff --git a/Mage.Client/src/main/java/mage/client/MageFrame.java b/Mage.Client/src/main/java/mage/client/MageFrame.java
index 3fb2085edbe..4ee7b248837 100644
--- a/Mage.Client/src/main/java/mage/client/MageFrame.java
+++ b/Mage.Client/src/main/java/mage/client/MageFrame.java
@@ -1579,12 +1579,13 @@ public class MageFrame extends javax.swing.JFrame implements MageClient {
public void setConnectButtonText(String status) {
this.btnConnect.setText(status);
- // Needed to layout the tooltbar after text length change
+ // Needed to layout the toolbar after text length change
// TODO: need research, is it actual?
- GUISizeHelper.refreshGUIAndCards(false);
+ //GUISizeHelper.refreshGUIAndCards(false);
- this.btnConnect.repaint();
- this.btnConnect.revalidate();
+ this.btnConnect.invalidate();
+ //this.btnConnect.repaint();
+ //this.btnConnect.revalidate();
}
public static MageUI getUI() {
diff --git a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java
index 7e59438e658..54133a538af 100644
--- a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java
+++ b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java
@@ -46,7 +46,6 @@ import java.util.prefs.Preferences;
*/
public class PreferencesDialog extends javax.swing.JDialog {
- // TODO: add chat font changes in real time (current code require to app restart)
// TODO: fix card hand size (hand panel can't show full card on too big values - must use auto-height)
private static final Logger logger = Logger.getLogger(PreferencesDialog.class);
diff --git a/Mage.Client/src/main/java/mage/client/game/FeedbackPanel.form b/Mage.Client/src/main/java/mage/client/game/FeedbackPanel.form
deleted file mode 100644
index 46a6fee5863..00000000000
--- a/Mage.Client/src/main/java/mage/client/game/FeedbackPanel.form
+++ /dev/null
@@ -1,107 +0,0 @@
-
-
-
diff --git a/Mage.Client/src/main/java/mage/client/game/FeedbackPanel.java b/Mage.Client/src/main/java/mage/client/game/FeedbackPanel.java
index 82a2f87bf33..90db8ae049e 100644
--- a/Mage.Client/src/main/java/mage/client/game/FeedbackPanel.java
+++ b/Mage.Client/src/main/java/mage/client/game/FeedbackPanel.java
@@ -27,7 +27,11 @@ import java.util.concurrent.TimeUnit;
import static mage.constants.Constants.Option.*;
/**
- * @author BetaSteward_at_googlemail.com
+ * Game GUI: feedback panel (over hand) with current priority and possible actions like done/cancel/special buttons
+ *
+ * Warning, it's contains only clickable button, but all other logic done in helper panel
+ *
+ * @author BetaSteward_at_googlemail.com, JayDi85
*/
public class FeedbackPanel extends javax.swing.JPanel {
@@ -48,11 +52,7 @@ public class FeedbackPanel extends javax.swing.JPanel {
new XmageThreadFactory(ThreadUtils.THREAD_PREFIX_CLIENT_AUTO_CLOSE_TIMER)
);
- /**
- * Creates new form FeedbackPanel
- */
public FeedbackPanel() {
- //initComponents();
customInitComponents();
}
@@ -134,13 +134,13 @@ public class FeedbackPanel extends javax.swing.JPanel {
requestFocusIfPossible();
updateOptions(options);
- this.revalidate();
- this.repaint();
this.helper.setLinks(btnLeft, btnRight, btnSpecial, btnUndo);
this.helper.setVisible(true);
this.helper.setGameNeedFeedback(gameNeedUserFeedback, gameTurnPhase);
this.helper.autoSizeButtonsAndFeedbackState();
+
+ this.revalidate();
}
private void setButtonState(String leftText, String rightText, FeedbackMode mode) {
diff --git a/Mage.Client/src/main/java/mage/client/game/GamePanel.form b/Mage.Client/src/main/java/mage/client/game/GamePanel.form
deleted file mode 100644
index 6b1041202da..00000000000
--- a/Mage.Client/src/main/java/mage/client/game/GamePanel.form
+++ /dev/null
@@ -1,412 +0,0 @@
-
-
-
diff --git a/Mage.Client/src/main/java/mage/client/game/GamePanel.java b/Mage.Client/src/main/java/mage/client/game/GamePanel.java
index e176da2fb0d..97186c3b362 100644
--- a/Mage.Client/src/main/java/mage/client/game/GamePanel.java
+++ b/Mage.Client/src/main/java/mage/client/game/GamePanel.java
@@ -13,7 +13,6 @@ import mage.client.components.HoverButton;
import mage.client.components.KeyboundButton;
import mage.client.components.MageComponents;
import mage.client.components.ext.dlg.DialogManager;
-import mage.client.components.layout.RelativeLayout;
import mage.client.components.tray.MageTray;
import mage.client.dialog.*;
import mage.client.dialog.CardInfoWindowDialog.ShowType;
@@ -35,9 +34,8 @@ import mage.view.*;
import org.apache.log4j.Logger;
import org.mage.plugins.card.utils.impl.ImageManagerImpl;
-import javax.swing.*;
import javax.swing.Timer;
-import javax.swing.GroupLayout.Alignment;
+import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.EmptyBorder;
import javax.swing.border.LineBorder;
@@ -102,7 +100,7 @@ public final class GamePanel extends javax.swing.JPanel {
private final PickMultiNumberDialog pickMultiNumber;
private JLayeredPane jLayeredPane;
private String chosenHandKey = "You";
- private boolean smallMode = false;
+ private boolean smallMode = false; // TODO: no needs in gui scale, delete it
private boolean initialized = false;
private final skipButtonsList skipButtons = new skipButtonsList();
@@ -194,10 +192,41 @@ public final class GamePanel extends javax.swing.JPanel {
initComponents = true;
initComponents();
+ // prepare command panels (feedback, hand, skip buttons and stack)
+ if (DebugUtil.GUI_GAME_DRAW_COMMANDS_PANEL_BORDER) {
+ pnlHelperHandButtonsStackArea.setBorder(BorderFactory.createLineBorder(Color.MAGENTA));
+ }
+
+ // all game panels
+ pnlHelperHandButtonsStackArea.removeAll();
+ pnlHelperHandButtonsStackArea.setLayout(new BorderLayout());
+ // battlefields + phases
+ JPanel pnlBattlefieldAndPhases = new JPanel(new BorderLayout());
+ pnlBattlefieldAndPhases.setOpaque(false);
+ pnlBattlefieldAndPhases.add(pnlBattlefield, BorderLayout.CENTER);
+ pnlBattlefieldAndPhases.add(phasesContainer, BorderLayout.EAST);
+ pnlHelperHandButtonsStackArea.add(pnlBattlefieldAndPhases, BorderLayout.CENTER);
+ // commands (feedback + hand + skip + stack)
+ JPanel pnlCommandsRoot = new JPanel(new BorderLayout());
+ pnlCommandsRoot.setOpaque(false);
+ // ... feedback + hand
+ JPanel pnlCommandsFeedbackAndHand = new JPanel(new BorderLayout());
+ pnlCommandsFeedbackAndHand.setOpaque(false);
+ pnlCommandsFeedbackAndHand.add(feedbackPanel, BorderLayout.NORTH);
+ pnlCommandsFeedbackAndHand.add(handContainer, BorderLayout.CENTER);
+ // ... skip + stack
+ JPanel pnlCommandsSkipAndStack = new JPanel(new BorderLayout());
+ pnlCommandsSkipAndStack.setOpaque(false);
+ pnlCommandsSkipAndStack.add(pnlShortCuts, BorderLayout.NORTH);
+ pnlCommandsSkipAndStack.add(stackObjects, BorderLayout.CENTER);
+ // ... all
+ pnlCommandsRoot.add(pnlCommandsFeedbackAndHand, BorderLayout.CENTER);
+ pnlCommandsRoot.add(pnlCommandsSkipAndStack, BorderLayout.EAST);
+ pnlHelperHandButtonsStackArea.add(pnlCommandsRoot, BorderLayout.SOUTH);
+
// prepare commands buttons panel with flow layout (instead custom from IDE)
// size changes in helper method at the end
- // TODO: remove IDE form file (it useless anyway due many custom code in init)
- if (DebugUtil.GUI_GAME_DRAW_COMMAND_BUTTONS_PANEL_BORDER) {
+ if (DebugUtil.GUI_GAME_DRAW_SKIP_BUTTONS_PANEL_BORDER) {
pnlShortCuts.setBorder(BorderFactory.createLineBorder(Color.red));
}
pnlShortCuts.removeAll();
@@ -224,6 +253,7 @@ public final class GamePanel extends javax.swing.JPanel {
this.feedbackPanel.setConnectedChatPanel(this.userChatPanel);
// Override layout (I can't edit generated code)
+ // TODO: research - why it used all that panels on the root
this.setLayout(new BorderLayout());
final JLayeredPane jLayeredBackgroundPane = new JLayeredPane();
jLayeredBackgroundPane.setSize(1024, 768);
@@ -264,17 +294,21 @@ public final class GamePanel extends javax.swing.JPanel {
ComponentAdapter componentAdapterPlayField = new ComponentAdapter() {
@Override
public void componentResized(ComponentEvent e) {
- if (!initComponents) {
- if (resizeTimer.isRunning()) {
- resizeTimer.restart();
- } else {
- resizeTimer.start();
- }
+ if (initComponents) {
+ return;
+ }
+ if (resizeTimer.isRunning()) {
+ resizeTimer.restart();
+ } else {
+ resizeTimer.start();
}
}
};
resizeTimer = new Timer(1000, evt -> SwingUtilities.invokeLater(() -> {
+ if (initComponents) {
+ return;
+ }
resizeTimer.stop();
setGUISize(false);
feedbackPanel.changeGUISize();
@@ -304,7 +338,8 @@ public final class GamePanel extends javax.swing.JPanel {
public void cleanUp() {
MageFrame.removeGame(gameId);
saveDividerLocations();
- this.gameChatPanel.cleanUp();;
+ this.gameChatPanel.cleanUp();
+ ;
this.userChatPanel.cleanUp();
this.removeListener();
@@ -451,27 +486,17 @@ public final class GamePanel extends javax.swing.JPanel {
txtHoldPriority.setFont(new Font(GUISizeHelper.gameFeedbackPanelFont.getFontName(), Font.BOLD, GUISizeHelper.gameFeedbackPanelFont.getSize()));
GUISizeHelper.changePopupMenuFont(popupMenuTriggerOrder);
- // hand + stack panels
- // the stack takes up a portion of the possible space (GUISizeHelper.stackWidth)
- // TODO: research and delete rare used settings
- int newStackWidth = pnlHelperHandButtonsStackArea.getWidth() * GUISizeHelper.stackWidth / 100;
- newStackWidth = Math.max(410, newStackWidth);
- Dimension newDimension = new Dimension(
- pnlHelperHandButtonsStackArea.getWidth() - newStackWidth,
- MageActionCallback.getHandOrStackMargins(Zone.HAND).getHeight() + GUISizeHelper.handCardDimension.height + GUISizeHelper.scrollBarSize
- );
- handContainer.setPreferredSize(newDimension);
- handContainer.setMaximumSize(newDimension);
+ // commands panel
+ // TODO: add scrolls and save sizes instead const
+ // hand <|> stack
+ int upperPanelsHeight = getSkipButtonsPanelDefaultHeight();
+ feedbackPanel.setPreferredSize(new Dimension(Short.MAX_VALUE, upperPanelsHeight));
+ feedbackPanel.setMaximumSize(new Dimension(Short.MAX_VALUE, upperPanelsHeight));
+ pnlShortCuts.setPreferredSize(new Dimension(500, upperPanelsHeight));
+ pnlShortCuts.setMaximumSize(new Dimension(500, upperPanelsHeight));
// stack
- newDimension = new Dimension(
- newStackWidth,
- MageActionCallback.getHandOrStackMargins(Zone.STACK).getHeight() + GUISizeHelper.handCardDimension.height + GUISizeHelper.scrollBarSize
- );
stackObjects.setCardDimension(GUISizeHelper.handCardDimension);
- stackObjects.setPreferredSize(newDimension);
- stackObjects.setMinimumSize(newDimension);
- stackObjects.setMaximumSize(newDimension);
stackObjects.changeGUISize(); // must call to cards fit
// game logs and chat
@@ -483,11 +508,7 @@ public final class GamePanel extends javax.swing.JPanel {
float guiScale = GUISizeHelper.dialogGuiScale;
int hGap = GUISizeHelper.guiSizeScale(SKIP_BUTTONS_SPACE_H, guiScale);
int vGap = GUISizeHelper.guiSizeScale(SKIP_BUTTONS_SPACE_V, guiScale);
- newDimension = new Dimension(newStackWidth, (4 * vGap) + (2 * GUISizeHelper.gameCommandButtonHeight));
pnlShortCuts.setLayout(new FlowLayout(FlowLayout.RIGHT, hGap, vGap));
- pnlShortCuts.setPreferredSize(newDimension);
- pnlShortCuts.setMinimumSize(newDimension);
- pnlShortCuts.setMaximumSize(newDimension);
// skip buttons - sizes
Dimension strictSize = new Dimension(2 * GUISizeHelper.gameCommandButtonHeight, GUISizeHelper.gameCommandButtonHeight);
setSkipButtonSize(btnCancelSkip, guiScale, strictSize);
@@ -526,6 +547,14 @@ public final class GamePanel extends javax.swing.JPanel {
}
}
+ private int getSkipButtonsPanelDefaultHeight() {
+ // make sure it will get two rows of buttons
+ float guiScale = GUISizeHelper.dialogGuiScale;
+ int vGap = GUISizeHelper.guiSizeScale(SKIP_BUTTONS_SPACE_V, guiScale);
+ int extraSpace = GUISizeHelper.guiSizeScale(30, guiScale); // extra space for messages in feedback
+ return extraSpace + (4 * vGap) + (2 * GUISizeHelper.gameCommandButtonHeight);
+ }
+
private void reloadThemeRelatedGraphic() {
// skip buttons - images
int buttonHeight = GUISizeHelper.gameCommandButtonHeight;
@@ -588,12 +617,6 @@ public final class GamePanel extends javax.swing.JPanel {
if (button instanceof KeyboundButton) {
((KeyboundButton) button).updateGuiScale(guiScale);
}
-
- // no needs in size - it controlled by button's icon
- if (true) return;
- button.setMinimumSize(size);
- button.setPreferredSize(size);
- button.setMaximumSize(size);
}
private void saveDividerLocations() {
@@ -631,7 +654,7 @@ public final class GamePanel extends javax.swing.JPanel {
}
private boolean isSmallMode() {
- // TODO: no needs on gui scale?
+ // TODO: no needs on gui scale, delete
return this.getBounds().height < 770;
}
@@ -2021,7 +2044,7 @@ public final class GamePanel extends javax.swing.JPanel {
}
public void getMultiAmount(int messageId, GameView gameView, List messages, Map options,
- int min, int max) {
+ int min, int max) {
updateGame(messageId, gameView, false, options, null);
hideAll();
DialogManager.getManager(gameId).fadeOut();
@@ -2101,7 +2124,12 @@ public final class GamePanel extends javax.swing.JPanel {
lblActivePlayer = new javax.swing.JLabel();
txtPriority = new javax.swing.JLabel();
lblPriority = new javax.swing.JLabel();
+
feedbackPanel = new mage.client.game.FeedbackPanel();
+ helper = new HelperPanel();
+ feedbackPanel.setHelperPanel(helper);
+ feedbackPanel.setLayout(new BorderLayout());
+ feedbackPanel.add(helper, BorderLayout.CENTER);
Border paddingBorder = BorderFactory.createEmptyBorder(4, 4, 4, 4);
Border border = BorderFactory.createLineBorder(Color.DARK_GRAY, 2);
@@ -2149,7 +2177,7 @@ public final class GamePanel extends javax.swing.JPanel {
handCards = new HashMap<>();
pnlShortCuts.setOpaque(false);
- pnlShortCuts.setPreferredSize(new Dimension(410, 72));
+ //pnlShortCuts.setPreferredSize(new Dimension(410, 72));
stackObjects = new mage.client.cards.Cards();
@@ -2525,88 +2553,6 @@ public final class GamePanel extends javax.swing.JPanel {
initPopupMenuTriggerOrder();
- // Replay panel to control replay of games
- javax.swing.GroupLayout gl_pnlReplay = new javax.swing.GroupLayout(pnlReplay);
- pnlReplay.setLayout(gl_pnlReplay);
- gl_pnlReplay.setHorizontalGroup(
- gl_pnlReplay.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(gl_pnlReplay.createSequentialGroup()
- .addComponent(btnPreviousPlay, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(btnPlay, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(btnStopReplay, javax.swing.GroupLayout.PREFERRED_SIZE, 38, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(btnNextPlay, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(btnSkipForward, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE))
- );
- gl_pnlReplay.setVerticalGroup(
- gl_pnlReplay.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(btnSkipForward, 0, 0, Short.MAX_VALUE)
- .addComponent(btnNextPlay, 0, 0, Short.MAX_VALUE)
- .addComponent(btnStopReplay, 0, 0, Short.MAX_VALUE)
- .addComponent(btnPlay, 0, 0, Short.MAX_VALUE)
- .addComponent(btnPreviousPlay, javax.swing.GroupLayout.PREFERRED_SIZE, 31, Short.MAX_VALUE)
- );
-
- // Game info panel (buttons on the right panel)
- javax.swing.GroupLayout gl_pnlShortCuts = new javax.swing.GroupLayout(pnlShortCuts);
- pnlShortCuts.setLayout(gl_pnlShortCuts);
- gl_pnlShortCuts.setHorizontalGroup(gl_pnlShortCuts.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
- .addGroup(gl_pnlShortCuts.createSequentialGroup()
- .addComponent(btnSkipToNextTurn)
- .addComponent(btnSkipToEndTurn)
- .addComponent(btnSkipToNextMain)
- .addComponent(btnSkipToYourTurn)
- .addComponent(btnSkipStack)
- .addComponent(btnSkipToEndStepBeforeYourTurn)
- )
- .addGroup(gl_pnlShortCuts.createSequentialGroup()
- .addComponent(txtHoldPriority)
- /*.addComponent(btnToggleMacro)*/
- .addComponent(btnSwitchHands)
- .addComponent(btnCancelSkip)
- .addComponent(btnConcede)
- .addComponent(btnStopWatching)
- )
- //.addComponent(bigCard, javax.swing.GroupLayout.DEFAULT_SIZE, 256, Short.MAX_VALUE)
- //.addComponent(feedbackPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 256, Short.MAX_VALUE)
- //.addComponent(stack, javax.swing.GroupLayout.DEFAULT_SIZE, 256, Short.MAX_VALUE)
-
- .addGroup(gl_pnlShortCuts.createSequentialGroup()
- .addContainerGap()
- .addComponent(pnlReplay, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addContainerGap(51, Short.MAX_VALUE))
- );
- gl_pnlShortCuts.setVerticalGroup(gl_pnlShortCuts.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(gl_pnlShortCuts.createSequentialGroup()
- //.addComponent(bigCard, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- //.addGap(1, 1, 1)
- //.addComponent(feedbackPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 109, javax.swing.GroupLayout.PREFERRED_SIZE)
- //.addComponent(stack, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 164, Short.MAX_VALUE)
- .addComponent(pnlReplay, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(gl_pnlShortCuts.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
- .addComponent(btnSkipToNextTurn)
- .addComponent(btnSkipToEndTurn)
- .addComponent(btnSkipToNextMain)
- .addComponent(btnSkipToYourTurn)
- .addComponent(btnSkipStack)
- .addComponent(btnSkipToEndStepBeforeYourTurn)
- )
- .addGroup(gl_pnlShortCuts.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
- /*.addComponent(btnToggleMacro)*/
- .addComponent(txtHoldPriority)
- .addComponent(btnSwitchHands)
- .addComponent(btnCancelSkip)
- .addComponent(btnConcede)
- .addComponent(btnStopWatching)
- )
- )
- );
-
pnlBattlefield.setLayout(new java.awt.GridBagLayout());
jPhases = new JPanel();
@@ -2633,73 +2579,22 @@ public final class GamePanel extends javax.swing.JPanel {
pnlReplay.setOpaque(false);
- helper = new HelperPanel();
- feedbackPanel.setHelperPanel(helper);
-
jSplitPane2.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
jSplitPane2.setResizeWeight(0.5);
jSplitPane2.setLeftComponent(userChatPanel);
jSplitPane2.setBottomComponent(gameChatPanel);
- phasesContainer = new JPanel();
- phasesContainer.setLayout(new RelativeLayout(RelativeLayout.Y_AXIS));
- phasesContainer.setBackground(new Color(0, 0, 0, 0));
- Float ratio = (float) 1;
- JPanel empty1 = new JPanel();
- empty1.setBackground(new Color(0, 0, 0, 0));
- phasesContainer.add(empty1, ratio);
+ // phases buttons
+ phasesContainer = new JPanel(new FlowLayout(FlowLayout.CENTER));
+ phasesContainer.setOpaque(false);
phasesContainer.add(jPhases);
- javax.swing.GroupLayout gl_helperHandButtonsStackArea = new javax.swing.GroupLayout(pnlHelperHandButtonsStackArea);
- gl_helperHandButtonsStackArea.setHorizontalGroup(
- gl_helperHandButtonsStackArea.createParallelGroup(Alignment.LEADING)
- .addGroup(gl_helperHandButtonsStackArea.createSequentialGroup()
- // .addGap(0)
- .addGroup(gl_helperHandButtonsStackArea.createParallelGroup(Alignment.LEADING)
- .addGroup(gl_helperHandButtonsStackArea.createSequentialGroup()
- .addGroup(gl_helperHandButtonsStackArea.createParallelGroup(Alignment.LEADING)
- .addComponent(helper, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(handContainer, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- )
- .addGroup(gl_helperHandButtonsStackArea.createParallelGroup(Alignment.LEADING)
- .addComponent(pnlShortCuts, 410, GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE)
- .addComponent(stackObjects, 410, GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE)
- )
- )
- .addGap(0)
- //.addComponent(jPhases, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addGroup(gl_helperHandButtonsStackArea.createSequentialGroup()
- .addComponent(pnlBattlefield, GroupLayout.DEFAULT_SIZE, 200, Short.MAX_VALUE)
- .addComponent(phasesContainer, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
- )))
- );
- gl_helperHandButtonsStackArea.setVerticalGroup(
- gl_helperHandButtonsStackArea.createParallelGroup(Alignment.TRAILING)
- .addGroup(gl_helperHandButtonsStackArea.createSequentialGroup()
- .addGroup(gl_helperHandButtonsStackArea.createParallelGroup(Alignment.LEADING)
- .addComponent(pnlBattlefield, GroupLayout.DEFAULT_SIZE, 200, Short.MAX_VALUE)
- .addComponent(phasesContainer, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
- )
- //.addPreferredGap(ComponentPlacement.RELATED)
- .addGroup(gl_helperHandButtonsStackArea.createParallelGroup(Alignment.LEADING)
- .addGroup(gl_helperHandButtonsStackArea.createSequentialGroup()
- .addGap(2)
- .addComponent(pnlShortCuts, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
- .addComponent(stackObjects, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
- )
- .addGroup(gl_helperHandButtonsStackArea.createSequentialGroup()
- .addComponent(helper, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
- .addComponent(handContainer, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
- )
- )
- )
- );
- pnlHelperHandButtonsStackArea.setLayout(gl_helperHandButtonsStackArea);
-
+ // split: battlefield <|> chats
jSplitPane1.setLeftComponent(pnlHelperHandButtonsStackArea);
jSplitPane1.setRightComponent(jSplitPane2);
// Set individual area sizes of big card pane
+ // TODO: research - is it possible to use border layout without all custom code
GridBagLayout gbl = new GridBagLayout();
jPanel2.setLayout(gbl);
@@ -2721,6 +2616,7 @@ public final class GamePanel extends javax.swing.JPanel {
// big card and buttons
jSplitPane0.setRightComponent(jPanel2);
+ // TODO: need reseach, possible reason of weird scrolls restore
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
diff --git a/Mage.Client/src/main/java/mage/client/game/HelperPanel.java b/Mage.Client/src/main/java/mage/client/game/HelperPanel.java
index 531739b8e19..01791c8e197 100644
--- a/Mage.Client/src/main/java/mage/client/game/HelperPanel.java
+++ b/Mage.Client/src/main/java/mage/client/game/HelperPanel.java
@@ -11,7 +11,6 @@ import mage.client.util.audio.AudioManager;
import mage.constants.TurnPhase;
import javax.swing.*;
-import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
@@ -22,7 +21,7 @@ import static mage.client.game.FeedbackPanel.FeedbackMode.QUESTION;
import static mage.constants.PlayerAction.*;
/**
- * Panel with buttons that copy the state of feedback panel.
+ * Game GUI: helper component for feedback panel - implements all feedback logic here
*
* @author ayrat, JayDi85
*/
@@ -32,8 +31,7 @@ public class HelperPanel extends JPanel {
private javax.swing.JButton btnRight;
private javax.swing.JButton btnSpecial;
private javax.swing.JButton btnUndo;
- //private javax.swing.JButton btnEndTurn;
- //private javax.swing.JButton btnStopTimer;
+
private JScrollPane textAreaScrollPane;
private MageTextArea dialogTextArea;
JPanel mainPanel;
@@ -104,11 +102,6 @@ public class HelperPanel extends JPanel {
textAreaScrollPane.setMaximumSize(new Dimension(getParent().getWidth(), GUISizeHelper.gameFeedbackPanelMaxHeight));
textAreaScrollPane.setPreferredSize(new Dimension(getParent().getWidth(), GUISizeHelper.gameFeedbackPanelMaxHeight));
-// dialogTextArea.setMaximumSize(new Dimension(getParent().getWidth(), Integer.MAX_VALUE));
-// dialogTextArea.setPreferredSize(new Dimension(getParent().getWidth(), GUISizeHelper.gameDialogAreaTextHeight));
-// buttonContainer.setPreferredSize(new Dimension(getParent().getWidth(), GUISizeHelper.gameDialogButtonHeight + 4));
-// buttonContainer.setMinimumSize(new Dimension(160, GUISizeHelper.gameDialogButtonHeight + 20));
-// buttonContainer.setMaximumSize(new Dimension(Integer.MAX_VALUE, GUISizeHelper.gameDialogButtonHeight + 4));
btnLeft.setFont(GUISizeHelper.gameFeedbackPanelFont);
btnRight.setFont(GUISizeHelper.gameFeedbackPanelFont);
btnSpecial.setFont(GUISizeHelper.gameFeedbackPanelFont);
@@ -127,13 +120,13 @@ public class HelperPanel extends JPanel {
private void initComponents() {
initPopupMenuTriggerOrder();
- this.setBorder(new EmptyBorder(5, 5, 5, 5));
- this.setLayout(new GridLayout(0, 1));
+ this.setLayout(new BorderLayout());
this.setOpaque(false);
+
mainPanel = new JPanel();
mainPanel.setLayout(new GridLayout(0, 1));
mainPanel.setOpaque(false);
- this.add(mainPanel);
+ this.add(mainPanel, BorderLayout.CENTER);
dialogTextArea = new MageTextArea();
dialogTextArea.setText("");
@@ -419,6 +412,7 @@ public class HelperPanel extends JPanel {
int constGridSizeW = buttons.size() * constButtonSizeW + BUTTONS_H_GAP * (buttons.size() - 1);
int constGridSizeH = Math.round(GUISizeHelper.gameFeedbackPanelButtonHeight * 150 / 100);
+ // TODO: remove due gui scale and user customizable settings?
if (needButtonSizeW < constButtonSizeW) {
// same size mode (grid)
GridLayout gl = new GridLayout(1, buttons.size(), BUTTONS_H_GAP, 0);
diff --git a/Mage.Client/src/main/java/mage/client/util/GUISizeHelper.java b/Mage.Client/src/main/java/mage/client/util/GUISizeHelper.java
index 796940f992d..bc9ec0823eb 100644
--- a/Mage.Client/src/main/java/mage/client/util/GUISizeHelper.java
+++ b/Mage.Client/src/main/java/mage/client/util/GUISizeHelper.java
@@ -58,7 +58,6 @@ public final class GUISizeHelper {
public static int gameFeedbackPanelButtonWidth;
public static Dimension handCardDimension;
- public static int stackWidth; // percent
public static float playerPanelGuiScale;
public static float dialogGuiScale;
@@ -156,7 +155,6 @@ public final class GUISizeHelper {
// game - hand
int handCardSize = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GUI_CARD_HAND_SIZE, 14);
handCardDimension = new Dimension(CARD_IMAGE_WIDTH * handCardSize / 42, CARD_IMAGE_HEIGHT * handCardSize / 42);
- stackWidth = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GUI_STACK_WIDTH, 30);
int otherZonesCardSize = PreferencesDialog.getCachedValue(PreferencesDialog.KEY_GUI_CARD_OTHER_ZONES_SIZE, 14);
otherZonesCardDimension = new Dimension(CARD_IMAGE_WIDTH * otherZonesCardSize / 42, CARD_IMAGE_HEIGHT * otherZonesCardSize / 42);
diff --git a/Mage/src/main/java/mage/util/DebugUtil.java b/Mage/src/main/java/mage/util/DebugUtil.java
index e865c57a9d9..47460248fbe 100644
--- a/Mage/src/main/java/mage/util/DebugUtil.java
+++ b/Mage/src/main/java/mage/util/DebugUtil.java
@@ -35,8 +35,9 @@ public class DebugUtil {
public static boolean GUI_GAME_DRAW_BATTLEFIELD_BORDER = false;
public static boolean GUI_GAME_DRAW_HAND_AND_STACK_BORDER = false;
public static boolean GUI_GAME_DRAW_PLAYER_PANEL_BORDER = false;
- public static boolean GUI_GAME_DRAW_COMMAND_BUTTONS_PANEL_BORDER = false;
+ public static boolean GUI_GAME_DRAW_SKIP_BUTTONS_PANEL_BORDER = false;
public static boolean GUI_GAME_DRAW_PHASE_BUTTONS_PANEL_BORDER = false;
+ public static boolean GUI_GAME_DRAW_COMMANDS_PANEL_BORDER = false;
// game dialogs
public static boolean GUI_GAME_DIALOGS_DRAW_CARDS_AREA_BORDER = false;