Overlay utils moved from GuiUtils to OverlayUtils.

This commit is contained in:
Doublestrike
2012-03-06 08:23:50 +00:00
parent b49c886ae4
commit 7725bed9b1
11 changed files with 142 additions and 123 deletions

1
.gitattributes vendored
View File

@@ -11425,6 +11425,7 @@ src/main/java/forge/gui/ListChooser.java svneol=native#text/plain
src/main/java/forge/gui/MultiLineLabel.java svneol=native#text/plain src/main/java/forge/gui/MultiLineLabel.java svneol=native#text/plain
src/main/java/forge/gui/MultiLineLabelUI.java svneol=native#text/plain src/main/java/forge/gui/MultiLineLabelUI.java svneol=native#text/plain
src/main/java/forge/gui/MultiPhaseProgressMonitorWithETA.java svneol=native#text/plain src/main/java/forge/gui/MultiPhaseProgressMonitorWithETA.java svneol=native#text/plain
src/main/java/forge/gui/OverlayUtils.java -text
src/main/java/forge/gui/deckeditor/DeckController.java -text src/main/java/forge/gui/deckeditor/DeckController.java -text
src/main/java/forge/gui/deckeditor/DeckEditorBase.java -text src/main/java/forge/gui/deckeditor/DeckEditorBase.java -text
src/main/java/forge/gui/deckeditor/DeckEditorConstructed.java svneol=native#text/plain src/main/java/forge/gui/deckeditor/DeckEditorConstructed.java svneol=native#text/plain

View File

@@ -15,6 +15,7 @@ import forge.deck.Deck;
import forge.game.GameNew; import forge.game.GameNew;
import forge.game.GameType; import forge.game.GameType;
import forge.gui.GuiUtils; import forge.gui.GuiUtils;
import forge.gui.OverlayUtils;
import forge.item.CardDb; import forge.item.CardDb;
import forge.item.CardPrinted; import forge.item.CardPrinted;
import forge.properties.ForgePreferences.FPref; import forge.properties.ForgePreferences.FPref;
@@ -61,14 +62,14 @@ public class ControlWinLose {
/** Action performed when "continue" button is pressed in default win/lose UI. */ /** Action performed when "continue" button is pressed in default win/lose UI. */
public void actionOnContinue() { public void actionOnContinue() {
GuiUtils.closeOverlay(); OverlayUtils.closeOverlay();
startNextRound(); startNextRound();
} }
/** Action performed when "restart" button is pressed in default win/lose UI. */ /** Action performed when "restart" button is pressed in default win/lose UI. */
public void actionOnRestart() { public void actionOnRestart() {
Singletons.getModel().getMatchState().reset(); Singletons.getModel().getMatchState().reset();
GuiUtils.closeOverlay(); OverlayUtils.closeOverlay();
startNextRound(); startNextRound();
} }
@@ -77,7 +78,7 @@ public class ControlWinLose {
Singletons.getModel().getMatchState().reset(); Singletons.getModel().getMatchState().reset();
Singletons.getModel().savePrefs(); Singletons.getModel().savePrefs();
Singletons.getControl().changeState(FControl.HOME_SCREEN); Singletons.getControl().changeState(FControl.HOME_SCREEN);
GuiUtils.closeOverlay(); OverlayUtils.closeOverlay();
} }
/** /**

View File

@@ -17,7 +17,6 @@
*/ */
package forge.gui; package forge.gui;
import java.awt.Color;
import java.awt.Component; import java.awt.Component;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Font; import java.awt.Font;
@@ -25,8 +24,6 @@ import java.awt.FontFormatException;
import java.awt.Image; import java.awt.Image;
import java.awt.Rectangle; import java.awt.Rectangle;
import java.awt.Window; import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@@ -35,23 +32,14 @@ import java.util.List;
import javax.swing.Box; import javax.swing.Box;
import javax.swing.ImageIcon; import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JList; import javax.swing.JList;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import javax.swing.Timer;
import javax.swing.border.LineBorder;
import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener; import javax.swing.event.ListSelectionListener;
import net.miginfocom.swing.MigLayout;
import forge.Card; import forge.Card;
import forge.Singletons; import forge.Singletons;
import forge.gui.toolbox.FLabel;
import forge.gui.toolbox.FOverlay;
import forge.gui.toolbox.FPanel;
import forge.gui.toolbox.FSkin;
import forge.properties.ForgeProps; import forge.properties.ForgeProps;
import forge.properties.NewConstants; import forge.properties.NewConstants;
@@ -64,8 +52,6 @@ import forge.properties.NewConstants;
* @version $Id$ * @version $Id$
*/ */
public final class GuiUtils { public final class GuiUtils {
private static int counter = 0;
private GuiUtils() { private GuiUtils() {
throw new AssertionError(); throw new AssertionError();
} }
@@ -403,98 +389,6 @@ public final class GuiUtils {
return ttf; return ttf;
} }
/** @return {@forge.gui.toolbox.FOverlay} */
public static FOverlay startGameOverlay() {
final FOverlay overlay = GuiUtils.genericOverlay();
final int w = overlay.getWidth();
final int h = overlay.getHeight();
final int pnlW = 400;
final int pnlH = 300;
// Adds the "loading" panel to generic overlay container
// (which is preset with null layout and close button)
final FPanel pnl = new FPanel();
pnl.setCornerDiameter(0);
pnl.setBackgroundTexture(FSkin.getIcon(FSkin.Backgrounds.BG_TEXTURE));
pnl.setLayout(new MigLayout("insets 0, gap 0, ax center, wrap"));
pnl.setBackground(FSkin.getColor(FSkin.Colors.CLR_ACTIVE));
pnl.setBounds(new Rectangle(((w - pnlW) / 2), ((h - pnlH) / 2), pnlW, pnlH));
pnl.add(new FLabel.Builder().icon(FSkin.getIcon(FSkin.ForgeIcons.ICO_LOGO)).build(),
"h 200px!, align center");
pnl.add(new FLabel.Builder().text("Loading new game...")
.fontScaleAuto(false).fontSize(22).build(), "h 40px!, align center");
overlay.add(pnl);
return overlay;
}
/** @param msg0   {@link java.lang.String}
@return {@forge.gui.toolbox.FOverlay} */
// NOTE: This animation happens on the EDT; if the EDT is tied up doing something
// else, the animation is effectively frozen. So, this needs some work.
public static FOverlay loadingOverlay(final String msg0) {
final FOverlay overlay = GuiUtils.genericOverlay();
final FPanel pnlLoading = new FPanel();
final int w = overlay.getWidth();
final int h = overlay.getHeight();
final JLabel lblLoading = new JLabel("");
lblLoading.setOpaque(true);
lblLoading.setBackground(FSkin.getColor(FSkin.Colors.CLR_TEXT));
lblLoading.setMinimumSize(new Dimension(0, 20));
pnlLoading.setBounds((int) ((w - 170) / 2), (int) ((h - 80) / 2), 170, 80);
pnlLoading.setLayout(new MigLayout("wrap, align center"));
pnlLoading.add(new FLabel.Builder().fontSize(18)
.fontScaleAuto(false).text(msg0).build(), "h 20px!, w 140px!, gap 0 0 5px 0");
pnlLoading.add(lblLoading, "gap 0 0 0 10px");
overlay.add(pnlLoading);
GuiUtils.counter = 0;
final Timer timer = new Timer(300, new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
lblLoading.setMinimumSize(new Dimension(10 * (GuiUtils.counter++), 20));
lblLoading.revalidate();
if (GuiUtils.counter > 13) { GuiUtils.counter = 0; }
}
});
timer.start();
return overlay;
}
/** @return {@forge.gui.toolbox.FOverlay} */
public static FOverlay genericOverlay() {
final FOverlay overlay = Singletons.getView().getOverlay();
final int w = overlay.getWidth();
final JButton btnCloseTopRight = new JButton("X");
btnCloseTopRight.setBounds(w - 25, 10, 15, 15);
btnCloseTopRight.setForeground(FSkin.getColor(FSkin.Colors.CLR_TEXT));
btnCloseTopRight.setBorder(new LineBorder(FSkin.getColor(FSkin.Colors.CLR_TEXT), 1));
btnCloseTopRight.setOpaque(false);
btnCloseTopRight.setBackground(new Color(0, 0, 0));
btnCloseTopRight.setFocusPainted(false);
btnCloseTopRight.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent arg0) { overlay.hideOverlay(); } });
overlay.removeAll();
overlay.setLayout(null);
overlay.add(btnCloseTopRight);
return overlay;
}
/** Removes child components and closes overlay. */
public static void closeOverlay() {
Singletons.getView().getOverlay().removeAll();
Singletons.getView().getOverlay().hideOverlay();
}
/** Duplicate in DeckEditorQuestMenu and /** Duplicate in DeckEditorQuestMenu and
* probably elsewhere...can streamline at some point * probably elsewhere...can streamline at some point
* (probably shouldn't be here). * (probably shouldn't be here).

View File

@@ -0,0 +1,119 @@
package forge.gui;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.Timer;
import javax.swing.border.LineBorder;
import net.miginfocom.swing.MigLayout;
import forge.Singletons;
import forge.gui.toolbox.FLabel;
import forge.gui.toolbox.FOverlay;
import forge.gui.toolbox.FPanel;
import forge.gui.toolbox.FSkin;
/**
* All overlay interaction is handled here.
*
*/
public final class OverlayUtils {
private static int counter = 0;
/** @return {@forge.gui.toolbox.FOverlay} */
public static FOverlay startGameOverlay() {
final FOverlay overlay = OverlayUtils.genericOverlay();
final int w = overlay.getWidth();
final int h = overlay.getHeight();
final int pnlW = 400;
final int pnlH = 300;
// Adds the "loading" panel to generic overlay container
// (which is preset with null layout and close button)
final FPanel pnl = new FPanel();
pnl.setCornerDiameter(0);
pnl.setBackgroundTexture(FSkin.getIcon(FSkin.Backgrounds.BG_TEXTURE));
pnl.setLayout(new MigLayout("insets 0, gap 0, ax center, wrap"));
pnl.setBackground(FSkin.getColor(FSkin.Colors.CLR_ACTIVE));
pnl.setBounds(new Rectangle(((w - pnlW) / 2), ((h - pnlH) / 2), pnlW, pnlH));
pnl.add(new FLabel.Builder().icon(FSkin.getIcon(FSkin.ForgeIcons.ICO_LOGO)).build(),
"h 200px!, align center");
pnl.add(new FLabel.Builder().text("Loading new game...")
.fontScaleAuto(false).fontSize(22).build(), "h 40px!, align center");
overlay.add(pnl);
return overlay;
}
/** @param msg0   {@link java.lang.String}
@return {@forge.gui.toolbox.FOverlay} */
// NOTE: This animation happens on the EDT; if the EDT is tied up doing something
// else, the animation is effectively frozen. So, this needs some work.
public static FOverlay loadingOverlay(final String msg0) {
final FOverlay overlay = OverlayUtils.genericOverlay();
final FPanel pnlLoading = new FPanel();
final int w = overlay.getWidth();
final int h = overlay.getHeight();
final JLabel lblLoading = new JLabel("");
lblLoading.setOpaque(true);
lblLoading.setBackground(FSkin.getColor(FSkin.Colors.CLR_TEXT));
lblLoading.setMinimumSize(new Dimension(0, 20));
pnlLoading.setBounds(((w - 170) / 2), ((h - 80) / 2), 170, 80);
pnlLoading.setLayout(new MigLayout("wrap, align center"));
pnlLoading.add(new FLabel.Builder().fontSize(18)
.fontScaleAuto(false).text(msg0).build(), "h 20px!, w 140px!, gap 0 0 5px 0");
pnlLoading.add(lblLoading, "gap 0 0 0 10px");
overlay.add(pnlLoading);
OverlayUtils.counter = 0;
final Timer timer = new Timer(300, new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
lblLoading.setMinimumSize(new Dimension(10 * (OverlayUtils.counter++), 20));
lblLoading.revalidate();
if (OverlayUtils.counter > 13) { OverlayUtils.counter = 0; }
}
});
timer.start();
return overlay;
}
/** @return {@forge.gui.toolbox.FOverlay} */
public static FOverlay genericOverlay() {
final FOverlay overlay = Singletons.getView().getOverlay();
final int w = overlay.getWidth();
final JButton btnCloseTopRight = new JButton("X");
btnCloseTopRight.setBounds(w - 25, 10, 15, 15);
btnCloseTopRight.setForeground(FSkin.getColor(FSkin.Colors.CLR_TEXT));
btnCloseTopRight.setBorder(new LineBorder(FSkin.getColor(FSkin.Colors.CLR_TEXT), 1));
btnCloseTopRight.setOpaque(false);
btnCloseTopRight.setBackground(new Color(0, 0, 0));
btnCloseTopRight.setFocusPainted(false);
btnCloseTopRight.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent arg0) { overlay.hideOverlay(); } });
overlay.removeAll();
overlay.setLayout(null);
overlay.add(btnCloseTopRight);
return overlay;
}
/** Removes child components and closes overlay. */
public static void closeOverlay() {
Singletons.getView().getOverlay().removeAll();
Singletons.getView().getOverlay().hideOverlay();
}
}

View File

@@ -44,6 +44,7 @@ import forge.deck.DeckGroup;
import forge.error.ErrorViewer; import forge.error.ErrorViewer;
import forge.game.limited.IBoosterDraft; import forge.game.limited.IBoosterDraft;
import forge.gui.GuiUtils; import forge.gui.GuiUtils;
import forge.gui.OverlayUtils;
import forge.gui.deckeditor.elements.CardPanelLite; import forge.gui.deckeditor.elements.CardPanelLite;
import forge.gui.deckeditor.elements.ManaCostRenderer; import forge.gui.deckeditor.elements.ManaCostRenderer;
import forge.gui.deckeditor.elements.TableColumnInfo; import forge.gui.deckeditor.elements.TableColumnInfo;
@@ -128,7 +129,7 @@ public class DraftingProcess extends DeckEditorBase<CardPrinted, DeckGroup> {
if (n == JOptionPane.YES_OPTION) { if (n == JOptionPane.YES_OPTION) {
DraftingProcess.this.dispose(); DraftingProcess.this.dispose();
CSubmenuDraft.SINGLETON_INSTANCE.update(); CSubmenuDraft.SINGLETON_INSTANCE.update();
GuiUtils.closeOverlay(); OverlayUtils.closeOverlay();
} }
} // windowClosing() } // windowClosing()
}); });
@@ -340,7 +341,7 @@ public class DraftingProcess extends DeckEditorBase<CardPrinted, DeckGroup> {
// This should be handled in the exit command of the editor, not here. // This should be handled in the exit command of the editor, not here.
CSubmenuDraft.SINGLETON_INSTANCE.update(); CSubmenuDraft.SINGLETON_INSTANCE.update();
GuiUtils.closeOverlay(); OverlayUtils.closeOverlay();
} /* saveDraft() */ } /* saveDraft() */
/* /*

View File

@@ -34,7 +34,7 @@ import forge.deck.generate.Generate3ColorDeck;
import forge.deck.generate.Generate5ColorDeck; import forge.deck.generate.Generate5ColorDeck;
import forge.deck.generate.GenerateThemeDeck; import forge.deck.generate.GenerateThemeDeck;
import forge.game.GameNew; import forge.game.GameNew;
import forge.gui.GuiUtils; import forge.gui.OverlayUtils;
import forge.gui.home.ICSubmenu; import forge.gui.home.ICSubmenu;
import forge.gui.toolbox.FLabel; import forge.gui.toolbox.FLabel;
import forge.gui.toolbox.FOverlay; import forge.gui.toolbox.FOverlay;
@@ -365,7 +365,7 @@ public enum CSubmenuConstructed implements ICSubmenu {
GameNew.newGame(Constant.Runtime.HUMAN_DECK[0], Constant.Runtime.COMPUTER_DECK[0]); GameNew.newGame(Constant.Runtime.HUMAN_DECK[0], Constant.Runtime.COMPUTER_DECK[0]);
} }
GuiUtils.closeOverlay(); OverlayUtils.closeOverlay();
} }
/** Generates deck from current list selection(s). */ /** Generates deck from current list selection(s). */

View File

@@ -19,6 +19,7 @@ import forge.game.GameType;
import forge.game.limited.BoosterDraft; import forge.game.limited.BoosterDraft;
import forge.game.limited.CardPoolLimitation; import forge.game.limited.CardPoolLimitation;
import forge.gui.GuiUtils; import forge.gui.GuiUtils;
import forge.gui.OverlayUtils;
import forge.gui.deckeditor.DraftingProcess; import forge.gui.deckeditor.DraftingProcess;
import forge.gui.home.ICSubmenu; import forge.gui.home.ICSubmenu;
import forge.gui.toolbox.FOverlay; import forge.gui.toolbox.FOverlay;
@@ -78,7 +79,7 @@ public enum CSubmenuDraft implements ICSubmenu {
@Override @Override
public void execute() { public void execute() {
update(); update();
GuiUtils.closeOverlay(); OverlayUtils.closeOverlay();
} }
}; };
@@ -182,7 +183,7 @@ public enum CSubmenuDraft implements ICSubmenu {
return; return;
} }
GuiUtils.startGameOverlay().showOverlay(); OverlayUtils.startGameOverlay().showOverlay();
DeckGroup opponentDecks = Singletons.getModel().getDecks().getDraft().get(human.getName()); DeckGroup opponentDecks = Singletons.getModel().getDecks().getDraft().get(human.getName());

View File

@@ -23,6 +23,7 @@ import forge.deck.DeckGroup;
import forge.game.GameNew; import forge.game.GameNew;
import forge.game.limited.SealedDeck; import forge.game.limited.SealedDeck;
import forge.gui.GuiUtils; import forge.gui.GuiUtils;
import forge.gui.OverlayUtils;
import forge.gui.deckeditor.DeckEditorBase; import forge.gui.deckeditor.DeckEditorBase;
import forge.gui.deckeditor.DeckEditorLimited; import forge.gui.deckeditor.DeckEditorLimited;
import forge.gui.home.ICSubmenu; import forge.gui.home.ICSubmenu;
@@ -47,7 +48,7 @@ public enum CSubmenuSealed implements ICSubmenu {
@Override @Override
public void execute() { public void execute() {
update(); update();
GuiUtils.closeOverlay(); OverlayUtils.closeOverlay();
} }
}; };
@@ -140,7 +141,7 @@ public enum CSubmenuSealed implements ICSubmenu {
return; return;
} }
GuiUtils.startGameOverlay().showOverlay(); OverlayUtils.startGameOverlay().showOverlay();
Constant.Runtime.HUMAN_DECK[0] = human; Constant.Runtime.HUMAN_DECK[0] = human;
Constant.Runtime.COMPUTER_DECK[0] = Singletons.getModel().getDecks().getSealed().get(human.getName()).getAiDecks().get(0); Constant.Runtime.COMPUTER_DECK[0] = Singletons.getModel().getDecks().getSealed().get(human.getName()).getAiDecks().get(0);

View File

@@ -17,7 +17,7 @@ import javax.swing.text.StyledDocument;
import net.miginfocom.swing.MigLayout; import net.miginfocom.swing.MigLayout;
import forge.game.GameType; import forge.game.GameType;
import forge.gui.GuiUtils; import forge.gui.OverlayUtils;
import forge.gui.home.EMenuGroup; import forge.gui.home.EMenuGroup;
import forge.gui.home.EMenuItem; import forge.gui.home.EMenuItem;
import forge.gui.home.ICSubmenu; import forge.gui.home.ICSubmenu;
@@ -154,7 +154,7 @@ public enum VSubmenuDraft implements IVSubmenu {
/** */ /** */
public void showDirections() { public void showDirections() {
final FOverlay overlay = GuiUtils.genericOverlay(); final FOverlay overlay = OverlayUtils.genericOverlay();
final int w = overlay.getWidth(); final int w = overlay.getWidth();
final String instructions = "BOOSTER DRAFT MODE INSTRUCTIONS" final String instructions = "BOOSTER DRAFT MODE INSTRUCTIONS"

View File

@@ -15,7 +15,7 @@ import javax.swing.text.StyledDocument;
import net.miginfocom.swing.MigLayout; import net.miginfocom.swing.MigLayout;
import forge.game.GameType; import forge.game.GameType;
import forge.gui.GuiUtils; import forge.gui.OverlayUtils;
import forge.gui.home.EMenuGroup; import forge.gui.home.EMenuGroup;
import forge.gui.home.EMenuItem; import forge.gui.home.EMenuItem;
import forge.gui.home.ICSubmenu; import forge.gui.home.ICSubmenu;
@@ -133,7 +133,7 @@ public enum VSubmenuSealed implements IVSubmenu {
/** */ /** */
public void showDirections() { public void showDirections() {
final FOverlay overlay = GuiUtils.genericOverlay(); final FOverlay overlay = OverlayUtils.genericOverlay();
final int w = overlay.getWidth(); final int w = overlay.getWidth();
final String instructions = "SEALED DECK MODE INSTRUCTIONS" final String instructions = "SEALED DECK MODE INSTRUCTIONS"

View File

@@ -44,6 +44,7 @@ import forge.game.GamePlayerRating;
import forge.game.GameSummary; import forge.game.GameSummary;
import forge.gui.GuiUtils; import forge.gui.GuiUtils;
import forge.gui.ListChooser; import forge.gui.ListChooser;
import forge.gui.OverlayUtils;
import forge.gui.home.quest.CSubmenuChallenges; import forge.gui.home.quest.CSubmenuChallenges;
import forge.gui.home.quest.CSubmenuDuels; import forge.gui.home.quest.CSubmenuDuels;
import forge.gui.toolbox.FSkin; import forge.gui.toolbox.FSkin;
@@ -108,7 +109,7 @@ public class QuestWinLoseHandler extends ControlWinLose {
@Override @Override
public final void startNextRound() { public final void startNextRound() {
Singletons.getModel().savePrefs(); Singletons.getModel().savePrefs();
GuiUtils.closeOverlay(); OverlayUtils.closeOverlay();
Singletons.getModel().getQuestPreferences().save(); Singletons.getModel().getQuestPreferences().save();
if (Constant.Quest.FANTASY_QUEST[0]) { if (Constant.Quest.FANTASY_QUEST[0]) {
@@ -298,7 +299,7 @@ public class QuestWinLoseHandler extends ControlWinLose {
Singletons.getControl().changeState(FControl.HOME_SCREEN); Singletons.getControl().changeState(FControl.HOME_SCREEN);
GuiUtils.closeOverlay(); OverlayUtils.closeOverlay();
} }
/** /**