add semi-intelligent default focus selection for all home submenu screens

This commit is contained in:
myk
2013-02-26 04:28:48 +00:00
parent c845b8bcb4
commit 2c463945fc
18 changed files with 122 additions and 30 deletions

View File

@@ -13,6 +13,7 @@ import javax.swing.JFileChooser;
import javax.swing.JList; import javax.swing.JList;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
import javax.swing.ListSelectionModel; import javax.swing.ListSelectionModel;
import javax.swing.SwingUtilities;
import javax.swing.filechooser.FileFilter; import javax.swing.filechooser.FileFilter;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
@@ -109,7 +110,9 @@ public enum CSubmenuGauntletBuild implements ICDoc {
*/ */
@Override @Override
public void update() { public void update() {
// Nothing to see here... SwingUtilities.invokeLater(new Runnable() {
@Override public void run() { view.focusName(); }
});
} }
/* (non-Javadoc) /* (non-Javadoc)

View File

@@ -84,7 +84,9 @@ public enum CSubmenuGauntletContests implements ICDoc {
*/ */
@Override @Override
public void update() { public void update() {
// Nothing to see here... SwingUtilities.invokeLater(new Runnable() {
@Override public void run() { view.getBtnStart().requestFocusInWindow(); }
});
} }
/* (non-Javadoc) /* (non-Javadoc)

View File

@@ -6,6 +6,7 @@ import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.swing.JButton;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import javax.swing.SwingWorker; import javax.swing.SwingWorker;
@@ -21,6 +22,7 @@ import forge.gauntlet.GauntletData;
import forge.gauntlet.GauntletIO; import forge.gauntlet.GauntletIO;
import forge.gui.SOverlayUtils; import forge.gui.SOverlayUtils;
import forge.gui.framework.ICDoc; import forge.gui.framework.ICDoc;
import forge.gui.home.VHomeUI;
import forge.model.FModel; import forge.model.FModel;
/** /**
@@ -45,7 +47,16 @@ public enum CSubmenuGauntletLoad implements ICDoc {
*/ */
@Override @Override
public void update() { 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) /* (non-Javadoc)

View File

@@ -83,7 +83,9 @@ public enum CSubmenuGauntletQuick implements ICDoc {
*/ */
@Override @Override
public void update() { public void update() {
// Nothing to see here... SwingUtilities.invokeLater(new Runnable() {
@Override public void run() { view.getBtnStart().requestFocusInWindow(); }
});
} }
/* (non-Javadoc) /* (non-Javadoc)

View File

@@ -178,6 +178,10 @@ public enum VSubmenuGauntletBuild implements IVSubmenu<CSubmenuGauntletBuild> {
pnlButtons.add(btnDown, "h 40px!, w 100%!, ay baseline"); pnlButtons.add(btnDown, "h 40px!, w 100%!, ay baseline");
} }
public void focusName() {
txfFilename.requestFocusInWindow();
}
/* (non-Javadoc) /* (non-Javadoc)
* @see forge.gui.home.IVSubmenu#getGroupEnum() * @see forge.gui.home.IVSubmenu#getGroupEnum()
*/ */

View File

@@ -11,6 +11,7 @@ import java.util.Map.Entry;
import java.util.Set; import java.util.Set;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import forge.Command; import forge.Command;
import forge.deck.Deck; import forge.deck.Deck;
@@ -151,6 +152,10 @@ public enum CSubmenuQuestData implements ICDoc {
view.getLstQuests().setSelectCommand(cmdQuestSelect); view.getLstQuests().setSelectCommand(cmdQuestSelect);
view.getLstQuests().setDeleteCommand(cmdQuestDelete); view.getLstQuests().setDeleteCommand(cmdQuestDelete);
SwingUtilities.invokeLater(new Runnable() {
@Override public void run() { view.getBtnEmbark().requestFocusInWindow(); }
});
} }
/** /**

View File

@@ -2,6 +2,8 @@ package forge.gui.home.quest;
import java.util.ArrayList; import java.util.ArrayList;
import javax.swing.SwingUtilities;
import forge.Command; import forge.Command;
import forge.Singletons; import forge.Singletons;
import forge.control.FControl; import forge.control.FControl;
@@ -93,6 +95,10 @@ public enum CSubmenuQuestDecks implements ICDoc {
else { else {
Singletons.getModel().getQuestPreferences().setPreference(QPref.CURRENT_DECK, QPref.CURRENT_DECK.getDefault()); 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 */ /** @return forge.deck.Deck */

View File

@@ -1,5 +1,7 @@
package forge.gui.home.quest; package forge.gui.home.quest;
import javax.swing.SwingUtilities;
import forge.Command; import forge.Command;
import forge.Singletons; import forge.Singletons;
import forge.gui.framework.ICDoc; import forge.gui.framework.ICDoc;
@@ -29,7 +31,9 @@ public enum CSubmenuQuestPrefs implements ICDoc {
*/ */
@Override @Override
public void update() { public void update() {
SwingUtilities.invokeLater(new Runnable() {
@Override public void run() { VSubmenuQuestPrefs.SINGLETON_INSTANCE.focusFirstTextbox(); }
});
} }
/** /**

View File

@@ -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 FLabel lblErrShop = new FLabel.Builder().text("Shop Error").fontStyle(Font.BOLD).build();
private final QuestPreferences prefs = Singletons.getModel().getQuestPreferences(); private final QuestPreferences prefs = Singletons.getModel().getQuestPreferences();
private PrefInput focusTarget;
/** */ /** */
public enum QuestPreferencesErrType { /** */ public enum QuestPreferencesErrType { /** */
@@ -195,6 +196,10 @@ public enum VSubmenuQuestPrefs implements IVSubmenu<CSubmenuQuestPrefs> {
return lblErrBooster; return lblErrBooster;
} }
public void focusFirstTextbox() {
focusTarget.requestFocusInWindow();
}
private void populateRewards() { private void populateRewards() {
pnlRewards.setOpaque(false); pnlRewards.setOpaque(false);
pnlRewards.setLayout(new MigLayout("insets 0, gap 0, wrap 2, hidemode 3")); 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!"; final String constraints2 = "w 150px!, h 26px!";
pnlRewards.add(new FLabel.Builder().text("Base winnings").build(), constraints2); 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 FLabel.Builder().text("No losses").build(), constraints2);
pnlRewards.add(new PrefInput(QPref.REWARDS_UNDEFEATED, QuestPreferencesErrType.REWARDS), constraints1); pnlRewards.add(new PrefInput(QPref.REWARDS_UNDEFEATED, QuestPreferencesErrType.REWARDS), constraints1);

View File

@@ -37,7 +37,9 @@ public enum CSubmenuConstructed implements ICDoc {
*/ */
@Override @Override
public void update() { public void update() {
// Nothing to see here... SwingUtilities.invokeLater(new Runnable() {
@Override public void run() { view.getBtnStart().requestFocusInWindow(); }
});
} }
/* (non-Javadoc) /* (non-Javadoc)
@@ -91,8 +93,6 @@ public enum CSubmenuConstructed implements ICDoc {
view.getCbRemoveSmall().setSelected(prefs.getPrefBoolean(FPref.DECKGEN_NOSMALL)); view.getCbRemoveSmall().setSelected(prefs.getPrefBoolean(FPref.DECKGEN_NOSMALL));
} }
/** @param gameType /** @param gameType
* @param lists0 &emsp; {@link java.util.List}<{@link javax.swing.JList}> */ * @param lists0 &emsp; {@link java.util.List}<{@link javax.swing.JList}> */
private void startGame(final GameType gameType) { private void startGame(final GameType gameType) {
@@ -138,7 +138,6 @@ public enum CSubmenuConstructed implements ICDoc {
worker.execute(); worker.execute();
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see forge.gui.framework.ICDoc#getCommandOnSelect() * @see forge.gui.framework.ICDoc#getCommandOnSelect()
*/ */

View File

@@ -5,6 +5,7 @@ import java.awt.event.ActionListener;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.swing.JButton;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import javax.swing.SwingWorker; import javax.swing.SwingWorker;
@@ -71,11 +72,24 @@ public enum CSubmenuDraft implements ICDoc {
human.add(d.getHumanDeck()); 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) { 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) { private void startGame(final GameType gameType) {

View File

@@ -8,6 +8,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import javax.swing.JButton;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
@@ -21,8 +22,8 @@ import forge.deck.Deck;
import forge.deck.DeckBase; import forge.deck.DeckBase;
import forge.deck.DeckGroup; import forge.deck.DeckGroup;
import forge.deck.DeckSection; import forge.deck.DeckSection;
import forge.game.limited.ReadDraftRankings;
import forge.game.GameType; import forge.game.GameType;
import forge.game.limited.ReadDraftRankings;
import forge.game.limited.SealedDeck; import forge.game.limited.SealedDeck;
import forge.game.limited.SealedDeckFormat; import forge.game.limited.SealedDeckFormat;
import forge.gui.GuiChoose; import forge.gui.GuiChoose;
@@ -68,17 +69,17 @@ public enum CSubmenuSealed implements ICDoc {
public void mousePressed(final MouseEvent e) { setupSealed(); } }); public void mousePressed(final MouseEvent e) { setupSealed(); } });
VSubmenuSealed.SINGLETON_INSTANCE.getBtnStart().addMouseListener( VSubmenuSealed.SINGLETON_INSTANCE.getBtnStart().addMouseListener(
new MouseAdapter() { new MouseAdapter() {
@Override @Override
public void mouseReleased(final MouseEvent e) { public void mouseReleased(final MouseEvent e) {
SwingUtilities.invokeLater(new Runnable() { SwingUtilities.invokeLater(new Runnable() {
@Override @Override
public void run() { public void run() {
startGame(GameType.Sealed); startGame(GameType.Sealed);
} }
}); });
} }
}); });
VSubmenuSealed.SINGLETON_INSTANCE.getBtnDirections().addMouseListener(new MouseAdapter() { VSubmenuSealed.SINGLETON_INSTANCE.getBtnDirections().addMouseListener(new MouseAdapter() {
@Override @Override
@@ -103,7 +104,19 @@ public enum CSubmenuSealed implements ICDoc {
humanDecks.add(d.getHumanDeck()); 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) { private void startGame(final GameType gameType) {

View File

@@ -1,5 +1,7 @@
package forge.gui.home.settings; package forge.gui.home.settings;
import javax.swing.SwingUtilities;
import forge.Command; import forge.Command;
import forge.gui.framework.ICDoc; import forge.gui.framework.ICDoc;
@@ -25,7 +27,9 @@ public enum CSubmenuAvatars implements ICDoc {
*/ */
@Override @Override
public void update() { public void update() {
SwingUtilities.invokeLater(new Runnable() {
@Override public void run() { VSubmenuAvatars.SINGLETON_INSTANCE.focusHuman(); }
});
} }
/* (non-Javadoc) /* (non-Javadoc)

View File

@@ -5,6 +5,8 @@ import java.awt.event.ItemListener;
import java.awt.event.MouseAdapter; import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import javax.swing.SwingUtilities;
import org.apache.commons.lang3.text.WordUtils; import org.apache.commons.lang3.text.WordUtils;
import forge.Command; import forge.Command;
@@ -201,6 +203,10 @@ public enum CSubmenuPreferences implements ICDoc {
view.getCbTextMana().setSelected(prefs.getPrefBoolean(FPref.UI_CARD_OVERLAY)); view.getCbTextMana().setSelected(prefs.getPrefBoolean(FPref.UI_CARD_OVERLAY));
view.getCbEnableSounds().setSelected(prefs.getPrefBoolean(FPref.UI_ENABLE_SOUNDS)); view.getCbEnableSounds().setSelected(prefs.getPrefBoolean(FPref.UI_ENABLE_SOUNDS));
view.reloadShortcuts(); view.reloadShortcuts();
SwingUtilities.invokeLater(new Runnable() {
@Override public void run() { view.getCbRemoveSmall().requestFocusInWindow(); }
});
} }
private void updateSkinNames() { private void updateSkinNames() {

View File

@@ -53,7 +53,10 @@ public enum VSubmenuAvatars implements IVSubmenu<CSubmenuAvatars> {
private VSubmenuAvatars() { private VSubmenuAvatars() {
populateAvatars(); populateAvatars();
scrContent.setBorder(null); scrContent.setBorder(null);
}
public void focusHuman() {
lblAvatarHuman.requestFocusInWindow();
} }
/* (non-Javadoc) /* (non-Javadoc)

View File

@@ -54,7 +54,7 @@ public enum CSubmenuArchenemy implements ICDoc {
@Override @Override
public void update() { public void update() {
// reinit deck list and restore last selections (if any) // 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>(); Vector<Object> listData = new Vector<Object>();
listData.add("Random"); listData.add("Random");
listData.add("Generate"); listData.add("Generate");
@@ -71,6 +71,10 @@ public enum CSubmenuArchenemy implements ICDoc {
if (-1 == deckList.getSelectedIndex()) { if (-1 == deckList.getSelectedIndex()) {
deckList.setSelectedIndex(0); deckList.setSelectedIndex(0);
} }
SwingUtilities.invokeLater(new Runnable() {
@Override public void run() { view.getBtnStart().requestFocusInWindow(); }
});
} }
/* (non-Javadoc) /* (non-Javadoc)

View File

@@ -54,7 +54,7 @@ public enum CSubmenuPlanechase implements ICDoc {
@Override @Override
public void update() { public void update() {
// reinit deck lists and restore last selections (if any) // 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>(); Vector<Object> listData = new Vector<Object>();
listData.add("Random"); listData.add("Random");
listData.add("Generate"); listData.add("Generate");
@@ -72,6 +72,10 @@ public enum CSubmenuPlanechase implements ICDoc {
deckList.setSelectedIndex(0); deckList.setSelectedIndex(0);
} }
} }
SwingUtilities.invokeLater(new Runnable() {
@Override public void run() { view.getBtnStart().requestFocusInWindow(); }
});
} }
/* (non-Javadoc) /* (non-Javadoc)

View File

@@ -46,7 +46,9 @@ public enum CSubmenuVanguard implements ICDoc {
*/ */
@Override @Override
public void update() { public void update() {
// Nothing to see here... SwingUtilities.invokeLater(new Runnable() {
@Override public void run() { view.getBtnStart().requestFocusInWindow(); }
});
} }
/* (non-Javadoc) /* (non-Javadoc)