mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 03:08:02 +00:00
add semi-intelligent default focus selection for all home submenu screens
This commit is contained in:
@@ -13,6 +13,7 @@ import javax.swing.JFileChooser;
|
||||
import javax.swing.JList;
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.ListSelectionModel;
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.filechooser.FileFilter;
|
||||
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
@@ -109,7 +110,9 @@ public enum CSubmenuGauntletBuild implements ICDoc {
|
||||
*/
|
||||
@Override
|
||||
public void update() {
|
||||
// Nothing to see here...
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() { view.focusName(); }
|
||||
});
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
||||
@@ -84,7 +84,9 @@ public enum CSubmenuGauntletContests implements ICDoc {
|
||||
*/
|
||||
@Override
|
||||
public void update() {
|
||||
// Nothing to see here...
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() { view.getBtnStart().requestFocusInWindow(); }
|
||||
});
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
||||
@@ -6,6 +6,7 @@ import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.SwingWorker;
|
||||
|
||||
@@ -21,6 +22,7 @@ import forge.gauntlet.GauntletData;
|
||||
import forge.gauntlet.GauntletIO;
|
||||
import forge.gui.SOverlayUtils;
|
||||
import forge.gui.framework.ICDoc;
|
||||
import forge.gui.home.VHomeUI;
|
||||
import forge.model.FModel;
|
||||
|
||||
/**
|
||||
@@ -45,7 +47,16 @@ public enum CSubmenuGauntletLoad implements ICDoc {
|
||||
*/
|
||||
@Override
|
||||
public void update() {
|
||||
// Nothing to see here...
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() {
|
||||
JButton btnStart = view.getBtnStart();
|
||||
if (btnStart.isEnabled()) {
|
||||
view.getBtnStart().requestFocusInWindow();
|
||||
} else {
|
||||
VHomeUI.SINGLETON_INSTANCE.getLblEditor().requestFocusInWindow();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
||||
@@ -83,7 +83,9 @@ public enum CSubmenuGauntletQuick implements ICDoc {
|
||||
*/
|
||||
@Override
|
||||
public void update() {
|
||||
// Nothing to see here...
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() { view.getBtnStart().requestFocusInWindow(); }
|
||||
});
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
||||
@@ -178,6 +178,10 @@ public enum VSubmenuGauntletBuild implements IVSubmenu<CSubmenuGauntletBuild> {
|
||||
pnlButtons.add(btnDown, "h 40px!, w 100%!, ay baseline");
|
||||
}
|
||||
|
||||
public void focusName() {
|
||||
txfFilename.requestFocusInWindow();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.home.IVSubmenu#getGroupEnum()
|
||||
*/
|
||||
|
||||
@@ -11,6 +11,7 @@ import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.SwingUtilities;
|
||||
|
||||
import forge.Command;
|
||||
import forge.deck.Deck;
|
||||
@@ -151,6 +152,10 @@ public enum CSubmenuQuestData implements ICDoc {
|
||||
|
||||
view.getLstQuests().setSelectCommand(cmdQuestSelect);
|
||||
view.getLstQuests().setDeleteCommand(cmdQuestDelete);
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() { view.getBtnEmbark().requestFocusInWindow(); }
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -2,6 +2,8 @@ package forge.gui.home.quest;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import javax.swing.SwingUtilities;
|
||||
|
||||
import forge.Command;
|
||||
import forge.Singletons;
|
||||
import forge.control.FControl;
|
||||
@@ -93,6 +95,10 @@ public enum CSubmenuQuestDecks implements ICDoc {
|
||||
else {
|
||||
Singletons.getModel().getQuestPreferences().setPreference(QPref.CURRENT_DECK, QPref.CURRENT_DECK.getDefault());
|
||||
}
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() { view.getBtnNewDeck().requestFocusInWindow(); }
|
||||
});
|
||||
}
|
||||
|
||||
/** @return forge.deck.Deck */
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package forge.gui.home.quest;
|
||||
|
||||
import javax.swing.SwingUtilities;
|
||||
|
||||
import forge.Command;
|
||||
import forge.Singletons;
|
||||
import forge.gui.framework.ICDoc;
|
||||
@@ -29,7 +31,9 @@ public enum CSubmenuQuestPrefs implements ICDoc {
|
||||
*/
|
||||
@Override
|
||||
public void update() {
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() { VSubmenuQuestPrefs.SINGLETON_INSTANCE.focusFirstTextbox(); }
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -62,6 +62,7 @@ public enum VSubmenuQuestPrefs implements IVSubmenu<CSubmenuQuestPrefs> {
|
||||
private final FLabel lblErrShop = new FLabel.Builder().text("Shop Error").fontStyle(Font.BOLD).build();
|
||||
|
||||
private final QuestPreferences prefs = Singletons.getModel().getQuestPreferences();
|
||||
private PrefInput focusTarget;
|
||||
|
||||
/** */
|
||||
public enum QuestPreferencesErrType { /** */
|
||||
@@ -195,6 +196,10 @@ public enum VSubmenuQuestPrefs implements IVSubmenu<CSubmenuQuestPrefs> {
|
||||
return lblErrBooster;
|
||||
}
|
||||
|
||||
public void focusFirstTextbox() {
|
||||
focusTarget.requestFocusInWindow();
|
||||
}
|
||||
|
||||
private void populateRewards() {
|
||||
pnlRewards.setOpaque(false);
|
||||
pnlRewards.setLayout(new MigLayout("insets 0, gap 0, wrap 2, hidemode 3"));
|
||||
@@ -205,7 +210,8 @@ public enum VSubmenuQuestPrefs implements IVSubmenu<CSubmenuQuestPrefs> {
|
||||
final String constraints2 = "w 150px!, h 26px!";
|
||||
|
||||
pnlRewards.add(new FLabel.Builder().text("Base winnings").build(), constraints2);
|
||||
pnlRewards.add(new PrefInput(QPref.REWARDS_BASE, QuestPreferencesErrType.REWARDS), constraints1);
|
||||
focusTarget = new PrefInput(QPref.REWARDS_BASE, QuestPreferencesErrType.REWARDS);
|
||||
pnlRewards.add(focusTarget, constraints1);
|
||||
|
||||
pnlRewards.add(new FLabel.Builder().text("No losses").build(), constraints2);
|
||||
pnlRewards.add(new PrefInput(QPref.REWARDS_UNDEFEATED, QuestPreferencesErrType.REWARDS), constraints1);
|
||||
|
||||
@@ -37,7 +37,9 @@ public enum CSubmenuConstructed implements ICDoc {
|
||||
*/
|
||||
@Override
|
||||
public void update() {
|
||||
// Nothing to see here...
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() { view.getBtnStart().requestFocusInWindow(); }
|
||||
});
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
@@ -91,8 +93,6 @@ public enum CSubmenuConstructed implements ICDoc {
|
||||
view.getCbRemoveSmall().setSelected(prefs.getPrefBoolean(FPref.DECKGEN_NOSMALL));
|
||||
}
|
||||
|
||||
|
||||
|
||||
/** @param gameType
|
||||
* @param lists0   {@link java.util.List}<{@link javax.swing.JList}> */
|
||||
private void startGame(final GameType gameType) {
|
||||
@@ -138,7 +138,6 @@ public enum CSubmenuConstructed implements ICDoc {
|
||||
worker.execute();
|
||||
}
|
||||
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.framework.ICDoc#getCommandOnSelect()
|
||||
*/
|
||||
|
||||
@@ -5,6 +5,7 @@ import java.awt.event.ActionListener;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.SwingWorker;
|
||||
@@ -71,11 +72,24 @@ public enum CSubmenuDraft implements ICDoc {
|
||||
human.add(d.getHumanDeck());
|
||||
}
|
||||
|
||||
VSubmenuDraft.SINGLETON_INSTANCE.getLstDecks().setDecks(human);
|
||||
final VSubmenuDraft view = VSubmenuDraft.SINGLETON_INSTANCE;
|
||||
final JButton btnStart = view.getBtnStart();
|
||||
|
||||
view.getLstDecks().setDecks(human);
|
||||
|
||||
if (human.size() > 1) {
|
||||
VSubmenuDraft.SINGLETON_INSTANCE.getBtnStart().setEnabled(true);
|
||||
btnStart.setEnabled(true);
|
||||
}
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() {
|
||||
if (btnStart.isEnabled()) {
|
||||
view.getBtnStart().requestFocusInWindow();
|
||||
} else {
|
||||
view.getBtnBuildDeck().requestFocusInWindow();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void startGame(final GameType gameType) {
|
||||
|
||||
@@ -8,6 +8,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.SwingUtilities;
|
||||
|
||||
@@ -21,8 +22,8 @@ import forge.deck.Deck;
|
||||
import forge.deck.DeckBase;
|
||||
import forge.deck.DeckGroup;
|
||||
import forge.deck.DeckSection;
|
||||
import forge.game.limited.ReadDraftRankings;
|
||||
import forge.game.GameType;
|
||||
import forge.game.limited.ReadDraftRankings;
|
||||
import forge.game.limited.SealedDeck;
|
||||
import forge.game.limited.SealedDeckFormat;
|
||||
import forge.gui.GuiChoose;
|
||||
@@ -68,17 +69,17 @@ public enum CSubmenuSealed implements ICDoc {
|
||||
public void mousePressed(final MouseEvent e) { setupSealed(); } });
|
||||
|
||||
VSubmenuSealed.SINGLETON_INSTANCE.getBtnStart().addMouseListener(
|
||||
new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseReleased(final MouseEvent e) {
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
startGame(GameType.Sealed);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseReleased(final MouseEvent e) {
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
startGame(GameType.Sealed);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
VSubmenuSealed.SINGLETON_INSTANCE.getBtnDirections().addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
@@ -103,7 +104,19 @@ public enum CSubmenuSealed implements ICDoc {
|
||||
humanDecks.add(d.getHumanDeck());
|
||||
}
|
||||
|
||||
VSubmenuSealed.SINGLETON_INSTANCE.getLstDecks().setDecks(humanDecks);
|
||||
final VSubmenuSealed view = VSubmenuSealed.SINGLETON_INSTANCE;
|
||||
view.getLstDecks().setDecks(humanDecks);
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() {
|
||||
JButton btnStart = view.getBtnStart();
|
||||
if (btnStart.isEnabled()) {
|
||||
view.getBtnStart().requestFocusInWindow();
|
||||
} else {
|
||||
view.getBtnBuildDeck().requestFocusInWindow();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void startGame(final GameType gameType) {
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package forge.gui.home.settings;
|
||||
|
||||
import javax.swing.SwingUtilities;
|
||||
|
||||
import forge.Command;
|
||||
import forge.gui.framework.ICDoc;
|
||||
|
||||
@@ -25,7 +27,9 @@ public enum CSubmenuAvatars implements ICDoc {
|
||||
*/
|
||||
@Override
|
||||
public void update() {
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() { VSubmenuAvatars.SINGLETON_INSTANCE.focusHuman(); }
|
||||
});
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
||||
@@ -5,6 +5,8 @@ import java.awt.event.ItemListener;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
|
||||
import javax.swing.SwingUtilities;
|
||||
|
||||
import org.apache.commons.lang3.text.WordUtils;
|
||||
|
||||
import forge.Command;
|
||||
@@ -201,6 +203,10 @@ public enum CSubmenuPreferences implements ICDoc {
|
||||
view.getCbTextMana().setSelected(prefs.getPrefBoolean(FPref.UI_CARD_OVERLAY));
|
||||
view.getCbEnableSounds().setSelected(prefs.getPrefBoolean(FPref.UI_ENABLE_SOUNDS));
|
||||
view.reloadShortcuts();
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() { view.getCbRemoveSmall().requestFocusInWindow(); }
|
||||
});
|
||||
}
|
||||
|
||||
private void updateSkinNames() {
|
||||
|
||||
@@ -53,7 +53,10 @@ public enum VSubmenuAvatars implements IVSubmenu<CSubmenuAvatars> {
|
||||
private VSubmenuAvatars() {
|
||||
populateAvatars();
|
||||
scrContent.setBorder(null);
|
||||
}
|
||||
|
||||
public void focusHuman() {
|
||||
lblAvatarHuman.requestFocusInWindow();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
||||
@@ -54,7 +54,7 @@ public enum CSubmenuArchenemy implements ICDoc {
|
||||
@Override
|
||||
public void update() {
|
||||
// reinit deck list and restore last selections (if any)
|
||||
FList deckList = VSubmenuArchenemy.SINGLETON_INSTANCE.getArchenemySchemes();
|
||||
FList deckList = view.getArchenemySchemes();
|
||||
Vector<Object> listData = new Vector<Object>();
|
||||
listData.add("Random");
|
||||
listData.add("Generate");
|
||||
@@ -71,6 +71,10 @@ public enum CSubmenuArchenemy implements ICDoc {
|
||||
if (-1 == deckList.getSelectedIndex()) {
|
||||
deckList.setSelectedIndex(0);
|
||||
}
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() { view.getBtnStart().requestFocusInWindow(); }
|
||||
});
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
||||
@@ -54,7 +54,7 @@ public enum CSubmenuPlanechase implements ICDoc {
|
||||
@Override
|
||||
public void update() {
|
||||
// reinit deck lists and restore last selections (if any)
|
||||
for (FList deckList : VSubmenuPlanechase.SINGLETON_INSTANCE.getPlanarDeckLists()) {
|
||||
for (FList deckList : view.getPlanarDeckLists()) {
|
||||
Vector<Object> listData = new Vector<Object>();
|
||||
listData.add("Random");
|
||||
listData.add("Generate");
|
||||
@@ -72,6 +72,10 @@ public enum CSubmenuPlanechase implements ICDoc {
|
||||
deckList.setSelectedIndex(0);
|
||||
}
|
||||
}
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() { view.getBtnStart().requestFocusInWindow(); }
|
||||
});
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
||||
@@ -46,7 +46,9 @@ public enum CSubmenuVanguard implements ICDoc {
|
||||
*/
|
||||
@Override
|
||||
public void update() {
|
||||
// Nothing to see here...
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() { view.getBtnStart().requestFocusInWindow(); }
|
||||
});
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
||||
Reference in New Issue
Block a user