From a4fd5e6fb78659bc2b443498357a175e71bdc8c8 Mon Sep 17 00:00:00 2001 From: magenoxx Date: Wed, 21 Sep 2011 12:25:22 +0400 Subject: [PATCH] Possible fix for Issue 256 --- .../main/java/mage/client/chat/ChatPanel.java | 5 ++++ .../java/mage/client/game/FeedbackPanel.java | 23 ++++++++++++++++++- .../main/java/mage/client/game/GamePanel.java | 2 ++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/Mage.Client/src/main/java/mage/client/chat/ChatPanel.java b/Mage.Client/src/main/java/mage/client/chat/ChatPanel.java index 8b4669795bf..ca912330b14 100644 --- a/Mage.Client/src/main/java/mage/client/chat/ChatPanel.java +++ b/Mage.Client/src/main/java/mage/client/chat/ChatPanel.java @@ -43,6 +43,7 @@ import mage.client.components.ColorPane; import mage.remote.Session; import mage.view.ChatMessage.MessageColor; +import javax.swing.*; import javax.swing.border.EmptyBorder; import javax.swing.table.AbstractTableModel; @@ -182,6 +183,10 @@ public class ChatPanel extends javax.swing.JPanel { this.txtMessage.setVisible(false); } + public JTextField getTxtMessageInputComponent() { + return this.txtMessage; + } + public void useExtendedView(VIEW_MODE extendedViewMode) { this.extendedViewMode = extendedViewMode; this.txtConversation.setExtBackgroundColor(new Color(0,0,0,100)); 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 0f55c7c5ae8..cd9ea731101 100644 --- a/Mage.Client/src/main/java/mage/client/game/FeedbackPanel.java +++ b/Mage.Client/src/main/java/mage/client/game/FeedbackPanel.java @@ -44,6 +44,7 @@ import java.util.UUID; import javax.swing.*; import mage.client.MageFrame; +import mage.client.chat.ChatPanel; import mage.client.components.MageTextArea; import mage.client.dialog.MageDialog; import mage.remote.Session; @@ -67,6 +68,7 @@ public class FeedbackPanel extends javax.swing.JPanel { private Session session; private FeedbackMode mode; private MageDialog connectedDialog; + private ChatPanel connectedChatPanel; /** Creates new form FeedbackPanel */ public FeedbackPanel() { @@ -125,14 +127,16 @@ public class FeedbackPanel extends javax.swing.JPanel { } this.btnSpecial.setVisible(special); this.btnSpecial.setText("Special"); - this.btnRight.requestFocus(); this.helper.setSpecial("Special", special); if (message.contains("P}")) { this.btnSpecial.setVisible(true); this.btnSpecial.setText("Pay 2 life"); this.helper.setSpecial("Pay 2 life", true); } + + requestFocusIfPossible(); handleOptions(options); + this.revalidate(); this.repaint(); this.helper.setLinks(btnLeft, btnRight, btnSpecial); @@ -156,6 +160,19 @@ public class FeedbackPanel extends javax.swing.JPanel { } } + // Issue 256: Chat+Feedback panel: request focus prevents players from chatting + private void requestFocusIfPossible() { + boolean requestFocusAllowed = true; + if (connectedChatPanel != null && connectedChatPanel.getTxtMessageInputComponent() != null) { + if (connectedChatPanel.getTxtMessageInputComponent().hasFocus()) { + requestFocusAllowed = false; + } + } + if (requestFocusAllowed) { + this.btnRight.requestFocus(); + } + } + public void doClick() { this.btnRight.doClick(); } @@ -382,6 +399,10 @@ public class FeedbackPanel extends javax.swing.JPanel { return this.mode; } + public void setConnectedChatPanel(ChatPanel chatPanel) { + this.connectedChatPanel = chatPanel; + } + private javax.swing.JButton btnLeft; private javax.swing.JButton btnRight; private javax.swing.JButton btnSpecial; 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 403fc27d796..424047d392b 100644 --- a/Mage.Client/src/main/java/mage/client/game/GamePanel.java +++ b/Mage.Client/src/main/java/mage/client/game/GamePanel.java @@ -112,6 +112,8 @@ public class GamePanel extends javax.swing.JPanel { combat.hideDialog(); MageFrame.getDesktop().add(pickNumber, JLayeredPane.POPUP_LAYER); + this.feedbackPanel.setConnectedChatPanel(this.gameChatPanel); + //FIXME: remove from here try { // Override layout (I can't edit generated code)