Add navigation tab for Bazaar

Prevent arrow button remaining visible when switching to Bazaar from Home screen
This commit is contained in:
drdev
2013-10-09 01:56:03 +00:00
parent 483f274bac
commit 0a6f7afeff
3 changed files with 53 additions and 22 deletions

View File

@@ -25,7 +25,6 @@ import java.awt.event.ComponentEvent;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter; import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent; import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.File; import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@@ -73,6 +72,7 @@ import forge.gui.match.nonsingleton.VField;
import forge.gui.match.views.VAntes; import forge.gui.match.views.VAntes;
import forge.gui.menus.ForgeMenu; import forge.gui.menus.ForgeMenu;
import forge.gui.menus.MenuUtil; import forge.gui.menus.MenuUtil;
import forge.gui.toolbox.FAbsolutePositioner;
import forge.gui.toolbox.FSkin; import forge.gui.toolbox.FSkin;
import forge.net.FServer; import forge.net.FServer;
import forge.properties.ForgePreferences; import forge.properties.ForgePreferences;
@@ -102,8 +102,6 @@ public enum FControl implements KeyEventDispatcher {
private Screens state = Screens.UNKNOWN; private Screens state = Screens.UNKNOWN;
private boolean altKeyLastDown; private boolean altKeyLastDown;
private WindowListener waDefault, waLeaveBazaar;
public static enum Screens { public static enum Screens {
UNKNOWN, UNKNOWN,
HOME_SCREEN, HOME_SCREEN,
@@ -127,23 +125,14 @@ public enum FControl implements KeyEventDispatcher {
* instantiated separately by each state's top level view class. * instantiated separately by each state's top level view class.
*/ */
private FControl() { private FControl() {
this.waDefault = new WindowAdapter() { Singletons.getView().getFrame().addWindowListener(new WindowAdapter() {
@Override @Override
public void windowClosing(final WindowEvent e) { public void windowClosing(final WindowEvent e) {
if (!exitForge()) { if (!exitForge()) {
Singletons.getView().getFrame().setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); Singletons.getView().getFrame().setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
} }
} }
}; });
// "Close" button override while inside bazaar (will probably be used later for other things)
this.waLeaveBazaar = new WindowAdapter() {
@Override
public void windowClosing(final WindowEvent e) {
Singletons.getView().getFrame().setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
changeState(Screens.HOME_SCREEN);
}
};
} }
public boolean canExitForge(boolean forRestart) { public boolean canExitForge(boolean forRestart) {
@@ -235,9 +224,6 @@ public enum FControl implements KeyEventDispatcher {
clearChildren(JLayeredPane.DEFAULT_LAYER); clearChildren(JLayeredPane.DEFAULT_LAYER);
this.state = screen; this.state = screen;
Singletons.getView().getFrame().removeWindowListener(waDefault);
Singletons.getView().getFrame().removeWindowListener(waLeaveBazaar);
// Fire up new state // Fire up new state
switch (screen) { switch (screen) {
case HOME_SCREEN: case HOME_SCREEN:
@@ -246,7 +232,6 @@ public enum FControl implements KeyEventDispatcher {
CHomeUI.SINGLETON_INSTANCE.initialize(); CHomeUI.SINGLETON_INSTANCE.initialize();
FView.SINGLETON_INSTANCE.getPnlInsets().setVisible(true); FView.SINGLETON_INSTANCE.getPnlInsets().setVisible(true);
FView.SINGLETON_INSTANCE.getPnlInsets().setForegroundImage(new ImageIcon()); FView.SINGLETON_INSTANCE.getPnlInsets().setForegroundImage(new ImageIcon());
Singletons.getView().getFrame().addWindowListener(waDefault);
break; break;
case MATCH_SCREEN: case MATCH_SCREEN:
@@ -256,7 +241,6 @@ public enum FControl implements KeyEventDispatcher {
showMatchBackgroundImage(); showMatchBackgroundImage();
SOverlayUtils.showTargetingOverlay(); SOverlayUtils.showTargetingOverlay();
Singletons.getView().getNavigationBar().setSelectedTab(this.game); Singletons.getView().getNavigationBar().setSelectedTab(this.game);
Singletons.getView().getFrame().addWindowListener(waDefault);
break; break;
case DECK_EDITOR_CONSTRUCTED: case DECK_EDITOR_CONSTRUCTED:
@@ -269,15 +253,15 @@ public enum FControl implements KeyEventDispatcher {
CDeckEditorUI.SINGLETON_INSTANCE.initialize(); CDeckEditorUI.SINGLETON_INSTANCE.initialize();
FView.SINGLETON_INSTANCE.getPnlInsets().setVisible(true); FView.SINGLETON_INSTANCE.getPnlInsets().setVisible(true);
FView.SINGLETON_INSTANCE.getPnlInsets().setForegroundImage(new ImageIcon()); FView.SINGLETON_INSTANCE.getPnlInsets().setForegroundImage(new ImageIcon());
Singletons.getView().getFrame().addWindowListener(waDefault);
break; break;
case QUEST_BAZAAR: case QUEST_BAZAAR:
SOverlayUtils.hideTargetingOverlay(); SOverlayUtils.hideTargetingOverlay();
FAbsolutePositioner.SINGLETON_INSTANCE.hideAll();
display.add(Singletons.getView().getViewBazaar(), JLayeredPane.DEFAULT_LAYER); display.add(Singletons.getView().getViewBazaar(), JLayeredPane.DEFAULT_LAYER);
FView.SINGLETON_INSTANCE.getPnlInsets().setVisible(false); FView.SINGLETON_INSTANCE.getPnlInsets().setVisible(false);
sizeChildren(); sizeChildren();
Singletons.getView().getFrame().addWindowListener(waLeaveBazaar); Singletons.getView().getNavigationBar().setSelectedTab(Singletons.getView().getViewBazaar());
break; break;
default: default:

View File

@@ -110,6 +110,7 @@ public class FNavigationBar extends FTitleBarBase {
return; return;
} }
} }
addNavigationTab(data, true); //if tab not found, add and select it
} }
private void setSelectedTab(NavigationTab tab) { private void setSelectedTab(NavigationTab tab) {

View File

@@ -6,18 +6,23 @@ import javax.swing.SwingUtilities;
import net.miginfocom.swing.MigLayout; import net.miginfocom.swing.MigLayout;
import forge.Command; import forge.Command;
import forge.Singletons;
import forge.control.ControlBazaarUI; import forge.control.ControlBazaarUI;
import forge.control.FControl;
import forge.control.FControl.Screens;
import forge.gui.toolbox.FLabel; import forge.gui.toolbox.FLabel;
import forge.gui.toolbox.FPanel; import forge.gui.toolbox.FPanel;
import forge.gui.toolbox.FSkin; import forge.gui.toolbox.FSkin;
import forge.gui.toolbox.FSkin.SkinImage;
import forge.quest.bazaar.QuestBazaarManager; import forge.quest.bazaar.QuestBazaarManager;
import forge.quest.gui.ViewStall; import forge.quest.gui.ViewStall;
import forge.view.FNavigationBar.INavigationTabData;
/** Lays out containers and borders for resizeable layout and /** Lays out containers and borders for resizeable layout and
* instantiates top-level controller for bazaar UI. */ * instantiates top-level controller for bazaar UI. */
@SuppressWarnings("serial") @SuppressWarnings("serial")
public class ViewBazaarUI extends FPanel { public class ViewBazaarUI extends FPanel implements INavigationTabData {
private final JPanel pnlAllStalls; private final JPanel pnlAllStalls;
private final ViewStall pnlSingleStall; private final ViewStall pnlSingleStall;
private final ControlBazaarUI control; private final ControlBazaarUI control;
@@ -100,4 +105,45 @@ public class ViewBazaarUI extends FPanel {
public ViewStall getPnlSingleStall() { public ViewStall getPnlSingleStall() {
return this.pnlSingleStall; return this.pnlSingleStall;
} }
/* (non-Javadoc)
* @see forge.view.FNavigationBar.INavigationTabData#getTabCaption()
*/
@Override
public String getTabCaption() {
return "Bazaar";
}
/* (non-Javadoc)
* @see forge.view.FNavigationBar.INavigationTabData#getTabIcon()
*/
@Override
public SkinImage getTabIcon() {
return FSkin.getIcon(FSkin.QuestIcons.ICO_BOTTLES);
}
/* (non-Javadoc)
* @see forge.view.FNavigationBar.INavigationTabData#getTabDestScreen()
*/
@Override
public Screens getTabDestScreen() {
return Screens.QUEST_BAZAAR;
}
/* (non-Javadoc)
* @see forge.view.FNavigationBar.INavigationTabData#canCloseTab()
*/
@Override
public String getTabCloseButtonTooltip() {
return "Leave Bazaar";
}
/* (non-Javadoc)
* @see forge.view.FNavigationBar.INavigationTabData#onClosingTab()
*/
@Override
public boolean onClosingTab() {
Singletons.getControl().changeState(FControl.Screens.HOME_SCREEN);
return true;
}
} }