diff --git a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form index 32d661081b2..89c02ef8247 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form +++ b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.form @@ -6033,27 +6033,25 @@ - + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - @@ -6066,8 +6064,12 @@ - - + + + + + + @@ -6132,6 +6134,11 @@ + + + + + @@ -6284,6 +6291,19 @@ + + + + + + + + + + + + + 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 57a6fef9b0d..a3cbdf87105 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/PreferencesDialog.java @@ -279,6 +279,7 @@ public class PreferencesDialog extends javax.swing.JDialog { // controls public static final String KEY_CONTROL_TOGGLE_MACRO = "controlToggleMacro"; + public static final String KEY_CONTROL_SWITCH_CHAT = "controlSwitchChat"; public static final String KEY_CONTROL_CONFIRM = "controlConfirm"; public static final String KEY_CONTROL_CANCEL_SKIP = "controlCancelSkip"; public static final String KEY_CONTROL_NEXT_TURN = "controlNextTurn"; @@ -568,6 +569,8 @@ public class PreferencesDialog extends javax.swing.JDialog { bttnResetControls = new javax.swing.JButton(); labelToggleRecordMacro = new javax.swing.JLabel(); keyToggleRecordMacro = new KeyBindButton(this, KEY_CONTROL_TOGGLE_MACRO); + labelSwitchChat = new javax.swing.JLabel(); + keySwitchChat = new KeyBindButton(this, KEY_CONTROL_SWITCH_CHAT); saveButton = new javax.swing.JButton(); exitButton = new javax.swing.JButton(); @@ -2622,29 +2625,32 @@ public class PreferencesDialog extends javax.swing.JDialog { keyToggleRecordMacro.setText("keyBindButton1"); + labelSwitchChat.setText("Go in/out to chat"); + + keySwitchChat.setText("keyBindButton1"); + org.jdesktop.layout.GroupLayout tabControlsLayout = new org.jdesktop.layout.GroupLayout(tabControls); tabControls.setLayout(tabControlsLayout); tabControlsLayout.setHorizontalGroup( tabControlsLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(tabControlsLayout.createSequentialGroup() .addContainerGap() + .add(tabControlsLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(labelCancel) + .add(labelNextTurn) + .add(labelEndStep) + .add(labelMainStep) + .add(labelYourTurn) + .add(lebelSkip) + .add(labelPriorEnd) + .add(labelSkipStep) + .add(labelConfirm) + .add(labelToggleRecordMacro) + .add(bttnResetControls) + .add(labelSwitchChat)) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) .add(tabControlsLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(tabControlsLayout.createSequentialGroup() - .add(bttnResetControls) - .add(0, 0, Short.MAX_VALUE)) - .add(tabControlsLayout.createSequentialGroup() - .add(tabControlsLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) - .add(labelCancel) - .add(labelNextTurn) - .add(labelEndStep) - .add(labelMainStep) - .add(labelYourTurn) - .add(lebelSkip) - .add(labelPriorEnd) - .add(labelSkipStep) - .add(labelConfirm) - .add(labelToggleRecordMacro)) - .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) .add(tabControlsLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(keyConfirm, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(keyCancelSkip, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) @@ -2656,8 +2662,11 @@ public class PreferencesDialog extends javax.swing.JDialog { .add(keySkipStep, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(keyEndStep, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(keyToggleRecordMacro, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) - .add(controlsDescriptionLabel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 468, Short.MAX_VALUE))) + .add(321, 321, 321) + .add(controlsDescriptionLabel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 151, Short.MAX_VALUE)) + .add(tabControlsLayout.createSequentialGroup() + .add(keySwitchChat, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(0, 0, Short.MAX_VALUE))) .addContainerGap()) ); tabControlsLayout.setVerticalGroup( @@ -2706,6 +2715,10 @@ public class PreferencesDialog extends javax.swing.JDialog { .add(tabControlsLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(labelToggleRecordMacro) .add(keyToggleRecordMacro, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)))) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) + .add(tabControlsLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(keySwitchChat, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(labelSwitchChat)) .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) .add(bttnResetControls) .addContainerGap()) @@ -2927,6 +2940,7 @@ public class PreferencesDialog extends javax.swing.JDialog { save(prefs, dialog.keySkipStack); save(prefs, dialog.keyPriorEnd); save(prefs, dialog.keyToggleRecordMacro); + save(prefs, dialog.keySwitchChat); // Avatar if (selectedAvatarId < MIN_AVATAR_ID || selectedAvatarId > MAX_AVATAR_ID) { @@ -3520,6 +3534,7 @@ public class PreferencesDialog extends javax.swing.JDialog { load(prefs, dialog.keySkipStack); load(prefs, dialog.keyPriorEnd); load(prefs, dialog.keyToggleRecordMacro); + load(prefs, dialog.keySwitchChat); } private static void loadSelectedAvatar(Preferences prefs) { @@ -3728,6 +3743,10 @@ public class PreferencesDialog extends javax.swing.JDialog { } } + public static int getCurrentKeyControlKey(String key) { + return getCachedValue(key, getDefaultControlKey(key)); + } + private static int getDefaultControlKey(String key) { switch (key) { case KEY_CONTROL_CONFIRM: @@ -3742,14 +3761,16 @@ public class PreferencesDialog extends javax.swing.JDialog { return KeyEvent.VK_F6; case KEY_CONTROL_MAIN_STEP: return KeyEvent.VK_F7; + case KEY_CONTROL_TOGGLE_MACRO: + return KeyEvent.VK_F8; case KEY_CONTROL_YOUR_TURN: return KeyEvent.VK_F9; case KEY_CONTROL_SKIP_STACK: return KeyEvent.VK_F10; case KEY_CONTROL_PRIOR_END: return KeyEvent.VK_F11; - case KEY_CONTROL_TOGGLE_MACRO: - return KeyEvent.VK_F8; + case KEY_CONTROL_SWITCH_CHAT: + return KeyEvent.VK_F12; default: return 0; } @@ -3897,7 +3918,8 @@ public class PreferencesDialog extends javax.swing.JDialog { keySkipStack, keySkipStep, keyYourTurn, - keyToggleRecordMacro + keyToggleRecordMacro, + keySwitchChat ); } @@ -4013,6 +4035,7 @@ public class PreferencesDialog extends javax.swing.JDialog { private mage.client.components.KeyBindButton keyPriorEnd; private mage.client.components.KeyBindButton keySkipStack; private mage.client.components.KeyBindButton keySkipStep; + private mage.client.components.KeyBindButton keySwitchChat; private mage.client.components.KeyBindButton keyToggleRecordMacro; private mage.client.components.KeyBindButton keyYourTurn; private javax.swing.JLabel labelCancel; @@ -4034,6 +4057,7 @@ public class PreferencesDialog extends javax.swing.JDialog { private javax.swing.JLabel labelPriorEnd; private javax.swing.JLabel labelSkipStep; private javax.swing.JLabel labelStackWidth; + private javax.swing.JLabel labelSwitchChat; private javax.swing.JLabel labelToggleRecordMacro; private javax.swing.JLabel labelTooltipSize; private javax.swing.JLabel labelYourTurn; 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 f585548cafb..d4839275a90 100644 --- a/Mage.Client/src/main/java/mage/client/game/GamePanel.java +++ b/Mage.Client/src/main/java/mage/client/game/GamePanel.java @@ -1783,6 +1783,21 @@ public final class GamePanel extends javax.swing.JPanel { } }); + KeyStroke ks12 = getCachedKeystroke(KEY_CONTROL_SWITCH_CHAT); + this.getInputMap(c).put(ks12, "F12_PRESS"); + this.getActionMap().put("F12_PRESS", new AbstractAction() { + @Override + public void actionPerformed(ActionEvent actionEvent) { + // switch in/out to chat, must triggers in chat input too + //if (isUserImputActive()) return; + if (isChatInputActive()) { + KeyboardFocusManager.getCurrentKeyboardFocusManager().clearFocusOwner(); + } else if (!isUserImputActive()) { + userChatPanel.getTxtMessageInputComponent().requestFocusInWindow(); + } + } + }); + KeyStroke ksAltE = KeyStroke.getKeyStroke(KeyEvent.VK_E, InputEvent.ALT_MASK); this.getInputMap(c).put(ksAltE, "ENLARGE"); this.getActionMap().put("ENLARGE", new AbstractAction() { diff --git a/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java b/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java index cc87eae7661..d65825a5606 100644 --- a/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java +++ b/Mage.Client/src/main/java/mage/client/remote/CallbackClientImpl.java @@ -1,4 +1,3 @@ - package mage.client.remote; import mage.cards.decks.Deck; @@ -158,7 +157,7 @@ public class CallbackClientImpl implements CallbackClient { case GAME_INIT: { GamePanel panel = MageFrame.getGame(callback.getObjectId()); if (panel != null) { - appendJsonEvent("GAME_INIT", callback.getObjectId(), (GameView) callback.getData()); + appendJsonEvent("GAME_INIT", callback.getObjectId(), callback.getData()); panel.init((GameView) callback.getData()); } break; @@ -405,31 +404,34 @@ public class CallbackClientImpl implements CallbackClient { .append("
Turn mousewheel up (ALT-e) - enlarge image of card the mousepointer hovers over") .append("
Turn mousewheel down (ALT-s) - enlarge original/alternate image of card the mousepointer hovers over") .append("
") - .append(KeyEvent.getKeyText(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_CONTROL_CONFIRM, 113))) + .append(KeyEvent.getKeyText(PreferencesDialog.getCurrentKeyControlKey(PreferencesDialog.KEY_CONTROL_CONFIRM))) .append(" - Confirm \"Ok\", \"Yes\" or \"Done\" button") .append("
") - .append(KeyEvent.getKeyText(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_CONTROL_NEXT_TURN, 115))) + .append(KeyEvent.getKeyText(PreferencesDialog.getCurrentKeyControlKey(PreferencesDialog.KEY_CONTROL_NEXT_TURN))) .append(" - Skip current turn but stop on declare attackers/blockers and something on the stack") .append("
") - .append(KeyEvent.getKeyText(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_CONTROL_END_STEP, 116))) + .append(KeyEvent.getKeyText(PreferencesDialog.getCurrentKeyControlKey(PreferencesDialog.KEY_CONTROL_END_STEP))) .append(" - Skip to next end step but stop on declare attackers/blockers and something on the stack") .append("
") - .append(KeyEvent.getKeyText(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_CONTROL_SKIP_STEP, 117))) + .append(KeyEvent.getKeyText(PreferencesDialog.getCurrentKeyControlKey(PreferencesDialog.KEY_CONTROL_SKIP_STEP))) .append(" - Skip current turn but stop on declare attackers/blockers") .append("
") - .append(KeyEvent.getKeyText(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_CONTROL_MAIN_STEP, 118))) + .append(KeyEvent.getKeyText(PreferencesDialog.getCurrentKeyControlKey(PreferencesDialog.KEY_CONTROL_MAIN_STEP))) .append(" - Skip to next main phase but stop on declare attackers/blockers and something on the stack") .append("
") - .append(KeyEvent.getKeyText(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_CONTROL_YOUR_TURN, 120))) + .append(KeyEvent.getKeyText(PreferencesDialog.getCurrentKeyControlKey(PreferencesDialog.KEY_CONTROL_YOUR_TURN))) .append(" - Skip everything until your next turn") .append("
") - .append(KeyEvent.getKeyText(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_CONTROL_PRIOR_END, 122))) + .append(KeyEvent.getKeyText(PreferencesDialog.getCurrentKeyControlKey(PreferencesDialog.KEY_CONTROL_PRIOR_END))) .append(" - Skip everything until the end step just prior to your turn") .append("
") - .append(KeyEvent.getKeyText(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_CONTROL_CANCEL_SKIP, 114))) + .append(KeyEvent.getKeyText(PreferencesDialog.getCurrentKeyControlKey(PreferencesDialog.KEY_CONTROL_CANCEL_SKIP))) .append(" - Undo F4/F5/F7/F9/F11") .append("
") - .append(KeyEvent.getKeyText(PreferencesDialog.getCachedValue(PreferencesDialog.KEY_CONTROL_TOGGLE_MACRO, 119))) + .append(KeyEvent.getKeyText(PreferencesDialog.getCurrentKeyControlKey(PreferencesDialog.KEY_CONTROL_SWITCH_CHAT))) + .append(" - Switth in/out to chat text field") + .append("
") + .append(KeyEvent.getKeyText(PreferencesDialog.getCurrentKeyControlKey(PreferencesDialog.KEY_CONTROL_TOGGLE_MACRO))) .append(" - Toggle recording a sequence of actions to repeat. Will not pause if interrupted and can fail if a selected card changes such as when scrying top card to bottom.") .append("
").append(System.getProperty("os.name").contains("Mac OS X") ? "Cmd" : "Ctrl").append(" + click - Hold priority while casting a spell or activating an ability") .append("
").append("Type /FIX message in chat to fix freezed game")