Add support for highlighting selected menu item

This commit is contained in:
drdev
2014-07-11 23:18:56 +00:00
parent 76c043fa06
commit a63e88c0f9
5 changed files with 45 additions and 37 deletions

View File

@@ -56,7 +56,7 @@ public abstract class FDropDownMenu extends FDropDown {
return new ScrollBounds(width, y); return new ScrollBounds(width, y);
} }
public void addItem(FMenuItem item) { public void addItem(FMenuItem item) {
if (item.isVisible()) { if (item.isVisible()) {
items.add(add(item)); items.add(add(item));

View File

@@ -32,8 +32,7 @@ public class FMenuItem extends FDisplayObject implements IButton {
private final String text; private final String text;
private final FImage icon; private final FImage icon;
private final FEventHandler handler; private final FEventHandler handler;
private boolean pressed; private boolean pressed, allowForIcon, selected;
private boolean allowForIcon;
private float textWidth; private float textWidth;
public FMenuItem(String text0, FEventHandler handler0) { public FMenuItem(String text0, FEventHandler handler0) {
@@ -97,7 +96,7 @@ public class FMenuItem extends FDisplayObject implements IButton {
} }
protected boolean showPressedColor() { protected boolean showPressedColor() {
return pressed; return pressed || selected;
} }
@Override @Override
@@ -134,10 +133,11 @@ public class FMenuItem extends FDisplayObject implements IButton {
} }
@Override @Override
public boolean isSelected() { public boolean isSelected() {
return false; return selected;
} }
@Override @Override
public void setSelected(boolean b0) { public void setSelected(boolean b0) {
selected = b0;
} }
@Override @Override
public boolean requestFocusInWindow() { public boolean requestFocusInWindow() {

View File

@@ -1,6 +1,5 @@
package forge.screens.quest; package forge.screens.quest;
import forge.Forge;
import forge.assets.FSkinFont; import forge.assets.FSkinFont;
import forge.interfaces.IButton; import forge.interfaces.IButton;
import forge.interfaces.ICheckBox; import forge.interfaces.ICheckBox;
@@ -49,7 +48,6 @@ public class QuestDuelsScreen extends LaunchScreen {
@Override @Override
protected boolean buildLaunchParams(LaunchParams launchParams) { protected boolean buildLaunchParams(LaunchParams launchParams) {
// TODO Auto-generated method stub
return false; return false;
} }

View File

@@ -14,6 +14,7 @@ import forge.properties.ForgeConstants;
import forge.quest.IVQuestStats; import forge.quest.IVQuestStats;
import forge.quest.data.QuestPreferences.QPref; import forge.quest.data.QuestPreferences.QPref;
import forge.quest.io.QuestDataIO; import forge.quest.io.QuestDataIO;
import forge.screens.FScreen;
import forge.screens.LoadingOverlay; import forge.screens.LoadingOverlay;
import forge.toolbox.FEvent; import forge.toolbox.FEvent;
import forge.toolbox.FEvent.FEventHandler; import forge.toolbox.FEvent.FEventHandler;
@@ -29,14 +30,22 @@ public class QuestMenu extends FPopupMenu implements IVQuestStats {
private static final QuestStatsScreen statsScreen = new QuestStatsScreen(); private static final QuestStatsScreen statsScreen = new QuestStatsScreen();
private static final QuestTournamentsScreen tournamentsScreen = new QuestTournamentsScreen(); private static final QuestTournamentsScreen tournamentsScreen = new QuestTournamentsScreen();
private static final FMenuItem unlockSetsItem = new FMenuItem("Unlock Sets", FSkinImage.QUEST_MAP, new FEventHandler() { private static final FMenuItem duelsItem = new FMenuItem("Duels", FSkinImage.QUEST_GEAR, new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
Forge.openScreen(duelsScreen);
} }
}); });
private static final FMenuItem travelItem = new FMenuItem("Travel", FSkinImage.QUEST_MAP, new FEventHandler() { private static final FMenuItem challengesItem = new FMenuItem("Challenges", FSkinImage.QUEST_HEART, new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
Forge.openScreen(challengesScreen);
}
});
private static final FMenuItem tournamentsItem = new FMenuItem("Tournaments", FSkinImage.PACK, new FEventHandler() {
@Override
public void handleEvent(FEvent e) {
Forge.openScreen(tournamentsScreen);
} }
}); });
private static final FMenuItem spellShopItem = new FMenuItem("Spell Shop", FSkinImage.QUEST_BOOK, new FEventHandler() { private static final FMenuItem spellShopItem = new FMenuItem("Spell Shop", FSkinImage.QUEST_BOOK, new FEventHandler() {
@@ -51,6 +60,22 @@ public class QuestMenu extends FPopupMenu implements IVQuestStats {
Forge.openScreen(bazaarScreen); Forge.openScreen(bazaarScreen);
} }
}); });
private static final FMenuItem statsItem = new FMenuItem("Statistics", FSkinImage.MULTI, new FEventHandler() {
@Override
public void handleEvent(FEvent e) {
Forge.openScreen(statsScreen);
}
});
private static final FMenuItem unlockSetsItem = new FMenuItem("Unlock Sets", FSkinImage.QUEST_MAP, new FEventHandler() {
@Override
public void handleEvent(FEvent e) {
}
});
private static final FMenuItem travelItem = new FMenuItem("Travel", FSkinImage.QUEST_MAP, new FEventHandler() {
@Override
public void handleEvent(FEvent e) {
}
});
public static QuestMenu getMenu() { public static QuestMenu getMenu() {
return questMenu; return questMenu;
@@ -81,34 +106,15 @@ public class QuestMenu extends FPopupMenu implements IVQuestStats {
@Override @Override
protected void buildMenu() { protected void buildMenu() {
addItem(new FMenuItem("Duels", FSkinImage.QUEST_GEAR, new FEventHandler() { FScreen currentScreen = Forge.getCurrentScreen();
@Override addItem(duelsItem); duelsItem.setSelected(currentScreen == duelsScreen);
public void handleEvent(FEvent e) { addItem(challengesItem); challengesItem.setSelected(currentScreen == challengesScreen);
Forge.openScreen(duelsScreen); addItem(tournamentsItem); tournamentsItem.setSelected(currentScreen == tournamentsScreen);
} addItem(spellShopItem); spellShopItem.setSelected(currentScreen == spellShopScreen);
})); addItem(bazaarItem); bazaarItem.setSelected(currentScreen == bazaarScreen);
addItem(new FMenuItem("Challenges", FSkinImage.QUEST_HEART, new FEventHandler() { addItem(statsItem); statsItem.setSelected(currentScreen == statsScreen);
@Override
public void handleEvent(FEvent e) {
Forge.openScreen(challengesScreen);
}
}));
addItem(new FMenuItem("Tournaments", FSkinImage.PACK, new FEventHandler() {
@Override
public void handleEvent(FEvent e) {
Forge.openScreen(tournamentsScreen);
}
}));
addItem(unlockSetsItem); addItem(unlockSetsItem);
addItem(travelItem); addItem(travelItem);
addItem(spellShopItem);
addItem(bazaarItem);
addItem(new FMenuItem("Statistics", FSkinImage.MULTI, new FEventHandler() {
@Override
public void handleEvent(FEvent e) {
Forge.openScreen(statsScreen);
}
}));
addItem(new FMenuItem("Change Deck", FSkinImage.DECKLIST, new FEventHandler() { addItem(new FMenuItem("Change Deck", FSkinImage.DECKLIST, new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {

View File

@@ -177,12 +177,16 @@ public class FComboBox<E> extends FTextField implements IComboBox<E> {
@Override @Override
protected void buildMenu() { protected void buildMenu() {
for (final E item : FComboBox.this.items) { for (final E item : FComboBox.this.items) {
addItem(new FMenuItem(item.toString(), new FEventHandler() { FMenuItem menuItem = new FMenuItem(item.toString(), new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { public void handleEvent(FEvent e) {
setSelectedItem(item); setSelectedItem(item);
} }
})); });
if (selectedItem == item) {
menuItem.setSelected(true);
}
addItem(menuItem);
} }
} }