mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 19:28:01 +00:00
Use dialog when prompting for deck
This commit is contained in:
@@ -14,6 +14,7 @@ import forge.gauntlet.GauntletUtil;
|
|||||||
import forge.interfaces.IGuiGame;
|
import forge.interfaces.IGuiGame;
|
||||||
import forge.itemmanager.DeckManager;
|
import forge.itemmanager.DeckManager;
|
||||||
import forge.itemmanager.ItemManagerConfig;
|
import forge.itemmanager.ItemManagerConfig;
|
||||||
|
import forge.itemmanager.filters.ItemFilter;
|
||||||
import forge.match.HostedMatch;
|
import forge.match.HostedMatch;
|
||||||
import forge.model.FModel;
|
import forge.model.FModel;
|
||||||
import forge.player.GamePlayerUtil;
|
import forge.player.GamePlayerUtil;
|
||||||
@@ -29,6 +30,7 @@ import forge.screens.home.NewGameMenu.NewGameScreen;
|
|||||||
import forge.screens.match.MatchController;
|
import forge.screens.match.MatchController;
|
||||||
import forge.toolbox.FButton;
|
import forge.toolbox.FButton;
|
||||||
import forge.toolbox.FComboBox;
|
import forge.toolbox.FComboBox;
|
||||||
|
import forge.toolbox.FContainer;
|
||||||
import forge.toolbox.FEvent;
|
import forge.toolbox.FEvent;
|
||||||
import forge.toolbox.GuiChoose;
|
import forge.toolbox.GuiChoose;
|
||||||
import forge.toolbox.ListChooser;
|
import forge.toolbox.ListChooser;
|
||||||
@@ -71,20 +73,46 @@ public class FDeckChooser extends FScreen {
|
|||||||
|
|
||||||
private final ForgePreferences prefs = FModel.getPreferences();
|
private final ForgePreferences prefs = FModel.getPreferences();
|
||||||
private FPref stateSetting = null;
|
private FPref stateSetting = null;
|
||||||
|
private FOptionPane optionPane;
|
||||||
|
|
||||||
//Show screen to select a deck
|
//Show dialog to select a deck
|
||||||
private static FDeckChooser deckChooserForPrompt;
|
|
||||||
public static void promptForDeck(String title, GameType gameType, boolean forAi, final Callback<Deck> callback) {
|
public static void promptForDeck(String title, GameType gameType, boolean forAi, final Callback<Deck> callback) {
|
||||||
FThreads.assertExecutedByEdt(true);
|
FThreads.assertExecutedByEdt(true);
|
||||||
if (deckChooserForPrompt == null) {
|
|
||||||
deckChooserForPrompt = new FDeckChooser(gameType, forAi, null);
|
final FDeckChooser deckChooser = new FDeckChooser(gameType, forAi, null);
|
||||||
}
|
|
||||||
else { //reuse same deck chooser
|
//use container to contain both combo box and deck list
|
||||||
deckChooserForPrompt.setIsAi(forAi);
|
final FContainer container = new FContainer() {
|
||||||
}
|
@Override
|
||||||
deckChooserForPrompt.setHeaderCaption(title);
|
protected void doLayout(final float width, final float height) {
|
||||||
deckChooserForPrompt.callback = callback;
|
float x = 0;
|
||||||
Forge.openScreen(deckChooserForPrompt);
|
float y = ItemFilter.PADDING;
|
||||||
|
float fieldHeight = deckChooser.cmbDeckTypes.getHeight();
|
||||||
|
deckChooser.cmbDeckTypes.setBounds(x, y, width, fieldHeight);
|
||||||
|
y += fieldHeight + 1;
|
||||||
|
deckChooser.lstDecks.setBounds(x, y, width, height - y);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
container.add(deckChooser.cmbDeckTypes);
|
||||||
|
container.add(deckChooser.lstDecks);
|
||||||
|
container.setHeight(FOptionPane.getMaxDisplayObjHeight());
|
||||||
|
|
||||||
|
deckChooser.optionPane = new FOptionPane(null, title, null, container, new String[] { "OK", "Cancel" }, 0, new Callback<Integer>() {
|
||||||
|
@Override
|
||||||
|
public void run(Integer result) {
|
||||||
|
if (result == 0) {
|
||||||
|
if (callback != null) {
|
||||||
|
callback.run(deckChooser.getDeck());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}) {
|
||||||
|
@Override
|
||||||
|
protected boolean padAboveAndBelow() {
|
||||||
|
return false; //allow list to go straight up against buttons
|
||||||
|
}
|
||||||
|
};
|
||||||
|
deckChooser.optionPane.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
public FDeckChooser(GameType gameType0, boolean isAi0, FEventHandler selectionChangedHandler) {
|
public FDeckChooser(GameType gameType0, boolean isAi0, FEventHandler selectionChangedHandler) {
|
||||||
@@ -158,9 +186,14 @@ public class FDeckChooser extends FScreen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void accept() {
|
private void accept() {
|
||||||
Forge.back();
|
if (optionPane == null) {
|
||||||
if (callback != null) {
|
Forge.back();
|
||||||
callback.run(getDeck());
|
if (callback != null) {
|
||||||
|
callback.run(getDeck());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
optionPane.setResult(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user