mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 10:48:00 +00:00
Miscallaneous Cleanup Part 2 - Lambdas and Method References (#5737)
* Cleanup - Unnecessary Boxing * Cleanup - Unnecessary Unboxing * Cleanup - For-Each Loops * Cleanup - `indexOf != -1` -> `contains` * Cleanup - Merge identical catch blocks * Cleanup - Try-with-resources * Cleanup - System.lineSeparator * Cleanup - Reference types to primitives Some loops over Integers were switched to IntStreams to hopefully cut down on overall boxing. * Cleanup - Manually filling and copying arrays * Remove unused imports * Switch a lambda to a method reference * Cleanup - CardPredicate Aggregates to method references * Cleanup - Other static functions to method references * Cleanup - Ambiguous class reference Unclear when or how this happened... * Cleanup - Anonymous -> Method reference * Cleanup - Anonymous -> Lambda * Cleanup - Comparator helper methods * Cleanup - final method in final class * Cleanup - private final methods * Remove unused imports * Convert a couple more lambdas to comparators. * Simplify creature type list comparison. --------- Co-authored-by: Jetz <Jetz722@gmail.com> Co-authored-by: tool4ever <therealtoolkit@hotmail.com>
This commit is contained in:
@@ -260,12 +260,7 @@ public enum FControl implements KeyEventDispatcher {
|
||||
|
||||
setGlobalKeyboardHandler();
|
||||
FView.SINGLETON_INSTANCE.setSplashProgessBarMessage(localizer.getMessage("lblOpeningMainWindow"));
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Singletons.getView().initialize();
|
||||
}
|
||||
});
|
||||
SwingUtilities.invokeLater(() -> Singletons.getView().initialize());
|
||||
}
|
||||
|
||||
private void setGlobalKeyboardHandler() {
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package forge.deckchooser;
|
||||
|
||||
import java.awt.Cursor;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.List;
|
||||
|
||||
@@ -35,18 +34,16 @@ public class DecksComboBox extends FComboBoxWrapper<DeckType> {
|
||||
}
|
||||
|
||||
private ActionListener getDeckTypeComboListener() {
|
||||
return new ActionListener() {
|
||||
@Override public void actionPerformed(final ActionEvent e) {
|
||||
final Object selectedItem = getSelectedItem();
|
||||
if (selectedItem instanceof DeckType) {
|
||||
MouseUtil.setCursor(Cursor.WAIT_CURSOR);
|
||||
final DeckType newDeckType = (DeckType)selectedItem;
|
||||
if (newDeckType != selectedDeckType) {
|
||||
selectedDeckType = newDeckType;
|
||||
notifyDeckTypeSelected(newDeckType);
|
||||
}
|
||||
MouseUtil.resetCursor();
|
||||
return e -> {
|
||||
final Object selectedItem = getSelectedItem();
|
||||
if (selectedItem instanceof DeckType) {
|
||||
MouseUtil.setCursor(Cursor.WAIT_CURSOR);
|
||||
final DeckType newDeckType = (DeckType)selectedItem;
|
||||
if (newDeckType != selectedDeckType) {
|
||||
selectedDeckType = newDeckType;
|
||||
notifyDeckTypeSelected(newDeckType);
|
||||
}
|
||||
MouseUtil.resetCursor();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -71,11 +71,9 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
||||
final Localizer localizer = Localizer.getInstance();
|
||||
final FOptionPane optionPane = new FOptionPane(null, title, null, chooser, ImmutableList.of(localizer.getMessage("lblOK"), localizer.getMessage("lblCancel")), 0);
|
||||
optionPane.setDefaultFocus(chooser);
|
||||
chooser.lstDecks.setItemActivateCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
optionPane.setResult(0); //accept selected deck on double click or Enter
|
||||
}
|
||||
chooser.lstDecks.setItemActivateCommand((UiCommand) () -> {
|
||||
//accept selected deck on double click or Enter
|
||||
optionPane.setResult(0);
|
||||
});
|
||||
optionPane.setVisible(true);
|
||||
final int dialogResult = optionPane.getResult();
|
||||
@@ -91,11 +89,9 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
||||
setOpaque(false);
|
||||
isAi = forAi;
|
||||
isForCommander = forCommander;
|
||||
final UiCommand cmdViewDeck = new UiCommand() {
|
||||
@Override public void run() {
|
||||
if (selectedDeckType != DeckType.COLOR_DECK && selectedDeckType != DeckType.THEME_DECK) {
|
||||
FDeckViewer.show(getDeck());
|
||||
}
|
||||
final UiCommand cmdViewDeck = () -> {
|
||||
if (selectedDeckType != DeckType.COLOR_DECK && selectedDeckType != DeckType.THEME_DECK) {
|
||||
FDeckViewer.show(getDeck());
|
||||
}
|
||||
};
|
||||
lstDecks.setItemActivateCommand(cmdViewDeck);
|
||||
@@ -127,12 +123,7 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
||||
lstDecks.setup(config);
|
||||
|
||||
btnRandom.setText(localizer.getMessage("lblRandomDeck"));
|
||||
btnRandom.setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
DeckgenUtil.randomSelect(lstDecks);
|
||||
}
|
||||
});
|
||||
btnRandom.setCommand((UiCommand) () -> DeckgenUtil.randomSelect(lstDecks));
|
||||
|
||||
lstDecks.setSelectedIndex(0);
|
||||
}
|
||||
@@ -165,12 +156,7 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
||||
lstDecks.setup(ItemManagerConfig.STRING_ONLY);
|
||||
|
||||
btnRandom.setText(localizer.getMessage("lblRandomColors"));
|
||||
btnRandom.setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
DeckgenUtil.randomSelectColors(lstDecks);
|
||||
}
|
||||
});
|
||||
btnRandom.setCommand((UiCommand) () -> DeckgenUtil.randomSelectColors(lstDecks));
|
||||
|
||||
// default selection = basic two color deck
|
||||
lstDecks.setSelectedIndices(new Integer[]{0, 1});
|
||||
@@ -183,12 +169,7 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
||||
lstDecks.setup(ItemManagerConfig.STRING_ONLY);
|
||||
|
||||
btnRandom.setText("Random");
|
||||
btnRandom.setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
DeckgenUtil.randomSelect(lstDecks);
|
||||
}
|
||||
});
|
||||
btnRandom.setCommand((UiCommand) () -> DeckgenUtil.randomSelect(lstDecks));
|
||||
|
||||
// default selection = basic two color deck
|
||||
lstDecks.setSelectedIndices(new Integer[]{0});
|
||||
@@ -205,12 +186,7 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
||||
lstDecks.setup(ItemManagerConfig.STRING_ONLY);
|
||||
|
||||
btnRandom.setText("Random");
|
||||
btnRandom.setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
DeckgenUtil.randomSelect(lstDecks);
|
||||
}
|
||||
});
|
||||
btnRandom.setCommand((UiCommand) () -> DeckgenUtil.randomSelect(lstDecks));
|
||||
|
||||
// default selection = basic two color deck
|
||||
lstDecks.setSelectedIndices(new Integer[]{0});
|
||||
@@ -227,12 +203,7 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
||||
lstDecks.setup(ItemManagerConfig.STRING_ONLY);
|
||||
|
||||
btnRandom.setText("Random");
|
||||
btnRandom.setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
DeckgenUtil.randomSelect(lstDecks);
|
||||
}
|
||||
});
|
||||
btnRandom.setCommand((UiCommand) () -> DeckgenUtil.randomSelect(lstDecks));
|
||||
|
||||
// default selection = basic two color deck
|
||||
lstDecks.setSelectedIndices(new Integer[]{0});
|
||||
@@ -373,208 +344,168 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
||||
if (ev.getDeckType() == DeckType.NET_ARCHIVE_STANDARD_DECK && !refreshingDeckType) {
|
||||
if (lstDecks.getGameType() != GameType.Constructed)
|
||||
return;
|
||||
FThreads.invokeInBackgroundThread(new Runnable() { //needed for loading net decks
|
||||
@Override
|
||||
public void run() {
|
||||
final NetDeckArchiveStandard category = NetDeckArchiveStandard.selectAndLoad(lstDecks.getGameType());
|
||||
FThreads.invokeInEdtLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (category == null) {
|
||||
decksComboBox.setDeckType(selectedDeckType); //restore old selection if user cancels
|
||||
if (selectedDeckType == DeckType.NET_ARCHIVE_STANDARD_DECK && NetDeckArchiveStandard != null) {
|
||||
decksComboBox.setText(NetDeckArchiveStandard.getDeckType());
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
NetDeckArchiveStandard = category;
|
||||
refreshDecksList(ev.getDeckType(), true, ev);
|
||||
//needed for loading net decks
|
||||
FThreads.invokeInBackgroundThread(() -> {
|
||||
final NetDeckArchiveStandard category = NetDeckArchiveStandard.selectAndLoad(lstDecks.getGameType());
|
||||
FThreads.invokeInEdtLater(() -> {
|
||||
if (category == null) {
|
||||
decksComboBox.setDeckType(selectedDeckType); //restore old selection if user cancels
|
||||
if (selectedDeckType == DeckType.NET_ARCHIVE_STANDARD_DECK && NetDeckArchiveStandard != null) {
|
||||
decksComboBox.setText(NetDeckArchiveStandard.getDeckType());
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
NetDeckArchiveStandard = category;
|
||||
refreshDecksList(ev.getDeckType(), true, ev);
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
return;
|
||||
|
||||
} else if (ev.getDeckType() == DeckType.NET_ARCHIVE_PIONEER_DECK && !refreshingDeckType) {
|
||||
if (lstDecks.getGameType() != GameType.Constructed)
|
||||
return;
|
||||
FThreads.invokeInBackgroundThread(new Runnable() { //needed for loading net decks
|
||||
@Override
|
||||
public void run() {
|
||||
final NetDeckArchivePioneer category = NetDeckArchivePioneer.selectAndLoad(lstDecks.getGameType());
|
||||
FThreads.invokeInEdtLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (category == null) {
|
||||
decksComboBox.setDeckType(selectedDeckType); //restore old selection if user cancels
|
||||
if (selectedDeckType == DeckType.NET_ARCHIVE_PIONEER_DECK && NetDeckArchivePioneer != null) {
|
||||
decksComboBox.setText(NetDeckArchivePioneer.getDeckType());
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
NetDeckArchivePioneer = category;
|
||||
refreshDecksList(ev.getDeckType(), true, ev);
|
||||
//needed for loading net decks
|
||||
FThreads.invokeInBackgroundThread(() -> {
|
||||
final NetDeckArchivePioneer category = NetDeckArchivePioneer.selectAndLoad(lstDecks.getGameType());
|
||||
FThreads.invokeInEdtLater(() -> {
|
||||
if (category == null) {
|
||||
decksComboBox.setDeckType(selectedDeckType); //restore old selection if user cancels
|
||||
if (selectedDeckType == DeckType.NET_ARCHIVE_PIONEER_DECK && NetDeckArchivePioneer != null) {
|
||||
decksComboBox.setText(NetDeckArchivePioneer.getDeckType());
|
||||
}
|
||||
});
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
NetDeckArchivePioneer = category;
|
||||
refreshDecksList(ev.getDeckType(), true, ev);
|
||||
});
|
||||
});
|
||||
return;
|
||||
|
||||
} else if (ev.getDeckType() == DeckType.NET_ARCHIVE_MODERN_DECK && !refreshingDeckType) {
|
||||
if (lstDecks.getGameType() != GameType.Constructed)
|
||||
return;
|
||||
FThreads.invokeInBackgroundThread(new Runnable() { //needed for loading net decks
|
||||
@Override
|
||||
public void run() {
|
||||
final NetDeckArchiveModern category = NetDeckArchiveModern.selectAndLoad(lstDecks.getGameType());
|
||||
FThreads.invokeInEdtLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (category == null) {
|
||||
decksComboBox.setDeckType(selectedDeckType); //restore old selection if user cancels
|
||||
if (selectedDeckType == DeckType.NET_ARCHIVE_MODERN_DECK && NetDeckArchiveModern != null) {
|
||||
decksComboBox.setText(NetDeckArchiveModern.getDeckType());
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
NetDeckArchiveModern = category;
|
||||
refreshDecksList(ev.getDeckType(), true, ev);
|
||||
//needed for loading net decks
|
||||
FThreads.invokeInBackgroundThread(() -> {
|
||||
final NetDeckArchiveModern category = NetDeckArchiveModern.selectAndLoad(lstDecks.getGameType());
|
||||
FThreads.invokeInEdtLater(() -> {
|
||||
if (category == null) {
|
||||
decksComboBox.setDeckType(selectedDeckType); //restore old selection if user cancels
|
||||
if (selectedDeckType == DeckType.NET_ARCHIVE_MODERN_DECK && NetDeckArchiveModern != null) {
|
||||
decksComboBox.setText(NetDeckArchiveModern.getDeckType());
|
||||
}
|
||||
});
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
NetDeckArchiveModern = category;
|
||||
refreshDecksList(ev.getDeckType(), true, ev);
|
||||
});
|
||||
});
|
||||
return;
|
||||
|
||||
} else if (ev.getDeckType() == DeckType.NET_ARCHIVE_PAUPER_DECK && !refreshingDeckType) {
|
||||
if (lstDecks.getGameType() != GameType.Constructed)
|
||||
return;
|
||||
FThreads.invokeInBackgroundThread(new Runnable() { //needed for loading net decks
|
||||
@Override
|
||||
public void run() {
|
||||
final NetDeckArchivePauper category = NetDeckArchivePauper.selectAndLoad(lstDecks.getGameType());
|
||||
FThreads.invokeInEdtLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (category == null) {
|
||||
decksComboBox.setDeckType(selectedDeckType); //restore old selection if user cancels
|
||||
if (selectedDeckType == DeckType.NET_ARCHIVE_PAUPER_DECK && NetDeckArchivePauper != null) {
|
||||
decksComboBox.setText(NetDeckArchivePauper.getDeckType());
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
NetDeckArchivePauper = category;
|
||||
refreshDecksList(ev.getDeckType(), true, ev);
|
||||
//needed for loading net decks
|
||||
FThreads.invokeInBackgroundThread(() -> {
|
||||
final NetDeckArchivePauper category = NetDeckArchivePauper.selectAndLoad(lstDecks.getGameType());
|
||||
FThreads.invokeInEdtLater(() -> {
|
||||
if (category == null) {
|
||||
decksComboBox.setDeckType(selectedDeckType); //restore old selection if user cancels
|
||||
if (selectedDeckType == DeckType.NET_ARCHIVE_PAUPER_DECK && NetDeckArchivePauper != null) {
|
||||
decksComboBox.setText(NetDeckArchivePauper.getDeckType());
|
||||
}
|
||||
});
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
NetDeckArchivePauper = category;
|
||||
refreshDecksList(ev.getDeckType(), true, ev);
|
||||
});
|
||||
});
|
||||
return;
|
||||
|
||||
} else if (ev.getDeckType() == DeckType.NET_ARCHIVE_LEGACY_DECK && !refreshingDeckType) {
|
||||
if (lstDecks.getGameType() != GameType.Constructed)
|
||||
return;
|
||||
FThreads.invokeInBackgroundThread(new Runnable() { //needed for loading net decks
|
||||
@Override
|
||||
public void run() {
|
||||
final NetDeckArchiveLegacy category = NetDeckArchiveLegacy.selectAndLoad(lstDecks.getGameType());
|
||||
FThreads.invokeInEdtLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (category == null) {
|
||||
decksComboBox.setDeckType(selectedDeckType); //restore old selection if user cancels
|
||||
if (selectedDeckType == DeckType.NET_ARCHIVE_LEGACY_DECK && NetDeckArchiveLegacy != null) {
|
||||
decksComboBox.setText(NetDeckArchiveLegacy.getDeckType());
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
NetDeckArchiveLegacy = category;
|
||||
refreshDecksList(ev.getDeckType(), true, ev);
|
||||
//needed for loading net decks
|
||||
FThreads.invokeInBackgroundThread(() -> {
|
||||
final NetDeckArchiveLegacy category = NetDeckArchiveLegacy.selectAndLoad(lstDecks.getGameType());
|
||||
FThreads.invokeInEdtLater(() -> {
|
||||
if (category == null) {
|
||||
decksComboBox.setDeckType(selectedDeckType); //restore old selection if user cancels
|
||||
if (selectedDeckType == DeckType.NET_ARCHIVE_LEGACY_DECK && NetDeckArchiveLegacy != null) {
|
||||
decksComboBox.setText(NetDeckArchiveLegacy.getDeckType());
|
||||
}
|
||||
});
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
NetDeckArchiveLegacy = category;
|
||||
refreshDecksList(ev.getDeckType(), true, ev);
|
||||
});
|
||||
});
|
||||
return;
|
||||
|
||||
} else if (ev.getDeckType() == DeckType.NET_ARCHIVE_VINTAGE_DECK && !refreshingDeckType) {
|
||||
if (lstDecks.getGameType() != GameType.Constructed)
|
||||
return;
|
||||
FThreads.invokeInBackgroundThread(new Runnable() { //needed for loading net decks
|
||||
@Override
|
||||
public void run() {
|
||||
final NetDeckArchiveVintage category = NetDeckArchiveVintage.selectAndLoad(lstDecks.getGameType());
|
||||
FThreads.invokeInEdtLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (category == null) {
|
||||
decksComboBox.setDeckType(selectedDeckType); //restore old selection if user cancels
|
||||
if (selectedDeckType == DeckType.NET_ARCHIVE_VINTAGE_DECK && NetDeckArchiveVintage != null) {
|
||||
decksComboBox.setText(NetDeckArchiveVintage.getDeckType());
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
NetDeckArchiveVintage = category;
|
||||
refreshDecksList(ev.getDeckType(), true, ev);
|
||||
//needed for loading net decks
|
||||
FThreads.invokeInBackgroundThread(() -> {
|
||||
final NetDeckArchiveVintage category = NetDeckArchiveVintage.selectAndLoad(lstDecks.getGameType());
|
||||
FThreads.invokeInEdtLater(() -> {
|
||||
if (category == null) {
|
||||
decksComboBox.setDeckType(selectedDeckType); //restore old selection if user cancels
|
||||
if (selectedDeckType == DeckType.NET_ARCHIVE_VINTAGE_DECK && NetDeckArchiveVintage != null) {
|
||||
decksComboBox.setText(NetDeckArchiveVintage.getDeckType());
|
||||
}
|
||||
});
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
NetDeckArchiveVintage = category;
|
||||
refreshDecksList(ev.getDeckType(), true, ev);
|
||||
});
|
||||
});
|
||||
return;
|
||||
|
||||
} else if (ev.getDeckType() == DeckType.NET_ARCHIVE_BLOCK_DECK && !refreshingDeckType) {
|
||||
if (lstDecks.getGameType() != GameType.Constructed)
|
||||
return;
|
||||
FThreads.invokeInBackgroundThread(new Runnable() { //needed for loading net decks
|
||||
@Override
|
||||
public void run() {
|
||||
final NetDeckArchiveBlock category = NetDeckArchiveBlock.selectAndLoad(lstDecks.getGameType());
|
||||
FThreads.invokeInEdtLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (category == null) {
|
||||
decksComboBox.setDeckType(selectedDeckType); //restore old selection if user cancels
|
||||
if (selectedDeckType == DeckType.NET_ARCHIVE_BLOCK_DECK && NetDeckArchiveBlock != null) {
|
||||
decksComboBox.setText(NetDeckArchiveBlock.getDeckType());
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
NetDeckArchiveBlock = category;
|
||||
refreshDecksList(ev.getDeckType(), true, ev);
|
||||
//needed for loading net decks
|
||||
FThreads.invokeInBackgroundThread(() -> {
|
||||
final NetDeckArchiveBlock category = NetDeckArchiveBlock.selectAndLoad(lstDecks.getGameType());
|
||||
FThreads.invokeInEdtLater(() -> {
|
||||
if (category == null) {
|
||||
decksComboBox.setDeckType(selectedDeckType); //restore old selection if user cancels
|
||||
if (selectedDeckType == DeckType.NET_ARCHIVE_BLOCK_DECK && NetDeckArchiveBlock != null) {
|
||||
decksComboBox.setText(NetDeckArchiveBlock.getDeckType());
|
||||
}
|
||||
});
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
NetDeckArchiveBlock = category;
|
||||
refreshDecksList(ev.getDeckType(), true, ev);
|
||||
});
|
||||
});
|
||||
return;
|
||||
|
||||
} else if ((ev.getDeckType() == DeckType.NET_DECK || ev.getDeckType() == DeckType.NET_COMMANDER_DECK) && !refreshingDeckType) {
|
||||
FThreads.invokeInBackgroundThread(new Runnable() { //needed for loading net decks
|
||||
@Override
|
||||
public void run() {
|
||||
final NetDeckCategory category = NetDeckCategory.selectAndLoad(lstDecks.getGameType());
|
||||
//needed for loading net decks
|
||||
FThreads.invokeInBackgroundThread(() -> {
|
||||
final NetDeckCategory category = NetDeckCategory.selectAndLoad(lstDecks.getGameType());
|
||||
|
||||
FThreads.invokeInEdtLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (category == null) {
|
||||
decksComboBox.setDeckType(selectedDeckType); //restore old selection if user cancels
|
||||
if (selectedDeckType == DeckType.NET_DECK && netDeckCategory != null) {
|
||||
decksComboBox.setText(netDeckCategory.getDeckType());
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
netDeckCategory = category;
|
||||
refreshDecksList(ev.getDeckType(), true, ev);
|
||||
FThreads.invokeInEdtLater(() -> {
|
||||
if (category == null) {
|
||||
decksComboBox.setDeckType(selectedDeckType); //restore old selection if user cancels
|
||||
if (selectedDeckType == DeckType.NET_DECK && netDeckCategory != null) {
|
||||
decksComboBox.setText(netDeckCategory.getDeckType());
|
||||
}
|
||||
});
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
netDeckCategory = category;
|
||||
refreshDecksList(ev.getDeckType(), true, ev);
|
||||
});
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -22,12 +22,8 @@ import forge.view.FDialog;
|
||||
import net.miginfocom.swing.MigLayout;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.event.ListSelectionEvent;
|
||||
import javax.swing.event.ListSelectionListener;
|
||||
import java.awt.*;
|
||||
import java.awt.datatransfer.StringSelection;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
@@ -74,18 +70,15 @@ public class FDeckViewer extends FDialog {
|
||||
}
|
||||
};
|
||||
this.cardManager.setPool(deck.getMain());
|
||||
this.cardManager.addSelectionListener(new ListSelectionListener() {
|
||||
@Override
|
||||
public void valueChanged(ListSelectionEvent e) {
|
||||
final IPaperCard paperCard = cardManager.getSelectedItem();
|
||||
if (paperCard == null) { return; }
|
||||
this.cardManager.addSelectionListener(e -> {
|
||||
final IPaperCard paperCard = cardManager.getSelectedItem();
|
||||
if (paperCard == null) { return; }
|
||||
|
||||
final CardView card = CardView.getCardForUi(paperCard);
|
||||
if (card == null) { return; }
|
||||
final CardView card = CardView.getCardForUi(paperCard);
|
||||
if (card == null) { return; }
|
||||
|
||||
cardDetail.setCard(card);
|
||||
cardPicture.setCard(card.getCurrentState());
|
||||
}
|
||||
cardDetail.setCard(card);
|
||||
cardPicture.setCard(card.getCurrentState());
|
||||
});
|
||||
|
||||
for (Entry<DeckSection, CardPool> entry : deck) {
|
||||
@@ -95,31 +88,16 @@ public class FDeckViewer extends FDialog {
|
||||
updateCaption();
|
||||
|
||||
this.btnCopyToClipboard.setFocusable(false);
|
||||
this.btnCopyToClipboard.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
FDeckViewer.this.copyToClipboard();
|
||||
}
|
||||
});
|
||||
this.btnCopyToClipboard.addActionListener(arg0 -> FDeckViewer.this.copyToClipboard());
|
||||
this.btnChangeSection.setFocusable(false);
|
||||
if (this.sections.size() > 1) {
|
||||
this.btnChangeSection.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
FDeckViewer.this.changeSection();
|
||||
}
|
||||
});
|
||||
this.btnChangeSection.addActionListener(arg0 -> FDeckViewer.this.changeSection());
|
||||
}
|
||||
else {
|
||||
this.btnChangeSection.setEnabled(false);
|
||||
}
|
||||
this.btnClose.setFocusable(false);
|
||||
this.btnClose.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
FDeckViewer.this.setVisible(false);
|
||||
}
|
||||
});
|
||||
this.btnClose.addActionListener(arg0 -> FDeckViewer.this.setVisible(false));
|
||||
|
||||
final int width;
|
||||
final int height;
|
||||
|
||||
@@ -114,11 +114,7 @@ public class GuiDownloader extends DefaultBoundedRangeModel {
|
||||
pnl.add(pnlDialog, "w 400px!, h 350px!, ax center, ay center");
|
||||
SOverlayUtils.showOverlay();
|
||||
|
||||
service.initialize(txtAddress, txtPort, progressBar, btnStart, cmdClose, null, new Runnable() {
|
||||
@Override public void run() {
|
||||
fireStateChanged();
|
||||
}
|
||||
});
|
||||
service.initialize(txtAddress, txtPort, progressBar, btnStart, cmdClose, null, this::fireStateChanged);
|
||||
}
|
||||
|
||||
private class ProxyHandler implements ChangeListener {
|
||||
|
||||
@@ -18,8 +18,6 @@
|
||||
|
||||
package forge.gui;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.WindowEvent;
|
||||
import java.awt.event.WindowFocusListener;
|
||||
import java.util.Collections;
|
||||
@@ -116,20 +114,12 @@ public class BoxedProductCardListViewer extends FDialog {
|
||||
this.addWindowFocusListener(new CardListFocuser());
|
||||
|
||||
FButton btnOK = new FButton("Next Pack");
|
||||
btnOK.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
BoxedProductCardListViewer.this.processWindowEvent(new WindowEvent(BoxedProductCardListViewer.this, WindowEvent.WINDOW_CLOSING));
|
||||
}
|
||||
});
|
||||
btnOK.addActionListener(e -> BoxedProductCardListViewer.this.processWindowEvent(new WindowEvent(BoxedProductCardListViewer.this, WindowEvent.WINDOW_CLOSING)));
|
||||
|
||||
FButton btnCancel = new FButton("Open All Remaining");
|
||||
btnCancel.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
BoxedProductCardListViewer.this.skipTheRest = true;
|
||||
BoxedProductCardListViewer.this.processWindowEvent(new WindowEvent(BoxedProductCardListViewer.this, WindowEvent.WINDOW_CLOSING));
|
||||
}
|
||||
btnCancel.addActionListener(e -> {
|
||||
BoxedProductCardListViewer.this.skipTheRest = true;
|
||||
BoxedProductCardListViewer.this.processWindowEvent(new WindowEvent(BoxedProductCardListViewer.this, WindowEvent.WINDOW_CLOSING));
|
||||
});
|
||||
|
||||
this.add(new FLabel.Builder().text(message).build(), "cell 0 0, spanx 3, gapbottom 4");
|
||||
|
||||
@@ -167,12 +167,7 @@ public class CardDetailPanel extends SkinnedPanel {
|
||||
setInfoLabel.setBorder(BorderFactory.createLineBorder(Color.WHITE));
|
||||
}
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
scrArea.getVerticalScrollBar().setValue(scrArea.getVerticalScrollBar().getMinimum());
|
||||
}
|
||||
});
|
||||
SwingUtilities.invokeLater(() -> scrArea.getVerticalScrollBar().setValue(scrArea.getVerticalScrollBar().getMinimum()));
|
||||
}
|
||||
|
||||
public final void setCard(final CardView card) {
|
||||
@@ -258,11 +253,7 @@ public class CardDetailPanel extends SkinnedPanel {
|
||||
// fill the card text
|
||||
cdArea.setText(FSkin.encodeSymbols(CardDetailUtil.composeCardText( state, gameView, mayView), true));
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() {
|
||||
scrArea.getVerticalScrollBar().setValue(scrArea.getVerticalScrollBar().getMinimum());
|
||||
}
|
||||
});
|
||||
SwingUtilities.invokeLater(() -> scrArea.getVerticalScrollBar().setValue(scrArea.getVerticalScrollBar().getMinimum()));
|
||||
}
|
||||
|
||||
/** @return FLabel */
|
||||
|
||||
@@ -18,8 +18,6 @@
|
||||
|
||||
package forge.gui;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.WindowEvent;
|
||||
import java.awt.event.WindowFocusListener;
|
||||
import java.awt.event.WindowListener;
|
||||
@@ -76,12 +74,7 @@ public class CardListChooser extends FDialog {
|
||||
this.addWindowFocusListener(new CardListFocuser());
|
||||
|
||||
FButton btnOK = new FButton(Localizer.getInstance().getMessage("lblSelectCard"));
|
||||
btnOK.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
CardListChooser.this.processWindowEvent(new WindowEvent(CardListChooser.this, WindowEvent.WINDOW_CLOSING));
|
||||
}
|
||||
});
|
||||
btnOK.addActionListener(e -> CardListChooser.this.processWindowEvent(new WindowEvent(CardListChooser.this, WindowEvent.WINDOW_CLOSING)));
|
||||
|
||||
//Ensure the window can't be closed without user confirmation.
|
||||
//Unfortunately this giant block of code is necessary for that.
|
||||
|
||||
@@ -18,8 +18,6 @@
|
||||
|
||||
package forge.gui;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.WindowEvent;
|
||||
import java.awt.event.WindowFocusListener;
|
||||
import java.util.Collections;
|
||||
@@ -115,12 +113,7 @@ public class CardListViewer extends FDialog {
|
||||
this.addWindowFocusListener(new CardListFocuser());
|
||||
|
||||
final FButton btnOK = new FButton(Localizer.getInstance().getMessage("lblOK"));
|
||||
btnOK.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
CardListViewer.this.processWindowEvent(new WindowEvent(CardListViewer.this, WindowEvent.WINDOW_CLOSING));
|
||||
}
|
||||
});
|
||||
btnOK.addActionListener(e -> CardListViewer.this.processWindowEvent(new WindowEvent(CardListViewer.this, WindowEvent.WINDOW_CLOSING)));
|
||||
|
||||
this.add(new FLabel.Builder().text(message).build(), "cell 0 0, spanx 3, gapbottom 4");
|
||||
|
||||
|
||||
@@ -3,8 +3,6 @@ package forge.gui;
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.FontMetrics;
|
||||
import java.awt.GridLayout;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.FocusAdapter;
|
||||
import java.awt.event.FocusEvent;
|
||||
import java.awt.event.KeyAdapter;
|
||||
@@ -19,8 +17,6 @@ import javax.swing.ListModel;
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.event.ListDataEvent;
|
||||
import javax.swing.event.ListDataListener;
|
||||
import javax.swing.event.ListSelectionEvent;
|
||||
import javax.swing.event.ListSelectionListener;
|
||||
|
||||
import forge.Singletons;
|
||||
import forge.game.card.Card;
|
||||
@@ -142,19 +138,19 @@ public class DualListBox<T> extends FDialog {
|
||||
|
||||
// Dual List control buttons
|
||||
addButton = new FButton(">");
|
||||
addButton.addActionListener(new ActionListener() {@Override public void actionPerformed(ActionEvent e) { onAdd.run(); } });
|
||||
addButton.addActionListener(e -> onAdd.run());
|
||||
addAllButton = new FButton(">>");
|
||||
addAllButton.addActionListener(new ActionListener() {@Override public void actionPerformed(ActionEvent e) { _addAll(); } });
|
||||
addAllButton.addActionListener(e -> _addAll());
|
||||
removeButton = new FButton("<");
|
||||
removeButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { onRemove.run(); } });
|
||||
removeButton.addActionListener(e -> onRemove.run());
|
||||
removeAllButton = new FButton("<<");
|
||||
removeAllButton.addActionListener(new ActionListener() {@Override public void actionPerformed(ActionEvent e) { _removeAll(); } });
|
||||
removeAllButton.addActionListener(e -> _removeAll());
|
||||
|
||||
// Dual List Complete Buttons
|
||||
okButton = new FButton(Localizer.getInstance().getMessage("lblOK"));
|
||||
okButton.addActionListener(new ActionListener() {@Override public void actionPerformed(ActionEvent e) { _finish(); } });
|
||||
okButton.addActionListener(e -> _finish());
|
||||
autoButton = new FButton(Localizer.getInstance().getMessage("lblAuto"));
|
||||
autoButton.addActionListener(new ActionListener() {@Override public void actionPerformed(ActionEvent e) { _addAll(); _finish(); } });
|
||||
autoButton.addActionListener(e -> { _addAll(); _finish(); });
|
||||
|
||||
final FPanel leftPanel = new FPanel(new BorderLayout());
|
||||
selectOrder = new FLabel.Builder().text(Localizer.getInstance().getMessage("lblSelectOrder") + ":").build();
|
||||
@@ -185,23 +181,13 @@ public class DualListBox<T> extends FDialog {
|
||||
if (destElements != null && !destElements.isEmpty()) {
|
||||
addDestinationElements(destElements);
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
destList.setSelectedIndex(0);
|
||||
}
|
||||
});
|
||||
SwingUtilities.invokeLater(() -> destList.setSelectedIndex(0));
|
||||
}
|
||||
|
||||
if (sourceElements != null && !sourceElements.isEmpty()) {
|
||||
addSourceElements(sourceElements);
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
sourceList.setSelectedIndex(0);
|
||||
}
|
||||
});
|
||||
SwingUtilities.invokeLater(() -> sourceList.setSelectedIndex(0));
|
||||
}
|
||||
|
||||
int columnWidth = getColumnWidth();
|
||||
@@ -214,12 +200,7 @@ public class DualListBox<T> extends FDialog {
|
||||
|
||||
if (remainingSourcesMin <= sourceElements.size() && remainingSourcesMax >= sourceElements.size()) {
|
||||
//ensure OK button gets initial focus if remainingSources matches source list count
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
okButton.requestFocusInWindow();
|
||||
}
|
||||
});
|
||||
SwingUtilities.invokeLater(okButton::requestFocusInWindow);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -399,56 +380,50 @@ public class DualListBox<T> extends FDialog {
|
||||
final int callNum = ++callCount;
|
||||
// invoke this later since the list is out of sync with the model
|
||||
// at this moment.
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (callNum != callCount) {
|
||||
// don't run stale callbacks
|
||||
return;
|
||||
}
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
if (callNum != callCount) {
|
||||
// don't run stale callbacks
|
||||
return;
|
||||
}
|
||||
|
||||
ListModel<T> model = list.getModel();
|
||||
if (0 == model.getSize()) {
|
||||
// nothing left to show
|
||||
return;
|
||||
}
|
||||
ListModel<T> model = list.getModel();
|
||||
if (0 == model.getSize()) {
|
||||
// nothing left to show
|
||||
return;
|
||||
}
|
||||
|
||||
int cardIdx = e.getIndex0();
|
||||
if (model.getSize() <= cardIdx) {
|
||||
// the last element got removed, get the one above it
|
||||
cardIdx = model.getSize() - 1;
|
||||
}
|
||||
showCard = false;
|
||||
list.setSelectedIndex(cardIdx);
|
||||
showCard = true;
|
||||
showSelectedCard(model.getElementAt(cardIdx));
|
||||
if (!okButton.isEnabled()) {
|
||||
list.requestFocusInWindow();
|
||||
}
|
||||
int cardIdx = e.getIndex0();
|
||||
if (model.getSize() <= cardIdx) {
|
||||
// the last element got removed, get the one above it
|
||||
cardIdx = model.getSize() - 1;
|
||||
}
|
||||
showCard = false;
|
||||
list.setSelectedIndex(cardIdx);
|
||||
showCard = true;
|
||||
showSelectedCard(model.getElementAt(cardIdx));
|
||||
if (!okButton.isEnabled()) {
|
||||
list.requestFocusInWindow();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void intervalAdded(final ListDataEvent e) {
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
// select just-added items so user can undo the add with a single click
|
||||
int startIdx = Math.min(e.getIndex0(), e.getIndex1());
|
||||
int endIdx = Math.max(e.getIndex0(), e.getIndex1());
|
||||
int[] addedIndices = new int[endIdx - startIdx + 1];
|
||||
for (int idx = startIdx; idx <= endIdx; ++idx) {
|
||||
addedIndices[idx - startIdx] = idx;
|
||||
}
|
||||
// attempt to scroll to just-added item (setSelectedIndices does not scroll)
|
||||
// this will scroll to the wrong item if there are other identical items previously in the list
|
||||
showCard = false;
|
||||
list.setSelectedValue(list.getModel().getElementAt(
|
||||
Math.min(endIdx, startIdx + list.getVisibleRowCount())), true);
|
||||
list.setSelectedIndices(addedIndices);
|
||||
showCard = true;
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
// select just-added items so user can undo the add with a single click
|
||||
int startIdx = Math.min(e.getIndex0(), e.getIndex1());
|
||||
int endIdx = Math.max(e.getIndex0(), e.getIndex1());
|
||||
int[] addedIndices = new int[endIdx - startIdx + 1];
|
||||
for (int idx = startIdx; idx <= endIdx; ++idx) {
|
||||
addedIndices[idx - startIdx] = idx;
|
||||
}
|
||||
// attempt to scroll to just-added item (setSelectedIndices does not scroll)
|
||||
// this will scroll to the wrong item if there are other identical items previously in the list
|
||||
showCard = false;
|
||||
list.setSelectedValue(list.getModel().getElementAt(
|
||||
Math.min(endIdx, startIdx + list.getVisibleRowCount())), true);
|
||||
list.setSelectedIndices(addedIndices);
|
||||
showCard = true;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -457,12 +432,7 @@ public class DualListBox<T> extends FDialog {
|
||||
}
|
||||
});
|
||||
|
||||
list.addListSelectionListener(new ListSelectionListener() {
|
||||
@Override
|
||||
public void valueChanged(ListSelectionEvent ev) {
|
||||
showSelectedCard(list.getSelectedValue());
|
||||
}
|
||||
});
|
||||
list.addListSelectionListener(ev -> showSelectedCard(list.getSelectedValue()));
|
||||
|
||||
list.addFocusListener(new FocusAdapter() {
|
||||
@Override
|
||||
|
||||
@@ -3,7 +3,6 @@ package forge.gui;
|
||||
import java.awt.Component;
|
||||
import java.awt.Point;
|
||||
import java.awt.Rectangle;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.MouseEvent;
|
||||
|
||||
@@ -84,17 +83,15 @@ public enum FNetOverlay implements IOnlineChatInterface {
|
||||
this.remote = remote;
|
||||
}
|
||||
|
||||
private final ActionListener onSend = new ActionListener() {
|
||||
@Override public final void actionPerformed(final ActionEvent e) {
|
||||
final String message = txtInput.getText();
|
||||
txtInput.setText("");
|
||||
if (StringUtils.isBlank(message)) {
|
||||
return;
|
||||
}
|
||||
private final ActionListener onSend = e -> {
|
||||
final String message = txtInput.getText();
|
||||
txtInput.setText("");
|
||||
if (StringUtils.isBlank(message)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (remote != null) {
|
||||
remote.send(new MessageEvent(prefs.getPref(FPref.PLAYER_NAME), message));
|
||||
}
|
||||
if (remote != null) {
|
||||
remote.send(new MessageEvent(prefs.getPref(FPref.PLAYER_NAME), message));
|
||||
}
|
||||
};
|
||||
|
||||
@@ -128,7 +125,7 @@ public enum FNetOverlay implements IOnlineChatInterface {
|
||||
window.add(cmdSend, "w 60px!, h 28px!, gap 0 0 2px 0");
|
||||
|
||||
txtInput.addActionListener(onSend);
|
||||
cmdSend.setCommand(new Runnable() { @Override public void run() { onSend.actionPerformed(null); } });
|
||||
cmdSend.setCommand((Runnable) () -> onSend.actionPerformed(null));
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
|
||||
@@ -10,8 +10,6 @@ import java.util.concurrent.FutureTask;
|
||||
|
||||
import javax.swing.JList;
|
||||
import javax.swing.WindowConstants;
|
||||
import javax.swing.event.ListSelectionEvent;
|
||||
import javax.swing.event.ListSelectionListener;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
@@ -148,79 +146,73 @@ public class GuiChoose {
|
||||
throw new RuntimeException("choice required from empty list");
|
||||
}
|
||||
|
||||
final Callable<List<T>> showChoice = new Callable<List<T>>() {
|
||||
@Override
|
||||
public List<T> call() {
|
||||
final ListChooser<T> c = new ListChooser<>(message, min, max, choices, display);
|
||||
final JList<T> list = c.getLstChoices();
|
||||
if (matchUI != null) {
|
||||
list.addListSelectionListener(new ListSelectionListener() {
|
||||
@Override
|
||||
public void valueChanged(final ListSelectionEvent ev) {
|
||||
final T sel = list.getSelectedValue();
|
||||
if (sel instanceof InventoryItem) {
|
||||
matchUI.setCard((InventoryItem) list.getSelectedValue());
|
||||
return;
|
||||
} else if (sel instanceof ICardFace || sel instanceof CardFaceView) {
|
||||
String faceName;
|
||||
if (sel instanceof ICardFace) {
|
||||
faceName = ((ICardFace) sel).getName();
|
||||
} else {
|
||||
faceName = ((CardFaceView) sel).getOracleName();
|
||||
}
|
||||
PaperCard paper = FModel.getMagicDb().getCommonCards().getUniqueByName(faceName);
|
||||
if (paper == null) {
|
||||
paper = FModel.getMagicDb().getVariantCards().getUniqueByName(faceName);
|
||||
}
|
||||
|
||||
if (paper != null) {
|
||||
Card c = Card.getCardForUi(paper);
|
||||
boolean foundState = false;
|
||||
for (CardStateName cs : c.getStates()) {
|
||||
if (c.getState(cs).getName().equals(faceName)) {
|
||||
foundState = true;
|
||||
c.setState(cs, true);
|
||||
matchUI.setCard(c.getView());
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!foundState) {
|
||||
matchUI.setCard(paper);
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
final CardView card;
|
||||
if (sel instanceof CardStateView) {
|
||||
card = ((CardStateView) sel).getCard();
|
||||
} else if (sel instanceof CardView) {
|
||||
card = (CardView) sel;
|
||||
} else if (sel instanceof Card) {
|
||||
card = CardView.get((Card) sel);
|
||||
} else {
|
||||
card = null;
|
||||
}
|
||||
|
||||
matchUI.setCard(card);
|
||||
matchUI.clearPanelSelections();
|
||||
matchUI.setPanelSelection(card);
|
||||
final Callable<List<T>> showChoice = () -> {
|
||||
final ListChooser<T> c = new ListChooser<>(message, min, max, choices, display);
|
||||
final JList<T> list = c.getLstChoices();
|
||||
if (matchUI != null) {
|
||||
list.addListSelectionListener(ev -> {
|
||||
final T sel = list.getSelectedValue();
|
||||
if (sel instanceof InventoryItem) {
|
||||
matchUI.setCard((InventoryItem) list.getSelectedValue());
|
||||
return;
|
||||
} else if (sel instanceof ICardFace || sel instanceof CardFaceView) {
|
||||
String faceName;
|
||||
if (sel instanceof ICardFace) {
|
||||
faceName = ((ICardFace) sel).getName();
|
||||
} else {
|
||||
faceName = ((CardFaceView) sel).getOracleName();
|
||||
}
|
||||
PaperCard paper = FModel.getMagicDb().getCommonCards().getUniqueByName(faceName);
|
||||
if (paper == null) {
|
||||
paper = FModel.getMagicDb().getVariantCards().getUniqueByName(faceName);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (selected != null) {
|
||||
c.show(selected);
|
||||
} else {
|
||||
c.show();
|
||||
}
|
||||
if (paper != null) {
|
||||
Card c1 = Card.getCardForUi(paper);
|
||||
boolean foundState = false;
|
||||
for (CardStateName cs : c1.getStates()) {
|
||||
if (c1.getState(cs).getName().equals(faceName)) {
|
||||
foundState = true;
|
||||
c1.setState(cs, true);
|
||||
matchUI.setCard(c1.getView());
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!foundState) {
|
||||
matchUI.setCard(paper);
|
||||
}
|
||||
}
|
||||
|
||||
if (matchUI != null) {
|
||||
return;
|
||||
}
|
||||
|
||||
final CardView card;
|
||||
if (sel instanceof CardStateView) {
|
||||
card = ((CardStateView) sel).getCard();
|
||||
} else if (sel instanceof CardView) {
|
||||
card = (CardView) sel;
|
||||
} else if (sel instanceof Card) {
|
||||
card = CardView.get((Card) sel);
|
||||
} else {
|
||||
card = null;
|
||||
}
|
||||
|
||||
matchUI.setCard(card);
|
||||
matchUI.clearPanelSelections();
|
||||
}
|
||||
return c.getSelectedValues();
|
||||
matchUI.setPanelSelection(card);
|
||||
});
|
||||
}
|
||||
|
||||
if (selected != null) {
|
||||
c.show(selected);
|
||||
} else {
|
||||
c.show();
|
||||
}
|
||||
|
||||
if (matchUI != null) {
|
||||
matchUI.clearPanelSelections();
|
||||
}
|
||||
return c.getSelectedValues();
|
||||
};
|
||||
|
||||
final FutureTask<List<T>> future = new FutureTask<>(showChoice);
|
||||
@@ -247,31 +239,28 @@ public class GuiChoose {
|
||||
final List<T> sourceChoices, final List<T> destChoices, final CardView referenceCard, final boolean sideboardingMode, final CMatchUI matchUI) {
|
||||
// An input box for handling the order of choices.
|
||||
|
||||
final Callable<List<T>> callable = new Callable<List<T>>() {
|
||||
@Override
|
||||
public List<T> call() {
|
||||
final DualListBox<T> dual = new DualListBox<>(remainingObjectsMin, remainingObjectsMax, sourceChoices, destChoices, matchUI);
|
||||
dual.setSecondColumnLabelText(top);
|
||||
final Callable<List<T>> callable = () -> {
|
||||
final DualListBox<T> dual = new DualListBox<>(remainingObjectsMin, remainingObjectsMax, sourceChoices, destChoices, matchUI);
|
||||
dual.setSecondColumnLabelText(top);
|
||||
|
||||
dual.setSideboardMode(sideboardingMode);
|
||||
dual.setSideboardMode(sideboardingMode);
|
||||
|
||||
dual.setTitle(title);
|
||||
dual.pack();
|
||||
dual.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
|
||||
if (matchUI != null && referenceCard != null) {
|
||||
matchUI.setCard(referenceCard);
|
||||
// MARKED FOR UPDATE
|
||||
}
|
||||
dual.setVisible(true);
|
||||
|
||||
final List<T> objects = dual.getOrderedList();
|
||||
|
||||
dual.dispose();
|
||||
if (matchUI != null) {
|
||||
matchUI.clearPanelSelections();
|
||||
}
|
||||
return objects;
|
||||
dual.setTitle(title);
|
||||
dual.pack();
|
||||
dual.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
|
||||
if (matchUI != null && referenceCard != null) {
|
||||
matchUI.setCard(referenceCard);
|
||||
// MARKED FOR UPDATE
|
||||
}
|
||||
dual.setVisible(true);
|
||||
|
||||
final List<T> objects = dual.getOrderedList();
|
||||
|
||||
dual.dispose();
|
||||
if (matchUI != null) {
|
||||
matchUI.clearPanelSelections();
|
||||
}
|
||||
return objects;
|
||||
};
|
||||
|
||||
final FutureTask<List<T>> ft = new FutureTask<>(callable);
|
||||
|
||||
@@ -21,18 +21,17 @@ public class GuiDialog {
|
||||
private static final ImmutableList<String> defaultConfirmOptions = ImmutableList.of("Yes", "No");
|
||||
|
||||
public static boolean confirm(final CardView c, final String question, final boolean defaultIsYes, final List<String> options, final CMatchUI matchUI) {
|
||||
final Callable<Boolean> confirmTask = new Callable<Boolean>() {
|
||||
@Override public final Boolean call() {
|
||||
if (matchUI != null && c != null) {
|
||||
matchUI.setCard(c);
|
||||
}
|
||||
final Callable<Boolean> confirmTask = () -> {
|
||||
if (matchUI != null && c != null) {
|
||||
matchUI.setCard(c);
|
||||
}
|
||||
|
||||
final String title = c == null ? "Question" : c + " - Ability";
|
||||
final String questionToUse = StringUtils.isBlank(question) ? "Activate card's ability?" : question;
|
||||
final List<String> opts = options == null ? defaultConfirmOptions : options;
|
||||
final int answer = FOptionPane.showOptionDialog(questionToUse, title, FOptionPane.QUESTION_ICON, opts, defaultIsYes ? 0 : 1);
|
||||
return answer == 0;
|
||||
}};
|
||||
final String title = c == null ? "Question" : c + " - Ability";
|
||||
final String questionToUse = StringUtils.isBlank(question) ? "Activate card's ability?" : question;
|
||||
final List<String> opts = options == null ? defaultConfirmOptions : options;
|
||||
final int answer = FOptionPane.showOptionDialog(questionToUse, title, FOptionPane.QUESTION_ICON, opts, defaultIsYes ? 0 : 1);
|
||||
return answer == 0;
|
||||
};
|
||||
|
||||
final FutureTask<Boolean> future = new FutureTask<>(confirmTask);
|
||||
FThreads.invokeInEdtAndWait(future);
|
||||
|
||||
@@ -20,8 +20,6 @@ package forge.gui;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Font;
|
||||
import java.awt.FontFormatException;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
@@ -101,12 +99,9 @@ public final class GuiUtils {
|
||||
label = "<html>" + "<div style='height: " + itemHeight + "px; margin-top: 6px;'>" + label.substring(6, label.length() - 7) + "</div></html>";
|
||||
}
|
||||
final JMenuItem item = new JMenuItem(label);
|
||||
item.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent arg0) {
|
||||
if (null != onClick) {
|
||||
onClick.run();
|
||||
}
|
||||
item.addActionListener(arg0 -> {
|
||||
if (null != onClick) {
|
||||
onClick.run();
|
||||
}
|
||||
});
|
||||
item.setEnabled(enabled);
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
package forge.gui;
|
||||
|
||||
import java.awt.Font;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
@@ -45,7 +44,6 @@ import javax.swing.ScrollPaneConstants;
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.SwingWorker;
|
||||
import javax.swing.Timer;
|
||||
import javax.swing.event.ChangeEvent;
|
||||
import javax.swing.event.ChangeListener;
|
||||
import javax.swing.event.DocumentEvent;
|
||||
import javax.swing.event.DocumentListener;
|
||||
@@ -153,18 +151,16 @@ public class ImportDialog {
|
||||
final JFileChooser _fileChooser = new JFileChooser();
|
||||
_fileChooser.setMultiSelectionEnabled(false);
|
||||
_fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
|
||||
_btnChooseDir.setCommand(new UiCommand() {
|
||||
@Override public void run() {
|
||||
// bring up a file open dialog and, if the OK button is selected, apply the filename
|
||||
// to the import source text field
|
||||
if (JFileChooser.APPROVE_OPTION == _fileChooser.showOpenDialog(JOptionPane.getRootFrame())) {
|
||||
final File f = _fileChooser.getSelectedFile();
|
||||
if (!f.canRead()) {
|
||||
FOptionPane.showErrorDialog("Cannot access selected directory (Permission denied).");
|
||||
}
|
||||
else {
|
||||
_txfSrc.setText(f.getAbsolutePath());
|
||||
}
|
||||
_btnChooseDir.setCommand((UiCommand) () -> {
|
||||
// bring up a file open dialog and, if the OK button is selected, apply the filename
|
||||
// to the import source text field
|
||||
if (JFileChooser.APPROVE_OPTION == _fileChooser.showOpenDialog(JOptionPane.getRootFrame())) {
|
||||
final File f = _fileChooser.getSelectedFile();
|
||||
if (!f.canRead()) {
|
||||
FOptionPane.showErrorDialog("Cannot access selected directory (Permission denied).");
|
||||
}
|
||||
else {
|
||||
_txfSrc.setText(f.getAbsolutePath());
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -250,19 +246,15 @@ public class ImportDialog {
|
||||
_topPanel.add(_selectionPanel, "growx, growy, gaptop 10");
|
||||
|
||||
// action button widgets
|
||||
final Runnable cleanup = new Runnable() {
|
||||
@Override public void run() { SOverlayUtils.hideOverlay(); }
|
||||
};
|
||||
final Runnable cleanup = SOverlayUtils::hideOverlay;
|
||||
_btnStart = new FButton("Start import");
|
||||
_btnStart.setEnabled(false);
|
||||
_btnCancel = new FButton("Cancel");
|
||||
_btnCancel.addActionListener(new ActionListener() {
|
||||
@Override public void actionPerformed(final ActionEvent e) {
|
||||
_cancel = true;
|
||||
cleanup.run();
|
||||
if (null != onDialogClose) {
|
||||
onDialogClose.run();
|
||||
}
|
||||
_btnCancel.addActionListener(e -> {
|
||||
_cancel = true;
|
||||
cleanup.run();
|
||||
if (null != onDialogClose) {
|
||||
onDialogClose.run();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -280,9 +272,7 @@ public class ImportDialog {
|
||||
SOverlayUtils.showOverlay();
|
||||
|
||||
// focus cancel button after the dialog is shown
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() { _btnCancel.requestFocusInWindow(); }
|
||||
});
|
||||
SwingUtilities.invokeLater(_btnCancel::requestFocusInWindow);
|
||||
|
||||
// if our source dir is provided, set the text, which will fire off an analyzer
|
||||
if (isMigration) {
|
||||
@@ -314,11 +304,7 @@ public class ImportDialog {
|
||||
new HashMap<>();
|
||||
|
||||
// attached to all changeable widgets to keep the UI in sync
|
||||
private final ChangeListener _stateChangedListener = new ChangeListener() {
|
||||
@Override public void stateChanged(final ChangeEvent arg0) {
|
||||
_updateUI();
|
||||
}
|
||||
};
|
||||
private final ChangeListener _stateChangedListener = arg0 -> _updateUI();
|
||||
|
||||
private final String _srcDir;
|
||||
private final Runnable _onAnalyzerDone;
|
||||
@@ -363,11 +349,7 @@ public class ImportDialog {
|
||||
_unknownDeckCombo.addItem(new _UnknownDeckChoice("Planar", ForgeConstants.DECK_PLANE_DIR));
|
||||
_unknownDeckCombo.addItem(new _UnknownDeckChoice("Scheme", ForgeConstants.DECK_SCHEME_DIR));
|
||||
_unknownDeckCombo.addItem(new _UnknownDeckChoice("Sealed", ForgeConstants.DECK_SEALED_DIR));
|
||||
_unknownDeckCombo.addActionListener(new ActionListener() {
|
||||
@Override public void actionPerformed(final ActionEvent arg0) {
|
||||
_updateUI();
|
||||
}
|
||||
});
|
||||
_unknownDeckCombo.addActionListener(arg0 -> _updateUI());
|
||||
_unknownDeckLabel = new FLabel.Builder().text("Treat unknown decks as:").build();
|
||||
unknownDeckPanel.add(_unknownDeckLabel);
|
||||
_unknownDeckCombo.addTo(unknownDeckPanel);
|
||||
@@ -515,35 +497,31 @@ public class ImportDialog {
|
||||
timer = new Timer(500, null);
|
||||
timer.setInitialDelay(100);
|
||||
final Timer finalTimer = timer;
|
||||
timer.addActionListener(new ActionListener() {
|
||||
@Override public void actionPerformed(final ActionEvent arg0) {
|
||||
if (_cancel) {
|
||||
finalTimer.stop();
|
||||
return;
|
||||
}
|
||||
|
||||
// timers run in the gui event loop, so it's ok to interact with widgets
|
||||
_progressBar.setValue(msa.getNumFilesAnalyzed());
|
||||
_updateUI();
|
||||
|
||||
// allow the the panel to resize to accommodate additional text
|
||||
_selectionPanel.getParent().validate();
|
||||
_selectionPanel.getParent().invalidate();
|
||||
timer.addActionListener(arg0 -> {
|
||||
if (_cancel) {
|
||||
finalTimer.stop();
|
||||
return;
|
||||
}
|
||||
|
||||
// timers run in the gui event loop, so it's ok to interact with widgets
|
||||
_progressBar.setValue(msa.getNumFilesAnalyzed());
|
||||
_updateUI();
|
||||
|
||||
// allow the the panel to resize to accommodate additional text
|
||||
_selectionPanel.getParent().validate();
|
||||
_selectionPanel.getParent().invalidate();
|
||||
});
|
||||
|
||||
// update the progress bar widget from the GUI event loop
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() {
|
||||
if (_cancel) { return; }
|
||||
_progressBar.setString("Analyzing...");
|
||||
_progressBar.setMaximum(numFilesToAnalyze);
|
||||
_progressBar.setValue(0);
|
||||
_progressBar.setIndeterminate(false);
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
if (_cancel) { return; }
|
||||
_progressBar.setString("Analyzing...");
|
||||
_progressBar.setMaximum(numFilesToAnalyze);
|
||||
_progressBar.setValue(0);
|
||||
_progressBar.setIndeterminate(false);
|
||||
|
||||
// start update timer
|
||||
finalTimer.start();
|
||||
}
|
||||
// start update timer
|
||||
finalTimer.start();
|
||||
});
|
||||
|
||||
// does not return until analysis is complete or has been canceled
|
||||
@@ -551,11 +529,9 @@ public class ImportDialog {
|
||||
} catch (final Exception e) {
|
||||
_cancel = true;
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() {
|
||||
_progressBar.setString("Error");
|
||||
BugReporter.reportException(e);
|
||||
}
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
_progressBar.setString("Error");
|
||||
BugReporter.reportException(e);
|
||||
});
|
||||
} finally {
|
||||
// ensure the UI update timer is stopped after analysis is complete
|
||||
@@ -599,82 +575,80 @@ public class ImportDialog {
|
||||
}
|
||||
|
||||
// set up the start button to start the prepared import on click
|
||||
_btnStart.addActionListener(new ActionListener() {
|
||||
@Override public void actionPerformed(final ActionEvent arg0) {
|
||||
// if this is a migration, warn if active settings will not complete a migration and give the
|
||||
// user an option to fix
|
||||
if (_isMigration) {
|
||||
// assemble a list of selections that need to be selected to complete a full migration
|
||||
final List<String> unselectedButShouldBe = new ArrayList<>();
|
||||
for (final Map.Entry<OpType, Pair<FCheckBox, ? extends Map<File, File>>> entry : _selections.entrySet()) {
|
||||
if (OpType.POSSIBLE_SET_CARD_PIC == entry.getKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// add name to list if checkbox is unselected, but contains operations
|
||||
final Pair<FCheckBox, ? extends Map<File, File>> p = entry.getValue();
|
||||
final FCheckBox cb = p.getLeft();
|
||||
if (!cb.isSelected() && 0 < p.getRight().size()) {
|
||||
unselectedButShouldBe.add(cb.getName());
|
||||
}
|
||||
_btnStart.addActionListener(arg0 -> {
|
||||
// if this is a migration, warn if active settings will not complete a migration and give the
|
||||
// user an option to fix
|
||||
if (_isMigration) {
|
||||
// assemble a list of selections that need to be selected to complete a full migration
|
||||
final List<String> unselectedButShouldBe = new ArrayList<>();
|
||||
for (final Map.Entry<OpType, Pair<FCheckBox, ? extends Map<File, File>>> entry : _selections.entrySet()) {
|
||||
if (OpType.POSSIBLE_SET_CARD_PIC == entry.getKey()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!unselectedButShouldBe.isEmpty() || !_moveCheckbox.isSelected()) {
|
||||
final StringBuilder sb = new StringBuilder("<html>");
|
||||
if (!unselectedButShouldBe.isEmpty()) {
|
||||
sb.append("It looks like the following options are not selected, which will result in an incomplete migration:");
|
||||
sb.append("<ul>");
|
||||
for (final String cbName : unselectedButShouldBe) {
|
||||
sb.append("<li><b>").append(cbName).append("</b></li>");
|
||||
}
|
||||
sb.append("</ul>");
|
||||
}
|
||||
|
||||
if (!_moveCheckbox.isSelected()) {
|
||||
sb.append(unselectedButShouldBe.isEmpty() ? "It " : "It also ").append("looks like the <b>");
|
||||
sb.append(_moveCheckbox.getText()).append("</b> option is not selected.<br><br>");
|
||||
}
|
||||
|
||||
sb.append("You can continue anyway, but the migration will be incomplete, and the data migration prompt<br>");
|
||||
sb.append("will come up again the next time you start Forge in order to migrate the remaining files<br>");
|
||||
sb.append("unless you move or delete them manually.</html>");
|
||||
|
||||
final int chosen = FOptionPane.showOptionDialog(sb.toString(), "Migration warning", FOptionPane.WARNING_ICON, fixOrContinue);
|
||||
|
||||
if (chosen != 1) {
|
||||
// i.e. option 0 was chosen or the dialog was otherwise closed
|
||||
return;
|
||||
}
|
||||
// add name to list if checkbox is unselected, but contains operations
|
||||
final Pair<FCheckBox, ? extends Map<File, File>> p = entry.getValue();
|
||||
final FCheckBox cb = p.getLeft();
|
||||
if (!cb.isSelected() && 0 < p.getRight().size()) {
|
||||
unselectedButShouldBe.add(cb.getName());
|
||||
}
|
||||
}
|
||||
|
||||
// ensure no other actions (except for cancel) can be taken while the import is in progress
|
||||
_btnStart.setEnabled(false);
|
||||
_btnChooseDir.setEnabled(false);
|
||||
if (!unselectedButShouldBe.isEmpty() || !_moveCheckbox.isSelected()) {
|
||||
final StringBuilder sb = new StringBuilder("<html>");
|
||||
if (!unselectedButShouldBe.isEmpty()) {
|
||||
sb.append("It looks like the following options are not selected, which will result in an incomplete migration:");
|
||||
sb.append("<ul>");
|
||||
for (final String cbName : unselectedButShouldBe) {
|
||||
sb.append("<li><b>").append(cbName).append("</b></li>");
|
||||
}
|
||||
sb.append("</ul>");
|
||||
}
|
||||
|
||||
for (final Pair<FCheckBox, ? extends Map<File, File>> selection : _selections.values()) {
|
||||
selection.getLeft().setEnabled(false);
|
||||
if (!_moveCheckbox.isSelected()) {
|
||||
sb.append(unselectedButShouldBe.isEmpty() ? "It " : "It also ").append("looks like the <b>");
|
||||
sb.append(_moveCheckbox.getText()).append("</b> option is not selected.<br><br>");
|
||||
}
|
||||
|
||||
sb.append("You can continue anyway, but the migration will be incomplete, and the data migration prompt<br>");
|
||||
sb.append("will come up again the next time you start Forge in order to migrate the remaining files<br>");
|
||||
sb.append("unless you move or delete them manually.</html>");
|
||||
|
||||
final int chosen = FOptionPane.showOptionDialog(sb.toString(), "Migration warning", FOptionPane.WARNING_ICON, fixOrContinue);
|
||||
|
||||
if (chosen != 1) {
|
||||
// i.e. option 0 was chosen or the dialog was otherwise closed
|
||||
return;
|
||||
}
|
||||
}
|
||||
_unknownDeckCombo.setEnabled(false);
|
||||
_moveCheckbox.setEnabled(false);
|
||||
_overwriteCheckbox.setEnabled(false);
|
||||
|
||||
// stop updating the operation log -- the importer needs it now
|
||||
_operationLogUpdater.requestStop();
|
||||
|
||||
// jump to the bottom of the log text area so it starts autoscrolling again
|
||||
// note that since it is controlled by a SmartScroller, just setting the caret position will not work
|
||||
final JScrollBar scrollBar = _operationLogScroller.getVerticalScrollBar();
|
||||
scrollBar.setValue(scrollBar.getMaximum());
|
||||
|
||||
// start importing!
|
||||
final _Importer importer = new _Importer(
|
||||
_srcDir, _selections, _unknownDeckCombo, _operationLog, _progressBar,
|
||||
_moveCheckbox.isSelected(), _overwriteCheckbox.isSelected());
|
||||
importer.run();
|
||||
|
||||
_btnCancel.requestFocusInWindow();
|
||||
}
|
||||
|
||||
// ensure no other actions (except for cancel) can be taken while the import is in progress
|
||||
_btnStart.setEnabled(false);
|
||||
_btnChooseDir.setEnabled(false);
|
||||
|
||||
for (final Pair<FCheckBox, ? extends Map<File, File>> selection : _selections.values()) {
|
||||
selection.getLeft().setEnabled(false);
|
||||
}
|
||||
_unknownDeckCombo.setEnabled(false);
|
||||
_moveCheckbox.setEnabled(false);
|
||||
_overwriteCheckbox.setEnabled(false);
|
||||
|
||||
// stop updating the operation log -- the importer needs it now
|
||||
_operationLogUpdater.requestStop();
|
||||
|
||||
// jump to the bottom of the log text area so it starts autoscrolling again
|
||||
// note that since it is controlled by a SmartScroller, just setting the caret position will not work
|
||||
final JScrollBar scrollBar = _operationLogScroller.getVerticalScrollBar();
|
||||
scrollBar.setValue(scrollBar.getMaximum());
|
||||
|
||||
// start importing!
|
||||
final _Importer importer = new _Importer(
|
||||
_srcDir, _selections, _unknownDeckCombo, _operationLog, _progressBar,
|
||||
_moveCheckbox.isSelected(), _overwriteCheckbox.isSelected());
|
||||
importer.run();
|
||||
|
||||
_btnCancel.requestFocusInWindow();
|
||||
});
|
||||
|
||||
// import ready to proceed: enable the start button
|
||||
@@ -787,23 +761,20 @@ public class ImportDialog {
|
||||
log.append(" ").append(totalOps).append(" files\n");
|
||||
log.append(isOverwrite ? "O" : "Not o").append("verwriting existing files");
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
final String logText = log.toString();
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
final String logText = log.toString();
|
||||
|
||||
// setText is thread-safe, but the resizing is not, so might as well do this in the swing event loop thread
|
||||
_operationLog.setText(log.toString());
|
||||
// setText is thread-safe, but the resizing is not, so might as well do this in the swing event loop thread
|
||||
_operationLog.setText(log.toString());
|
||||
|
||||
if (_maxLogLength < logText.length()) {
|
||||
_maxLogLength = logText.length();
|
||||
if (_maxLogLength < logText.length()) {
|
||||
_maxLogLength = logText.length();
|
||||
|
||||
// resize the panel properly for the new log contents
|
||||
_selectionPanel.getParent().validate();
|
||||
_selectionPanel.getParent().invalidate();
|
||||
_topPanel.getParent().validate();
|
||||
_topPanel.getParent().invalidate();
|
||||
}
|
||||
// resize the panel properly for the new log contents
|
||||
_selectionPanel.getParent().validate();
|
||||
_selectionPanel.getParent().invalidate();
|
||||
_topPanel.getParent().validate();
|
||||
_topPanel.getParent().invalidate();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -813,12 +784,8 @@ public class ImportDialog {
|
||||
public void run() {
|
||||
try { _run(); } catch (final InterruptedException e) {
|
||||
_cancel = true;
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() {
|
||||
// we never interrupt the thread, so this is not expected to happen
|
||||
BugReporter.reportException(e);
|
||||
}
|
||||
});
|
||||
// we never interrupt the thread, so this is not expected to happen
|
||||
SwingUtilities.invokeLater(() -> BugReporter.reportException(e));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -898,11 +865,9 @@ public class ImportDialog {
|
||||
|
||||
final int curOpNum = ++numOps;
|
||||
if (0 == curOpNum % progressInterval) {
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() {
|
||||
if (_cancel) { return; }
|
||||
_progressBar.setValue(curOpNum);
|
||||
}
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
if (_cancel) { return; }
|
||||
_progressBar.setValue(curOpNum);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -972,11 +937,9 @@ public class ImportDialog {
|
||||
|
||||
// report any exceptions in a standard dialog
|
||||
// note that regular I/O errors don't throw, they'll just be mentioned in the log
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() {
|
||||
_progressBar.setString("Error");
|
||||
BugReporter.reportException(e);
|
||||
}
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
_progressBar.setString("Error");
|
||||
BugReporter.reportException(e);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -383,12 +383,7 @@ public class ImportSourceAnalyzer {
|
||||
|
||||
// planar cards now don't have the ".full" part in their filenames
|
||||
nameUpdates = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
|
||||
final Predicate<PaperCard> predPlanes = new Predicate<PaperCard>() {
|
||||
@Override
|
||||
public boolean apply(final PaperCard arg0) {
|
||||
return arg0.getRules().getType().isPlane() || arg0.getRules().getType().isPhenomenon();
|
||||
}
|
||||
};
|
||||
final Predicate<PaperCard> predPlanes = arg0 -> arg0.getRules().getType().isPlane() || arg0.getRules().getType().isPhenomenon();
|
||||
|
||||
for (final PaperCard c : Iterables.filter(FModel.getMagicDb().getVariantCards().getAllCards(), predPlanes)) {
|
||||
String baseName = c.getCardImageKey();
|
||||
|
||||
@@ -167,15 +167,13 @@ public class ListChooser<T> {
|
||||
}
|
||||
int result;
|
||||
do {
|
||||
SwingUtilities.invokeLater(new Runnable() { //invoke later so selected item not set until dialog open
|
||||
@Override
|
||||
public void run() {
|
||||
if (list.contains(item)) {
|
||||
lstChoices.setSelectedValue(item, true);
|
||||
}
|
||||
else {
|
||||
lstChoices.setSelectedIndex(0);
|
||||
}
|
||||
//invoke later so selected item not set until dialog open
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
if (list.contains(item)) {
|
||||
lstChoices.setSelectedValue(item, true);
|
||||
}
|
||||
else {
|
||||
lstChoices.setSelectedIndex(0);
|
||||
}
|
||||
});
|
||||
this.optionPane.setVisible(true);
|
||||
|
||||
@@ -10,8 +10,6 @@ import java.awt.Dimension;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Point;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.awt.event.MouseWheelEvent;
|
||||
import java.awt.event.MouseWheelListener;
|
||||
@@ -530,13 +528,9 @@ public class MenuScroller {
|
||||
private class MenuScrollTimer extends Timer {
|
||||
|
||||
public MenuScrollTimer(final int increment, int interval) {
|
||||
super(interval, new ActionListener() {
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
firstIndex += increment;
|
||||
refreshMenu();
|
||||
}
|
||||
super(interval, e -> {
|
||||
firstIndex += increment;
|
||||
refreshMenu();
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -644,11 +638,10 @@ public class MenuScroller {
|
||||
}
|
||||
|
||||
public static void setMenuSelectedIndex(final JPopupMenu menu, final int index, boolean scrollUp) {
|
||||
SwingUtilities.invokeLater(new Runnable() { //use invoke later to ensure first enabled item selected by default
|
||||
public void run() {
|
||||
for (int i = 0; i < index; i++) {
|
||||
menu.dispatchEvent(new KeyEvent(menu, KeyEvent.KEY_PRESSED, 0, 0, scrollUp ? KeyEvent.VK_UP : KeyEvent.VK_DOWN, KeyEvent.CHAR_UNDEFINED));
|
||||
}
|
||||
//use invoke later to ensure first enabled item selected by default
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
for (int i = 0; i < index; i++) {
|
||||
menu.dispatchEvent(new KeyEvent(menu, KeyEvent.KEY_PRESSED, 0, 0, scrollUp ? KeyEvent.VK_UP : KeyEvent.VK_DOWN, KeyEvent.CHAR_UNDEFINED));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -4,8 +4,6 @@ import java.awt.Color;
|
||||
import java.awt.Component;
|
||||
import java.awt.KeyboardFocusManager;
|
||||
import java.awt.Rectangle;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
import javax.swing.JPanel;
|
||||
|
||||
@@ -77,8 +75,7 @@ public final class SOverlayUtils {
|
||||
btnCloseTopRight.setOpaque(false);
|
||||
btnCloseTopRight.setBackground(new Color(0, 0, 0));
|
||||
btnCloseTopRight.setFocusPainted(false);
|
||||
btnCloseTopRight.addActionListener(new ActionListener() { @Override
|
||||
public void actionPerformed(final ActionEvent arg0) { SOverlayUtils.hideOverlay(); } });
|
||||
btnCloseTopRight.addActionListener(arg0 -> SOverlayUtils.hideOverlay());
|
||||
|
||||
overlay.removeAll();
|
||||
overlay.setLayout(null);
|
||||
|
||||
@@ -69,22 +69,16 @@ public class SDisplayUtil {
|
||||
}
|
||||
|
||||
final TimerTask tt = new TimerTask() {
|
||||
@Override public final void run() {
|
||||
@Override public void run() {
|
||||
counter++;
|
||||
if (counter != (steps - 1)) {
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() {
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
final int r = newR == null ? oldR : newR[counter];
|
||||
final int a = newA == null ? oldA : newR[counter];
|
||||
pnl.setBackground(new Color(r, oldG, oldB, a));
|
||||
}
|
||||
});
|
||||
} else {
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() {
|
||||
pnl.setBackground(new Color(oldR, oldG, oldB, oldA));
|
||||
}
|
||||
});
|
||||
SwingUtilities.invokeLater(() -> pnl.setBackground(new Color(oldR, oldG, oldB, oldA)));
|
||||
remindIsRunning = false;
|
||||
timer1.cancel();
|
||||
newR = null;
|
||||
@@ -102,19 +96,17 @@ public class SDisplayUtil {
|
||||
/** @param tab0   {@link java.GuiBase.getInterface().framework.IVDoc} */
|
||||
public static void showTab(final IVDoc<? extends ICDoc> tab0) {
|
||||
|
||||
final Runnable showTabRoutine = new Runnable() {
|
||||
@Override public void run() {
|
||||
// FThreads.assertExecutedByEdt(true); - always true
|
||||
final Component c = KeyboardFocusManager.getCurrentKeyboardFocusManager().getPermanentFocusOwner();
|
||||
final DragCell dc = tab0.getParentCell();
|
||||
if (dc != null) {
|
||||
dc.setSelected(tab0);
|
||||
}
|
||||
// set focus back to previous owner, if any
|
||||
// if (null != c && c instanceof FButton) { //pfps UGLY but maybe necessary (probably not)
|
||||
if (null != c) {
|
||||
c.requestFocusInWindow();
|
||||
}
|
||||
final Runnable showTabRoutine = () -> {
|
||||
// FThreads.assertExecutedByEdt(true); - always true
|
||||
final Component c = KeyboardFocusManager.getCurrentKeyboardFocusManager().getPermanentFocusOwner();
|
||||
final DragCell dc = tab0.getParentCell();
|
||||
if (dc != null) {
|
||||
dc.setSelected(tab0);
|
||||
}
|
||||
// set focus back to previous owner, if any
|
||||
// if (null != c && c instanceof FButton) { //pfps UGLY but maybe necessary (probably not)
|
||||
if (null != c) {
|
||||
c.requestFocusInWindow();
|
||||
}
|
||||
};
|
||||
if ( FThreads.isGuiThread() ) { //pfps run this now whether in EDT or not so that it doesn't clobber later stuff
|
||||
|
||||
@@ -75,13 +75,10 @@ public final class SLayoutIO {
|
||||
FView.SINGLETON_INSTANCE.getPnlContent().removeAll();
|
||||
// let it redraw everything first
|
||||
|
||||
FThreads.invokeInEdtLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
SLayoutIO.loadLayout(loadFile);
|
||||
SLayoutIO.saveLayout(null);
|
||||
SOverlayUtils.hideOverlay();
|
||||
}
|
||||
FThreads.invokeInEdtLater(() -> {
|
||||
SLayoutIO.loadLayout(loadFile);
|
||||
SLayoutIO.saveLayout(null);
|
||||
SOverlayUtils.hideOverlay();
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -90,22 +87,17 @@ public final class SLayoutIO {
|
||||
SOverlayUtils.genericOverlay();
|
||||
FView.SINGLETON_INSTANCE.getPnlContent().removeAll();
|
||||
|
||||
FThreads.invokeInEdtLater(new Runnable(){
|
||||
@Override public void run() {
|
||||
SLayoutIO.loadLayout(null);
|
||||
SOverlayUtils.hideOverlay();
|
||||
}
|
||||
FThreads.invokeInEdtLater(() -> {
|
||||
SLayoutIO.loadLayout(null);
|
||||
SOverlayUtils.hideOverlay();
|
||||
});
|
||||
}
|
||||
|
||||
public static void saveWindowLayout() {
|
||||
if (saveWindowRequested.getAndSet(true)) { return; }
|
||||
ThreadUtil.delay(500, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
finishSaveWindowLayout();
|
||||
saveWindowRequested.set(false);
|
||||
}
|
||||
ThreadUtil.delay(500, () -> {
|
||||
finishSaveWindowLayout();
|
||||
saveWindowRequested.set(false);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -259,13 +251,9 @@ public final class SLayoutIO {
|
||||
*/
|
||||
public static void saveLayout(final File f0) {
|
||||
if( saveRequested.getAndSet(true) ) return;
|
||||
ThreadUtil.delay(100, new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
save(f0);
|
||||
saveRequested.set(false);
|
||||
}
|
||||
ThreadUtil.delay(100, () -> {
|
||||
save(f0);
|
||||
saveRequested.set(false);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package forge.itemmanager;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.common.collect.ListMultimap;
|
||||
import com.google.common.collect.Lists;
|
||||
@@ -78,12 +77,7 @@ public class CardManager extends ItemManager<PaperCard> {
|
||||
continue; // skip card
|
||||
|
||||
// Try to retain only those editions accepted by the current Card Art Preference Policy
|
||||
List<CardEdition> acceptedEditions = Lists.newArrayList(Iterables.filter(entriesByEdition.keySet(), new Predicate<CardEdition>() {
|
||||
@Override
|
||||
public boolean apply(CardEdition ed) {
|
||||
return StaticData.instance().getCardArtPreference().accept(ed);
|
||||
}
|
||||
}));
|
||||
List<CardEdition> acceptedEditions = Lists.newArrayList(Iterables.filter(entriesByEdition.keySet(), ed -> StaticData.instance().getCardArtPreference().accept(ed)));
|
||||
|
||||
// If policy too strict, fall back to getting all editions.
|
||||
if (acceptedEditions.size() == 0)
|
||||
@@ -153,66 +147,50 @@ public class CardManager extends ItemManager<PaperCard> {
|
||||
final Localizer localizer = Localizer.getInstance();
|
||||
JMenu fmt = GuiUtils.createMenu(localizer.getMessage("lblFormat"));
|
||||
for (final GameFormat f : FModel.getFormats().getFilterList()) {
|
||||
GuiUtils.addMenuItem(fmt, f.getName(), null, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
itemManager.addFilter(new CardFormatFilter(itemManager, f));
|
||||
}
|
||||
}, FormatFilter.canAddFormat(f, itemManager.getFilter(CardFormatFilter.class)));
|
||||
GuiUtils.addMenuItem(fmt, f.getName(), null, () -> itemManager.addFilter(new CardFormatFilter(itemManager, f)),
|
||||
FormatFilter.canAddFormat(f, itemManager.getFilter(CardFormatFilter.class))
|
||||
);
|
||||
}
|
||||
menu.add(fmt);
|
||||
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblFormats") + "...", null, new Runnable() {
|
||||
@Override public void run() {
|
||||
final CardFormatFilter existingFilter = itemManager.getFilter(CardFormatFilter.class);
|
||||
if (existingFilter != null) {
|
||||
existingFilter.edit(itemManager);
|
||||
} else {
|
||||
final DialogChooseFormats dialog = new DialogChooseFormats();
|
||||
dialog.setWantReprintsCB(true); // assume user wants things permissive...
|
||||
dialog.setOkCallback(new Runnable() {
|
||||
@Override public void run() {
|
||||
final List<GameFormat> formats = dialog.getSelectedFormats();
|
||||
if (!formats.isEmpty()) {
|
||||
itemManager.addFilter(new CardFormatFilter(itemManager,formats,dialog.getWantReprints()));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblFormats") + "...", null, () -> {
|
||||
final CardFormatFilter existingFilter = itemManager.getFilter(CardFormatFilter.class);
|
||||
if (existingFilter != null) {
|
||||
existingFilter.edit(itemManager);
|
||||
} else {
|
||||
final DialogChooseFormats dialog = new DialogChooseFormats();
|
||||
dialog.setWantReprintsCB(true); // assume user wants things permissive...
|
||||
dialog.setOkCallback(() -> {
|
||||
final List<GameFormat> formats = dialog.getSelectedFormats();
|
||||
if (!formats.isEmpty()) {
|
||||
itemManager.addFilter(new CardFormatFilter(itemManager,formats,dialog.getWantReprints()));
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblSets") + "...", null, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
CardSetFilter existingFilter = itemManager.getFilter(CardSetFilter.class);
|
||||
if (existingFilter != null) {
|
||||
existingFilter.edit(itemManager);
|
||||
}
|
||||
else {
|
||||
List<String> limitedSets = getFilteredSetCodesInCatalog();
|
||||
final DialogChooseSets dialog = new DialogChooseSets(null, null, limitedSets, true);
|
||||
dialog.setOkCallback(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
List<String> sets = dialog.getSelectedSets();
|
||||
if (!sets.isEmpty()) {
|
||||
itemManager.addFilter(new CardSetFilter(itemManager, sets, limitedSets, dialog.getWantReprints()));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblSets") + "...", null, () -> {
|
||||
CardSetFilter existingFilter = itemManager.getFilter(CardSetFilter.class);
|
||||
if (existingFilter != null) {
|
||||
existingFilter.edit(itemManager);
|
||||
}
|
||||
else {
|
||||
List<String> limitedSets = getFilteredSetCodesInCatalog();
|
||||
final DialogChooseSets dialog = new DialogChooseSets(null, null, limitedSets, true);
|
||||
dialog.setOkCallback(() -> {
|
||||
List<String> sets = dialog.getSelectedSets();
|
||||
if (!sets.isEmpty()) {
|
||||
itemManager.addFilter(new CardSetFilter(itemManager, sets, limitedSets, dialog.getWantReprints()));
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
JMenu world = GuiUtils.createMenu(localizer.getMessage("lblQuestWorld"));
|
||||
for (final QuestWorld w : FModel.getWorlds()) {
|
||||
GuiUtils.addMenuItem(world, w.getName(), null, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
itemManager.addFilter(new CardQuestWorldFilter(itemManager, w));
|
||||
}
|
||||
}, CardQuestWorldFilter.canAddQuestWorld(w, itemManager.getFilter(CardQuestWorldFilter.class)));
|
||||
GuiUtils.addMenuItem(world, w.getName(), null, () -> itemManager.addFilter(new CardQuestWorldFilter(itemManager, w)),
|
||||
CardQuestWorldFilter.canAddQuestWorld(w, itemManager.getFilter(CardQuestWorldFilter.class))
|
||||
);
|
||||
}
|
||||
menu.add(world);
|
||||
|
||||
@@ -220,94 +198,63 @@ public class CardManager extends ItemManager<PaperCard> {
|
||||
JMenu blocks = GuiUtils.createMenu(localizer.getMessage("lblBlock"));
|
||||
final Iterable<GameFormat> blockFormats = FModel.getFormats().getBlockList();
|
||||
for (final GameFormat f : blockFormats) {
|
||||
GuiUtils.addMenuItem(blocks, f.getName(), null, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
itemManager.addFilter(new CardBlockFilter(itemManager, f));
|
||||
}
|
||||
}, CardBlockFilter.canAddCardBlockWorld(f, itemManager.getFilter(CardBlockFilter.class)));
|
||||
GuiUtils.addMenuItem(blocks, f.getName(), null, () -> itemManager.addFilter(new CardBlockFilter(itemManager, f)),
|
||||
CardBlockFilter.canAddCardBlockWorld(f, itemManager.getFilter(CardBlockFilter.class))
|
||||
);
|
||||
}
|
||||
menu.add(blocks);
|
||||
}
|
||||
|
||||
GuiUtils.addSeparator(menu);
|
||||
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblColors"), null, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
itemManager.addFilter(new CardColorFilter(itemManager));
|
||||
}
|
||||
}, itemManager.getFilter(CardColorFilter.class) == null);
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblTypes"), null, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
itemManager.addFilter(new CardTypeFilter(itemManager));
|
||||
}
|
||||
}, itemManager.getFilter(CardTypeFilter.class) == null);
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblConvertedManaCosts"), null, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
itemManager.addFilter(new CardCMCFilter(itemManager));
|
||||
}
|
||||
}, itemManager.getFilter(CardCMCFilter.class) == null);
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblColors"), null, () -> itemManager.addFilter(new CardColorFilter(itemManager)),
|
||||
itemManager.getFilter(CardColorFilter.class) == null
|
||||
);
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblTypes"), null, () -> itemManager.addFilter(new CardTypeFilter(itemManager)),
|
||||
itemManager.getFilter(CardTypeFilter.class) == null
|
||||
);
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblConvertedManaCosts"), null, () -> itemManager.addFilter(new CardCMCFilter(itemManager)),
|
||||
itemManager.getFilter(CardCMCFilter.class) == null
|
||||
);
|
||||
|
||||
GuiUtils.addSeparator(menu);
|
||||
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblCMCRange"), null, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
itemManager.addFilter(new CardCMCRangeFilter(itemManager));
|
||||
}
|
||||
}, itemManager.getFilter(CardCMCRangeFilter.class) == null);
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblPowerRange"), null, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
itemManager.addFilter(new CardPowerFilter(itemManager));
|
||||
}
|
||||
}, itemManager.getFilter(CardPowerFilter.class) == null);
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblToughnessRange"), null, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
itemManager.addFilter(new CardToughnessFilter(itemManager));
|
||||
}
|
||||
}, itemManager.getFilter(CardToughnessFilter.class) == null);
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblCMCRange"), null, () -> itemManager.addFilter(new CardCMCRangeFilter(itemManager)),
|
||||
itemManager.getFilter(CardCMCRangeFilter.class) == null
|
||||
);
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblPowerRange"), null, () -> itemManager.addFilter(new CardPowerFilter(itemManager)),
|
||||
itemManager.getFilter(CardPowerFilter.class) == null
|
||||
);
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblToughnessRange"), null, () -> itemManager.addFilter(new CardToughnessFilter(itemManager)),
|
||||
itemManager.getFilter(CardToughnessFilter.class) == null
|
||||
);
|
||||
|
||||
GuiUtils.addSeparator(menu);
|
||||
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblFoil"), null, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
itemManager.addFilter(new CardFoilFilter(itemManager));
|
||||
}
|
||||
}, itemManager.getFilter(CardFoilFilter.class) == null);
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblFoil"), null, () -> itemManager.addFilter(new CardFoilFilter(itemManager)),
|
||||
itemManager.getFilter(CardFoilFilter.class) == null
|
||||
);
|
||||
|
||||
if (QuestMode) {
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblPersonalRating"), null, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
itemManager.addFilter(new CardRatingFilter(itemManager));
|
||||
}
|
||||
}, itemManager.getFilter(CardRatingFilter.class) == null);
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblPersonalRating"), null, () -> itemManager.addFilter(new CardRatingFilter(itemManager)),
|
||||
itemManager.getFilter(CardRatingFilter.class) == null
|
||||
);
|
||||
}
|
||||
|
||||
GuiUtils.addSeparator(menu);
|
||||
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblAdvanced")+ "...", null, new Runnable() {
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public void run() {
|
||||
AdvancedSearchFilter<PaperCard> filter = itemManager.getFilter(AdvancedSearchFilter.class);
|
||||
if (filter != null) {
|
||||
filter.edit();
|
||||
}
|
||||
else {
|
||||
filter = new AdvancedSearchFilter<>(itemManager);
|
||||
itemManager.lockFiltering = true; //ensure filter not applied until added
|
||||
boolean result = filter.edit();
|
||||
itemManager.lockFiltering = false;
|
||||
if (result) {
|
||||
itemManager.addFilter(filter);
|
||||
}
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblAdvanced")+ "...", null, () -> {
|
||||
AdvancedSearchFilter<PaperCard> filter = itemManager.getFilter(AdvancedSearchFilter.class);
|
||||
if (filter != null) {
|
||||
filter.edit();
|
||||
}
|
||||
else {
|
||||
filter = new AdvancedSearchFilter<>(itemManager);
|
||||
itemManager.lockFiltering = true; //ensure filter not applied until added
|
||||
boolean result = filter.edit();
|
||||
itemManager.lockFiltering = false;
|
||||
if (result) {
|
||||
itemManager.addFilter(filter);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -9,8 +9,6 @@ import java.util.Map.Entry;
|
||||
|
||||
import javax.swing.JMenu;
|
||||
import javax.swing.JTable;
|
||||
import javax.swing.event.ListSelectionEvent;
|
||||
import javax.swing.event.ListSelectionListener;
|
||||
|
||||
import forge.itemmanager.filters.*;
|
||||
import forge.localinstance.properties.ForgePreferences;
|
||||
@@ -71,20 +69,13 @@ public final class DeckManager extends ItemManager<DeckProxy> implements IHasGam
|
||||
super(DeckProxy.class, cDetailPicture, true, false);
|
||||
this.gameType = gt;
|
||||
|
||||
this.addSelectionListener(new ListSelectionListener() {
|
||||
@Override public void valueChanged(final ListSelectionEvent e) {
|
||||
if (cmdSelect != null) {
|
||||
cmdSelect.run();
|
||||
}
|
||||
this.addSelectionListener(e -> {
|
||||
if (cmdSelect != null) {
|
||||
cmdSelect.run();
|
||||
}
|
||||
});
|
||||
|
||||
this.setItemActivateCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
editDeck(getSelectedItem());
|
||||
}
|
||||
});
|
||||
this.setItemActivateCommand((UiCommand) () -> editDeck(getSelectedItem()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -180,12 +171,7 @@ public final class DeckManager extends ItemManager<DeckProxy> implements IHasGam
|
||||
fullPath = parentPath + key.toString();
|
||||
}
|
||||
final String finalFullPath = fullPath;
|
||||
GuiUtils.addMenuItem(menu, key.toString(), null, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
addFilter(new DeckFolderFilter(DeckManager.this, finalFullPath));
|
||||
}
|
||||
}, true);
|
||||
GuiUtils.addMenuItem(menu, key.toString(), null, () -> addFilter(new DeckFolderFilter(DeckManager.this, finalFullPath)), true);
|
||||
Map value = (Map) tree.get(key);
|
||||
if (value.size() > 0) {
|
||||
final JMenu submenu = GuiUtils.createMenu(key.toString());
|
||||
@@ -221,64 +207,51 @@ public final class DeckManager extends ItemManager<DeckProxy> implements IHasGam
|
||||
final JMenu fmt = GuiUtils.createMenu(localizer.getMessage("lblFormat"));
|
||||
|
||||
for (final GameFormat f : FModel.getFormats().getFilterList()) {
|
||||
GuiUtils.addMenuItem(fmt, f.getName(), null, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
addFilter(new DeckFormatFilter(DeckManager.this, f));
|
||||
}
|
||||
}, FormatFilter.canAddFormat(f, getFilter(DeckFormatFilter.class)));
|
||||
GuiUtils.addMenuItem(fmt, f.getName(), null, () -> addFilter(new DeckFormatFilter(DeckManager.this, f)),
|
||||
FormatFilter.canAddFormat(f, getFilter(DeckFormatFilter.class))
|
||||
);
|
||||
}
|
||||
menu.add(fmt);
|
||||
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblFormats") + "...", null, new Runnable() {
|
||||
@Override public void run() {
|
||||
final DeckFormatFilter existingFilter = getFilter(DeckFormatFilter.class);
|
||||
if (existingFilter != null) {
|
||||
existingFilter.edit();
|
||||
} else {
|
||||
final DialogChooseFormats dialog = new DialogChooseFormats();
|
||||
dialog.setOkCallback(new Runnable() {
|
||||
@Override public void run() {
|
||||
final List<GameFormat> formats = dialog.getSelectedFormats();
|
||||
if (!formats.isEmpty()) {
|
||||
for(GameFormat format: formats) {
|
||||
addFilter(new DeckFormatFilter(DeckManager.this, format));
|
||||
}
|
||||
}
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblFormats") + "...", null, () -> {
|
||||
final DeckFormatFilter existingFilter = getFilter(DeckFormatFilter.class);
|
||||
if (existingFilter != null) {
|
||||
existingFilter.edit();
|
||||
} else {
|
||||
final DialogChooseFormats dialog = new DialogChooseFormats();
|
||||
dialog.setOkCallback(() -> {
|
||||
final List<GameFormat> formats = dialog.getSelectedFormats();
|
||||
if (!formats.isEmpty()) {
|
||||
for(GameFormat format: formats) {
|
||||
addFilter(new DeckFormatFilter(DeckManager.this, format));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblSets") + "...", null, new Runnable() {
|
||||
@Override public void run() {
|
||||
final DeckSetFilter existingFilter = getFilter(DeckSetFilter.class);
|
||||
if (existingFilter != null) {
|
||||
existingFilter.edit();
|
||||
} else {
|
||||
List<String> limitedSets = getFilteredSetCodesInCatalog();
|
||||
final DialogChooseSets dialog = new DialogChooseSets(null, null, limitedSets, true);
|
||||
dialog.setOkCallback(new Runnable() {
|
||||
@Override public void run() {
|
||||
final List<String> sets = dialog.getSelectedSets();
|
||||
if (!sets.isEmpty()) {
|
||||
addFilter(new DeckSetFilter(DeckManager.this, sets, limitedSets, dialog.getWantReprints()));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblSets") + "...", null, () -> {
|
||||
final DeckSetFilter existingFilter = getFilter(DeckSetFilter.class);
|
||||
if (existingFilter != null) {
|
||||
existingFilter.edit();
|
||||
} else {
|
||||
List<String> limitedSets = getFilteredSetCodesInCatalog();
|
||||
final DialogChooseSets dialog = new DialogChooseSets(null, null, limitedSets, true);
|
||||
dialog.setOkCallback(() -> {
|
||||
final List<String> sets = dialog.getSelectedSets();
|
||||
if (!sets.isEmpty()) {
|
||||
addFilter(new DeckSetFilter(DeckManager.this, sets, limitedSets, dialog.getWantReprints()));
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
final JMenu world = GuiUtils.createMenu(localizer.getMessage("lblQuestWorld"));
|
||||
for (final QuestWorld w : FModel.getWorlds()) {
|
||||
GuiUtils.addMenuItem(world, w.getName(), null, new Runnable() {
|
||||
@Override public void run() {
|
||||
addFilter(new DeckQuestWorldFilter(DeckManager.this, w));
|
||||
}
|
||||
}, DeckQuestWorldFilter.canAddQuestWorld(w, getFilter(DeckQuestWorldFilter.class)));
|
||||
GuiUtils.addMenuItem(world, w.getName(), null, () -> addFilter(new DeckQuestWorldFilter(DeckManager.this, w)),
|
||||
DeckQuestWorldFilter.canAddQuestWorld(w, getFilter(DeckQuestWorldFilter.class))
|
||||
);
|
||||
}
|
||||
menu.add(world);
|
||||
|
||||
@@ -286,43 +259,33 @@ public final class DeckManager extends ItemManager<DeckProxy> implements IHasGam
|
||||
JMenu blocks = GuiUtils.createMenu(localizer.getMessage("lblBlock"));
|
||||
final Iterable<GameFormat> blockFormats = FModel.getFormats().getBlockList();
|
||||
for (final GameFormat f : blockFormats) {
|
||||
GuiUtils.addMenuItem(blocks, f.getName(), null, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
addFilter(new DeckBlockFilter(DeckManager.this, f));
|
||||
}
|
||||
}, DeckBlockFilter.canAddCardBlock(f, getFilter(DeckBlockFilter.class)));
|
||||
GuiUtils.addMenuItem(blocks, f.getName(), null, () -> addFilter(new DeckBlockFilter(DeckManager.this, f)),
|
||||
DeckBlockFilter.canAddCardBlock(f, getFilter(DeckBlockFilter.class))
|
||||
);
|
||||
}
|
||||
menu.add(blocks);
|
||||
}
|
||||
|
||||
GuiUtils.addSeparator(menu);
|
||||
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblColors"), null, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
addFilter(new DeckColorFilter(DeckManager.this));
|
||||
}
|
||||
}, getFilter(DeckColorFilter.class) == null);
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblColors"), null, () -> addFilter(new DeckColorFilter(DeckManager.this)),
|
||||
getFilter(DeckColorFilter.class) == null
|
||||
);
|
||||
|
||||
GuiUtils.addSeparator(menu);
|
||||
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblAdvanced") + "...", null, new Runnable() {
|
||||
@Override
|
||||
@SuppressWarnings("unchecked")
|
||||
public void run() {
|
||||
AdvancedSearchFilter<DeckProxy> filter = getFilter(AdvancedSearchFilter.class);
|
||||
if (filter != null) {
|
||||
filter.edit();
|
||||
}
|
||||
else {
|
||||
filter = new AdvancedSearchFilter<>(DeckManager.this);
|
||||
lockFiltering = true; //ensure filter not applied until added
|
||||
boolean result = filter.edit();
|
||||
lockFiltering = false;
|
||||
if (result) {
|
||||
addFilter(filter);
|
||||
}
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblAdvanced") + "...", null, () -> {
|
||||
AdvancedSearchFilter<DeckProxy> filter = getFilter(AdvancedSearchFilter.class);
|
||||
if (filter != null) {
|
||||
filter.edit();
|
||||
}
|
||||
else {
|
||||
filter = new AdvancedSearchFilter<>(DeckManager.this);
|
||||
lockFiltering = true; //ensure filter not applied until added
|
||||
boolean result = filter.edit();
|
||||
lockFiltering = false;
|
||||
if (result) {
|
||||
addFilter(filter);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -187,38 +187,22 @@ public abstract class ItemManager<T extends InventoryItem> extends JPanel implem
|
||||
this.add(this.currentView.getPnlOptions());
|
||||
this.add(this.currentView.getScroller());
|
||||
|
||||
final Runnable cmdAddCurrentSearch = new Runnable() {
|
||||
@Override public void run() {
|
||||
final ItemFilter<? extends T> searchFilter = mainSearchFilter.createCopy();
|
||||
if (searchFilter != null) {
|
||||
lockFiltering = true; //prevent updating filtering from this change
|
||||
addFilter(searchFilter);
|
||||
mainSearchFilter.reset();
|
||||
lockFiltering = false;
|
||||
}
|
||||
final Runnable cmdAddCurrentSearch = () -> {
|
||||
final ItemFilter<? extends T> searchFilter = mainSearchFilter.createCopy();
|
||||
if (searchFilter != null) {
|
||||
lockFiltering = true; //prevent updating filtering from this change
|
||||
addFilter(searchFilter);
|
||||
mainSearchFilter.reset();
|
||||
lockFiltering = false;
|
||||
}
|
||||
};
|
||||
final Runnable cmdResetFilters = new Runnable() {
|
||||
@Override public void run() {
|
||||
resetFilters();
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
focus();
|
||||
}
|
||||
});
|
||||
}
|
||||
final Runnable cmdResetFilters = () -> {
|
||||
resetFilters();
|
||||
SwingUtilities.invokeLater(ItemManager.this::focus);
|
||||
};
|
||||
final Runnable cmdHideFilters = new Runnable() {
|
||||
@Override public void run() {
|
||||
setHideFilters(!getHideFilters());
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
focus();
|
||||
}
|
||||
});
|
||||
}
|
||||
final Runnable cmdHideFilters = () -> {
|
||||
setHideFilters(!getHideFilters());
|
||||
SwingUtilities.invokeLater(ItemManager.this::focus);
|
||||
};
|
||||
|
||||
this.mainSearchFilter.getMainComponent().addKeyListener(new KeyAdapter() {
|
||||
@@ -232,35 +216,31 @@ public abstract class ItemManager<T extends InventoryItem> extends JPanel implem
|
||||
});
|
||||
|
||||
//setup command for btnFilters
|
||||
final UiCommand cmdBuildFilterMenu = new UiCommand() {
|
||||
@Override public void run() {
|
||||
final JPopupMenu menu = new JPopupMenu(Localizer.getInstance().getMessage("lblFilterMenu"));
|
||||
if (hideFilters) {
|
||||
GuiUtils.addMenuItem(menu, Localizer.getInstance().getMessage("lblShowFilters"), null, cmdHideFilters);
|
||||
} else {
|
||||
final JMenu addMenu = GuiUtils.createMenu(Localizer.getInstance().getMessage("lblAddOrEditFilter"));
|
||||
GuiUtils.addMenuItem(addMenu, Localizer.getInstance().getMessage("lblCurrentTextSearch"),
|
||||
KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()),
|
||||
cmdAddCurrentSearch, !mainSearchFilter.isEmpty());
|
||||
if (config != ItemManagerConfig.STRING_ONLY) {
|
||||
buildAddFilterMenu(addMenu);
|
||||
}
|
||||
menu.add(addMenu);
|
||||
GuiUtils.addSeparator(menu);
|
||||
GuiUtils.addMenuItem(menu, Localizer.getInstance().getMessage("lblResetFilters"), null, cmdResetFilters);
|
||||
GuiUtils.addMenuItem(menu, Localizer.getInstance().getMessage("lblHideFilters"), null, cmdHideFilters);
|
||||
final UiCommand cmdBuildFilterMenu = () -> {
|
||||
final JPopupMenu menu = new JPopupMenu(Localizer.getInstance().getMessage("lblFilterMenu"));
|
||||
if (hideFilters) {
|
||||
GuiUtils.addMenuItem(menu, Localizer.getInstance().getMessage("lblShowFilters"), null, cmdHideFilters);
|
||||
} else {
|
||||
final JMenu addMenu = GuiUtils.createMenu(Localizer.getInstance().getMessage("lblAddOrEditFilter"));
|
||||
GuiUtils.addMenuItem(addMenu, Localizer.getInstance().getMessage("lblCurrentTextSearch"),
|
||||
KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()),
|
||||
cmdAddCurrentSearch, !mainSearchFilter.isEmpty());
|
||||
if (config != ItemManagerConfig.STRING_ONLY) {
|
||||
buildAddFilterMenu(addMenu);
|
||||
}
|
||||
menu.show(btnFilters, 0, btnFilters.getHeight());
|
||||
menu.add(addMenu);
|
||||
GuiUtils.addSeparator(menu);
|
||||
GuiUtils.addMenuItem(menu, Localizer.getInstance().getMessage("lblResetFilters"), null, cmdResetFilters);
|
||||
GuiUtils.addMenuItem(menu, Localizer.getInstance().getMessage("lblHideFilters"), null, cmdHideFilters);
|
||||
}
|
||||
menu.show(btnFilters, 0, btnFilters.getHeight());
|
||||
};
|
||||
this.btnFilters.setCommand(cmdBuildFilterMenu);
|
||||
this.btnFilters.setRightClickCommand(cmdBuildFilterMenu); //show menu on right-click too
|
||||
|
||||
this.btnViewOptions.setCommand(new Runnable() {
|
||||
@Override public void run() {
|
||||
currentView.getPnlOptions().setVisible(!currentView.getPnlOptions().isVisible());
|
||||
revalidate();
|
||||
}
|
||||
this.btnViewOptions.setCommand((Runnable) () -> {
|
||||
currentView.getPnlOptions().setVisible(!currentView.getPnlOptions().isVisible());
|
||||
revalidate();
|
||||
});
|
||||
|
||||
//setup initial filters
|
||||
@@ -885,12 +865,7 @@ public abstract class ItemManager<T extends InventoryItem> extends JPanel implem
|
||||
if (!applyFilters()) {
|
||||
filter.afterFiltersApplied(); //ensure this called even if filters didn't need to be updated
|
||||
}
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
filter.getMainComponent().requestFocusInWindow();
|
||||
}
|
||||
});
|
||||
SwingUtilities.invokeLater(() -> filter.getMainComponent().requestFocusInWindow());
|
||||
}
|
||||
|
||||
public void restoreDefaultFilters() {
|
||||
@@ -1021,7 +996,7 @@ public abstract class ItemManager<T extends InventoryItem> extends JPanel implem
|
||||
}
|
||||
|
||||
protected Iterable<Entry<T, Integer>> getUnique(final Iterable<Entry<T, Integer>> items) {
|
||||
return Aggregates.uniqueByLast(items, this.pool.FN_GET_NAME);
|
||||
return Aggregates.uniqueByLast(items, from -> from.getKey().getName());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1036,12 +1011,12 @@ public abstract class ItemManager<T extends InventoryItem> extends JPanel implem
|
||||
}
|
||||
|
||||
if (useFilter && this.wantUnique) {
|
||||
final Predicate<Entry<T, Integer>> filterForPool = Predicates.compose(this.filterPredicate, this.pool.FN_GET_KEY);
|
||||
final Predicate<Entry<T, Integer>> filterForPool = Predicates.compose(this.filterPredicate, Entry::getKey);
|
||||
final Iterable<Entry<T, Integer>> items = getUnique(Iterables.filter(this.pool, filterForPool));
|
||||
this.model.addItems(items);
|
||||
}
|
||||
else if (useFilter) {
|
||||
final Predicate<Entry<T, Integer>> pred = Predicates.compose(this.filterPredicate, this.pool.FN_GET_KEY);
|
||||
final Predicate<Entry<T, Integer>> pred = Predicates.compose(this.filterPredicate, Entry::getKey);
|
||||
this.model.addItems(Iterables.filter(this.pool, pred));
|
||||
}
|
||||
else if (this.wantUnique) {
|
||||
@@ -1065,7 +1040,7 @@ public abstract class ItemManager<T extends InventoryItem> extends JPanel implem
|
||||
}
|
||||
else if (this.wantUnique) {
|
||||
total = 0;
|
||||
final Iterable<Entry<T, Integer>> items = Aggregates.uniqueByLast(this.pool, this.pool.FN_GET_NAME);
|
||||
final Iterable<Entry<T, Integer>> items = Aggregates.uniqueByLast(this.pool, from -> from.getKey().getName());
|
||||
for (final Entry<T, Integer> entry : items) {
|
||||
total += entry.getValue();
|
||||
}
|
||||
|
||||
@@ -83,30 +83,18 @@ public class AdvancedSearchFilter<T extends InventoryItem> extends ItemFilter<T>
|
||||
if (hasFilters) {
|
||||
//add a menu item for each filter to allow easily editing just that filter
|
||||
for (final IFilterControl<T> control : model.getControls()) {
|
||||
GuiUtils.addMenuItem(menu, FSkin.encodeSymbols(control.getFilter().toString(), false), null, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
model.editFilterControl(control, onFilterChange);
|
||||
}
|
||||
});
|
||||
GuiUtils.addMenuItem(menu, FSkin.encodeSymbols(control.getFilter().toString(), false),
|
||||
null, () -> model.editFilterControl(control, onFilterChange));
|
||||
}
|
||||
GuiUtils.addSeparator(menu);
|
||||
}
|
||||
|
||||
GuiUtils.addMenuItem(menu, Localizer.getInstance().getMessage("lblEditExpression"), null, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
edit();
|
||||
}
|
||||
});
|
||||
GuiUtils.addMenuItem(menu, Localizer.getInstance().getMessage("lblEditExpression"), null, AdvancedSearchFilter.this::edit);
|
||||
|
||||
if (hasFilters) {
|
||||
GuiUtils.addMenuItem(menu, Localizer.getInstance().getMessage("lblClearFilter"), null, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
reset();
|
||||
itemManager.applyNewOrModifiedFilter(AdvancedSearchFilter.this);
|
||||
}
|
||||
GuiUtils.addMenuItem(menu, Localizer.getInstance().getMessage("lblClearFilter"), null, () -> {
|
||||
reset();
|
||||
itemManager.applyNewOrModifiedFilter(AdvancedSearchFilter.this);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -53,13 +53,9 @@ public class CardCMCFilter extends StatTypeFilter<PaperCard> {
|
||||
}
|
||||
|
||||
if (cmcs.size() == buttonMap.size()) {
|
||||
return new Predicate<PaperCard>() { //use custom return true delegate to validate the item is a card
|
||||
@Override
|
||||
public boolean apply(PaperCard card) {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
//use custom return true delegate to validate the item is a card
|
||||
return card -> true;
|
||||
}
|
||||
return Predicates.compose(Predicates.or(cmcs), PaperCard.FN_GET_RULES);
|
||||
return Predicates.compose(Predicates.or(cmcs), PaperCard::getRules);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,6 +33,6 @@ public class CardCMCRangeFilter extends ValueRangeFilter<PaperCard> {
|
||||
if (predicate == null) {
|
||||
return Predicates.alwaysTrue();
|
||||
}
|
||||
return Predicates.compose(predicate, PaperCard.FN_GET_RULES);
|
||||
return Predicates.compose(predicate, PaperCard::getRules);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,14 +42,11 @@ public class CardFormatFilter extends FormatFilter<PaperCard> {
|
||||
final CardFormatFilter itemFilter = this;
|
||||
dialog.setWantReprintsCB(allowReprints);
|
||||
|
||||
dialog.setOkCallback(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
formats.clear();
|
||||
formats.addAll(dialog.getSelectedFormats());
|
||||
allowReprints = dialog.getWantReprints();
|
||||
itemManager.addFilter(itemFilter); // this adds/updates the current filter...
|
||||
}
|
||||
dialog.setOkCallback(() -> {
|
||||
formats.clear();
|
||||
formats.addAll(dialog.getSelectedFormats());
|
||||
allowReprints = dialog.getWantReprints();
|
||||
itemManager.addFilter(itemFilter); // this adds/updates the current filter...
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,6 +34,6 @@ public class CardPowerFilter extends ValueRangeFilter<PaperCard> {
|
||||
return Predicates.alwaysTrue();
|
||||
}
|
||||
predicate = Predicates.and(predicate, CardRulesPredicates.Presets.IS_CREATURE);
|
||||
return Predicates.compose(predicate, PaperCard.FN_GET_RULES);
|
||||
return Predicates.compose(predicate, PaperCard::getRules);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
package forge.itemmanager.filters;
|
||||
|
||||
import java.awt.event.ItemEvent;
|
||||
import java.awt.event.ItemListener;
|
||||
|
||||
import javax.swing.JPanel;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
@@ -57,12 +54,9 @@ public class CardSearchFilter extends TextSearchFilter<PaperCard> {
|
||||
cbSearchMode.addItem("in");
|
||||
cbSearchMode.addItem("not in");
|
||||
cbSearchMode.addTo(widget);
|
||||
cbSearchMode.addItemListener(new ItemListener() {
|
||||
@Override
|
||||
public void itemStateChanged(ItemEvent arg0) {
|
||||
if (!txtSearch.isEmpty()) {
|
||||
applyChange();
|
||||
}
|
||||
cbSearchMode.addItemListener(arg0 -> {
|
||||
if (!txtSearch.isEmpty()) {
|
||||
applyChange();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -92,12 +86,7 @@ public class CardSearchFilter extends TextSearchFilter<PaperCard> {
|
||||
private FLabel addButton(JPanel widget, String text) {
|
||||
FLabel button = new FLabel.Builder().text(text).hoverable().selectable().selected().build();
|
||||
|
||||
button.setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
applyChange();
|
||||
}
|
||||
});
|
||||
button.setCommand((UiCommand) this::applyChange);
|
||||
|
||||
widget.add(button);
|
||||
return button;
|
||||
|
||||
@@ -63,14 +63,11 @@ public class CardSetFilter extends CardFormatFilter {
|
||||
true, this.allowReprints);
|
||||
final CardSetFilter itemFilter = this;
|
||||
|
||||
dialog.setOkCallback(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
sets.clear();
|
||||
sets.addAll(dialog.getSelectedSets());
|
||||
allowReprints = dialog.getWantReprints();
|
||||
itemManager.addFilter(itemFilter); // this adds/updates the current filter
|
||||
}
|
||||
dialog.setOkCallback(() -> {
|
||||
sets.clear();
|
||||
sets.addAll(dialog.getSelectedSets());
|
||||
allowReprints = dialog.getWantReprints();
|
||||
itemManager.addFilter(itemFilter); // this adds/updates the current filter
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -34,6 +34,6 @@ public class CardToughnessFilter extends ValueRangeFilter<PaperCard> {
|
||||
return Predicates.alwaysTrue();
|
||||
}
|
||||
predicate = Predicates.and(predicate, CardRulesPredicates.Presets.IS_CREATURE);
|
||||
return Predicates.compose(predicate, PaperCard.FN_GET_RULES);
|
||||
return Predicates.compose(predicate, PaperCard::getRules);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,13 +51,9 @@ public class CardTypeFilter extends StatTypeFilter<PaperCard> {
|
||||
}
|
||||
|
||||
if (types.size() == buttonMap.size()) {
|
||||
return new Predicate<PaperCard>() { //use custom return true delegate to validate the item is a card
|
||||
@Override
|
||||
public boolean apply(PaperCard card) {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
//use custom return true delegate to validate the item is a card
|
||||
return card -> true;
|
||||
}
|
||||
return Predicates.compose(Predicates.or(types), PaperCard.FN_GET_RULES);
|
||||
return Predicates.compose(Predicates.or(types), PaperCard::getRules);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,17 +33,14 @@ public class DeckFolderFilter extends ListLabelFilter<DeckProxy> {
|
||||
|
||||
@Override
|
||||
protected final Predicate<DeckProxy> buildPredicate() {
|
||||
return new Predicate<DeckProxy>() {
|
||||
@Override
|
||||
public boolean apply(DeckProxy input) {
|
||||
String path = input.getPath();
|
||||
for (String folder : folders) {
|
||||
if (path.startsWith(folder)) {
|
||||
return true;
|
||||
}
|
||||
return input -> {
|
||||
String path = input.getPath();
|
||||
for (String folder : folders) {
|
||||
if (path.startsWith(folder)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -31,13 +31,10 @@ public class DeckFormatFilter extends FormatFilter<DeckProxy> {
|
||||
|
||||
public void edit() {
|
||||
final DialogChooseFormats dialog = new DialogChooseFormats(this.formats);
|
||||
dialog.setOkCallback(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
allowReprints = dialog.getWantReprints();
|
||||
formats.clear();
|
||||
formats.addAll(dialog.getSelectedFormats());
|
||||
}
|
||||
dialog.setOkCallback(() -> {
|
||||
allowReprints = dialog.getWantReprints();
|
||||
formats.clear();
|
||||
formats.addAll(dialog.getSelectedFormats());
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,16 +60,13 @@ public class DeckSetFilter extends DeckFormatFilter {
|
||||
true, this.allowReprints);
|
||||
final DeckSetFilter itemFilter = this;
|
||||
|
||||
dialog.setOkCallback(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
sets.clear();
|
||||
sets.addAll(dialog.getSelectedSets());
|
||||
allowReprints = dialog.getWantReprints();
|
||||
formats.clear();
|
||||
formats.add(new GameFormat(null, sets, null));
|
||||
itemManager.addFilter(itemFilter); // this adds/updates the current filter
|
||||
}
|
||||
dialog.setOkCallback(() -> {
|
||||
sets.clear();
|
||||
sets.addAll(dialog.getSelectedSets());
|
||||
allowReprints = dialog.getWantReprints();
|
||||
formats.clear();
|
||||
formats.add(new GameFormat(null, sets, null));
|
||||
itemManager.addFilter(itemFilter); // this adds/updates the current filter
|
||||
});
|
||||
}
|
||||
|
||||
@@ -90,11 +87,6 @@ public class DeckSetFilter extends DeckFormatFilter {
|
||||
|
||||
@Override
|
||||
protected Predicate<DeckProxy> buildPredicate() {
|
||||
return new Predicate<DeckProxy>() {
|
||||
@Override
|
||||
public boolean apply(DeckProxy input) {
|
||||
return input != null && sets.contains(input.getEdition().getCode());
|
||||
}
|
||||
};
|
||||
return input -> input != null && sets.contains(input.getEdition().getCode());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,8 +6,6 @@ import java.awt.Dimension;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.RenderingHints;
|
||||
import java.awt.event.ItemEvent;
|
||||
import java.awt.event.ItemListener;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
|
||||
@@ -56,12 +54,9 @@ public abstract class ItemFilter<T extends InventoryItem> {
|
||||
this.panel = new FilterPanel();
|
||||
|
||||
layoutCheckbox(this.chkEnable);
|
||||
this.chkEnable.addItemListener(new ItemListener() {
|
||||
@Override
|
||||
public void itemStateChanged(ItemEvent arg0) {
|
||||
updateEnabled();
|
||||
applyChange();
|
||||
}
|
||||
this.chkEnable.addItemListener(arg0 -> {
|
||||
updateEnabled();
|
||||
applyChange();
|
||||
});
|
||||
this.panel.add(this.chkEnable);
|
||||
|
||||
@@ -121,16 +116,13 @@ public abstract class ItemFilter<T extends InventoryItem> {
|
||||
|
||||
public final <U extends InventoryItem> Predicate<U> buildPredicate(Class<U> genericType) {
|
||||
final Predicate<T> predicate = this.buildPredicate();
|
||||
return new Predicate<U>() {
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public boolean apply(U item) {
|
||||
try {
|
||||
return predicate.apply((T)item);
|
||||
}
|
||||
catch (Exception ex) {
|
||||
return showUnsupportedItem(item); //if can't cast U to T, filter item out unless derived class can handle it
|
||||
}
|
||||
return item -> {
|
||||
try {
|
||||
//noinspection unchecked
|
||||
return predicate.apply((T)item);
|
||||
}
|
||||
catch (Exception ex) {
|
||||
return showUnsupportedItem(item); //if can't cast U to T, filter item out unless derived class can handle it
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -48,14 +48,11 @@ public abstract class StatTypeFilter<T extends InventoryItem> extends ToggleButt
|
||||
buttonMap.put(st, button);
|
||||
|
||||
//hook so right-clicking a button toggles itself on and toggles off all other buttons
|
||||
button.setRightClickCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
lockFiltering = true;
|
||||
SFilterUtil.showOnlyStat(st, button, buttonMap);
|
||||
lockFiltering = false;
|
||||
applyChange();
|
||||
}
|
||||
button.setRightClickCommand((UiCommand) () -> {
|
||||
lockFiltering = true;
|
||||
SFilterUtil.showOnlyStat(st, button, buttonMap);
|
||||
lockFiltering = false;
|
||||
applyChange();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -80,7 +77,7 @@ public abstract class StatTypeFilter<T extends InventoryItem> extends ToggleButt
|
||||
|
||||
for (StatTypes statTypes : buttonMap.keySet()) {
|
||||
if (statTypes.predicate != null) {
|
||||
int count = items.countAll(Predicates.compose(statTypes.predicate, PaperCard.FN_GET_RULES), PaperCard.class);
|
||||
int count = items.countAll(Predicates.compose(statTypes.predicate, PaperCard::getRules), PaperCard.class);
|
||||
buttonMap.get(statTypes).setText(String.valueOf(count));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
package forge.itemmanager.filters;
|
||||
|
||||
import java.awt.Component;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.KeyAdapter;
|
||||
import java.awt.event.KeyEvent;
|
||||
|
||||
@@ -110,12 +108,7 @@ public class TextSearchFilter<T extends InventoryItem> extends ItemFilter<T> {
|
||||
super.applyChange();
|
||||
}
|
||||
|
||||
private Timer changeTimer = new Timer(200, new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
applyChange();
|
||||
}
|
||||
});
|
||||
private Timer changeTimer = new Timer(200, arg0 -> applyChange());
|
||||
|
||||
@Override
|
||||
protected Predicate<T> buildPredicate() {
|
||||
|
||||
@@ -37,12 +37,9 @@ public abstract class ToggleButtonsFilter<T extends InventoryItem> extends ItemF
|
||||
.hoverable().selectable(true).selected(true)
|
||||
.build();
|
||||
|
||||
button.setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (lockFiltering) { return; }
|
||||
applyChange();
|
||||
}
|
||||
button.setCommand((UiCommand) () -> {
|
||||
if (lockFiltering) { return; }
|
||||
applyChange();
|
||||
});
|
||||
|
||||
this.buttons.add(button);
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
package forge.itemmanager.filters;
|
||||
|
||||
import java.awt.event.ItemEvent;
|
||||
import java.awt.event.ItemListener;
|
||||
|
||||
import javax.swing.JPanel;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
@@ -57,12 +54,9 @@ public class TokenSearchFilter extends TextSearchFilter<PaperToken> {
|
||||
cbSearchMode.addItem("in");
|
||||
cbSearchMode.addItem("not in");
|
||||
cbSearchMode.addTo(widget);
|
||||
cbSearchMode.addItemListener(new ItemListener() {
|
||||
@Override
|
||||
public void itemStateChanged(ItemEvent arg0) {
|
||||
if (!txtSearch.isEmpty()) {
|
||||
applyChange();
|
||||
}
|
||||
cbSearchMode.addItemListener(arg0 -> {
|
||||
if (!txtSearch.isEmpty()) {
|
||||
applyChange();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -92,12 +86,7 @@ public class TokenSearchFilter extends TextSearchFilter<PaperToken> {
|
||||
private FLabel addButton(JPanel widget, String text) {
|
||||
FLabel button = new FLabel.Builder().text(text).hoverable().selectable().selected().build();
|
||||
|
||||
button.setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
applyChange();
|
||||
}
|
||||
});
|
||||
button.setCommand((UiCommand) this::applyChange);
|
||||
|
||||
widget.add(button);
|
||||
return button;
|
||||
@@ -106,12 +95,7 @@ public class TokenSearchFilter extends TextSearchFilter<PaperToken> {
|
||||
@Override
|
||||
protected Predicate<PaperToken> buildPredicate() {
|
||||
// Don't filter anything out for now.
|
||||
return new Predicate<PaperToken>() {
|
||||
@Override
|
||||
public boolean apply(PaperToken paperToken) {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
return paperToken -> true;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -4,8 +4,6 @@ import java.awt.Component;
|
||||
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JSpinner;
|
||||
import javax.swing.event.ChangeEvent;
|
||||
import javax.swing.event.ChangeListener;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
|
||||
@@ -65,28 +63,22 @@ public abstract class ValueRangeFilter<T extends InventoryItem> extends ItemFilt
|
||||
|
||||
upperBound = addSpinner(widget, false);
|
||||
|
||||
lowerBound.addChangeListener(new ChangeListener() {
|
||||
@Override
|
||||
public void stateChanged(ChangeEvent arg0) {
|
||||
if (Integer.parseInt(upperBound.getValue().toString()) <
|
||||
Integer.parseInt(lowerBound.getValue().toString()))
|
||||
{
|
||||
upperBound.setValue(lowerBound.getValue());
|
||||
}
|
||||
applyChange();
|
||||
lowerBound.addChangeListener(arg0 -> {
|
||||
if (Integer.parseInt(upperBound.getValue().toString()) <
|
||||
Integer.parseInt(lowerBound.getValue().toString()))
|
||||
{
|
||||
upperBound.setValue(lowerBound.getValue());
|
||||
}
|
||||
applyChange();
|
||||
});
|
||||
|
||||
upperBound.addChangeListener(new ChangeListener() {
|
||||
@Override
|
||||
public void stateChanged(ChangeEvent arg0) {
|
||||
if (Integer.parseInt(lowerBound.getValue().toString()) >
|
||||
Integer.parseInt(upperBound.getValue().toString()))
|
||||
{
|
||||
lowerBound.setValue(upperBound.getValue());
|
||||
}
|
||||
applyChange();
|
||||
upperBound.addChangeListener(arg0 -> {
|
||||
if (Integer.parseInt(lowerBound.getValue().toString()) >
|
||||
Integer.parseInt(upperBound.getValue().toString()))
|
||||
{
|
||||
lowerBound.setValue(upperBound.getValue());
|
||||
}
|
||||
applyChange();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -82,20 +82,17 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
|
||||
super(new FLabel.ButtonBuilder());
|
||||
setFocusable(false);
|
||||
updateToolTip();
|
||||
setCommand(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (groupBy == null || model.getItems().isEmpty()) { return; }
|
||||
setCommand((Runnable) () -> {
|
||||
if (groupBy == null || model.getItems().isEmpty()) { return; }
|
||||
|
||||
boolean collapsed = !isAllCollapsed;
|
||||
for (Group group : groups) {
|
||||
group.isCollapsed = collapsed;
|
||||
}
|
||||
|
||||
updateIsAllCollapsed();
|
||||
clearSelection(); //must clear selection since indices and visible items will be changing
|
||||
updateLayout(false);
|
||||
boolean collapsed = !isAllCollapsed;
|
||||
for (Group group : groups) {
|
||||
group.isCollapsed = collapsed;
|
||||
}
|
||||
|
||||
updateIsAllCollapsed();
|
||||
clearSelection(); //must clear selection since indices and visible items will be changing
|
||||
updateLayout(false);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -161,36 +158,27 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
|
||||
cbColumnCount.setMaximumRowCount(cbColumnCount.getItemCount());
|
||||
cbColumnCount.setSelectedIndex(columnCount - MIN_COLUMN_COUNT);
|
||||
|
||||
cbGroupByOptions.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
focus();
|
||||
if (cbGroupByOptions.getSelectedIndex() > 0) {
|
||||
setGroupBy((GroupDef) cbGroupByOptions.getSelectedItem());
|
||||
}
|
||||
else {
|
||||
setGroupBy(null);
|
||||
}
|
||||
cbGroupByOptions.addActionListener(e -> {
|
||||
focus();
|
||||
if (cbGroupByOptions.getSelectedIndex() > 0) {
|
||||
setGroupBy((GroupDef) cbGroupByOptions.getSelectedItem());
|
||||
}
|
||||
else {
|
||||
setGroupBy(null);
|
||||
}
|
||||
});
|
||||
cbPileByOptions.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
focus();
|
||||
if (cbPileByOptions.getSelectedIndex() > 0) {
|
||||
setPileBy((ColumnDef) cbPileByOptions.getSelectedItem());
|
||||
}
|
||||
else {
|
||||
setPileBy(null);
|
||||
}
|
||||
cbPileByOptions.addActionListener(e -> {
|
||||
focus();
|
||||
if (cbPileByOptions.getSelectedIndex() > 0) {
|
||||
setPileBy((ColumnDef) cbPileByOptions.getSelectedItem());
|
||||
}
|
||||
else {
|
||||
setPileBy(null);
|
||||
}
|
||||
});
|
||||
cbColumnCount.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
focus();
|
||||
setColumnCount(cbColumnCount.getSelectedItem());
|
||||
}
|
||||
cbColumnCount.addActionListener(e -> {
|
||||
focus();
|
||||
setColumnCount(cbColumnCount.getSelectedItem());
|
||||
});
|
||||
|
||||
//setup display
|
||||
@@ -277,12 +265,7 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
|
||||
|
||||
if (selectItem(e)) {
|
||||
setLockHoveredItem(true); //lock hoveredItem while context menu open
|
||||
itemManager.showContextMenu(e, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
setLockHoveredItem(false);
|
||||
}
|
||||
});
|
||||
itemManager.showContextMenu(e, () -> setLockHoveredItem(false));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1135,12 +1118,7 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
|
||||
}
|
||||
|
||||
if (lockInput) { //unlock input after repaint finishes if needed
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
lockInput = false;
|
||||
}
|
||||
});
|
||||
SwingUtilities.invokeLater(() -> lockInput = false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -26,7 +26,6 @@ import java.awt.Rectangle;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.datatransfer.Clipboard;
|
||||
import java.awt.datatransfer.StringSelection;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.FocusAdapter;
|
||||
import java.awt.event.FocusEvent;
|
||||
@@ -52,9 +51,6 @@ import javax.swing.ListSelectionModel;
|
||||
import javax.swing.SwingConstants;
|
||||
import javax.swing.border.Border;
|
||||
import javax.swing.border.EmptyBorder;
|
||||
import javax.swing.event.ChangeEvent;
|
||||
import javax.swing.event.ChangeListener;
|
||||
import javax.swing.event.ListSelectionEvent;
|
||||
import javax.swing.event.ListSelectionListener;
|
||||
import javax.swing.event.TableModelEvent;
|
||||
import javax.swing.table.AbstractTableModel;
|
||||
@@ -164,11 +160,7 @@ public final class ItemListView<T extends InventoryItem> extends ItemView<T> {
|
||||
columns.add(colOverrides.get(colConfig.getDef()));
|
||||
}
|
||||
}
|
||||
Collections.sort(columns, new Comparator<ItemTableColumn>() {
|
||||
@Override public int compare(final ItemTableColumn arg0, final ItemTableColumn arg1) {
|
||||
return Integer.compare(arg0.getIndex(), arg1.getIndex());
|
||||
}
|
||||
});
|
||||
Collections.sort(columns, Comparator.comparingInt(ItemTableColumn::getIndex));
|
||||
|
||||
//hide table header if only showing single string column
|
||||
final boolean hideHeader = (config.getCols().size() == 1 && config.getCols().containsKey(ColumnDef.STRING));
|
||||
@@ -189,32 +181,30 @@ public final class ItemListView<T extends InventoryItem> extends ItemView<T> {
|
||||
col.getLongName() : col.getShortName(), col.isVisible());
|
||||
chkBox.setFont(ItemView.ROW_FONT);
|
||||
chkBox.setToolTipText(col.getLongName());
|
||||
chkBox.addChangeListener(new ChangeListener() {
|
||||
@Override public void stateChanged(final ChangeEvent arg0) {
|
||||
final boolean visible = chkBox.isSelected();
|
||||
if (col.isVisible() == visible) { return; }
|
||||
col.setVisible(visible);
|
||||
chkBox.addChangeListener(arg0 -> {
|
||||
final boolean visible = chkBox.isSelected();
|
||||
if (col.isVisible() == visible) { return; }
|
||||
col.setVisible(visible);
|
||||
|
||||
if (col.isVisible()) {
|
||||
colmodel.addColumn(col);
|
||||
if (col.isVisible()) {
|
||||
colmodel.addColumn(col);
|
||||
|
||||
//move column into proper position
|
||||
final int oldIndex = colmodel.getColumnCount() - 1;
|
||||
int newIndex = col.getIndex();
|
||||
for (int i = 0; i < col.getIndex(); i++) {
|
||||
if (!columns.get(i).isVisible()) {
|
||||
newIndex--;
|
||||
}
|
||||
}
|
||||
if (newIndex < oldIndex) {
|
||||
colmodel.moveColumn(oldIndex, newIndex);
|
||||
//move column into proper position
|
||||
final int oldIndex = colmodel.getColumnCount() - 1;
|
||||
int newIndex = col.getIndex();
|
||||
for (int i = 0; i < col.getIndex(); i++) {
|
||||
if (!columns.get(i).isVisible()) {
|
||||
newIndex--;
|
||||
}
|
||||
}
|
||||
else {
|
||||
colmodel.removeColumn(col);
|
||||
if (newIndex < oldIndex) {
|
||||
colmodel.moveColumn(oldIndex, newIndex);
|
||||
}
|
||||
ItemManagerConfig.save();
|
||||
}
|
||||
else {
|
||||
colmodel.removeColumn(col);
|
||||
}
|
||||
ItemManagerConfig.save();
|
||||
});
|
||||
getPnlOptions().add(chkBox);
|
||||
}
|
||||
@@ -385,21 +375,18 @@ public final class ItemListView<T extends InventoryItem> extends ItemView<T> {
|
||||
this.setShowHorizontalLines(false);
|
||||
this.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
|
||||
|
||||
final ActionListener listener = new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
for (final int row : getSelectedRows()) {
|
||||
final Entry<T, Integer> item = tableModel.rowToItem(row);
|
||||
sb.append(item.getValue().toString());
|
||||
sb.append(' ');
|
||||
sb.append(item.getKey().toString());
|
||||
sb.append('\n');
|
||||
}
|
||||
final StringSelection selection = new StringSelection(sb.toString());
|
||||
final Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
|
||||
clipboard.setContents(selection, selection);
|
||||
final ActionListener listener = e -> {
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
for (final int row : getSelectedRows()) {
|
||||
final Entry<T, Integer> item = tableModel.rowToItem(row);
|
||||
sb.append(item.getValue().toString());
|
||||
sb.append(' ');
|
||||
sb.append(item.getKey().toString());
|
||||
sb.append('\n');
|
||||
}
|
||||
final StringSelection selection = new StringSelection(sb.toString());
|
||||
final Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
|
||||
clipboard.setContents(selection, selection);
|
||||
};
|
||||
|
||||
final KeyStroke stroke = KeyStroke.getKeyStroke(KeyEvent.VK_C, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(), false);
|
||||
@@ -598,12 +585,7 @@ public final class ItemListView<T extends InventoryItem> extends ItemView<T> {
|
||||
return -1;
|
||||
}
|
||||
|
||||
private final ListSelectionListener listSelectionListener = new ListSelectionListener() {
|
||||
@Override
|
||||
public void valueChanged(final ListSelectionEvent arg0) {
|
||||
ItemListView.this.onSelectionChange();
|
||||
}
|
||||
};
|
||||
private final ListSelectionListener listSelectionListener = arg0 -> ItemListView.this.onSelectionChange();
|
||||
|
||||
private final FocusAdapter focusAdapter = new FocusAdapter() {
|
||||
@Override
|
||||
|
||||
@@ -4,8 +4,6 @@ import java.awt.Color;
|
||||
import java.awt.Container;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Point;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.ComponentAdapter;
|
||||
import java.awt.event.ComponentEvent;
|
||||
import java.awt.event.FocusAdapter;
|
||||
@@ -28,8 +26,6 @@ import javax.swing.ScrollPaneConstants;
|
||||
import javax.swing.SwingConstants;
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.Timer;
|
||||
import javax.swing.event.ChangeEvent;
|
||||
import javax.swing.event.ChangeListener;
|
||||
import javax.swing.event.ListSelectionEvent;
|
||||
import javax.swing.event.ListSelectionListener;
|
||||
|
||||
@@ -113,14 +109,12 @@ public abstract class ItemView<T extends InventoryItem> {
|
||||
});
|
||||
comp.addKeyListener(incrementalSearch);
|
||||
|
||||
this.button.setCommand(new Runnable() {
|
||||
@Override public void run() {
|
||||
if (button.isSelected()) {
|
||||
itemManager.setViewIndex(index);
|
||||
}
|
||||
else {
|
||||
button.setSelected(true); //prevent toggling off button
|
||||
}
|
||||
this.button.setCommand((Runnable) () -> {
|
||||
if (button.isSelected()) {
|
||||
itemManager.setViewIndex(index);
|
||||
}
|
||||
else {
|
||||
button.setSelected(true); //prevent toggling off button
|
||||
}
|
||||
});
|
||||
|
||||
@@ -180,16 +174,14 @@ public abstract class ItemView<T extends InventoryItem> {
|
||||
protected void setUniqueCardsOnlyFilter() {
|
||||
this.uniqueCardsOnlyChkBox.setFont(ROW_FONT);
|
||||
this.uniqueCardsOnlyChkBox.setToolTipText(localizer.getMessage("ttUniqueCardsOnly"));
|
||||
this.uniqueCardsOnlyChkBox.addChangeListener(new ChangeListener() {
|
||||
@Override public void stateChanged(final ChangeEvent arg0) {
|
||||
final boolean wantUnique = uniqueCardsOnlyChkBox.isSelected();
|
||||
if (itemManager.getWantUnique() == wantUnique) { return; }
|
||||
itemManager.setWantUnique(wantUnique);
|
||||
itemManager.refresh();
|
||||
this.uniqueCardsOnlyChkBox.addChangeListener(arg0 -> {
|
||||
final boolean wantUnique = uniqueCardsOnlyChkBox.isSelected();
|
||||
if (itemManager.getWantUnique() == wantUnique) { return; }
|
||||
itemManager.setWantUnique(wantUnique);
|
||||
itemManager.refresh();
|
||||
|
||||
if (itemManager.getConfig() != null) {
|
||||
itemManager.getConfig().setUniqueCardsOnly(wantUnique);
|
||||
}
|
||||
if (itemManager.getConfig() != null) {
|
||||
itemManager.getConfig().setUniqueCardsOnly(wantUnique);
|
||||
}
|
||||
});
|
||||
getPnlOptions().add(uniqueCardsOnlyChkBox);
|
||||
@@ -427,11 +419,7 @@ public abstract class ItemView<T extends InventoryItem> {
|
||||
popup = factory.getPopup(null, popupLabel, tableLoc.x + 10, tableLoc.y + 10);
|
||||
FSkin.setTempBackground(SwingUtilities.getRoot(popupLabel), FSkin.getColor(FSkin.Colors.CLR_INACTIVE));
|
||||
|
||||
popupTimer = new Timer(5000, new ActionListener() {
|
||||
@Override public void actionPerformed(final ActionEvent e) {
|
||||
cancel();
|
||||
}
|
||||
});
|
||||
popupTimer = new Timer(5000, e -> cancel());
|
||||
popupTimer.setRepeats(false);
|
||||
|
||||
popup.show();
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package forge.menus;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.util.HashMap;
|
||||
@@ -134,12 +133,7 @@ public final class ForgeMenu {
|
||||
}
|
||||
|
||||
private static ActionListener getRestartAction() {
|
||||
return new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Singletons.getControl().restartForge();
|
||||
}
|
||||
};
|
||||
return e -> Singletons.getControl().restartForge();
|
||||
}
|
||||
|
||||
private static JMenuItem getMenuItem_Exit() {
|
||||
@@ -151,11 +145,6 @@ public final class ForgeMenu {
|
||||
}
|
||||
|
||||
private static ActionListener getExitAction() {
|
||||
return new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
Singletons.getControl().exitForge();
|
||||
}
|
||||
};
|
||||
return e -> Singletons.getControl().exitForge();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package forge.menus;
|
||||
|
||||
import java.awt.Desktop;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.io.File;
|
||||
@@ -43,14 +42,11 @@ public final class HelpMenu {
|
||||
}
|
||||
|
||||
private static ActionListener getAboutForgeAction() {
|
||||
return new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
final Localizer localizer = Localizer.getInstance();
|
||||
FOptionPane.showMessageDialog(
|
||||
"Version : " + BuildInfo.getVersionString(),
|
||||
localizer.getMessage("lblAboutForge"));
|
||||
}
|
||||
return e -> {
|
||||
final Localizer localizer = Localizer.getInstance();
|
||||
FOptionPane.showMessageDialog(
|
||||
"Version : " + BuildInfo.getVersionString(),
|
||||
localizer.getMessage("lblAboutForge"));
|
||||
};
|
||||
}
|
||||
|
||||
@@ -115,15 +111,12 @@ public final class HelpMenu {
|
||||
}
|
||||
|
||||
private static ActionListener getOpenFileAction(final File file) {
|
||||
return new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
try {
|
||||
openFile(file);
|
||||
} catch (IOException e1) {
|
||||
// Auto-generated catch block ignores the exception, but sends it to System.err and probably forge.log.
|
||||
e1.printStackTrace();
|
||||
}
|
||||
return e -> {
|
||||
try {
|
||||
openFile(file);
|
||||
} catch (IOException e1) {
|
||||
// Auto-generated catch block ignores the exception, but sends it to System.err and probably forge.log.
|
||||
e1.printStackTrace();
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -172,12 +165,7 @@ public final class HelpMenu {
|
||||
}
|
||||
|
||||
private static ActionListener getLaunchUrlAction(final String url) {
|
||||
return new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
MenuUtil.openUrlInBrowser(url);
|
||||
}
|
||||
};
|
||||
return e -> MenuUtil.openUrlInBrowser(url);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ package forge.menus;
|
||||
|
||||
import java.awt.Cursor;
|
||||
import java.awt.Image;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.KeyEvent;
|
||||
|
||||
@@ -98,12 +97,10 @@ public final class LayoutMenu {
|
||||
return menu;
|
||||
}
|
||||
|
||||
private static final ActionListener changeSkin = new ActionListener() {
|
||||
@Override public void actionPerformed(final ActionEvent e) {
|
||||
MouseUtil.setCursor(Cursor.WAIT_CURSOR);
|
||||
FSkin.changeSkin(e.getActionCommand());
|
||||
MouseUtil.resetCursor();
|
||||
}
|
||||
private static final ActionListener changeSkin = e -> {
|
||||
MouseUtil.setCursor(Cursor.WAIT_CURSOR);
|
||||
FSkin.changeSkin(e.getActionCommand());
|
||||
MouseUtil.resetCursor();
|
||||
};
|
||||
|
||||
private static JMenuItem getMenuItem_ShowBackgroundImage() {
|
||||
@@ -115,24 +112,22 @@ public final class LayoutMenu {
|
||||
}
|
||||
|
||||
private static ActionListener getShowBackgroundImageAction(final JCheckBoxMenuItem menuItem) {
|
||||
return new ActionListener() {
|
||||
@Override public void actionPerformed(final ActionEvent e) {
|
||||
final boolean isVisible = menuItem.getState();
|
||||
prefs.setPref(FPref.UI_MATCH_IMAGE_VISIBLE, isVisible);
|
||||
if (isVisible) {
|
||||
if (FControl.instance.getCurrentScreen().getDaytime() == null)
|
||||
FView.SINGLETON_INSTANCE.getPnlInsets().setForegroundImage(FSkin.getIcon(FSkinProp.BG_MATCH), true);
|
||||
else {
|
||||
if ("Day".equals(FControl.instance.getCurrentScreen().getDaytime()))
|
||||
FView.SINGLETON_INSTANCE.getPnlInsets().setForegroundImage(FSkin.getIcon(FSkinProp.BG_DAY), true);
|
||||
else
|
||||
FView.SINGLETON_INSTANCE.getPnlInsets().setForegroundImage(FSkin.getIcon(FSkinProp.BG_NIGHT), true);
|
||||
}
|
||||
} else {
|
||||
FView.SINGLETON_INSTANCE.getPnlInsets().setForegroundImage((Image)null);
|
||||
return e -> {
|
||||
final boolean isVisible = menuItem.getState();
|
||||
prefs.setPref(FPref.UI_MATCH_IMAGE_VISIBLE, isVisible);
|
||||
if (isVisible) {
|
||||
if (FControl.instance.getCurrentScreen().getDaytime() == null)
|
||||
FView.SINGLETON_INSTANCE.getPnlInsets().setForegroundImage(FSkin.getIcon(FSkinProp.BG_MATCH), true);
|
||||
else {
|
||||
if ("Day".equals(FControl.instance.getCurrentScreen().getDaytime()))
|
||||
FView.SINGLETON_INSTANCE.getPnlInsets().setForegroundImage(FSkin.getIcon(FSkinProp.BG_DAY), true);
|
||||
else
|
||||
FView.SINGLETON_INSTANCE.getPnlInsets().setForegroundImage(FSkin.getIcon(FSkinProp.BG_NIGHT), true);
|
||||
}
|
||||
FView.SINGLETON_INSTANCE.getPnlInsets().repaint();
|
||||
} else {
|
||||
FView.SINGLETON_INSTANCE.getPnlInsets().setForegroundImage((Image)null);
|
||||
}
|
||||
FView.SINGLETON_INSTANCE.getPnlInsets().repaint();
|
||||
};
|
||||
}
|
||||
|
||||
@@ -145,13 +140,11 @@ public final class LayoutMenu {
|
||||
return menuItem;
|
||||
}
|
||||
private static ActionListener getShowTabsAction(final JCheckBoxMenuItem menuItem) {
|
||||
return new ActionListener() {
|
||||
@Override public void actionPerformed(final ActionEvent e) {
|
||||
final boolean showTabs = menuItem.getState();
|
||||
FView.SINGLETON_INSTANCE.refreshAllCellLayouts(showTabs);
|
||||
prefs.setPref(FPref.UI_HIDE_GAME_TABS, !showTabs);
|
||||
prefs.save();
|
||||
}
|
||||
return e -> {
|
||||
final boolean showTabs = menuItem.getState();
|
||||
FView.SINGLETON_INSTANCE.refreshAllCellLayouts(showTabs);
|
||||
prefs.setPref(FPref.UI_HIDE_GAME_TABS, !showTabs);
|
||||
prefs.save();
|
||||
};
|
||||
}
|
||||
|
||||
@@ -164,11 +157,7 @@ public final class LayoutMenu {
|
||||
}
|
||||
|
||||
private static ActionListener getSaveLayoutAction() {
|
||||
return new ActionListener() {
|
||||
@Override public void actionPerformed(final ActionEvent e) {
|
||||
SLayoutIO.saveLayout();
|
||||
}
|
||||
};
|
||||
return e -> SLayoutIO.saveLayout();
|
||||
}
|
||||
|
||||
private JMenuItem getMenuItem_OpenLayout() {
|
||||
@@ -180,11 +169,7 @@ public final class LayoutMenu {
|
||||
}
|
||||
|
||||
private static ActionListener getOpenLayoutAction() {
|
||||
return new ActionListener() {
|
||||
@Override public void actionPerformed(final ActionEvent e) {
|
||||
SLayoutIO.openLayout();
|
||||
}
|
||||
};
|
||||
return e -> SLayoutIO.openLayout();
|
||||
}
|
||||
|
||||
private JMenuItem getMenuItem_RevertLayout() {
|
||||
@@ -196,11 +181,7 @@ public final class LayoutMenu {
|
||||
}
|
||||
|
||||
private static ActionListener getRevertLayoutAction() {
|
||||
return new ActionListener() {
|
||||
@Override public void actionPerformed(final ActionEvent e) {
|
||||
SLayoutIO.revertLayout();
|
||||
}
|
||||
};
|
||||
return e -> SLayoutIO.revertLayout();
|
||||
}
|
||||
|
||||
private static JMenuItem getMenuItem_SetWindowSize() {
|
||||
@@ -211,15 +192,13 @@ public final class LayoutMenu {
|
||||
}
|
||||
|
||||
private static ActionListener getSetWindowSizeAction() {
|
||||
return new ActionListener() {
|
||||
@Override public void actionPerformed(final ActionEvent e) {
|
||||
final String[] options = {"800x600", "1024x768", "1280x720", "1600x900", "1920x1080", "2560x1440", "3840x2160"};
|
||||
final Localizer localizer = Localizer.getInstance();
|
||||
final String choice = GuiChoose.oneOrNone(localizer.getMessage("lblChooseNewWindowSize"), options);
|
||||
if (choice != null) {
|
||||
final String[] dims = choice.split("x");
|
||||
Singletons.getView().getFrame().setSize(Integer.parseInt(dims[0]), Integer.parseInt(dims[1]));
|
||||
}
|
||||
return e -> {
|
||||
final String[] options = {"800x600", "1024x768", "1280x720", "1600x900", "1920x1080", "2560x1440", "3840x2160"};
|
||||
final Localizer localizer = Localizer.getInstance();
|
||||
final String choice = GuiChoose.oneOrNone(localizer.getMessage("lblChooseNewWindowSize"), options);
|
||||
if (choice != null) {
|
||||
final String[] dims = choice.split("x");
|
||||
Singletons.getView().getFrame().setSize(Integer.parseInt(dims[0]), Integer.parseInt(dims[1]));
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -238,11 +217,9 @@ public final class LayoutMenu {
|
||||
return fullScreenItem;
|
||||
}
|
||||
private static ActionListener getFullScreenAction() {
|
||||
return new ActionListener() {
|
||||
@Override public void actionPerformed(final ActionEvent e) {
|
||||
final FFrame frame = Singletons.getView().getFrame();
|
||||
frame.setFullScreen(!frame.isFullScreen());
|
||||
}
|
||||
return e -> {
|
||||
final FFrame frame = Singletons.getView().getFrame();
|
||||
frame.setFullScreen(!frame.isFullScreen());
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,11 +30,9 @@ public enum CBazaarUI implements ICDoc {
|
||||
|
||||
/** @param s0   {@link java.lang.String} */
|
||||
public void showStall(final String s0, final QuestBazaarManager bazaar) {
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() {
|
||||
view.getPnlSingleStall().setStall(bazaar.getStall(s0));
|
||||
view.getPnlSingleStall().updateStall();
|
||||
}
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
view.getPnlSingleStall().setStall(bazaar.getStall(s0));
|
||||
view.getPnlSingleStall().updateStall();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -54,10 +52,6 @@ public enum CBazaarUI implements ICDoc {
|
||||
*/
|
||||
@Override
|
||||
public void update() {
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() {
|
||||
view.getPnlSingleStall().updateStall();
|
||||
}
|
||||
});
|
||||
SwingUtilities.invokeLater(() -> view.getPnlSingleStall().updateStall());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,27 +49,19 @@ public enum VBazaarUI implements IVTopLevelUI {
|
||||
|
||||
pnlAllStalls.add(lbl, "h 80px!, w 90%!, gap 0 0 10px 10px");
|
||||
|
||||
lbl.setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (previousSelected != null) { previousSelected.setSelected(false); }
|
||||
lbl.setSelected(true);
|
||||
previousSelected = lbl;
|
||||
lbl.requestFocusInWindow();
|
||||
CBazaarUI.SINGLETON_INSTANCE.showStall(s, bazaar);
|
||||
}
|
||||
lbl.setCommand((UiCommand) () -> {
|
||||
if (previousSelected != null) { previousSelected.setSelected(false); }
|
||||
lbl.setSelected(true);
|
||||
previousSelected = lbl;
|
||||
lbl.requestFocusInWindow();
|
||||
CBazaarUI.SINGLETON_INSTANCE.showStall(s, bazaar);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/** */
|
||||
public void refreshLastInstance() {
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
pnlSingleStall.updateStall();
|
||||
}
|
||||
});
|
||||
SwingUtilities.invokeLater(() -> pnlSingleStall.updateStall());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -119,12 +111,9 @@ public enum VBazaarUI implements IVTopLevelUI {
|
||||
pnl.add(pnlAllStalls, "w 25%!, h 100%!");
|
||||
pnl.add(pnlSingleStall, "w 75%!, h 100%!");
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (previousSelected != null) {
|
||||
previousSelected.requestFocusInWindow();
|
||||
}
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
if (previousSelected != null) {
|
||||
previousSelected.requestFocusInWindow();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -21,8 +21,6 @@ import java.awt.Dimension;
|
||||
import java.awt.FlowLayout;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.Graphics2D;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.util.Map;
|
||||
@@ -127,16 +125,13 @@ public class AddBasicLandsDialog {
|
||||
});
|
||||
lblDeckInfo.setToolTipText(Localizer.getInstance().getMessage("lblDeckStatisticsAutoSuggest"));
|
||||
|
||||
cbLandSet.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent arg0) {
|
||||
landSet = cbLandSet.getSelectedItem();
|
||||
pnlPlains.refreshArtChoices();
|
||||
pnlIsland.refreshArtChoices();
|
||||
pnlSwamp.refreshArtChoices();
|
||||
pnlMountain.refreshArtChoices();
|
||||
pnlForest.refreshArtChoices();
|
||||
}
|
||||
cbLandSet.addActionListener(arg0 -> {
|
||||
landSet = cbLandSet.getSelectedItem();
|
||||
pnlPlains.refreshArtChoices();
|
||||
pnlIsland.refreshArtChoices();
|
||||
pnlSwamp.refreshArtChoices();
|
||||
pnlMountain.refreshArtChoices();
|
||||
pnlForest.refreshArtChoices();
|
||||
});
|
||||
cbLandSet.setSelectedItem(defaultLandSet);
|
||||
|
||||
@@ -323,34 +318,25 @@ public class AddBasicLandsDialog {
|
||||
cardPanel = new LandCardPanel();
|
||||
cbLandArt = new FComboBox<>();
|
||||
cbLandArt.setFont(FSkin.getFont());
|
||||
cbLandArt.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent arg0) {
|
||||
int artIndex = cbLandArt.getSelectedIndex();
|
||||
if (artIndex < 0) { return; }
|
||||
card = generateCard(artIndex); //generate card for display
|
||||
cardPanel.repaint();
|
||||
}
|
||||
cbLandArt.addActionListener(arg0 -> {
|
||||
int artIndex = cbLandArt.getSelectedIndex();
|
||||
if (artIndex < 0) { return; }
|
||||
card = generateCard(artIndex); //generate card for display
|
||||
cardPanel.repaint();
|
||||
});
|
||||
lblCount = new FLabel.Builder().text("0").fontSize(22).fontAlign(SwingConstants.CENTER).build();
|
||||
btnSubtract = new FLabel.ButtonBuilder().icon(FSkin.getIcon(FSkinProp.ICO_MINUS)).cmdClick(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (count > 0) {
|
||||
count--;
|
||||
lblCount.setText(String.valueOf(count));
|
||||
updateDeckInfoLabel();
|
||||
}
|
||||
btnSubtract = new FLabel.ButtonBuilder().icon(FSkin.getIcon(FSkinProp.ICO_MINUS)).cmdClick((UiCommand) () -> {
|
||||
if (count > 0) {
|
||||
count--;
|
||||
lblCount.setText(String.valueOf(count));
|
||||
updateDeckInfoLabel();
|
||||
}
|
||||
}).build();
|
||||
btnAdd = new FLabel.ButtonBuilder().icon(FSkin.getIcon(FSkinProp.ICO_PLUS)).cmdClick(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (maxCount == 0 || count < maxCount) {
|
||||
count++;
|
||||
lblCount.setText(String.valueOf(count));
|
||||
updateDeckInfoLabel();
|
||||
}
|
||||
btnAdd = new FLabel.ButtonBuilder().icon(FSkin.getIcon(FSkinProp.ICO_PLUS)).cmdClick((UiCommand) () -> {
|
||||
if (maxCount == 0 || count < maxCount) {
|
||||
count++;
|
||||
lblCount.setText(String.valueOf(count));
|
||||
updateDeckInfoLabel();
|
||||
}
|
||||
}).build();
|
||||
btnSubtract.getAccessibleContext().setAccessibleName("Remove " + cardName);
|
||||
|
||||
@@ -23,8 +23,6 @@ import java.util.HashMap;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.event.ListSelectionEvent;
|
||||
import javax.swing.event.ListSelectionListener;
|
||||
|
||||
import forge.Singletons;
|
||||
import forge.deck.DeckBase;
|
||||
@@ -253,34 +251,16 @@ public enum CDeckEditorUI implements ICDoc {
|
||||
}
|
||||
});
|
||||
|
||||
catView.setItemActivateCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
addSelectedCards(false, 1);
|
||||
}
|
||||
});
|
||||
deckView.setItemActivateCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
removeSelectedCards(false, 1);
|
||||
}
|
||||
});
|
||||
catView.setItemActivateCommand((UiCommand) () -> addSelectedCards(false, 1));
|
||||
deckView.setItemActivateCommand((UiCommand) () -> removeSelectedCards(false, 1));
|
||||
|
||||
catView.setContextMenuBuilder(childController.createContextMenuBuilder(true));
|
||||
deckView.setContextMenuBuilder(childController.createContextMenuBuilder(false));
|
||||
|
||||
//set card when selection changes
|
||||
catView.addSelectionListener(new ListSelectionListener() {
|
||||
@Override public void valueChanged(final ListSelectionEvent e) {
|
||||
setCard(catView.getSelectedItem());
|
||||
}
|
||||
});
|
||||
catView.addSelectionListener(e -> setCard(catView.getSelectedItem()));
|
||||
|
||||
deckView.addSelectionListener(new ListSelectionListener() {
|
||||
@Override public void valueChanged(final ListSelectionEvent e) {
|
||||
setCard(deckView.getSelectedItem());
|
||||
}
|
||||
});
|
||||
deckView.addSelectionListener(e -> setCard(deckView.getSelectedItem()));
|
||||
|
||||
catView.setAllowMultipleSelections(true);
|
||||
deckView.setAllowMultipleSelections(true);
|
||||
@@ -292,12 +272,7 @@ public enum CDeckEditorUI implements ICDoc {
|
||||
|
||||
catView.applyFilters();
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
catView.focus();
|
||||
}
|
||||
});
|
||||
SwingUtilities.invokeLater(catView::focus);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -28,7 +28,6 @@ import javax.swing.border.TitledBorder;
|
||||
import javax.swing.event.DocumentEvent;
|
||||
import javax.swing.event.DocumentListener;
|
||||
import javax.swing.event.HyperlinkEvent;
|
||||
import javax.swing.event.HyperlinkListener;
|
||||
|
||||
import forge.ImageCache;
|
||||
import forge.Singletons;
|
||||
@@ -283,12 +282,7 @@ public class DeckImport<TModel extends DeckBase> extends FDialog {
|
||||
this.scrollOutput.setViewportBorder(BorderFactory.createLoweredBevelBorder());
|
||||
// Action Listeners
|
||||
// ----------------
|
||||
this.htmlOutput.addHyperlinkListener(new HyperlinkListener() {
|
||||
@Override
|
||||
public void hyperlinkUpdate(HyperlinkEvent e) {
|
||||
activateCardPreview(e);
|
||||
}
|
||||
});
|
||||
this.htmlOutput.addHyperlinkListener(this::activateCardPreview);
|
||||
|
||||
// == C.1 Stats Panel
|
||||
FPanel statsPanel = new FPanel(new BorderLayout());
|
||||
@@ -367,20 +361,13 @@ public class DeckImport<TModel extends DeckBase> extends FDialog {
|
||||
|
||||
// Action Listeners
|
||||
// ----------------
|
||||
this.dateTimeCheck.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
final boolean isSel = dateTimeCheck.isSelected();
|
||||
monthDropdown.setEnabled(isSel);
|
||||
yearDropdown.setEnabled(isSel);
|
||||
parseAndDisplay();
|
||||
}
|
||||
this.dateTimeCheck.addActionListener(e -> {
|
||||
final boolean isSel = dateTimeCheck.isSelected();
|
||||
monthDropdown.setEnabled(isSel);
|
||||
yearDropdown.setEnabled(isSel);
|
||||
parseAndDisplay();
|
||||
});
|
||||
final ActionListener reparseAction = new ActionListener() {
|
||||
@Override public void actionPerformed(final ActionEvent e) {
|
||||
parseAndDisplay();
|
||||
}
|
||||
};
|
||||
final ActionListener reparseAction = e -> parseAndDisplay();
|
||||
this.yearDropdown.addActionListener(reparseAction);
|
||||
this.monthDropdown.addActionListener(reparseAction);
|
||||
|
||||
@@ -434,28 +421,22 @@ public class DeckImport<TModel extends DeckBase> extends FDialog {
|
||||
|
||||
// Action Listeners
|
||||
// ----------------
|
||||
ItemListener updateCardArtPreference = new ItemListener() {
|
||||
@Override
|
||||
public void itemStateChanged(final ItemEvent e) {
|
||||
String artPreference = cardArtPrefsComboBox.getSelectedItem();
|
||||
if (artPreference == null)
|
||||
artPreference = latestOpt; // default, just in case
|
||||
final boolean latestArt = artPreference.equalsIgnoreCase(latestOpt);
|
||||
final boolean coreExpFilter = cardArtPrefHasFilterCheckBox.isSelected();
|
||||
controller.setCardArtPreference(latestArt, coreExpFilter);
|
||||
parseAndDisplay();
|
||||
}
|
||||
ItemListener updateCardArtPreference = e -> {
|
||||
String artPreference = cardArtPrefsComboBox.getSelectedItem();
|
||||
if (artPreference == null)
|
||||
artPreference = latestOpt; // default, just in case
|
||||
final boolean latestArt = artPreference.equalsIgnoreCase(latestOpt);
|
||||
final boolean coreExpFilter = cardArtPrefHasFilterCheckBox.isSelected();
|
||||
controller.setCardArtPreference(latestArt, coreExpFilter);
|
||||
parseAndDisplay();
|
||||
};
|
||||
this.cardArtPrefsComboBox.addItemListener(updateCardArtPreference);
|
||||
this.cardArtPrefHasFilterCheckBox.addItemListener(updateCardArtPreference);
|
||||
|
||||
this.smartCardArtCheckBox.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
boolean enableSmartCardArt = smartCardArtCheckBox.isSelected();
|
||||
controller.setSmartCardArtOptimisation(enableSmartCardArt);
|
||||
parseAndDisplay();
|
||||
}
|
||||
this.smartCardArtCheckBox.addActionListener(e -> {
|
||||
boolean enableSmartCardArt = smartCardArtCheckBox.isSelected();
|
||||
controller.setSmartCardArtOptimisation(enableSmartCardArt);
|
||||
parseAndDisplay();
|
||||
});
|
||||
|
||||
optionsPanel.add(cardArtPanel, "cell 1 0, w 100%, left");
|
||||
@@ -491,31 +472,25 @@ public class DeckImport<TModel extends DeckBase> extends FDialog {
|
||||
// Action Listeners
|
||||
// ----------------
|
||||
if (controller.hasNoDefaultGameFormat()) {
|
||||
final ActionListener updateFormatSelectionCheck = new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
final boolean isSel = formatSelectionCheck.isSelected();
|
||||
formatDropdown.setEnabled(isSel);
|
||||
if (!isSel)
|
||||
controller.setCurrentGameFormat(null); // reset any game format
|
||||
else {
|
||||
GameFormat gameFormat = formatDropdown.getSelectedItem();
|
||||
controller.setCurrentGameFormat(gameFormat);
|
||||
}
|
||||
parseAndDisplay();
|
||||
final ActionListener updateFormatSelectionCheck = e -> {
|
||||
final boolean isSel = formatSelectionCheck.isSelected();
|
||||
formatDropdown.setEnabled(isSel);
|
||||
if (!isSel)
|
||||
controller.setCurrentGameFormat(null); // reset any game format
|
||||
else {
|
||||
GameFormat gameFormat = formatDropdown.getSelectedItem();
|
||||
controller.setCurrentGameFormat(gameFormat);
|
||||
}
|
||||
parseAndDisplay();
|
||||
};
|
||||
this.formatSelectionCheck.addActionListener(updateFormatSelectionCheck);
|
||||
this.formatDropdown.addActionListener(updateFormatSelectionCheck);
|
||||
}
|
||||
|
||||
this.includeBnRCheck.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
final boolean includeBnR = includeBnRCheck.isSelected();
|
||||
controller.importBannedAndRestrictedCards(includeBnR);
|
||||
parseAndDisplay();
|
||||
}
|
||||
this.includeBnRCheck.addActionListener(e -> {
|
||||
final boolean includeBnR = includeBnRCheck.isSelected();
|
||||
controller.importBannedAndRestrictedCards(includeBnR);
|
||||
parseAndDisplay();
|
||||
});
|
||||
|
||||
// == C Command buttons
|
||||
@@ -533,46 +508,35 @@ public class DeckImport<TModel extends DeckBase> extends FDialog {
|
||||
|
||||
// ActionListeners
|
||||
// ---------------
|
||||
this.cmdCancelButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
DeckImport.this.processWindowEvent(new WindowEvent(DeckImport.this, WindowEvent.WINDOW_CLOSING));
|
||||
}
|
||||
});
|
||||
this.cmdCancelButton.addActionListener(e -> DeckImport.this.processWindowEvent(new WindowEvent(DeckImport.this, WindowEvent.WINDOW_CLOSING)));
|
||||
|
||||
this.cmdAcceptButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
String currentDeckName = g.getDeckController().getModelName();
|
||||
final Deck deck = controller.accept(currentDeckName);
|
||||
if (deck == null) { return; }
|
||||
// If the soon-to-import card list hasn't got any name specified in the list
|
||||
// we set it to the current one (if any) or set a new one.
|
||||
// In this way, if this deck will replace the current one, the name will be kept the same!
|
||||
if (!deck.hasName()){
|
||||
if (currentDeckName.equals(""))
|
||||
deck.setName(Localizer.getInstance().getMessage("lblNewDeckName"));
|
||||
else
|
||||
deck.setName(currentDeckName);
|
||||
}
|
||||
host.getDeckController().loadDeck(deck, controller.getCreateNewDeck());
|
||||
processWindowEvent(new WindowEvent(DeckImport.this, WindowEvent.WINDOW_CLOSING));
|
||||
this.cmdAcceptButton.addActionListener(e -> {
|
||||
String currentDeckName = g.getDeckController().getModelName();
|
||||
final Deck deck = controller.accept(currentDeckName);
|
||||
if (deck == null) { return; }
|
||||
// If the soon-to-import card list hasn't got any name specified in the list
|
||||
// we set it to the current one (if any) or set a new one.
|
||||
// In this way, if this deck will replace the current one, the name will be kept the same!
|
||||
if (!deck.hasName()){
|
||||
if (currentDeckName.equals(""))
|
||||
deck.setName(Localizer.getInstance().getMessage("lblNewDeckName"));
|
||||
else
|
||||
deck.setName(currentDeckName);
|
||||
}
|
||||
host.getDeckController().loadDeck(deck, controller.getCreateNewDeck());
|
||||
processWindowEvent(new WindowEvent(DeckImport.this, WindowEvent.WINDOW_CLOSING));
|
||||
});
|
||||
|
||||
if (currentDeckIsNotEmpty){
|
||||
this.createNewDeckCheckbox.setSelected(false);
|
||||
this.createNewDeckCheckbox.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
boolean createNewDeck = createNewDeckCheckbox.isSelected();
|
||||
controller.setCreateNewDeck(createNewDeck);
|
||||
String cmdAcceptLabel = createNewDeck ? CREATE_NEW_DECK_CMD_LABEL : IMPORT_CARDS_CMD_LABEL;
|
||||
cmdAcceptButton.setText(cmdAcceptLabel);
|
||||
String smartCardArtChboxTooltip = createNewDeck ? SMART_CARDART_TT_NO_DECK : SMART_CARDART_TT_WITH_DECK;
|
||||
smartCardArtCheckBox.setToolTipText(smartCardArtChboxTooltip);
|
||||
parseAndDisplay();
|
||||
}
|
||||
this.createNewDeckCheckbox.addActionListener(e -> {
|
||||
boolean createNewDeck = createNewDeckCheckbox.isSelected();
|
||||
controller.setCreateNewDeck(createNewDeck);
|
||||
String cmdAcceptLabel = createNewDeck ? CREATE_NEW_DECK_CMD_LABEL : IMPORT_CARDS_CMD_LABEL;
|
||||
cmdAcceptButton.setText(cmdAcceptLabel);
|
||||
String smartCardArtChboxTooltip = createNewDeck ? SMART_CARDART_TT_NO_DECK : SMART_CARDART_TT_WITH_DECK;
|
||||
smartCardArtCheckBox.setToolTipText(smartCardArtChboxTooltip);
|
||||
parseAndDisplay();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -33,12 +33,7 @@ public enum VDeckEditorUI implements IVTopLevelUI {
|
||||
*/
|
||||
@Override
|
||||
public void populate() {
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
VCardCatalog.SINGLETON_INSTANCE.getItemManager().focus();
|
||||
}
|
||||
});
|
||||
SwingUtilities.invokeLater(() -> VCardCatalog.SINGLETON_INSTANCE.getItemManager().focus());
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
||||
@@ -28,7 +28,6 @@ import javax.swing.JPopupMenu;
|
||||
import javax.swing.KeyStroke;
|
||||
import javax.swing.SwingUtilities;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.collect.Iterables;
|
||||
|
||||
import forge.deck.CardPool;
|
||||
@@ -234,12 +233,8 @@ public abstract class ACEditorBase<TItem extends InventoryItem, TModel extends D
|
||||
max = cardCopies;
|
||||
}
|
||||
|
||||
Entry<String, Integer> cardAmountInfo = Iterables.find(cardsByName, new Predicate<Entry<String, Integer>>() {
|
||||
@Override
|
||||
public boolean apply(Entry<String, Integer> t) {
|
||||
return t.getKey().equals(card.getRules().getNormalizedName());
|
||||
}
|
||||
}, null);
|
||||
Entry<String, Integer> cardAmountInfo = Iterables.find(cardsByName,
|
||||
t -> t.getKey().equals(card.getRules().getNormalizedName()), null);
|
||||
if (cardAmountInfo != null) {
|
||||
max -= cardAmountInfo.getValue();
|
||||
}
|
||||
@@ -326,16 +321,8 @@ public abstract class ACEditorBase<TItem extends InventoryItem, TModel extends D
|
||||
public void setDeckManager(final ItemManager<TItem> itemManager) {
|
||||
this.deckManager = itemManager;
|
||||
|
||||
btnRemove.setCommand(new UiCommand() {
|
||||
@Override public void run() {
|
||||
CDeckEditorUI.SINGLETON_INSTANCE.removeSelectedCards(false, 1);
|
||||
}
|
||||
});
|
||||
btnRemove4.setCommand(new UiCommand() {
|
||||
@Override public void run() {
|
||||
CDeckEditorUI.SINGLETON_INSTANCE.removeSelectedCards(false, 4);
|
||||
}
|
||||
});
|
||||
btnRemove.setCommand((UiCommand) () -> CDeckEditorUI.SINGLETON_INSTANCE.removeSelectedCards(false, 1));
|
||||
btnRemove4.setCommand((UiCommand) () -> CDeckEditorUI.SINGLETON_INSTANCE.removeSelectedCards(false, 4));
|
||||
itemManager.getPnlButtons().add(btnRemove, "w 30%!, h 30px!, gapx 5");
|
||||
itemManager.getPnlButtons().add(btnRemove4, "w 30%!, h 30px!, gapx 5");
|
||||
itemManager.getPnlButtons().add(btnAddBasicLands, "w 30%!, h 30px!, gapx 5");
|
||||
@@ -359,16 +346,8 @@ public abstract class ACEditorBase<TItem extends InventoryItem, TModel extends D
|
||||
public void setCatalogManager(final ItemManager<TItem> itemManager) {
|
||||
this.catalogManager = itemManager;
|
||||
|
||||
btnAdd.setCommand(new UiCommand() {
|
||||
@Override public void run() {
|
||||
CDeckEditorUI.SINGLETON_INSTANCE.addSelectedCards(false, 1);
|
||||
}
|
||||
});
|
||||
btnAdd4.setCommand(new UiCommand() {
|
||||
@Override public void run() {
|
||||
CDeckEditorUI.SINGLETON_INSTANCE.addSelectedCards(false, 4);
|
||||
}
|
||||
});
|
||||
btnAdd.setCommand((UiCommand) () -> CDeckEditorUI.SINGLETON_INSTANCE.addSelectedCards(false, 1));
|
||||
btnAdd4.setCommand((UiCommand) () -> CDeckEditorUI.SINGLETON_INSTANCE.addSelectedCards(false, 4));
|
||||
itemManager.getPnlButtons().add(btnAdd, "w 30%!, h 30px!, h 30px!, gapx 5");
|
||||
itemManager.getPnlButtons().add(btnAdd4, "w 30%!, h 30px!, h 30px!, gapx 5");
|
||||
}
|
||||
@@ -390,12 +369,9 @@ public abstract class ACEditorBase<TItem extends InventoryItem, TModel extends D
|
||||
parent.setSelected(parent.getDocs().get(0));
|
||||
} else {
|
||||
// if the parent is now childless, fill in the resultant gap
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
SRearrangingUtil.fillGap(parent);
|
||||
FView.SINGLETON_INSTANCE.removeDragCell(parent);
|
||||
}
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
SRearrangingUtil.fillGap(parent);
|
||||
FView.SINGLETON_INSTANCE.removeDragCell(parent);
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -475,28 +451,13 @@ public abstract class ACEditorBase<TItem extends InventoryItem, TModel extends D
|
||||
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblJumptoprevioustable"),
|
||||
KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, InputEvent.META_DOWN_MASK | InputEvent.CTRL_DOWN_MASK),
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getNextItemManager().focus();
|
||||
}
|
||||
});
|
||||
() -> getNextItemManager().focus());
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblJumptopnexttable"),
|
||||
KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, InputEvent.META_DOWN_MASK | InputEvent.CTRL_DOWN_MASK),
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getNextItemManager().focus();
|
||||
}
|
||||
});
|
||||
() -> getNextItemManager().focus());
|
||||
GuiUtils.addMenuItem(menu, localizer.getMessage("lblJumptotextfilter"),
|
||||
KeyStroke.getKeyStroke(KeyEvent.VK_F, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()),
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getItemManager().focusSearch();
|
||||
}
|
||||
});
|
||||
() -> getItemManager().focusSearch());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -528,24 +489,22 @@ public abstract class ACEditorBase<TItem extends InventoryItem, TModel extends D
|
||||
private void addMakeFoil(final int qty) {
|
||||
String label = localizer.getMessage("lblConvertToFoil") + " " + SItemManagerUtil.getItemDisplayString(getItemManager().getSelectedItems(), qty, false);
|
||||
|
||||
GuiUtils.addMenuItem(menu, label, null, new Runnable() {
|
||||
@Override public void run() {
|
||||
Integer quantity = qty;
|
||||
if (quantity < 0) {
|
||||
quantity = GuiChoose.getInteger(localizer.getMessage("lblChooseavalueforX"), 1, -quantity, 20);
|
||||
if (quantity == null) { return; }
|
||||
}
|
||||
// get the currently selected card from the editor
|
||||
CardManager cardManager = (CardManager) CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController().getDeckManager();
|
||||
PaperCard existingCard = cardManager.getSelectedItem();
|
||||
// make a foiled version based on the original
|
||||
PaperCard foiledCard = existingCard.isFoil() ? existingCard.getUnFoiled() : existingCard.getFoiled();
|
||||
// remove *quantity* instances of existing card
|
||||
CDeckEditorUI.SINGLETON_INSTANCE.removeSelectedCards(false, quantity);
|
||||
// add *quantity* into the deck and set them as selected
|
||||
cardManager.addItem(foiledCard, quantity);
|
||||
cardManager.setSelectedItem(foiledCard);
|
||||
}
|
||||
GuiUtils.addMenuItem(menu, label, null, () -> {
|
||||
Integer quantity = qty;
|
||||
if (quantity < 0) {
|
||||
quantity = GuiChoose.getInteger(localizer.getMessage("lblChooseavalueforX"), 1, -quantity, 20);
|
||||
if (quantity == null) { return; }
|
||||
}
|
||||
// get the currently selected card from the editor
|
||||
CardManager cardManager = (CardManager) CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController().getDeckManager();
|
||||
PaperCard existingCard = cardManager.getSelectedItem();
|
||||
// make a foiled version based on the original
|
||||
PaperCard foiledCard = existingCard.isFoil() ? existingCard.getUnFoiled() : existingCard.getFoiled();
|
||||
// remove *quantity* instances of existing card
|
||||
CDeckEditorUI.SINGLETON_INSTANCE.removeSelectedCards(false, quantity);
|
||||
// add *quantity* into the deck and set them as selected
|
||||
cardManager.addItem(foiledCard, quantity);
|
||||
cardManager.setSelectedItem(foiledCard);
|
||||
}, true, true);
|
||||
}
|
||||
//TODO: need to translate getItemDisplayString
|
||||
@@ -554,19 +513,16 @@ public abstract class ACEditorBase<TItem extends InventoryItem, TModel extends D
|
||||
if (dest != null && !dest.isEmpty()) {
|
||||
label += " " + dest;
|
||||
}
|
||||
GuiUtils.addMenuItem(menu, label,
|
||||
KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, shortcutModifiers), new Runnable() {
|
||||
@Override public void run() {
|
||||
Integer quantity = qty;
|
||||
if (quantity < 0) {
|
||||
quantity = GuiChoose.getInteger(localizer.getMessage("lblChooseavalueforX"), 1, -quantity, 20);
|
||||
if (quantity == null) { return; }
|
||||
}
|
||||
if (isAddContextMenu) {
|
||||
CDeckEditorUI.SINGLETON_INSTANCE.addSelectedCards(toAlternate, quantity);
|
||||
} else {
|
||||
CDeckEditorUI.SINGLETON_INSTANCE.removeSelectedCards(toAlternate, quantity);
|
||||
}
|
||||
GuiUtils.addMenuItem(menu, label, KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, shortcutModifiers), () -> {
|
||||
Integer quantity = qty;
|
||||
if (quantity < 0) {
|
||||
quantity = GuiChoose.getInteger(localizer.getMessage("lblChooseavalueforX"), 1, -quantity, 20);
|
||||
if (quantity == null) { return; }
|
||||
}
|
||||
if (isAddContextMenu) {
|
||||
CDeckEditorUI.SINGLETON_INSTANCE.addSelectedCards(toAlternate, quantity);
|
||||
} else {
|
||||
CDeckEditorUI.SINGLETON_INSTANCE.removeSelectedCards(toAlternate, quantity);
|
||||
}
|
||||
}, true, shortcutModifiers == 0);
|
||||
}
|
||||
|
||||
@@ -45,11 +45,11 @@ public enum CCurrentDeck implements ICDoc {
|
||||
}
|
||||
|
||||
final FileFilter DCK_FILTER = new FileFilter() {
|
||||
@Override public final boolean accept(final File f) {
|
||||
@Override public boolean accept(final File f) {
|
||||
return f.getName().endsWith(DeckStorage.FILE_EXTENSION) || f.isDirectory();
|
||||
}
|
||||
|
||||
@Override public final String getDescription() {
|
||||
@Override public String getDescription() {
|
||||
return "Simple Deck File .dck";
|
||||
}
|
||||
};
|
||||
@@ -67,43 +67,13 @@ public enum CCurrentDeck implements ICDoc {
|
||||
@Override
|
||||
@SuppressWarnings("serial")
|
||||
public void initialize() {
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnSave().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
SEditorIO.saveDeck();
|
||||
}
|
||||
});
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnSaveAs().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
exportDeck();
|
||||
}
|
||||
});
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnPrintProxies().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
printProxies();
|
||||
}
|
||||
});
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnOpen().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
openDeck();
|
||||
}
|
||||
});
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnSave().setCommand((UiCommand) SEditorIO::saveDeck);
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnSaveAs().setCommand((UiCommand) this::exportDeck);
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnPrintProxies().setCommand((UiCommand) this::printProxies);
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnOpen().setCommand((UiCommand) this::openDeck);
|
||||
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnNew().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
newDeck();
|
||||
}
|
||||
});
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnImport().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
importDeck();
|
||||
}
|
||||
});
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnNew().setCommand((UiCommand) this::newDeck);
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnImport().setCommand((UiCommand) this::importDeck);
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getTxfTitle().addKeyListener(new KeyAdapter() {
|
||||
@Override
|
||||
public void keyPressed(final KeyEvent e) {
|
||||
@@ -138,12 +108,9 @@ public enum CCurrentDeck implements ICDoc {
|
||||
if (!SEditorIO.confirmSaveChanges(Singletons.getControl().getCurrentScreen(), true)) { return; }
|
||||
|
||||
try {
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController().getDeckController().loadDeck(new Deck());
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getTxfTitle().requestFocusInWindow();
|
||||
}
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController().getDeckController().loadDeck(new Deck());
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getTxfTitle().requestFocusInWindow();
|
||||
});
|
||||
} catch (final Exception ex) {
|
||||
//BugReporter.reportException(ex);
|
||||
|
||||
@@ -50,30 +50,10 @@ public enum CDeckgen implements ICDoc {
|
||||
@SuppressWarnings("serial")
|
||||
@Override
|
||||
public void initialize() {
|
||||
VDeckgen.SINGLETON_INSTANCE.getBtnRandCardpool().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
newRandomConstructed();
|
||||
}
|
||||
});
|
||||
VDeckgen.SINGLETON_INSTANCE.getBtnRandDeck2().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
newGenerateConstructed(2);
|
||||
}
|
||||
});
|
||||
VDeckgen.SINGLETON_INSTANCE.getBtnRandDeck3().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
newGenerateConstructed(3);
|
||||
}
|
||||
});
|
||||
VDeckgen.SINGLETON_INSTANCE.getBtnRandDeck5().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
newGenerateConstructed(5);
|
||||
}
|
||||
});
|
||||
VDeckgen.SINGLETON_INSTANCE.getBtnRandCardpool().setCommand((UiCommand) this::newRandomConstructed);
|
||||
VDeckgen.SINGLETON_INSTANCE.getBtnRandDeck2().setCommand((UiCommand) () -> newGenerateConstructed(2));
|
||||
VDeckgen.SINGLETON_INSTANCE.getBtnRandDeck3().setCommand((UiCommand) () -> newGenerateConstructed(3));
|
||||
VDeckgen.SINGLETON_INSTANCE.getBtnRandDeck5().setCommand((UiCommand) () -> newGenerateConstructed(5));
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
@@ -90,7 +70,7 @@ public enum CDeckgen implements ICDoc {
|
||||
|
||||
final Deck randomDeck = new Deck();
|
||||
|
||||
final Predicate<PaperCard> notBasicLand = Predicates.not(Predicates.compose(CardRulesPredicates.Presets.IS_BASIC_LAND, PaperCard.FN_GET_RULES));
|
||||
final Predicate<PaperCard> notBasicLand = Predicates.not(Predicates.compose(CardRulesPredicates.Presets.IS_BASIC_LAND, PaperCard::getRules));
|
||||
final Iterable<PaperCard> source = Iterables.filter(FModel.getMagicDb().getCommonCards().getUniqueCards(), notBasicLand);
|
||||
randomDeck.getMain().addAllFlat(Aggregates.random(source, 15 * 5));
|
||||
|
||||
|
||||
@@ -42,8 +42,6 @@ import forge.screens.match.controllers.CDetailPicture;
|
||||
import forge.toolbox.FComboBox;
|
||||
import forge.util.ItemPool;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
@@ -85,14 +83,14 @@ public final class CEditorCommander extends CDeckEditor<Deck> {
|
||||
if (gameType == GameType.Brawl){
|
||||
GameFormat format = FModel.getFormats().get("Brawl");
|
||||
Predicate<CardRules> commanderFilter = CardRulesPredicates.Presets.CAN_BE_BRAWL_COMMANDER;
|
||||
commanderPool = ItemPool.createFrom(commonCards.getAllCardsNoAlt(Predicates.and(format.getFilterPrinted(), Predicates.compose(commanderFilter, PaperCard.FN_GET_RULES))), PaperCard.class);
|
||||
commanderPool = ItemPool.createFrom(commonCards.getAllCardsNoAlt(Predicates.and(format.getFilterPrinted(), Predicates.compose(commanderFilter, PaperCard::getRules))), PaperCard.class);
|
||||
normalPool = ItemPool.createFrom(format.getAllCards(), PaperCard.class);
|
||||
}
|
||||
else {
|
||||
Predicate<CardRules> commanderFilter = gameType == GameType.Oathbreaker
|
||||
? Predicates.or(CardRulesPredicates.Presets.CAN_BE_OATHBREAKER, CardRulesPredicates.Presets.CAN_BE_SIGNATURE_SPELL)
|
||||
: CardRulesPredicates.Presets.CAN_BE_COMMANDER;
|
||||
commanderPool = ItemPool.createFrom(commonCards.getAllCardsNoAlt(Predicates.compose(commanderFilter, PaperCard.FN_GET_RULES)),PaperCard.class);
|
||||
commanderPool = ItemPool.createFrom(commonCards.getAllCardsNoAlt(Predicates.compose(commanderFilter, PaperCard::getRules)),PaperCard.class);
|
||||
normalPool = ItemPool.createFrom(commonCards.getAllCardsNoAlt(), PaperCard.class);
|
||||
}
|
||||
|
||||
@@ -105,12 +103,7 @@ public final class CEditorCommander extends CDeckEditor<Deck> {
|
||||
this.setCatalogManager(catalogManager);
|
||||
this.setDeckManager(deckManager);
|
||||
|
||||
final Supplier<Deck> newCreator = new Supplier<Deck>() {
|
||||
@Override
|
||||
public Deck get() {
|
||||
return new Deck();
|
||||
}
|
||||
};
|
||||
final Supplier<Deck> newCreator = Deck::new;
|
||||
CardCollections decks = FModel.getDecks();
|
||||
switch (gameType) {
|
||||
case TinyLeaders:
|
||||
@@ -127,12 +120,7 @@ public final class CEditorCommander extends CDeckEditor<Deck> {
|
||||
break;
|
||||
}
|
||||
|
||||
getBtnAddBasicLands().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
CEditorConstructed.addBasicLands(CEditorCommander.this);
|
||||
}
|
||||
});
|
||||
getBtnAddBasicLands().setCommand((UiCommand) () -> CEditorConstructed.addBasicLands(CEditorCommander.this));
|
||||
}
|
||||
|
||||
//=========== Overridden from ACEditorBase
|
||||
@@ -218,13 +206,10 @@ public final class CEditorCommander extends CDeckEditor<Deck> {
|
||||
for (DeckSection section : allSections) {
|
||||
this.getCbxSection().addItem(section);
|
||||
}
|
||||
this.getCbxSection().addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent actionEvent) {
|
||||
FComboBox cb = (FComboBox)actionEvent.getSource();
|
||||
DeckSection ds = (DeckSection)cb.getSelectedItem();
|
||||
setEditorMode(ds);
|
||||
}
|
||||
this.getCbxSection().addActionListener(actionEvent -> {
|
||||
FComboBox cb = (FComboBox)actionEvent.getSource();
|
||||
DeckSection ds = (DeckSection)cb.getSelectedItem();
|
||||
setEditorMode(ds);
|
||||
});
|
||||
this.getCbxSection().setVisible(true);
|
||||
|
||||
|
||||
@@ -36,8 +36,6 @@ import forge.toolbox.FComboBox;
|
||||
import forge.util.ItemPool;
|
||||
import forge.util.Localizer;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
@@ -145,12 +143,7 @@ public final class CEditorConstructed extends CDeckEditor<Deck> {
|
||||
this.setCatalogManager(catalogManager);
|
||||
this.setDeckManager(deckManager);
|
||||
|
||||
final Supplier<Deck> newCreator = new Supplier<Deck>() {
|
||||
@Override
|
||||
public Deck get() {
|
||||
return new Deck();
|
||||
}
|
||||
};
|
||||
final Supplier<Deck> newCreator = Deck::new;
|
||||
|
||||
switch (this.gameType) {
|
||||
case Constructed:
|
||||
@@ -171,12 +164,7 @@ public final class CEditorConstructed extends CDeckEditor<Deck> {
|
||||
default:
|
||||
}
|
||||
|
||||
getBtnAddBasicLands().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
CEditorConstructed.addBasicLands(CEditorConstructed.this);
|
||||
}
|
||||
});
|
||||
getBtnAddBasicLands().setCommand((UiCommand) () -> CEditorConstructed.addBasicLands(CEditorConstructed.this));
|
||||
}
|
||||
|
||||
//=========== Overridden from ACEditorBase
|
||||
@@ -562,13 +550,10 @@ public final class CEditorConstructed extends CDeckEditor<Deck> {
|
||||
for (DeckSection section : allSections) {
|
||||
this.getCbxSection().addItem(section);
|
||||
}
|
||||
this.getCbxSection().addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent actionEvent) {
|
||||
FComboBox cb = (FComboBox)actionEvent.getSource();
|
||||
DeckSection ds = (DeckSection)cb.getSelectedItem();
|
||||
setEditorMode(ds);
|
||||
}
|
||||
this.getCbxSection().addActionListener(actionEvent -> {
|
||||
FComboBox cb = (FComboBox)actionEvent.getSource();
|
||||
DeckSection ds = (DeckSection)cb.getSelectedItem();
|
||||
setEditorMode(ds);
|
||||
});
|
||||
this.getCbxSection().setVisible(true);
|
||||
|
||||
|
||||
@@ -17,8 +17,6 @@
|
||||
*/
|
||||
package forge.screens.deckeditor.controllers;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
@@ -96,20 +94,10 @@ public final class CEditorLimited extends CDeckEditor<DeckGroup> {
|
||||
this.setCatalogManager(catalogManager);
|
||||
this.setDeckManager(deckManager);
|
||||
|
||||
final Supplier<DeckGroup> newCreator = new Supplier<DeckGroup>() {
|
||||
@Override
|
||||
public DeckGroup get() {
|
||||
return new DeckGroup("");
|
||||
}
|
||||
};
|
||||
final Supplier<DeckGroup> newCreator = DeckGroup::new;
|
||||
this.controller = new DeckController<>(deckMap0, this, newCreator);
|
||||
|
||||
getBtnAddBasicLands().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
CEditorLimited.addBasicLands(CEditorLimited.this);
|
||||
}
|
||||
});
|
||||
getBtnAddBasicLands().setCommand((UiCommand) () -> CEditorLimited.addBasicLands(CEditorLimited.this));
|
||||
|
||||
allSections.add(DeckSection.Main);
|
||||
allSections.add(DeckSection.Conspiracy);
|
||||
@@ -119,13 +107,10 @@ public final class CEditorLimited extends CDeckEditor<DeckGroup> {
|
||||
for (DeckSection section : allSections) {
|
||||
this.getCbxSection().addItem(section);
|
||||
}
|
||||
this.getCbxSection().addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent actionEvent) {
|
||||
FComboBox cb = (FComboBox)actionEvent.getSource();
|
||||
DeckSection ds = (DeckSection)cb.getSelectedItem();
|
||||
setEditorMode(ds);
|
||||
}
|
||||
this.getCbxSection().addActionListener(actionEvent -> {
|
||||
FComboBox cb = (FComboBox)actionEvent.getSource();
|
||||
DeckSection ds = (DeckSection)cb.getSelectedItem();
|
||||
setEditorMode(ds);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -56,11 +56,6 @@ public enum CEditorLog implements ICDoc {
|
||||
*/
|
||||
@Override
|
||||
public void update() {
|
||||
FThreads.invokeInEdtNowOrLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
view.updateConsole();
|
||||
}
|
||||
});
|
||||
FThreads.invokeInEdtNowOrLater(view::updateConsole);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,8 +17,6 @@
|
||||
*/
|
||||
package forge.screens.deckeditor.controllers;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@@ -134,26 +132,18 @@ public final class CEditorQuest extends CDeckEditor<Deck> {
|
||||
this.setCatalogManager(catalogManager);
|
||||
this.setDeckManager(deckManager);
|
||||
|
||||
final Supplier<Deck> newCreator = new Supplier<Deck>() {
|
||||
@Override
|
||||
public Deck get() {
|
||||
return new Deck();
|
||||
}
|
||||
};
|
||||
final Supplier<Deck> newCreator = Deck::new;
|
||||
|
||||
this.controller = new DeckController<>(questData0.getMyDecks(), this, newCreator);
|
||||
|
||||
getBtnAddBasicLands().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
Deck deck = getDeckController().getModel();
|
||||
if (deck == null) { return; }
|
||||
getBtnAddBasicLands().setCommand((UiCommand) () -> {
|
||||
Deck deck = getDeckController().getModel();
|
||||
if (deck == null) { return; }
|
||||
|
||||
AddBasicLandsDialog dialog = new AddBasicLandsDialog(deck, questData.getDefaultLandSet());
|
||||
CardPool landsToAdd = dialog.show();
|
||||
if (landsToAdd != null) {
|
||||
onAddItems(landsToAdd, false);
|
||||
}
|
||||
AddBasicLandsDialog dialog = new AddBasicLandsDialog(deck, questData.getDefaultLandSet());
|
||||
CardPool landsToAdd = dialog.show();
|
||||
if (landsToAdd != null) {
|
||||
onAddItems(landsToAdd, false);
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -227,12 +217,7 @@ public final class CEditorQuest extends CDeckEditor<Deck> {
|
||||
}
|
||||
GuiUtils.addMenuItem(cmb.getMenu(), s,
|
||||
KeyStroke.getKeyStroke(48 + n, 0),
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
SetRatingStars(n,cmb);
|
||||
}
|
||||
});
|
||||
() -> SetRatingStars(n,cmb));
|
||||
}
|
||||
|
||||
public void SetRatingStars(int n, EditorContextMenuBuilder cmb) {
|
||||
@@ -362,7 +347,7 @@ public final class CEditorQuest extends CDeckEditor<Deck> {
|
||||
}
|
||||
|
||||
private ItemPool<PaperCard> getCommanderCardPool(){
|
||||
Predicate<PaperCard> commanderPredicate = Predicates.compose(CardRulesPredicates.Presets.CAN_BE_COMMANDER, PaperCard.FN_GET_RULES);
|
||||
Predicate<PaperCard> commanderPredicate = Predicates.compose(CardRulesPredicates.Presets.CAN_BE_COMMANDER, PaperCard::getRules);
|
||||
return getRemainingCardPool().getFilteredPool(commanderPredicate);
|
||||
}
|
||||
|
||||
@@ -448,13 +433,10 @@ public final class CEditorQuest extends CDeckEditor<Deck> {
|
||||
for (DeckSection section : allSections) {
|
||||
this.getCbxSection().addItem(section);
|
||||
}
|
||||
this.getCbxSection().addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent actionEvent) {
|
||||
FComboBox cb = (FComboBox)actionEvent.getSource();
|
||||
DeckSection ds = (DeckSection)cb.getSelectedItem();
|
||||
setEditorMode(ds);
|
||||
}
|
||||
this.getCbxSection().addActionListener(actionEvent -> {
|
||||
FComboBox cb = (FComboBox)actionEvent.getSource();
|
||||
DeckSection ds = (DeckSection)cb.getSelectedItem();
|
||||
setEditorMode(ds);
|
||||
});
|
||||
this.getCbxSection().setVisible(true);
|
||||
|
||||
|
||||
@@ -68,12 +68,7 @@ public final class CEditorQuestCardShop extends ACEditorBase<InventoryItem, Deck
|
||||
.build();
|
||||
@SuppressWarnings("serial")
|
||||
private final FLabel fullCatalogToggle = new FLabel.Builder().text("See full catalog")
|
||||
.fontSize(14).hoverable(true).cmdClick(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
toggleFullCatalog();
|
||||
}
|
||||
})
|
||||
.fontSize(14).hoverable(true).cmdClick((UiCommand) this::toggleFullCatalog)
|
||||
.build();
|
||||
|
||||
private final QuestController questData;
|
||||
@@ -263,12 +258,9 @@ public final class CEditorQuestCardShop extends ACEditorBase<InventoryItem, Deck
|
||||
|
||||
this.getBtnRemove4().setText("Sell all extras");
|
||||
this.getBtnRemove4().setToolTipText("Sell unneeded extra copies of all cards");
|
||||
this.getBtnRemove4().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
QuestSpellShop.sellExtras(getCatalogManager(), getDeckManager());
|
||||
updateCreditsLabel();
|
||||
}
|
||||
this.getBtnRemove4().setCommand((UiCommand) () -> {
|
||||
QuestSpellShop.sellExtras(getCatalogManager(), getDeckManager());
|
||||
updateCreditsLabel();
|
||||
});
|
||||
|
||||
this.getDeckManager().getPnlButtons().add(creditsLabel, "gap 5px");
|
||||
|
||||
@@ -112,23 +112,13 @@ public final class CEditorQuestLimited extends CDeckEditor<DeckGroup> {
|
||||
this.setCatalogManager(catalogManager);
|
||||
this.setDeckManager(deckManager);
|
||||
|
||||
final Supplier<DeckGroup> newCreator = new Supplier<DeckGroup>() {
|
||||
@Override
|
||||
public DeckGroup get() {
|
||||
return new DeckGroup("");
|
||||
}
|
||||
};
|
||||
final Supplier<DeckGroup> newCreator = DeckGroup::new;
|
||||
|
||||
this.controller = new DeckController<>(questData0.getDraftDecks(), this, newCreator);
|
||||
controller.getView().getDeckManager().setup(ItemManagerConfig.DRAFT_POOL);
|
||||
controller.setModel(questData0.getDraftDecks().get(QuestEventDraft.DECK_NAME));
|
||||
|
||||
getBtnAddBasicLands().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
CEditorLimited.addBasicLands(CEditorQuestLimited.this);
|
||||
}
|
||||
});
|
||||
getBtnAddBasicLands().setCommand((UiCommand) () -> CEditorLimited.addBasicLands(CEditorQuestLimited.this));
|
||||
}
|
||||
|
||||
// fills number of decks using each card
|
||||
|
||||
@@ -81,20 +81,10 @@ public final class CEditorVariant extends CDeckEditor<Deck> {
|
||||
this.setCatalogManager(catalogManager);
|
||||
this.setDeckManager(deckManager);
|
||||
|
||||
final Supplier<Deck> newCreator = new Supplier<Deck>() {
|
||||
@Override
|
||||
public Deck get() {
|
||||
return new Deck();
|
||||
}
|
||||
};
|
||||
final Supplier<Deck> newCreator = Deck::new;
|
||||
this.controller = new DeckController<>(folder, this, newCreator);
|
||||
|
||||
getBtnAddBasicLands().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
CEditorConstructed.addBasicLands(CEditorVariant.this);
|
||||
}
|
||||
});
|
||||
getBtnAddBasicLands().setCommand((UiCommand) () -> CEditorConstructed.addBasicLands(CEditorVariant.this));
|
||||
}
|
||||
|
||||
//=========== Overridden from ACEditorBase
|
||||
|
||||
@@ -93,12 +93,7 @@ public class CEditorWinstonProcess extends ACEditorBase<PaperCard, DeckGroup> {
|
||||
this.setCatalogManager(catalogManager);
|
||||
this.setDeckManager(deckManager);
|
||||
|
||||
getBtnAddBasicLands().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
CEditorLimited.addBasicLands(CEditorWinstonProcess.this);
|
||||
}
|
||||
});
|
||||
getBtnAddBasicLands().setCommand((UiCommand) () -> CEditorLimited.addBasicLands(CEditorWinstonProcess.this));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -308,18 +303,8 @@ public class CEditorWinstonProcess extends ACEditorBase<PaperCard, DeckGroup> {
|
||||
this.ccAddCommand = this.getBtnAdd().getCommand();
|
||||
this.ccAdd4Command = this.getBtnAdd4().getCommand();
|
||||
|
||||
this.getBtnAdd().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
CEditorWinstonProcess.this.takePile();
|
||||
}
|
||||
});
|
||||
this.getBtnAdd4().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
CEditorWinstonProcess.this.passPile();
|
||||
}
|
||||
});
|
||||
this.getBtnAdd().setCommand((UiCommand) CEditorWinstonProcess.this::takePile);
|
||||
this.getBtnAdd4().setCommand((UiCommand) CEditorWinstonProcess.this::passPile);
|
||||
|
||||
deckGenParent = removeTab(VDeckgen.SINGLETON_INSTANCE);
|
||||
allDecksParent = removeTab(VAllDecks.SINGLETON_INSTANCE);
|
||||
|
||||
@@ -39,12 +39,7 @@ public enum CProbabilities implements ICDoc {
|
||||
@Override
|
||||
@SuppressWarnings("serial")
|
||||
public void initialize() {
|
||||
VProbabilities.SINGLETON_INSTANCE.getLblReshuffle().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
update();
|
||||
}
|
||||
});
|
||||
VProbabilities.SINGLETON_INSTANCE.getLblReshuffle().setCommand((UiCommand) this::update);
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
|
||||
@@ -52,7 +52,7 @@ public enum CStatistics implements ICDoc {
|
||||
}
|
||||
|
||||
private void setLabelValue(final JLabel label, final ItemPool<PaperCard> deck, final Predicate<CardRules> predicate, final int total) {
|
||||
final int tmp = deck.countAll(Predicates.compose(predicate, PaperCard.FN_GET_RULES));
|
||||
final int tmp = deck.countAll(Predicates.compose(predicate, PaperCard::getRules));
|
||||
label.setText(tmp + " (" + calculatePercentage(tmp, total) + "%)");
|
||||
}
|
||||
|
||||
|
||||
@@ -100,7 +100,7 @@ public class CStatisticsImporter {
|
||||
}
|
||||
|
||||
private void setLabelValue(final JLabel label, final ItemPool<PaperCard> deck, final Predicate<CardRules> predicate, final int total) {
|
||||
final int tmp = deck.countAll(Predicates.compose(predicate, PaperCard.FN_GET_RULES));
|
||||
final int tmp = deck.countAll(Predicates.compose(predicate, PaperCard::getRules));
|
||||
label.setText(tmp + " (" + calculatePercentage(tmp, total) + "%)");
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package forge.screens.deckeditor.menus;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.KeyEvent;
|
||||
|
||||
@@ -62,12 +61,7 @@ public final class DeckFileMenu {
|
||||
}
|
||||
|
||||
private static ActionListener getNewAction() {
|
||||
return new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnNew().getCommand().run();
|
||||
}
|
||||
};
|
||||
return e -> VCurrentDeck.SINGLETON_INSTANCE.getBtnNew().getCommand().run();
|
||||
}
|
||||
|
||||
private static SkinnedMenuItem getMenuItem_Open() {
|
||||
@@ -80,12 +74,7 @@ public final class DeckFileMenu {
|
||||
}
|
||||
|
||||
private static ActionListener getOpenAction() {
|
||||
return new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnOpen().getCommand().run();
|
||||
}
|
||||
};
|
||||
return e -> VCurrentDeck.SINGLETON_INSTANCE.getBtnOpen().getCommand().run();
|
||||
}
|
||||
|
||||
private static SkinnedMenuItem getMenuItem_Import() {
|
||||
@@ -97,12 +86,7 @@ public final class DeckFileMenu {
|
||||
}
|
||||
|
||||
private static ActionListener getImportAction() {
|
||||
return new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnImport().getCommand().run();
|
||||
}
|
||||
};
|
||||
return e -> VCurrentDeck.SINGLETON_INSTANCE.getBtnImport().getCommand().run();
|
||||
}
|
||||
|
||||
private static SkinnedMenuItem getMenuItem_Save() {
|
||||
@@ -116,12 +100,7 @@ public final class DeckFileMenu {
|
||||
}
|
||||
|
||||
private static ActionListener getSaveAction() {
|
||||
return new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnSave().getCommand().run();
|
||||
}
|
||||
};
|
||||
return e -> VCurrentDeck.SINGLETON_INSTANCE.getBtnSave().getCommand().run();
|
||||
}
|
||||
|
||||
private static SkinnedMenuItem getMenuItem_SaveAs() {
|
||||
@@ -135,12 +114,7 @@ public final class DeckFileMenu {
|
||||
}
|
||||
|
||||
private static ActionListener getSaveAsAction() {
|
||||
return new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnSaveAs().getCommand().run();
|
||||
}
|
||||
};
|
||||
return e -> VCurrentDeck.SINGLETON_INSTANCE.getBtnSaveAs().getCommand().run();
|
||||
}
|
||||
|
||||
private static SkinnedMenuItem getMenuItem_Print() {
|
||||
@@ -153,11 +127,6 @@ public final class DeckFileMenu {
|
||||
}
|
||||
|
||||
private static ActionListener getPrintAction() {
|
||||
return new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
VCurrentDeck.SINGLETON_INSTANCE.getBtnPrintProxies().getCommand().run();
|
||||
}
|
||||
};
|
||||
return e -> VCurrentDeck.SINGLETON_INSTANCE.getBtnPrintProxies().getCommand().run();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -186,7 +186,7 @@ public class PlayerPanel extends FPanel {
|
||||
addHandlersToVariantsControls();
|
||||
|
||||
this.addMouseListener(new FMouseAdapter() {
|
||||
@Override public final void onLeftMouseDown(final MouseEvent e) {
|
||||
@Override public void onLeftMouseDown(final MouseEvent e) {
|
||||
avatarLabel.requestFocusInWindow();
|
||||
}
|
||||
});
|
||||
@@ -248,9 +248,9 @@ public class PlayerPanel extends FPanel {
|
||||
updateVariantControlsVisibility();
|
||||
}
|
||||
|
||||
private final FMouseAdapter radioMouseAdapter(final FRadioButton source, final LobbySlotType type) {
|
||||
private FMouseAdapter radioMouseAdapter(final FRadioButton source, final LobbySlotType type) {
|
||||
return new FMouseAdapter() {
|
||||
@Override public final void onLeftClick(final MouseEvent e) {
|
||||
@Override public void onLeftClick(final MouseEvent e) {
|
||||
if (!source.isEnabled()) {
|
||||
return;
|
||||
}
|
||||
@@ -297,7 +297,7 @@ public class PlayerPanel extends FPanel {
|
||||
};
|
||||
|
||||
private final FMouseAdapter avatarMouseListener = new FMouseAdapter() {
|
||||
@Override public final void onLeftClick(final MouseEvent e) {
|
||||
@Override public void onLeftClick(final MouseEvent e) {
|
||||
if (!avatarLabel.isEnabled()) {
|
||||
return;
|
||||
}
|
||||
@@ -309,12 +309,9 @@ public class PlayerPanel extends FPanel {
|
||||
|
||||
final AvatarSelector aSel = new AvatarSelector(playerName, avatarIndex, lobby.getUsedAvatars());
|
||||
for (final FLabel lbl : aSel.getSelectables()) {
|
||||
lbl.setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
setAvatarIndex(Integer.parseInt(lbl.getName().substring(11)));
|
||||
aSel.setVisible(false);
|
||||
}
|
||||
lbl.setCommand((UiCommand) () -> {
|
||||
setAvatarIndex(Integer.parseInt(lbl.getName().substring(11)));
|
||||
aSel.setVisible(false);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -328,7 +325,7 @@ public class PlayerPanel extends FPanel {
|
||||
lobby.firePlayerChangeListener(index);
|
||||
}
|
||||
|
||||
@Override public final void onRightClick(final MouseEvent e) {
|
||||
@Override public void onRightClick(final MouseEvent e) {
|
||||
if (!avatarLabel.isEnabled()) {
|
||||
return;
|
||||
}
|
||||
@@ -353,7 +350,7 @@ public class PlayerPanel extends FPanel {
|
||||
};
|
||||
|
||||
private final FMouseAdapter sleeveMouseListener = new FMouseAdapter() {
|
||||
@Override public final void onLeftClick(final MouseEvent e) {
|
||||
@Override public void onLeftClick(final MouseEvent e) {
|
||||
if (!sleeveLabel.isEnabled()) {
|
||||
return;
|
||||
}
|
||||
@@ -365,12 +362,9 @@ public class PlayerPanel extends FPanel {
|
||||
|
||||
final SleeveSelector sSel = new SleeveSelector(playerName, sleeveIndex, lobby.getUsedSleeves());
|
||||
for (final FLabel lbl : sSel.getSelectables()) {
|
||||
lbl.setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
setSleeveIndex(Integer.parseInt(lbl.getName().substring(11)));
|
||||
sSel.setVisible(false);
|
||||
}
|
||||
lbl.setCommand((UiCommand) () -> {
|
||||
setSleeveIndex(Integer.parseInt(lbl.getName().substring(11)));
|
||||
sSel.setVisible(false);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -384,7 +378,7 @@ public class PlayerPanel extends FPanel {
|
||||
lobby.firePlayerChangeListener(index);
|
||||
}
|
||||
|
||||
@Override public final void onRightClick(final MouseEvent e) {
|
||||
@Override public void onRightClick(final MouseEvent e) {
|
||||
if (!sleeveLabel.isEnabled()) {
|
||||
return;
|
||||
}
|
||||
@@ -527,7 +521,7 @@ public class PlayerPanel extends FPanel {
|
||||
|
||||
private final ActionListener teamListener = new ActionListener() {
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override public final void actionPerformed(final ActionEvent e) {
|
||||
@Override public void actionPerformed(final ActionEvent e) {
|
||||
final FComboBox<Object> cb = (FComboBox<Object>) e.getSource();
|
||||
cb.requestFocusInWindow();
|
||||
final Object selection = cb.getSelectedItem();
|
||||
@@ -541,79 +535,53 @@ public class PlayerPanel extends FPanel {
|
||||
|
||||
private void addHandlersToVariantsControls() {
|
||||
// Archenemy buttons
|
||||
scmDeckSelectorBtn.setCommand(new Runnable() {
|
||||
@Override public final void run() {
|
||||
lobby.setCurrentGameMode(lobby.hasVariant(GameType.Archenemy) ? GameType.Archenemy : GameType.ArchenemyRumble);
|
||||
scmDeckSelectorBtn.requestFocusInWindow();
|
||||
lobby.changePlayerFocus(index);
|
||||
}
|
||||
scmDeckSelectorBtn.setCommand((Runnable) () -> {
|
||||
lobby.setCurrentGameMode(lobby.hasVariant(GameType.Archenemy) ? GameType.Archenemy : GameType.ArchenemyRumble);
|
||||
scmDeckSelectorBtn.requestFocusInWindow();
|
||||
lobby.changePlayerFocus(index);
|
||||
});
|
||||
|
||||
scmDeckEditor.setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
lobby.setCurrentGameMode(lobby.hasVariant(GameType.Archenemy) ? GameType.Archenemy : GameType.ArchenemyRumble);
|
||||
final Predicate<PaperCard> predSchemes = new Predicate<PaperCard>() {
|
||||
@Override public final boolean apply(final PaperCard arg0) {
|
||||
return arg0.getRules().getType().isScheme();
|
||||
}
|
||||
};
|
||||
scmDeckEditor.setCommand((UiCommand) () -> {
|
||||
lobby.setCurrentGameMode(lobby.hasVariant(GameType.Archenemy) ? GameType.Archenemy : GameType.ArchenemyRumble);
|
||||
final Predicate<PaperCard> predSchemes = arg0 -> arg0.getRules().getType().isScheme();
|
||||
|
||||
Singletons.getControl().setCurrentScreen(FScreen.DECK_EDITOR_ARCHENEMY);
|
||||
CDeckEditorUI.SINGLETON_INSTANCE.setEditorController(
|
||||
new CEditorVariant(FModel.getDecks().getScheme(), predSchemes, DeckSection.Schemes, FScreen.DECK_EDITOR_ARCHENEMY, CDeckEditorUI.SINGLETON_INSTANCE.getCDetailPicture()));
|
||||
}
|
||||
Singletons.getControl().setCurrentScreen(FScreen.DECK_EDITOR_ARCHENEMY);
|
||||
CDeckEditorUI.SINGLETON_INSTANCE.setEditorController(
|
||||
new CEditorVariant(FModel.getDecks().getScheme(), predSchemes, DeckSection.Schemes, FScreen.DECK_EDITOR_ARCHENEMY, CDeckEditorUI.SINGLETON_INSTANCE.getCDetailPicture()));
|
||||
});
|
||||
|
||||
// Commander buttons
|
||||
cmdDeckSelectorBtn.setCommand(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
lobby.setCurrentGameMode(
|
||||
lobby.hasVariant(GameType.Oathbreaker) ? GameType.Oathbreaker :
|
||||
lobby.hasVariant(GameType.TinyLeaders) ? GameType.TinyLeaders :
|
||||
lobby.hasVariant(GameType.Brawl) ? GameType.Brawl :
|
||||
GameType.Commander);
|
||||
cmdDeckSelectorBtn.requestFocusInWindow();
|
||||
lobby.changePlayerFocus(index);
|
||||
}
|
||||
cmdDeckSelectorBtn.setCommand((Runnable) () -> {
|
||||
lobby.setCurrentGameMode(
|
||||
lobby.hasVariant(GameType.Oathbreaker) ? GameType.Oathbreaker :
|
||||
lobby.hasVariant(GameType.TinyLeaders) ? GameType.TinyLeaders :
|
||||
lobby.hasVariant(GameType.Brawl) ? GameType.Brawl :
|
||||
GameType.Commander);
|
||||
cmdDeckSelectorBtn.requestFocusInWindow();
|
||||
lobby.changePlayerFocus(index);
|
||||
});
|
||||
|
||||
// Planechase buttons
|
||||
pchDeckSelectorBtn.setCommand(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
lobby.setCurrentGameMode(GameType.Planechase);
|
||||
pchDeckSelectorBtn.requestFocusInWindow();
|
||||
lobby.changePlayerFocus(index, GameType.Planechase);
|
||||
}
|
||||
pchDeckSelectorBtn.setCommand((Runnable) () -> {
|
||||
lobby.setCurrentGameMode(GameType.Planechase);
|
||||
pchDeckSelectorBtn.requestFocusInWindow();
|
||||
lobby.changePlayerFocus(index, GameType.Planechase);
|
||||
});
|
||||
|
||||
pchDeckEditor.setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
lobby.setCurrentGameMode(GameType.Planechase);
|
||||
final Predicate<PaperCard> predPlanes = new Predicate<PaperCard>() {
|
||||
@Override
|
||||
public boolean apply(final PaperCard arg0) {
|
||||
return arg0.getRules().getType().isPlane() || arg0.getRules().getType().isPhenomenon();
|
||||
}
|
||||
};
|
||||
pchDeckEditor.setCommand((UiCommand) () -> {
|
||||
lobby.setCurrentGameMode(GameType.Planechase);
|
||||
final Predicate<PaperCard> predPlanes = arg0 -> arg0.getRules().getType().isPlane() || arg0.getRules().getType().isPhenomenon();
|
||||
|
||||
Singletons.getControl().setCurrentScreen(FScreen.DECK_EDITOR_PLANECHASE);
|
||||
CDeckEditorUI.SINGLETON_INSTANCE.setEditorController(
|
||||
new CEditorVariant(FModel.getDecks().getPlane(), predPlanes, DeckSection.Planes, FScreen.DECK_EDITOR_PLANECHASE, CDeckEditorUI.SINGLETON_INSTANCE.getCDetailPicture()));
|
||||
}
|
||||
Singletons.getControl().setCurrentScreen(FScreen.DECK_EDITOR_PLANECHASE);
|
||||
CDeckEditorUI.SINGLETON_INSTANCE.setEditorController(
|
||||
new CEditorVariant(FModel.getDecks().getPlane(), predPlanes, DeckSection.Planes, FScreen.DECK_EDITOR_PLANECHASE, CDeckEditorUI.SINGLETON_INSTANCE.getCDetailPicture()));
|
||||
});
|
||||
|
||||
// Vanguard buttons
|
||||
vgdSelectorBtn.setCommand(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
lobby.setCurrentGameMode(GameType.Vanguard);
|
||||
vgdSelectorBtn.requestFocusInWindow();
|
||||
lobby.changePlayerFocus(index, GameType.Vanguard);
|
||||
}
|
||||
vgdSelectorBtn.setCommand((Runnable) () -> {
|
||||
lobby.setCurrentGameMode(GameType.Vanguard);
|
||||
vgdSelectorBtn.requestFocusInWindow();
|
||||
lobby.changePlayerFocus(index, GameType.Vanguard);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -625,10 +593,7 @@ public class PlayerPanel extends FPanel {
|
||||
final JPopupMenu menu = new JPopupMenu();
|
||||
radioAiUseSimulation = new JCheckBoxMenuItem(localizer.getMessage("lblUseSimulation"));
|
||||
menu.add(radioAiUseSimulation);
|
||||
radioAiUseSimulation.addActionListener(new ActionListener() {
|
||||
@Override public final void actionPerformed(final ActionEvent e) {
|
||||
lobby.firePlayerChangeListener(index);
|
||||
} });
|
||||
radioAiUseSimulation.addActionListener(e -> lobby.firePlayerChangeListener(index));
|
||||
radioAi.setComponentPopupMenu(menu);
|
||||
|
||||
radioHuman.addMouseListener(radioMouseAdapter(radioHuman, LobbySlotType.LOCAL));
|
||||
@@ -643,38 +608,29 @@ public class PlayerPanel extends FPanel {
|
||||
|
||||
private void createReadyButton() {
|
||||
chkReady = new FCheckBox(localizer.getMessage("lblReady"));
|
||||
chkReady.addActionListener(new ActionListener() {
|
||||
@Override public final void actionPerformed(final ActionEvent e) {
|
||||
lobby.setReady(index, chkReady.isSelected());
|
||||
}
|
||||
});
|
||||
chkReady.addActionListener(e -> lobby.setReady(index, chkReady.isSelected()));
|
||||
}
|
||||
|
||||
private void createDevModeButton() {
|
||||
chkDevMode = new FCheckBox(localizer.getMessage("cbDevMode"));
|
||||
|
||||
chkDevMode.addActionListener(new ActionListener() {
|
||||
@Override public final void actionPerformed(final ActionEvent e) {
|
||||
final boolean toggle = chkDevMode.isSelected();
|
||||
prefs.setPref(FPref.DEV_MODE_ENABLED, String.valueOf(toggle));
|
||||
ForgePreferences.DEV_MODE = toggle;
|
||||
chkDevMode.addActionListener(e -> {
|
||||
final boolean toggle = chkDevMode.isSelected();
|
||||
prefs.setPref(FPref.DEV_MODE_ENABLED, String.valueOf(toggle));
|
||||
ForgePreferences.DEV_MODE = toggle;
|
||||
|
||||
// ensure that preferences panel reflects the change
|
||||
prefs.save();
|
||||
// ensure that preferences panel reflects the change
|
||||
prefs.save();
|
||||
|
||||
lobby.setDevMode(index);
|
||||
}
|
||||
lobby.setDevMode(index);
|
||||
});
|
||||
}
|
||||
|
||||
private void addHandlersDeckSelector() {
|
||||
deckBtn.setCommand(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
lobby.setCurrentGameMode(GameType.Constructed);
|
||||
deckBtn.requestFocusInWindow();
|
||||
lobby.changePlayerFocus(index, GameType.Constructed);
|
||||
}
|
||||
deckBtn.setCommand((Runnable) () -> {
|
||||
lobby.setCurrentGameMode(GameType.Constructed);
|
||||
deckBtn.requestFocusInWindow();
|
||||
lobby.changePlayerFocus(index, GameType.Constructed);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -682,22 +638,19 @@ public class PlayerPanel extends FPanel {
|
||||
final FLabel newNameBtn = new FLabel.Builder().tooltip(localizer.getMessage("lblGetaNewRandomName")).iconInBackground(false)
|
||||
.icon(FSkin.getIcon(FSkinProp.ICO_EDIT)).hoverable(true).opaque(false)
|
||||
.unhoveredAlpha(0.9f).build();
|
||||
newNameBtn.setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
final String newName = lobby.getNewName();
|
||||
if (null == newName) {
|
||||
return;
|
||||
}
|
||||
txtPlayerName.setText(newName);
|
||||
|
||||
if (index == 0) {
|
||||
prefs.setPref(FPref.PLAYER_NAME, newName);
|
||||
prefs.save();
|
||||
}
|
||||
txtPlayerName.requestFocus();
|
||||
lobby.changePlayerFocus(index);
|
||||
newNameBtn.setCommand((UiCommand) () -> {
|
||||
final String newName = lobby.getNewName();
|
||||
if (null == newName) {
|
||||
return;
|
||||
}
|
||||
txtPlayerName.setText(newName);
|
||||
|
||||
if (index == 0) {
|
||||
prefs.setPref(FPref.PLAYER_NAME, newName);
|
||||
prefs.save();
|
||||
}
|
||||
txtPlayerName.requestFocus();
|
||||
lobby.changePlayerFocus(index);
|
||||
});
|
||||
newNameBtn.addFocusListener(nameFocusListener);
|
||||
return newNameBtn;
|
||||
@@ -725,13 +678,11 @@ public class PlayerPanel extends FPanel {
|
||||
private FLabel createCloseButton() {
|
||||
final FLabel closeBtn = new FLabel.Builder().tooltip(localizer.getMessage("lblRemove")).iconInBackground(false)
|
||||
.icon(FSkin.getIcon(FSkinProp.ICO_CLOSE)).hoverable(true).build();
|
||||
closeBtn.setCommand(new Runnable() {
|
||||
@Override public final void run() {
|
||||
if (type == LobbySlotType.REMOTE && !SOptionPane.showConfirmDialog(String.format(localizer.getMessage("lblReallyKick"), playerName), localizer.getMessage("lblKick"), false)) {
|
||||
return;
|
||||
}
|
||||
lobby.removePlayer(index);
|
||||
closeBtn.setCommand((Runnable) () -> {
|
||||
if (type == LobbySlotType.REMOTE && !SOptionPane.showConfirmDialog(String.format(localizer.getMessage("lblReallyKick"), playerName), localizer.getMessage("lblKick"), false)) {
|
||||
return;
|
||||
}
|
||||
lobby.removePlayer(index);
|
||||
});
|
||||
return closeBtn;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package forge.screens.home;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.FocusEvent;
|
||||
import java.awt.event.FocusListener;
|
||||
|
||||
@@ -37,16 +35,11 @@ public class StartButton extends SkinnedButton {
|
||||
}
|
||||
});
|
||||
|
||||
addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
setEnabled(false);
|
||||
|
||||
// ensure the click action can resolve before we allow the button to be clicked again
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() { setEnabled(true); }
|
||||
});
|
||||
}
|
||||
addActionListener(e -> {
|
||||
setEnabled(false);
|
||||
|
||||
// ensure the click action can resolve before we allow the button to be clicked again
|
||||
SwingUtilities.invokeLater(() -> setEnabled(true));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package forge.screens.home;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.FocusEvent;
|
||||
import java.awt.event.FocusListener;
|
||||
|
||||
@@ -36,16 +34,11 @@ public class StopButton extends SkinnedButton {
|
||||
}
|
||||
});
|
||||
|
||||
addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
setEnabled(false);
|
||||
addActionListener(e -> {
|
||||
setEnabled(false);
|
||||
|
||||
// ensure the click action can resolve before we allow the button to be clicked again
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() { setEnabled(true); }
|
||||
});
|
||||
}
|
||||
// ensure the click action can resolve before we allow the button to be clicked again
|
||||
SwingUtilities.invokeLater(() -> setEnabled(true));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package forge.screens.home;
|
||||
|
||||
import java.awt.Font;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.ItemEvent;
|
||||
import java.util.ArrayList;
|
||||
@@ -12,7 +11,6 @@ import java.util.Map;
|
||||
import java.util.Vector;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.event.ListSelectionEvent;
|
||||
import javax.swing.event.ListSelectionListener;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
@@ -184,16 +182,13 @@ public class VLobby implements ILobbyView {
|
||||
pnlStart.setOpaque(false);
|
||||
pnlStart.add(btnStart, "align center");
|
||||
// Start button event handling
|
||||
btnStart.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent arg0) {
|
||||
Runnable startGame = lobby.startGame();
|
||||
if (startGame != null) {
|
||||
if (!gamesInMatch.getSelectedItem().equals(ForgePreferences.FPref.UI_MATCHES_PER_GAME)) {
|
||||
FModel.getPreferences().setPref(FPref.UI_MATCHES_PER_GAME, (String) gamesInMatch.getSelectedItem());
|
||||
}
|
||||
startGame.run();
|
||||
btnStart.addActionListener(arg0 -> {
|
||||
Runnable startGame = lobby.startGame();
|
||||
if (startGame != null) {
|
||||
if (!gamesInMatch.getSelectedItem().equals(FPref.UI_MATCHES_PER_GAME)) {
|
||||
FModel.getPreferences().setPref(FPref.UI_MATCHES_PER_GAME, (String) gamesInMatch.getSelectedItem());
|
||||
}
|
||||
startGame.run();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -394,25 +389,13 @@ public class VLobby implements ILobbyView {
|
||||
@SuppressWarnings("serial")
|
||||
private void buildDeckPanels(final int playerIndex) {
|
||||
// Scheme deck list
|
||||
buildDeckPanel(localizer.getMessage("lblSchemeDeck"), playerIndex, schemeDeckLists, schemeDeckPanels, new ListSelectionListener() {
|
||||
@Override public final void valueChanged(final ListSelectionEvent e) {
|
||||
selectSchemeDeck(playerIndex);
|
||||
}
|
||||
});
|
||||
buildDeckPanel(localizer.getMessage("lblSchemeDeck"), playerIndex, schemeDeckLists, schemeDeckPanels, e -> selectSchemeDeck(playerIndex));
|
||||
|
||||
// Planar deck list
|
||||
buildDeckPanel(localizer.getMessage("lblPlanarDeck"), playerIndex, planarDeckLists, planarDeckPanels, new ListSelectionListener() {
|
||||
@Override public final void valueChanged(final ListSelectionEvent e) {
|
||||
selectPlanarDeck(playerIndex);
|
||||
}
|
||||
});
|
||||
buildDeckPanel(localizer.getMessage("lblPlanarDeck"), playerIndex, planarDeckLists, planarDeckPanels, e -> selectPlanarDeck(playerIndex));
|
||||
|
||||
// Vanguard avatar list
|
||||
buildDeckPanel(localizer.getMessage("lblVanguardAvatar"), playerIndex, vgdAvatarLists, vgdPanels, new ListSelectionListener() {
|
||||
@Override public final void valueChanged(final ListSelectionEvent e) {
|
||||
selectVanguardAvatar(playerIndex);
|
||||
}
|
||||
});
|
||||
buildDeckPanel(localizer.getMessage("lblVanguardAvatar"), playerIndex, vgdAvatarLists, vgdPanels, e -> selectVanguardAvatar(playerIndex));
|
||||
Iterables.getLast(vgdAvatarLists).setListData(isPlayerAI(playerIndex) ? aiListData : humanListData);
|
||||
Iterables.getLast(vgdAvatarLists).setSelectedIndex(0);
|
||||
final CardDetailPanel vgdDetail = new CardDetailPanel();
|
||||
@@ -454,7 +437,7 @@ public class VLobby implements ILobbyView {
|
||||
}
|
||||
final Collection<DeckProxy> selectedDecks = mainChooser.getLstDecks().getSelectedItems();
|
||||
if (playerIndex < activePlayersNum && lobby.mayEdit(playerIndex)) {
|
||||
final String text = type.toString() + ": " + Lang.joinHomogenous(selectedDecks, DeckProxy.FN_GET_NAME);
|
||||
final String text = type.toString() + ": " + Lang.joinHomogenous(selectedDecks, DeckProxy::getName);
|
||||
if (isCommanderDeck) {
|
||||
getPlayerPanel(playerIndex).setCommanderDeckSelectorButtonText(text);
|
||||
} else {
|
||||
@@ -826,12 +809,9 @@ public class VLobby implements ILobbyView {
|
||||
});
|
||||
}
|
||||
|
||||
final ActionListener nameListener = new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
final FTextField nField = (FTextField)e.getSource();
|
||||
nField.transferFocus();
|
||||
}
|
||||
final ActionListener nameListener = e -> {
|
||||
final FTextField nField = (FTextField)e.getSource();
|
||||
nField.transferFocus();
|
||||
};
|
||||
|
||||
/////////////////////////////////////
|
||||
|
||||
@@ -51,50 +51,20 @@ public enum CSubmenuGauntletBuild implements ICDoc {
|
||||
}
|
||||
};
|
||||
|
||||
private final UiCommand cmdAddDeck = new UiCommand() {
|
||||
@Override public void run() {
|
||||
addDeck();
|
||||
}
|
||||
};
|
||||
private final UiCommand cmdRemoveDeck = new UiCommand() {
|
||||
@Override public void run() {
|
||||
removeDeck();
|
||||
}
|
||||
};
|
||||
private final UiCommand cmdDeckUp = new UiCommand() {
|
||||
@Override public void run() {
|
||||
deckUp();
|
||||
}
|
||||
};
|
||||
private final UiCommand cmdDeckDown = new UiCommand() {
|
||||
@Override public void run() {
|
||||
deckDown();
|
||||
}
|
||||
};
|
||||
private final UiCommand cmdSave = new UiCommand() {
|
||||
@Override public void run() {
|
||||
saveGauntlet();
|
||||
}
|
||||
};
|
||||
private final UiCommand cmdNew = new UiCommand() {
|
||||
@Override public void run() {
|
||||
newGauntlet();
|
||||
}
|
||||
};
|
||||
private final UiCommand cmdOpen = new UiCommand() {
|
||||
@Override public void run() {
|
||||
openGauntlet();
|
||||
}
|
||||
};
|
||||
private final UiCommand cmdAddDeck = this::addDeck;
|
||||
private final UiCommand cmdRemoveDeck = this::removeDeck;
|
||||
private final UiCommand cmdDeckUp = this::deckUp;
|
||||
private final UiCommand cmdDeckDown = this::deckDown;
|
||||
private final UiCommand cmdSave = this::saveGauntlet;
|
||||
private final UiCommand cmdNew = this::newGauntlet;
|
||||
private final UiCommand cmdOpen = this::openGauntlet;
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.home.ICSubmenu#initialize()
|
||||
*/
|
||||
@Override
|
||||
public void update() {
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() { view.focusName(); }
|
||||
});
|
||||
SwingUtilities.invokeLater(view::focusName);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package forge.screens.home.gauntlet;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -26,11 +25,7 @@ public enum CSubmenuGauntletCommander implements ICDoc {
|
||||
/** */
|
||||
SINGLETON_INSTANCE;
|
||||
|
||||
private final ActionListener actStartGame = new ActionListener() {
|
||||
@Override public void actionPerformed(final ActionEvent arg0) {
|
||||
startGame();
|
||||
}
|
||||
};
|
||||
private final ActionListener actStartGame = arg0 -> startGame();
|
||||
|
||||
private final VSubmenuGauntletCommander view = VSubmenuGauntletCommander.SINGLETON_INSTANCE;
|
||||
|
||||
@@ -39,9 +34,7 @@ public enum CSubmenuGauntletCommander implements ICDoc {
|
||||
*/
|
||||
@Override
|
||||
public void update() {
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() { view.getBtnStart().requestFocusInWindow(); }
|
||||
});
|
||||
SwingUtilities.invokeLater(() -> view.getBtnStart().requestFocusInWindow());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -64,12 +57,9 @@ public enum CSubmenuGauntletCommander implements ICDoc {
|
||||
}
|
||||
|
||||
// Start game overlay
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
SOverlayUtils.startGameOverlay();
|
||||
SOverlayUtils.showOverlay();
|
||||
}
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
SOverlayUtils.startGameOverlay();
|
||||
SOverlayUtils.showOverlay();
|
||||
});
|
||||
|
||||
// Find appropriate filename for new save, create and set new save file.
|
||||
@@ -87,12 +77,7 @@ public enum CSubmenuGauntletCommander implements ICDoc {
|
||||
|
||||
gd.startRound(starter, human);
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
SOverlayUtils.hideOverlay();
|
||||
}
|
||||
});
|
||||
SwingUtilities.invokeLater(SOverlayUtils::hideOverlay);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package forge.screens.home.gauntlet;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
@@ -30,21 +29,14 @@ public enum CSubmenuGauntletContests implements ICDoc {
|
||||
|
||||
private final VSubmenuGauntletContests view = VSubmenuGauntletContests.SINGLETON_INSTANCE;
|
||||
|
||||
private final ActionListener actStartGame = new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent arg0) {
|
||||
startGame();
|
||||
}
|
||||
};
|
||||
private final ActionListener actStartGame = arg0 -> startGame();
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see forge.gui.home.ICSubmenu#initialize()
|
||||
*/
|
||||
@Override
|
||||
public void update() {
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() { view.getBtnStart().requestFocusInWindow(); }
|
||||
});
|
||||
SwingUtilities.invokeLater(() -> view.getBtnStart().requestFocusInWindow());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -95,12 +87,9 @@ public enum CSubmenuGauntletContests implements ICDoc {
|
||||
gd.stamp();
|
||||
FModel.setGauntletData(gd);
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
SOverlayUtils.startGameOverlay();
|
||||
SOverlayUtils.showOverlay();
|
||||
}
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
SOverlayUtils.startGameOverlay();
|
||||
SOverlayUtils.showOverlay();
|
||||
});
|
||||
|
||||
final Deck aiDeck = gd.getDecks().get(gd.getCompleted());
|
||||
@@ -112,12 +101,7 @@ public enum CSubmenuGauntletContests implements ICDoc {
|
||||
|
||||
gd.startRound(starter, human);
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
SOverlayUtils.hideOverlay();
|
||||
}
|
||||
});
|
||||
SwingUtilities.invokeLater(SOverlayUtils::hideOverlay);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package forge.screens.home.gauntlet;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
@@ -30,11 +29,7 @@ import forge.player.GamePlayerUtil;
|
||||
public enum CSubmenuGauntletLoad implements ICDoc {
|
||||
SINGLETON_INSTANCE;
|
||||
|
||||
private final ActionListener actStartGame = new ActionListener() {
|
||||
@Override public final void actionPerformed(final ActionEvent arg0) {
|
||||
startGame();
|
||||
}
|
||||
};
|
||||
private final ActionListener actStartGame = arg0 -> startGame();
|
||||
|
||||
private final VSubmenuGauntletLoad view = VSubmenuGauntletLoad.SINGLETON_INSTANCE;
|
||||
|
||||
@@ -48,12 +43,10 @@ public enum CSubmenuGauntletLoad implements ICDoc {
|
||||
|
||||
view.getGauntletLister().setSelectedIndex(0);
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() {
|
||||
final JButton btnStart = view.getBtnStart();
|
||||
if (btnStart.isEnabled()) {
|
||||
view.getBtnStart().requestFocusInWindow();
|
||||
}
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
final JButton btnStart = view.getBtnStart();
|
||||
if (btnStart.isEnabled()) {
|
||||
view.getBtnStart().requestFocusInWindow();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -70,24 +63,9 @@ public enum CSubmenuGauntletLoad implements ICDoc {
|
||||
public void initialize() {
|
||||
view.getBtnStart().addActionListener(actStartGame);
|
||||
|
||||
view.getGauntletLister().setCmdDelete(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
enableStartButton();
|
||||
}
|
||||
});
|
||||
view.getGauntletLister().setCmdSelect(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
enableStartButton();
|
||||
}
|
||||
});
|
||||
view.getGauntletLister().setCmdActivate(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
startGame();
|
||||
}
|
||||
});
|
||||
view.getGauntletLister().setCmdDelete((UiCommand) this::enableStartButton);
|
||||
view.getGauntletLister().setCmdSelect((UiCommand) this::enableStartButton);
|
||||
view.getGauntletLister().setCmdActivate((UiCommand) this::startGame);
|
||||
}
|
||||
|
||||
private void updateData() {
|
||||
@@ -131,12 +109,9 @@ public enum CSubmenuGauntletLoad implements ICDoc {
|
||||
}
|
||||
|
||||
// Start game
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
SOverlayUtils.startGameOverlay();
|
||||
SOverlayUtils.showOverlay();
|
||||
}
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
SOverlayUtils.startGameOverlay();
|
||||
SOverlayUtils.showOverlay();
|
||||
});
|
||||
|
||||
final List<RegisteredPlayer> starter = new ArrayList<>();
|
||||
@@ -150,12 +125,7 @@ public enum CSubmenuGauntletLoad implements ICDoc {
|
||||
|
||||
gd.startRound(starter, human);
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
SOverlayUtils.hideOverlay();
|
||||
}
|
||||
});
|
||||
SwingUtilities.invokeLater(SOverlayUtils::hideOverlay);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package forge.screens.home.gauntlet;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -26,11 +25,7 @@ public enum CSubmenuGauntletQuick implements ICDoc {
|
||||
/** */
|
||||
SINGLETON_INSTANCE;
|
||||
|
||||
private final ActionListener actStartGame = new ActionListener() {
|
||||
@Override public void actionPerformed(final ActionEvent arg0) {
|
||||
startGame();
|
||||
}
|
||||
};
|
||||
private final ActionListener actStartGame = arg0 -> startGame();
|
||||
|
||||
private final VSubmenuGauntletQuick view = VSubmenuGauntletQuick.SINGLETON_INSTANCE;
|
||||
|
||||
@@ -39,9 +34,7 @@ public enum CSubmenuGauntletQuick implements ICDoc {
|
||||
*/
|
||||
@Override
|
||||
public void update() {
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() { view.getBtnStart().requestFocusInWindow(); }
|
||||
});
|
||||
SwingUtilities.invokeLater(() -> view.getBtnStart().requestFocusInWindow());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -64,12 +57,9 @@ public enum CSubmenuGauntletQuick implements ICDoc {
|
||||
}
|
||||
|
||||
// Start game overlay
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
SOverlayUtils.startGameOverlay();
|
||||
SOverlayUtils.showOverlay();
|
||||
}
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
SOverlayUtils.startGameOverlay();
|
||||
SOverlayUtils.showOverlay();
|
||||
});
|
||||
|
||||
// Find appropriate filename for new save, create and set new save file.
|
||||
@@ -99,12 +89,7 @@ public enum CSubmenuGauntletQuick implements ICDoc {
|
||||
|
||||
gd.startRound(starter, human);
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
SOverlayUtils.hideOverlay();
|
||||
}
|
||||
});
|
||||
SwingUtilities.invokeLater(SOverlayUtils::hideOverlay);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -47,12 +47,7 @@ public class ContestGauntletLister extends JPanel {
|
||||
final List<RowPanel> tempRows = new ArrayList<>();
|
||||
final List<GauntletData> sorted = new ArrayList<>();
|
||||
sorted.addAll(gd0);
|
||||
Collections.sort(sorted, new Comparator<GauntletData>() {
|
||||
@Override
|
||||
public int compare(final GauntletData x, final GauntletData y) {
|
||||
return x.getName().compareTo(y.getName());
|
||||
}
|
||||
});
|
||||
Collections.sort(sorted, Comparator.comparing(GauntletData::getName));
|
||||
|
||||
// Title row
|
||||
// Note: careful with the widths of the rows here;
|
||||
|
||||
@@ -66,12 +66,7 @@ public class QuickGauntletLister extends JPanel {
|
||||
final List<RowPanel> tempRows = new ArrayList<>();
|
||||
final List<GauntletData> sorted = new ArrayList<>();
|
||||
sorted.addAll(gauntlets);
|
||||
Collections.sort(sorted, new Comparator<GauntletData>() {
|
||||
@Override
|
||||
public int compare(final GauntletData x, final GauntletData y) {
|
||||
return x.getName().toLowerCase().compareTo(y.getName().toLowerCase());
|
||||
}
|
||||
});
|
||||
Collections.sort(sorted, Comparator.comparing(x -> x.getName().toLowerCase()));
|
||||
|
||||
// Title row
|
||||
// Note: careful with the widths of the rows here;
|
||||
|
||||
@@ -38,23 +38,20 @@ public enum CSubmenuOnlineLobby implements ICDoc, IMenuProvider {
|
||||
final String url = NetConnectUtil.getServerUrl();
|
||||
if (url == null) { return; }
|
||||
|
||||
FThreads.invokeInBackgroundThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (url.length() > 0) {
|
||||
join(url);
|
||||
}
|
||||
else {
|
||||
try {
|
||||
host();
|
||||
} catch (Exception ex) {
|
||||
// IntelliJ swears that BindException isn't thrown in this try block, but it is!
|
||||
if (ex.getClass() == BindException.class) {
|
||||
SOptionPane.showErrorDialog(Localizer.getInstance().getMessage("lblUnableStartServerPortAlreadyUse"));
|
||||
SOverlayUtils.hideOverlay();
|
||||
} else {
|
||||
BugReporter.reportException(ex);
|
||||
}
|
||||
FThreads.invokeInBackgroundThread(() -> {
|
||||
if (url.length() > 0) {
|
||||
join(url);
|
||||
}
|
||||
else {
|
||||
try {
|
||||
host();
|
||||
} catch (Exception ex) {
|
||||
// IntelliJ swears that BindException isn't thrown in this try block, but it is!
|
||||
if (ex.getClass() == BindException.class) {
|
||||
SOptionPane.showErrorDialog(Localizer.getInstance().getMessage("lblUnableStartServerPortAlreadyUse"));
|
||||
SOverlayUtils.hideOverlay();
|
||||
} else {
|
||||
BugReporter.reportException(ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -62,49 +59,37 @@ public enum CSubmenuOnlineLobby implements ICDoc, IMenuProvider {
|
||||
}
|
||||
|
||||
private void host() {
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
SOverlayUtils.startGameOverlay(Localizer.getInstance().getMessage("lblStartingServer"));
|
||||
SOverlayUtils.showOverlay();
|
||||
}
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
SOverlayUtils.startGameOverlay(Localizer.getInstance().getMessage("lblStartingServer"));
|
||||
SOverlayUtils.showOverlay();
|
||||
});
|
||||
|
||||
final ChatMessage result = NetConnectUtil.host(VSubmenuOnlineLobby.SINGLETON_INSTANCE, FNetOverlay.SINGLETON_INSTANCE);
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
SOverlayUtils.hideOverlay();
|
||||
FNetOverlay.SINGLETON_INSTANCE.show(result);
|
||||
if (CHomeUI.SINGLETON_INSTANCE.getCurrentDocID() == EDocID.HOME_NETWORK) {
|
||||
VSubmenuOnlineLobby.SINGLETON_INSTANCE.populate();
|
||||
}
|
||||
NetConnectUtil.copyHostedServerUrl();
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
SOverlayUtils.hideOverlay();
|
||||
FNetOverlay.SINGLETON_INSTANCE.show(result);
|
||||
if (CHomeUI.SINGLETON_INSTANCE.getCurrentDocID() == EDocID.HOME_NETWORK) {
|
||||
VSubmenuOnlineLobby.SINGLETON_INSTANCE.populate();
|
||||
}
|
||||
NetConnectUtil.copyHostedServerUrl();
|
||||
});
|
||||
}
|
||||
|
||||
private void join(final String url) {
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
SOverlayUtils.startGameOverlay(Localizer.getInstance().getMessage("lblConnectingToServer"));
|
||||
SOverlayUtils.showOverlay();
|
||||
}
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
SOverlayUtils.startGameOverlay(Localizer.getInstance().getMessage("lblConnectingToServer"));
|
||||
SOverlayUtils.showOverlay();
|
||||
});
|
||||
|
||||
final ChatMessage result = NetConnectUtil.join(url, VSubmenuOnlineLobby.SINGLETON_INSTANCE, FNetOverlay.SINGLETON_INSTANCE);
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
SOverlayUtils.hideOverlay();
|
||||
if (result instanceof ChatMessage) {
|
||||
FNetOverlay.SINGLETON_INSTANCE.show(result);
|
||||
if (CHomeUI.SINGLETON_INSTANCE.getCurrentDocID() == EDocID.HOME_NETWORK) {
|
||||
VSubmenuOnlineLobby.SINGLETON_INSTANCE.populate();
|
||||
}
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
SOverlayUtils.hideOverlay();
|
||||
if (result instanceof ChatMessage) {
|
||||
FNetOverlay.SINGLETON_INSTANCE.show(result);
|
||||
if (CHomeUI.SINGLETON_INSTANCE.getCurrentDocID() == EDocID.HOME_NETWORK) {
|
||||
VSubmenuOnlineLobby.SINGLETON_INSTANCE.populate();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package forge.screens.home.online;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.KeyEvent;
|
||||
|
||||
import javax.swing.JCheckBoxMenuItem;
|
||||
@@ -30,27 +28,19 @@ public final class OnlineMenu {
|
||||
|
||||
static {
|
||||
chatItem = new JCheckBoxMenuItem(Localizer.getInstance().getMessage("lblShowChatPanel"));
|
||||
chatItem.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
if (((JMenuItem)e.getSource()).isSelected()) {
|
||||
FNetOverlay.SINGLETON_INSTANCE.show();
|
||||
}
|
||||
else {
|
||||
FNetOverlay.SINGLETON_INSTANCE.hide();
|
||||
}
|
||||
chatItem.addActionListener(e -> {
|
||||
if (((JMenuItem)e.getSource()).isSelected()) {
|
||||
FNetOverlay.SINGLETON_INSTANCE.show();
|
||||
}
|
||||
else {
|
||||
FNetOverlay.SINGLETON_INSTANCE.hide();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static JMenuItem getMenuItem_ConnectToServer() {
|
||||
JMenuItem menuItem = new JMenuItem(Localizer.getInstance().getMessage("lblConnectToServer"));
|
||||
menuItem.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
CSubmenuOnlineLobby.SINGLETON_INSTANCE.connectToServer();
|
||||
}
|
||||
});
|
||||
menuItem.addActionListener(e -> CSubmenuOnlineLobby.SINGLETON_INSTANCE.connectToServer());
|
||||
return menuItem;
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,8 @@
|
||||
package forge.screens.home.online;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
|
||||
import javax.swing.JPanel;
|
||||
|
||||
import forge.deckchooser.DecksComboBoxEvent;
|
||||
import forge.deckchooser.FDeckChooser;
|
||||
import forge.deckchooser.IDecksComboBoxListener;
|
||||
import forge.gamemodes.match.GameLobby;
|
||||
import forge.gamemodes.net.IOnlineLobby;
|
||||
import forge.gamemodes.net.client.FGameClient;
|
||||
@@ -71,12 +66,7 @@ public enum VSubmenuOnlineLobby implements IVSubmenu<CSubmenuOnlineLobby>, IOnli
|
||||
if (lobby == null) {
|
||||
final FButton btnConnect = new FButton(Localizer.getInstance().getMessage("lblConnectToServer"));
|
||||
btnConnect.setFont(FSkin.getRelativeFont(20));
|
||||
btnConnect.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public final void actionPerformed(final ActionEvent e) {
|
||||
getLayoutControl().connectToServer();
|
||||
}
|
||||
});
|
||||
btnConnect.addActionListener(e -> getLayoutControl().connectToServer());
|
||||
container.setLayout(new MigLayout("insets 0, gap 0, ax center, ay center"));
|
||||
container.add(btnConnect, "w 300!, h 75!");
|
||||
|
||||
@@ -97,30 +87,17 @@ public enum VSubmenuOnlineLobby implements IVSubmenu<CSubmenuOnlineLobby>, IOnli
|
||||
container.add(pnlTitle,"w 80%, gap 0 0 0 0, al right, pushx");
|
||||
|
||||
// Stop button event handling
|
||||
btnStop.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public final void actionPerformed(final ActionEvent arg0) {
|
||||
Runnable stopGame = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
// do the STOP needful here
|
||||
reset();
|
||||
}
|
||||
};
|
||||
if (stopGame != null) {
|
||||
stopGame.run();
|
||||
}
|
||||
btnStop.addActionListener(arg0 -> {
|
||||
// do the STOP needful here
|
||||
Runnable stopGame = VSubmenuOnlineLobby.this::reset;
|
||||
if (stopGame != null) {
|
||||
stopGame.run();
|
||||
}
|
||||
});
|
||||
|
||||
for (final FDeckChooser fdc : lobby.getDeckChoosers()) {
|
||||
fdc.populate();
|
||||
fdc.getDecksComboBox().addListener(new IDecksComboBoxListener() {
|
||||
@Override
|
||||
public final void deckTypeSelected(final DecksComboBoxEvent ev) {
|
||||
lobby.focusOnAvatar();
|
||||
}
|
||||
});
|
||||
fdc.getDecksComboBox().addListener(ev -> lobby.focusOnAvatar());
|
||||
}
|
||||
|
||||
container.add(lobby.getConstructedFrame(), "gap 20px 20px 20px 0px, push, grow");
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package forge.screens.home.puzzle;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
@@ -40,9 +38,7 @@ public enum CSubmenuPuzzleCreate implements ICDoc, IMenuProvider {
|
||||
|
||||
@Override
|
||||
public void initialize() {
|
||||
view.getBtnStart().addActionListener(
|
||||
new ActionListener() { @Override
|
||||
public void actionPerformed(final ActionEvent e) { startPuzzleCreate(); } });
|
||||
view.getBtnStart().addActionListener(e -> startPuzzleCreate());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -87,22 +83,16 @@ public enum CSubmenuPuzzleCreate implements ICDoc, IMenuProvider {
|
||||
|
||||
final Puzzle emptyPuzzle = new Puzzle(generateEmptyPuzzle(firstPlayer));
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
SOverlayUtils.startGameOverlay();
|
||||
SOverlayUtils.showOverlay();
|
||||
}
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
SOverlayUtils.startGameOverlay();
|
||||
SOverlayUtils.showOverlay();
|
||||
});
|
||||
|
||||
final HostedMatch hostedMatch = GuiBase.getInterface().hostMatch();
|
||||
hostedMatch.setStartGameHook(new Runnable() {
|
||||
@Override
|
||||
public final void run() {
|
||||
SOptionPane.showMessageDialog(Localizer.getInstance().getMessage("lblWelcomePuzzleModeMessage"),
|
||||
Localizer.getInstance().getMessage("lblCreateNewPuzzle"), SOptionPane.WARNING_ICON);
|
||||
emptyPuzzle.applyToGame(hostedMatch.getGame());
|
||||
}
|
||||
hostedMatch.setStartGameHook(() -> {
|
||||
SOptionPane.showMessageDialog(Localizer.getInstance().getMessage("lblWelcomePuzzleModeMessage"),
|
||||
Localizer.getInstance().getMessage("lblCreateNewPuzzle"), SOptionPane.WARNING_ICON);
|
||||
emptyPuzzle.applyToGame(hostedMatch.getGame());
|
||||
});
|
||||
|
||||
final List<RegisteredPlayer> players = new ArrayList<>();
|
||||
@@ -118,11 +108,6 @@ public enum CSubmenuPuzzleCreate implements ICDoc, IMenuProvider {
|
||||
rules.setGamesPerMatch(1);
|
||||
hostedMatch.startMatch(rules, null, players, human, GuiBase.getInterface().getNewGuiGame());
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
SOverlayUtils.hideOverlay();
|
||||
}
|
||||
});
|
||||
SwingUtilities.invokeLater(SOverlayUtils::hideOverlay);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package forge.screens.home.puzzle;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -43,9 +41,7 @@ public enum CSubmenuPuzzleSolve implements ICDoc, IMenuProvider {
|
||||
public void initialize() {
|
||||
view.getList().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
||||
updateData();
|
||||
view.getBtnStart().addActionListener(
|
||||
new ActionListener() { @Override
|
||||
public void actionPerformed(final ActionEvent e) { startPuzzleSolve(); } });
|
||||
view.getBtnStart().addActionListener(e -> startPuzzleSolve());
|
||||
}
|
||||
|
||||
private final UiCommand cmdStart = new UiCommand() {
|
||||
@@ -84,29 +80,18 @@ public enum CSubmenuPuzzleSolve implements ICDoc, IMenuProvider {
|
||||
return false;
|
||||
}
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
SOverlayUtils.startGameOverlay();
|
||||
SOverlayUtils.showOverlay();
|
||||
}
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
SOverlayUtils.startGameOverlay();
|
||||
SOverlayUtils.showOverlay();
|
||||
});
|
||||
|
||||
final HostedMatch hostedMatch = GuiBase.getInterface().hostMatch();
|
||||
hostedMatch.setStartGameHook(new Runnable() {
|
||||
@Override
|
||||
public final void run() {
|
||||
SOptionPane.showMessageDialog(selected.getGoalDescription(), selected.getName(), SOptionPane.INFORMATION_ICON);
|
||||
selected.applyToGame(hostedMatch.getGame());
|
||||
}
|
||||
hostedMatch.setStartGameHook(() -> {
|
||||
SOptionPane.showMessageDialog(selected.getGoalDescription(), selected.getName(), SOptionPane.INFORMATION_ICON);
|
||||
selected.applyToGame(hostedMatch.getGame());
|
||||
});
|
||||
|
||||
hostedMatch.setEndGameHook((new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
selected.savePuzzleSolve(hostedMatch.getGame().getOutcome().isWinner(GamePlayerUtil.getGuiPlayer()));
|
||||
}
|
||||
}));
|
||||
hostedMatch.setEndGameHook((() -> selected.savePuzzleSolve(hostedMatch.getGame().getOutcome().isWinner(GamePlayerUtil.getGuiPlayer()))));
|
||||
|
||||
final List<RegisteredPlayer> players = new ArrayList<>();
|
||||
final RegisteredPlayer human = new RegisteredPlayer(new Deck()).setPlayer(GamePlayerUtil.getGuiPlayer());
|
||||
@@ -121,12 +106,7 @@ public enum CSubmenuPuzzleSolve implements ICDoc, IMenuProvider {
|
||||
rules.setGamesPerMatch(1);
|
||||
hostedMatch.startMatch(rules, null, players, human, GuiBase.getInterface().getNewGuiGame());
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
SOverlayUtils.hideOverlay();
|
||||
}
|
||||
});
|
||||
SwingUtilities.invokeLater(SOverlayUtils::hideOverlay);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package forge.screens.home.puzzle;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -43,9 +41,7 @@ public enum CSubmenuTutorial implements ICDoc, IMenuProvider {
|
||||
public void initialize() {
|
||||
view.getList().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
||||
updateData();
|
||||
view.getBtnStart().addActionListener(
|
||||
new ActionListener() { @Override
|
||||
public void actionPerformed(final ActionEvent e) { startPuzzleSolve(); } });
|
||||
view.getBtnStart().addActionListener(e -> startPuzzleSolve());
|
||||
}
|
||||
|
||||
private final UiCommand cmdStart = new UiCommand() {
|
||||
@@ -84,29 +80,18 @@ public enum CSubmenuTutorial implements ICDoc, IMenuProvider {
|
||||
return false;
|
||||
}
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
SOverlayUtils.startGameOverlay();
|
||||
SOverlayUtils.showOverlay();
|
||||
}
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
SOverlayUtils.startGameOverlay();
|
||||
SOverlayUtils.showOverlay();
|
||||
});
|
||||
|
||||
final HostedMatch hostedMatch = GuiBase.getInterface().hostMatch();
|
||||
hostedMatch.setStartGameHook(new Runnable() {
|
||||
@Override
|
||||
public final void run() {
|
||||
SOptionPane.showMessageDialog(selected.getGoalDescription(), selected.getName(), SOptionPane.INFORMATION_ICON);
|
||||
selected.applyToGame(hostedMatch.getGame());
|
||||
}
|
||||
hostedMatch.setStartGameHook(() -> {
|
||||
SOptionPane.showMessageDialog(selected.getGoalDescription(), selected.getName(), SOptionPane.INFORMATION_ICON);
|
||||
selected.applyToGame(hostedMatch.getGame());
|
||||
});
|
||||
|
||||
hostedMatch.setEndGameHook((new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
selected.savePuzzleSolve(hostedMatch.getGame().getOutcome().isWinner(GamePlayerUtil.getGuiPlayer()));
|
||||
}
|
||||
}));
|
||||
hostedMatch.setEndGameHook((() -> selected.savePuzzleSolve(hostedMatch.getGame().getOutcome().isWinner(GamePlayerUtil.getGuiPlayer()))));
|
||||
|
||||
final List<RegisteredPlayer> players = new ArrayList<>();
|
||||
final RegisteredPlayer human = new RegisteredPlayer(new Deck()).setPlayer(GamePlayerUtil.getGuiPlayer());
|
||||
@@ -121,12 +106,7 @@ public enum CSubmenuTutorial implements ICDoc, IMenuProvider {
|
||||
rules.setGamesPerMatch(1);
|
||||
hostedMatch.startMatch(rules, null, players, human, GuiBase.getInterface().getNewGuiGame());
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
SOverlayUtils.hideOverlay();
|
||||
}
|
||||
});
|
||||
SwingUtilities.invokeLater(SOverlayUtils::hideOverlay);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -7,11 +7,9 @@ import javax.swing.SwingConstants;
|
||||
|
||||
import forge.gamemodes.match.GameLobby;
|
||||
import forge.gamemodes.match.LocalLobby;
|
||||
import forge.gamemodes.net.event.UpdateLobbyPlayerEvent;
|
||||
import forge.gui.framework.DragCell;
|
||||
import forge.gui.framework.DragTab;
|
||||
import forge.gui.framework.EDocID;
|
||||
import forge.interfaces.IPlayerChangeListener;
|
||||
import forge.screens.home.EMenuGroup;
|
||||
import forge.screens.home.IVSubmenu;
|
||||
import forge.screens.home.StartButton;
|
||||
@@ -59,11 +57,7 @@ public enum VSubmenuPuzzleCreate implements IVSubmenu<CSubmenuPuzzleCreate> {
|
||||
VSubmenuPuzzleCreate() {
|
||||
lobby.setListener(vLobby);
|
||||
|
||||
vLobby.setPlayerChangeListener(new IPlayerChangeListener() {
|
||||
@Override public final void update(final int index, final UpdateLobbyPlayerEvent event) {
|
||||
lobby.applyToSlot(index, event);
|
||||
}
|
||||
});
|
||||
vLobby.setPlayerChangeListener(lobby::applyToSlot);
|
||||
|
||||
vLobby.update(false);
|
||||
}
|
||||
|
||||
@@ -6,11 +6,9 @@ import javax.swing.JPanel;
|
||||
|
||||
import forge.gamemodes.match.GameLobby;
|
||||
import forge.gamemodes.match.LocalLobby;
|
||||
import forge.gamemodes.net.event.UpdateLobbyPlayerEvent;
|
||||
import forge.gui.framework.DragCell;
|
||||
import forge.gui.framework.DragTab;
|
||||
import forge.gui.framework.EDocID;
|
||||
import forge.interfaces.IPlayerChangeListener;
|
||||
import forge.screens.home.EMenuGroup;
|
||||
import forge.screens.home.IVSubmenu;
|
||||
import forge.screens.home.StartButton;
|
||||
@@ -44,11 +42,7 @@ public enum VSubmenuPuzzleSolve implements IVSubmenu<CSubmenuPuzzleSolve> {
|
||||
|
||||
lobby.setListener(vLobby);
|
||||
|
||||
vLobby.setPlayerChangeListener(new IPlayerChangeListener() {
|
||||
@Override public final void update(final int index, final UpdateLobbyPlayerEvent event) {
|
||||
lobby.applyToSlot(index, event);
|
||||
}
|
||||
});
|
||||
vLobby.setPlayerChangeListener(lobby::applyToSlot);
|
||||
|
||||
vLobby.update(false);
|
||||
}
|
||||
|
||||
@@ -6,11 +6,9 @@ import javax.swing.JPanel;
|
||||
|
||||
import forge.gamemodes.match.GameLobby;
|
||||
import forge.gamemodes.match.LocalLobby;
|
||||
import forge.gamemodes.net.event.UpdateLobbyPlayerEvent;
|
||||
import forge.gui.framework.DragCell;
|
||||
import forge.gui.framework.DragTab;
|
||||
import forge.gui.framework.EDocID;
|
||||
import forge.interfaces.IPlayerChangeListener;
|
||||
import forge.screens.home.EMenuGroup;
|
||||
import forge.screens.home.IVSubmenu;
|
||||
import forge.screens.home.StartButton;
|
||||
@@ -44,11 +42,7 @@ public enum VSubmenuTutorial implements IVSubmenu<CSubmenuTutorial> {
|
||||
|
||||
lobby.setListener(vLobby);
|
||||
|
||||
vLobby.setPlayerChangeListener(new IPlayerChangeListener() {
|
||||
@Override public final void update(final int index, final UpdateLobbyPlayerEvent event) {
|
||||
lobby.applyToSlot(index, event);
|
||||
}
|
||||
});
|
||||
vLobby.setPlayerChangeListener(lobby::applyToSlot);
|
||||
|
||||
vLobby.update(false);
|
||||
}
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
package forge.screens.home.quest;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.KeyAdapter;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.awt.event.MouseAdapter;
|
||||
@@ -50,70 +48,50 @@ public enum CSubmenuChallenges implements ICDoc {
|
||||
public void initialize() {
|
||||
final VSubmenuChallenges view = VSubmenuChallenges.SINGLETON_INSTANCE;
|
||||
|
||||
view.getBtnSpellShop().setCommand(
|
||||
new UiCommand() { @Override
|
||||
public void run() { QuestUtil.showSpellShop(); } });
|
||||
view.getBtnSpellShop().setCommand((UiCommand) QuestUtil::showSpellShop);
|
||||
|
||||
view.getBtnBazaar().setCommand(
|
||||
new UiCommand() { @Override
|
||||
public void run() { QuestUtil.showBazaar(); } });
|
||||
view.getBtnBazaar().setCommand((UiCommand) QuestUtil::showBazaar);
|
||||
|
||||
view.getBtnUnlock().setCommand(
|
||||
new UiCommand() { @Override
|
||||
public void run() { QuestUtil.chooseAndUnlockEdition(); CSubmenuChallenges.this.update(); } });
|
||||
(UiCommand) () -> { QuestUtil.chooseAndUnlockEdition(); CSubmenuChallenges.this.update(); });
|
||||
|
||||
view.getBtnTravel().setCommand(
|
||||
new UiCommand() { @Override
|
||||
public void run() { QuestUtil.travelWorld(); CSubmenuChallenges.this.update(); } });
|
||||
(UiCommand) () -> { QuestUtil.travelWorld(); CSubmenuChallenges.this.update(); });
|
||||
|
||||
view.getBtnStart().addActionListener(
|
||||
new ActionListener() { @Override
|
||||
public void actionPerformed(final ActionEvent e) { QuestUtil.startGame(); } });
|
||||
view.getBtnStart().addActionListener(e -> QuestUtil.startGame());
|
||||
|
||||
view.getLblZep().setCommand(
|
||||
new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
final Localizer localizer = Localizer.getInstance();
|
||||
if (!QuestUtil.checkActiveQuest(localizer.getMessage("lblLaunchaZeppelin"))) {
|
||||
return;
|
||||
}
|
||||
FModel.getQuest().getAchievements().setCurrentChallenges(null);
|
||||
FModel.getQuest().getAssets().setItemLevel(QuestItemType.ZEPPELIN, 2);
|
||||
update();
|
||||
(UiCommand) () -> {
|
||||
final Localizer localizer = Localizer.getInstance();
|
||||
if (!QuestUtil.checkActiveQuest(localizer.getMessage("lblLaunchaZeppelin"))) {
|
||||
return;
|
||||
}
|
||||
FModel.getQuest().getAchievements().setCurrentChallenges(null);
|
||||
FModel.getQuest().getAssets().setItemLevel(QuestItemType.ZEPPELIN, 2);
|
||||
update();
|
||||
});
|
||||
|
||||
final QuestController quest = FModel.getQuest();
|
||||
view.getCbPlant().addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent arg0) {
|
||||
// This can't be translated. As the English string "Plant" is used to find the Plant pet.
|
||||
quest.selectPet(0, view.getCbPlant().isSelected() ? "Plant" : null);
|
||||
quest.save();
|
||||
}
|
||||
view.getCbPlant().addActionListener(arg0 -> {
|
||||
// This can't be translated. As the English string "Plant" is used to find the Plant pet.
|
||||
quest.selectPet(0, view.getCbPlant().isSelected() ? "Plant" : null);
|
||||
quest.save();
|
||||
});
|
||||
|
||||
view.getCbxPet().addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent arg0) {
|
||||
final int slot = 1;
|
||||
final int index = view.getCbxPet().getSelectedIndex();
|
||||
final List<QuestPetController> pets = quest.getPetsStorage().getAvaliablePets(slot, quest.getAssets());
|
||||
final String petName = index <= 0 || index > pets.size() ? null : pets.get(index - 1).getName();
|
||||
quest.selectPet(slot, petName);
|
||||
quest.save();
|
||||
}
|
||||
view.getCbxPet().addActionListener(arg0 -> {
|
||||
final int slot = 1;
|
||||
final int index = view.getCbxPet().getSelectedIndex();
|
||||
final List<QuestPetController> pets = quest.getPetsStorage().getAvaliablePets(slot, quest.getAssets());
|
||||
final String petName = index <= 0 || index > pets.size() ? null : pets.get(index - 1).getName();
|
||||
quest.selectPet(slot, petName);
|
||||
quest.save();
|
||||
});
|
||||
|
||||
view.getCbxMatchLength().addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent arg0) {
|
||||
String match = view.getCbxMatchLength().getSelectedItem();
|
||||
if (match != null) {
|
||||
quest.setMatchLength(match.substring(match.length() - 1));
|
||||
quest.save();
|
||||
}
|
||||
view.getCbxMatchLength().addActionListener(arg0 -> {
|
||||
String match = view.getCbxMatchLength().getSelectedItem();
|
||||
if (match != null) {
|
||||
quest.setMatchLength(match.substring(match.length() - 1));
|
||||
quest.save();
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -170,9 +148,7 @@ public enum CSubmenuChallenges implements ICDoc {
|
||||
final JRadioButton rad = temp.getRad();
|
||||
if (haveAnyChallenges) {
|
||||
rad.setSelected(true);
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() { rad.requestFocusInWindow(); }
|
||||
});
|
||||
SwingUtilities.invokeLater(rad::requestFocusInWindow);
|
||||
haveAnyChallenges = false;
|
||||
}
|
||||
rad.addKeyListener(_startOnEnter);
|
||||
@@ -190,9 +166,7 @@ public enum CSubmenuChallenges implements ICDoc {
|
||||
lbl.setBorder(new EmptyBorder(10, 10, 10, 10));
|
||||
lbl.setOpaque(true);
|
||||
view.getPnlChallenges().add(lbl, "w 50%!, h 30px!, gap 25% 0 50px 0");
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() { view.getBtnTravel().requestFocusInWindow(); }
|
||||
});
|
||||
SwingUtilities.invokeLater(() -> view.getBtnTravel().requestFocusInWindow());
|
||||
}
|
||||
|
||||
Singletons.getView().getFrame().validate();
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package forge.screens.home.quest;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.KeyAdapter;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.awt.event.MouseAdapter;
|
||||
@@ -42,80 +40,47 @@ public enum CSubmenuDuels implements ICDoc {
|
||||
public void initialize() {
|
||||
final VSubmenuDuels view = VSubmenuDuels.SINGLETON_INSTANCE;
|
||||
|
||||
view.getBtnSpellShop().setCommand(
|
||||
new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
QuestUtil.showSpellShop();
|
||||
}
|
||||
});
|
||||
view.getBtnSpellShop().setCommand((UiCommand) QuestUtil::showSpellShop);
|
||||
|
||||
view.getBtnBazaar().setCommand(
|
||||
new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
QuestUtil.showBazaar();
|
||||
}
|
||||
});
|
||||
view.getBtnBazaar().setCommand((UiCommand) QuestUtil::showBazaar);
|
||||
|
||||
view.getBtnTravel().setCommand(
|
||||
new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
QuestUtil.travelWorld();
|
||||
CSubmenuDuels.this.update();
|
||||
}
|
||||
});
|
||||
(UiCommand) () -> {
|
||||
QuestUtil.travelWorld();
|
||||
CSubmenuDuels.this.update();
|
||||
});
|
||||
|
||||
view.getBtnUnlock().setCommand(
|
||||
new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
QuestUtil.chooseAndUnlockEdition();
|
||||
CSubmenuDuels.this.update();
|
||||
}
|
||||
});
|
||||
(UiCommand) () -> {
|
||||
QuestUtil.chooseAndUnlockEdition();
|
||||
CSubmenuDuels.this.update();
|
||||
});
|
||||
|
||||
view.getBtnStart().addActionListener(
|
||||
new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
QuestUtil.startGame();
|
||||
}
|
||||
});
|
||||
view.getBtnStart().addActionListener(e -> QuestUtil.startGame());
|
||||
|
||||
final QuestController quest = FModel.getQuest();
|
||||
view.getCbPlant().addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent arg0) {
|
||||
// This can't be translated. As the English string "Plant" is used to find the Plant pet.
|
||||
quest.selectPet(0, view.getCbPlant().isSelected() ? "Plant" : null);
|
||||
quest.save();
|
||||
}
|
||||
});
|
||||
view.getCbPlant().addActionListener(arg0 -> {
|
||||
// This can't be translated. As the English string "Plant" is used to find the Plant pet.
|
||||
quest.selectPet(0, view.getCbPlant().isSelected() ? "Plant" : null);
|
||||
quest.save();
|
||||
});
|
||||
|
||||
view.getCbxMatchLength().addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent arg0) {
|
||||
String match = view.getCbxMatchLength().getSelectedItem();
|
||||
if (match != null) {
|
||||
quest.setMatchLength(match.substring(match.length() - 1));
|
||||
quest.save();
|
||||
}
|
||||
}
|
||||
});
|
||||
view.getCbxMatchLength().addActionListener(arg0 -> {
|
||||
String match = view.getCbxMatchLength().getSelectedItem();
|
||||
if (match != null) {
|
||||
quest.setMatchLength(match.substring(match.length() - 1));
|
||||
quest.save();
|
||||
}
|
||||
});
|
||||
|
||||
view.getCbxPet().addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent arg0) {
|
||||
final int slot = 1;
|
||||
final int index = view.getCbxPet().getSelectedIndex();
|
||||
final List<QuestPetController> pets = quest.getPetsStorage().getAvaliablePets(slot, quest.getAssets());
|
||||
final String petName = index <= 0 || index > pets.size() ? null : pets.get(index - 1).getName();
|
||||
quest.selectPet(slot, petName);
|
||||
quest.save();
|
||||
}
|
||||
});
|
||||
view.getCbxPet().addActionListener(arg0 -> {
|
||||
final int slot = 1;
|
||||
final int index = view.getCbxPet().getSelectedIndex();
|
||||
final List<QuestPetController> pets = quest.getPetsStorage().getAvaliablePets(slot, quest.getAssets());
|
||||
final String petName = index <= 0 || index > pets.size() ? null : pets.get(index - 1).getName();
|
||||
quest.selectPet(slot, petName);
|
||||
quest.save();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@@ -191,12 +156,7 @@ public enum CSubmenuDuels implements ICDoc {
|
||||
final JRadioButton rad = temp.getRad();
|
||||
if (i == 0) {
|
||||
rad.setSelected(true);
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
rad.requestFocusInWindow();
|
||||
}
|
||||
});
|
||||
SwingUtilities.invokeLater(rad::requestFocusInWindow);
|
||||
}
|
||||
temp.addKeyListener(startOnEnter);
|
||||
temp.addMouseListener(mouseClickListener);
|
||||
|
||||
@@ -26,26 +26,18 @@ public enum CSubmenuQuestDecks implements ICDoc {
|
||||
/** */
|
||||
SINGLETON_INSTANCE;
|
||||
|
||||
private final UiCommand cmdDeckSelect = new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
final DeckProxy deck = VSubmenuQuestDecks.SINGLETON_INSTANCE.getLstDecks().getSelectedItem();
|
||||
if (deck != null) {
|
||||
FModel.getQuest().setCurrentDeck(deck.toString());
|
||||
}
|
||||
else {
|
||||
FModel.getQuest().setCurrentDeck(QPref.CURRENT_DECK.getDefault());
|
||||
}
|
||||
FModel.getQuest().save();
|
||||
private final UiCommand cmdDeckSelect = () -> {
|
||||
final DeckProxy deck = VSubmenuQuestDecks.SINGLETON_INSTANCE.getLstDecks().getSelectedItem();
|
||||
if (deck != null) {
|
||||
FModel.getQuest().setCurrentDeck(deck.toString());
|
||||
}
|
||||
else {
|
||||
FModel.getQuest().setCurrentDeck(QPref.CURRENT_DECK.getDefault());
|
||||
}
|
||||
FModel.getQuest().save();
|
||||
};
|
||||
|
||||
private final UiCommand cmdDeckDelete = new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
update();
|
||||
}
|
||||
};
|
||||
private final UiCommand cmdDeckDelete = this::update;
|
||||
|
||||
@Override
|
||||
public void register() {
|
||||
@@ -58,15 +50,12 @@ public enum CSubmenuQuestDecks implements ICDoc {
|
||||
public void initialize() {
|
||||
final Localizer localizer = Localizer.getInstance();
|
||||
|
||||
VSubmenuQuestDecks.SINGLETON_INSTANCE.getBtnNewDeck().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (!QuestUtil.checkActiveQuest(localizer.getMessage("lblCreateaDeck"))) {
|
||||
return;
|
||||
}
|
||||
Singletons.getControl().setCurrentScreen(FScreen.DECK_EDITOR_QUEST);
|
||||
CDeckEditorUI.SINGLETON_INSTANCE.setEditorController(new CEditorQuest(FModel.getQuest(), CDeckEditorUI.SINGLETON_INSTANCE.getCDetailPicture()));
|
||||
VSubmenuQuestDecks.SINGLETON_INSTANCE.getBtnNewDeck().setCommand((UiCommand) () -> {
|
||||
if (!QuestUtil.checkActiveQuest(localizer.getMessage("lblCreateaDeck"))) {
|
||||
return;
|
||||
}
|
||||
Singletons.getControl().setCurrentScreen(FScreen.DECK_EDITOR_QUEST);
|
||||
CDeckEditorUI.SINGLETON_INSTANCE.setEditorController(new CEditorQuest(FModel.getQuest(), CDeckEditorUI.SINGLETON_INSTANCE.getCDetailPicture()));
|
||||
});
|
||||
}
|
||||
|
||||
@@ -95,12 +84,7 @@ public enum CSubmenuQuestDecks implements ICDoc {
|
||||
view.getLstDecks().setSelectCommand(cmdDeckSelect);
|
||||
view.getLstDecks().setDeleteCommand(cmdDeckDelete);
|
||||
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
view.getBtnNewDeck().requestFocusInWindow();
|
||||
}
|
||||
});
|
||||
SwingUtilities.invokeLater(() -> view.getBtnNewDeck().requestFocusInWindow());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -33,26 +33,10 @@ public enum CSubmenuQuestDraft implements ICDoc {
|
||||
view.getBtnStartTournament().addActionListener(prepareDeckStart);
|
||||
view.getBtnStartMatch().addActionListener(nextMatchStart);
|
||||
|
||||
view.getBtnStartMatchSmall().setCommand(new UiCommand() {
|
||||
@Override public void run() {
|
||||
controller.startNextMatch();
|
||||
}
|
||||
});
|
||||
view.getBtnSpendToken().setCommand(new UiCommand() {
|
||||
@Override public void run() {
|
||||
controller.spendToken();
|
||||
}
|
||||
});
|
||||
view.getBtnEditDeck().setCommand(new UiCommand() {
|
||||
@Override public void run() {
|
||||
view.editDeck(true);
|
||||
}
|
||||
});
|
||||
view.getBtnLeaveTournament().setCommand(new UiCommand() {
|
||||
@Override public void run() {
|
||||
controller.endTournamentAndAwardPrizes();
|
||||
}
|
||||
});
|
||||
view.getBtnStartMatchSmall().setCommand((UiCommand) () -> controller.startNextMatch());
|
||||
view.getBtnSpendToken().setCommand((UiCommand) () -> controller.spendToken());
|
||||
view.getBtnEditDeck().setCommand((UiCommand) () -> view.editDeck(true));
|
||||
view.getBtnLeaveTournament().setCommand((UiCommand) () -> controller.endTournamentAndAwardPrizes());
|
||||
}
|
||||
|
||||
private final ActionListener selectTournamentStart = new ActionListener() {
|
||||
|
||||
@@ -29,16 +29,8 @@ public enum CSubmenuQuestLoadData implements ICDoc {
|
||||
|
||||
private final Map<String, QuestData> arrQuests = new HashMap<>();
|
||||
|
||||
private final UiCommand cmdQuestSelect = new UiCommand() {
|
||||
@Override public void run() {
|
||||
changeQuest();
|
||||
}
|
||||
};
|
||||
private final UiCommand cmdQuestUpdate = new UiCommand() {
|
||||
@Override public void run() {
|
||||
update();
|
||||
}
|
||||
};
|
||||
private final UiCommand cmdQuestSelect = this::changeQuest;
|
||||
private final UiCommand cmdQuestUpdate = this::update;
|
||||
|
||||
@Override
|
||||
public void register() {
|
||||
@@ -63,12 +55,7 @@ public enum CSubmenuQuestLoadData implements ICDoc {
|
||||
ArrayList<String> restorableQuests = new ArrayList<>();
|
||||
|
||||
// Iterate over files and load quest data for each.
|
||||
final FilenameFilter takeDatFiles = new FilenameFilter() {
|
||||
@Override
|
||||
public boolean accept(final File dir, final String name) {
|
||||
return name.endsWith(".dat");
|
||||
}
|
||||
};
|
||||
final FilenameFilter takeDatFiles = (dir, name) -> name.endsWith(".dat");
|
||||
final File[] arrFiles = dirQuests.listFiles(takeDatFiles);
|
||||
arrQuests.clear();
|
||||
for (final File f : arrFiles) {
|
||||
|
||||
@@ -36,9 +36,7 @@ public enum CSubmenuQuestPrefs implements ICDoc {
|
||||
*/
|
||||
@Override
|
||||
public void update() {
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override public void run() { VSubmenuQuestPrefs.SINGLETON_INSTANCE.focusFirstTextbox(); }
|
||||
});
|
||||
SwingUtilities.invokeLater(VSubmenuQuestPrefs.SINGLETON_INSTANCE::focusFirstTextbox);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -57,8 +57,7 @@ public enum CSubmenuQuestStart implements ICDoc {
|
||||
*/
|
||||
@Override
|
||||
public void initialize() {
|
||||
view.getBtnEmbark().setCommand(
|
||||
new UiCommand() { @Override public void run() { newQuest(); } });
|
||||
view.getBtnEmbark().setCommand((UiCommand) this::newQuest);
|
||||
|
||||
// disable the very powerful sets -- they can be unlocked later for a high price
|
||||
final List<String> unselectableSets = new ArrayList<>();
|
||||
@@ -69,84 +68,54 @@ public enum CSubmenuQuestStart implements ICDoc {
|
||||
unselectableSets.add("ARC");
|
||||
unselectableSets.add("PC2");
|
||||
|
||||
view.getBtnCustomFormat().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
final DialogChooseSets dialog = new DialogChooseSets(customFormatCodes, unselectableSets, false);
|
||||
dialog.setOkCallback(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
customFormatCodes.clear();
|
||||
customFormatCodes.addAll(dialog.getSelectedSets());
|
||||
}
|
||||
});
|
||||
}
|
||||
view.getBtnCustomFormat().setCommand((UiCommand) () -> {
|
||||
final DialogChooseSets dialog = new DialogChooseSets(customFormatCodes, unselectableSets, false);
|
||||
dialog.setOkCallback(() -> {
|
||||
customFormatCodes.clear();
|
||||
customFormatCodes.addAll(dialog.getSelectedSets());
|
||||
});
|
||||
});
|
||||
|
||||
view.getBtnSelectFormat().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
final DialogChooseFormats dialog = new DialogChooseFormats();
|
||||
dialog.setOkCallback(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
customFormatCodes.clear();
|
||||
Set<String> sets = new HashSet<>();
|
||||
for(GameFormat format:dialog.getSelectedFormats()){
|
||||
sets.addAll(format.getAllowedSetCodes());
|
||||
}
|
||||
customFormatCodes.addAll(sets);
|
||||
}
|
||||
});
|
||||
}
|
||||
view.getBtnSelectFormat().setCommand((UiCommand) () -> {
|
||||
final DialogChooseFormats dialog = new DialogChooseFormats();
|
||||
dialog.setOkCallback(() -> {
|
||||
customFormatCodes.clear();
|
||||
Set<String> sets = new HashSet<>();
|
||||
for(GameFormat format:dialog.getSelectedFormats()){
|
||||
sets.addAll(format.getAllowedSetCodes());
|
||||
}
|
||||
customFormatCodes.addAll(sets);
|
||||
});
|
||||
});
|
||||
|
||||
view.getBtnPrizeCustomFormat().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
final DialogChooseSets dialog = new DialogChooseSets(customPrizeFormatCodes, unselectableSets, false);
|
||||
dialog.setOkCallback(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
customPrizeFormatCodes.clear();
|
||||
customPrizeFormatCodes.addAll(dialog.getSelectedSets());
|
||||
}
|
||||
});
|
||||
}
|
||||
view.getBtnPrizeCustomFormat().setCommand((UiCommand) () -> {
|
||||
final DialogChooseSets dialog = new DialogChooseSets(customPrizeFormatCodes, unselectableSets, false);
|
||||
dialog.setOkCallback(() -> {
|
||||
customPrizeFormatCodes.clear();
|
||||
customPrizeFormatCodes.addAll(dialog.getSelectedSets());
|
||||
});
|
||||
});
|
||||
|
||||
view.getBtnPrizeSelectFormat().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
final DialogChooseFormats dialog = new DialogChooseFormats();
|
||||
dialog.setOkCallback(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
customPrizeFormatCodes.clear();
|
||||
Set<String> sets = new HashSet<>();
|
||||
for(GameFormat format:dialog.getSelectedFormats()){
|
||||
sets.addAll(format.getAllowedSetCodes());
|
||||
}
|
||||
customPrizeFormatCodes.addAll(sets);
|
||||
}
|
||||
});
|
||||
}
|
||||
view.getBtnPrizeSelectFormat().setCommand((UiCommand) () -> {
|
||||
final DialogChooseFormats dialog = new DialogChooseFormats();
|
||||
dialog.setOkCallback(() -> {
|
||||
customPrizeFormatCodes.clear();
|
||||
Set<String> sets = new HashSet<>();
|
||||
for(GameFormat format:dialog.getSelectedFormats()){
|
||||
sets.addAll(format.getAllowedSetCodes());
|
||||
}
|
||||
customPrizeFormatCodes.addAll(sets);
|
||||
});
|
||||
});
|
||||
|
||||
view.getBtnPreferredColors().setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
final DialogChoosePoolDistribution colorChooser = new DialogChoosePoolDistribution(preferredColors, poolType, includeArtifacts);
|
||||
colorChooser.show(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
preferredColors = colorChooser.getPreferredColors();
|
||||
poolType = colorChooser.getPoolType();
|
||||
includeArtifacts = colorChooser.includeArtifacts();
|
||||
numberOfBoosters = colorChooser.getNumberOfBoosters();
|
||||
}
|
||||
});
|
||||
}
|
||||
view.getBtnPreferredColors().setCommand((UiCommand) () -> {
|
||||
final DialogChoosePoolDistribution colorChooser = new DialogChoosePoolDistribution(preferredColors, poolType, includeArtifacts);
|
||||
colorChooser.show((UiCommand) () -> {
|
||||
preferredColors = colorChooser.getPreferredColors();
|
||||
poolType = colorChooser.getPoolType();
|
||||
includeArtifacts = colorChooser.includeArtifacts();
|
||||
numberOfBoosters = colorChooser.getNumberOfBoosters();
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package forge.screens.home.quest;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
@@ -79,29 +77,16 @@ public class DialogChooseFormats {
|
||||
final JPanel overlay = FOverlay.SINGLETON_INSTANCE.getPanel();
|
||||
overlay.setLayout(new MigLayout("insets 0, gap 0, wrap, ax center, ay center"));
|
||||
|
||||
final Runnable cleanup = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
SOverlayUtils.hideOverlay();
|
||||
}
|
||||
};
|
||||
final Runnable cleanup = SOverlayUtils::hideOverlay;
|
||||
|
||||
FButton btnOk = new FButton(localizer.getMessage("lblOK"));
|
||||
btnOk.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
cleanup.run();
|
||||
handleOk();
|
||||
}
|
||||
});
|
||||
btnOk.addActionListener(arg0 -> {
|
||||
cleanup.run();
|
||||
handleOk();
|
||||
});
|
||||
|
||||
FButton btnCancel = new FButton(localizer.getMessage("lblCancel"));
|
||||
btnCancel.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
cleanup.run();
|
||||
}
|
||||
});
|
||||
btnCancel.addActionListener(e -> cleanup.run());
|
||||
|
||||
JPanel southPanel = new JPanel(new MigLayout("insets 10, gap 20, ax center"));
|
||||
southPanel.setOpaque(false);
|
||||
@@ -141,12 +126,7 @@ public class DialogChooseFormats {
|
||||
cbl.setVisibleRowCount(Math.min(20, formats.size()));
|
||||
|
||||
if (focused) {
|
||||
SwingUtilities.invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
cbl.requestFocusInWindow();
|
||||
}
|
||||
});
|
||||
SwingUtilities.invokeLater(cbl::requestFocusInWindow);
|
||||
}
|
||||
|
||||
JPanel pnl = new JPanel(new MigLayout("center, wrap"));
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package forge.screens.home.quest;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -112,17 +111,14 @@ public class DialogChoosePoolDistribution {
|
||||
right.setOpaque(false);
|
||||
|
||||
final FLabel clearColors = new FLabel.Builder().text(localizer.getMessage("lblClearAll")).fontSize(12).opaque(true).hoverable(true).build();
|
||||
clearColors.setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
cbxBlack.setSelected(false);
|
||||
cbxBlue.setSelected(false);
|
||||
cbxGreen.setSelected(false);
|
||||
cbxRed.setSelected(false);
|
||||
cbxWhite.setSelected(false);
|
||||
cbxColorless.setSelected(false);
|
||||
}
|
||||
});
|
||||
clearColors.setCommand((UiCommand) () -> {
|
||||
cbxBlack.setSelected(false);
|
||||
cbxBlue.setSelected(false);
|
||||
cbxGreen.setSelected(false);
|
||||
cbxRed.setSelected(false);
|
||||
cbxWhite.setSelected(false);
|
||||
cbxColorless.setSelected(false);
|
||||
});
|
||||
|
||||
final FLabel boosterPackLabel = new FLabel.Builder().text(localizer.getMessage("lblNumberofBoosters") + ":").fontSize(14).build();
|
||||
final FLabel colorsLabel = new FLabel.Builder().text(localizer.getMessage("lblColors")).fontSize(18).build();
|
||||
@@ -162,46 +158,43 @@ public class DialogChoosePoolDistribution {
|
||||
left.add(poolTypePanel, "gaptop 15");
|
||||
left.add(new FTextPane(localizer.getMessage("lblHoverforDescription")), "gaptop 20");
|
||||
|
||||
ActionListener radioButtonListener = new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
ActionListener radioButtonListener = e -> {
|
||||
|
||||
right.removeAll();
|
||||
right.removeAll();
|
||||
|
||||
if (radBoosters.isSelected()) {
|
||||
right.add(boosterPackLabel, "gaptop 10");
|
||||
right.add(numberOfBoostersField, "w 100px!, gaptop 5");
|
||||
} else if (radSurpriseMe.isSelected()) {
|
||||
right.add(noSettingsText, "gaptop 10");
|
||||
} else if (radRandom.isSelected()) {
|
||||
right.add(cbxArtifacts, "gaptop 10");
|
||||
} else {
|
||||
right.add(colorsLabel, "gaptop 10");
|
||||
right.add(clearColors, "w 75px!, h 20px!, gaptop 10");
|
||||
right.add(cbxBlack, "gaptop 10");
|
||||
right.add(cbxBlue);
|
||||
right.add(cbxGreen);
|
||||
right.add(cbxRed);
|
||||
right.add(cbxWhite);
|
||||
right.add(cbxColorless);
|
||||
right.add(cbxArtifacts, "gaptop 25");
|
||||
}
|
||||
if (radBoosters.isSelected()) {
|
||||
right.add(boosterPackLabel, "gaptop 10");
|
||||
right.add(numberOfBoostersField, "w 100px!, gaptop 5");
|
||||
} else if (radSurpriseMe.isSelected()) {
|
||||
right.add(noSettingsText, "gaptop 10");
|
||||
} else if (radRandom.isSelected()) {
|
||||
right.add(cbxArtifacts, "gaptop 10");
|
||||
} else {
|
||||
right.add(colorsLabel, "gaptop 10");
|
||||
right.add(clearColors, "w 75px!, h 20px!, gaptop 10");
|
||||
right.add(cbxBlack, "gaptop 10");
|
||||
right.add(cbxBlue);
|
||||
right.add(cbxGreen);
|
||||
right.add(cbxRed);
|
||||
right.add(cbxWhite);
|
||||
right.add(cbxColorless);
|
||||
right.add(cbxArtifacts, "gaptop 25");
|
||||
}
|
||||
|
||||
clearColors.setVisible(radBalanced.isSelected());
|
||||
cbxBlack.setVisible(radBalanced.isSelected());
|
||||
cbxBlue.setVisible(radBalanced.isSelected());
|
||||
cbxGreen.setVisible(radBalanced.isSelected());
|
||||
cbxRed.setVisible(radBalanced.isSelected());
|
||||
cbxWhite.setVisible(radBalanced.isSelected());
|
||||
cbxColorless.setVisible(radBalanced.isSelected());
|
||||
cbxArtifacts.setVisible(!radSurpriseMe.isSelected() && !radBoosters.isSelected());
|
||||
numberOfBoostersField.setVisible(radBoosters.isSelected());
|
||||
clearColors.setVisible(radBalanced.isSelected());
|
||||
cbxBlack.setVisible(radBalanced.isSelected());
|
||||
cbxBlue.setVisible(radBalanced.isSelected());
|
||||
cbxGreen.setVisible(radBalanced.isSelected());
|
||||
cbxRed.setVisible(radBalanced.isSelected());
|
||||
cbxWhite.setVisible(radBalanced.isSelected());
|
||||
cbxColorless.setVisible(radBalanced.isSelected());
|
||||
cbxArtifacts.setVisible(!radSurpriseMe.isSelected() && !radBoosters.isSelected());
|
||||
numberOfBoostersField.setVisible(radBoosters.isSelected());
|
||||
|
||||
right.validate();
|
||||
right.repaint();
|
||||
right.validate();
|
||||
right.repaint();
|
||||
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
clearColors.setVisible(radBalanced.isSelected());
|
||||
cbxBlack.setVisible(radBalanced.isSelected());
|
||||
@@ -228,21 +221,13 @@ public class DialogChoosePoolDistribution {
|
||||
mainPanel.add(left);
|
||||
mainPanel.add(right);
|
||||
|
||||
btnOk.setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
SOverlayUtils.hideOverlay();
|
||||
callback.run();
|
||||
}
|
||||
});
|
||||
btnOk.setCommand((UiCommand) () -> {
|
||||
SOverlayUtils.hideOverlay();
|
||||
callback.run();
|
||||
});
|
||||
|
||||
FButton btnCancel = new FButton(localizer.getMessage("lblCancel"));
|
||||
btnCancel.setCommand(new UiCommand() {
|
||||
@Override
|
||||
public void run() {
|
||||
SOverlayUtils.hideOverlay();
|
||||
}
|
||||
});
|
||||
btnCancel.setCommand((UiCommand) SOverlayUtils::hideOverlay);
|
||||
|
||||
JPanel southPanel = new JPanel(new MigLayout("insets 10, gap 20, ax right"));
|
||||
southPanel.setOpaque(false);
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
package forge.screens.home.quest;
|
||||
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.util.*;
|
||||
import java.util.List;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.event.ChangeEvent;
|
||||
import javax.swing.event.ChangeListener;
|
||||
|
||||
import forge.Singletons;
|
||||
import forge.toolbox.*;
|
||||
@@ -187,31 +184,28 @@ public class DialogChooseSets {
|
||||
}
|
||||
// == SPINNERS ACTION PERFORMED ==
|
||||
editionTypeSpinners.forEach(spinner -> {
|
||||
spinner.addChangeListener(new ChangeListener() {
|
||||
@Override
|
||||
public void stateChanged(ChangeEvent e) {
|
||||
// As soon as the value of a spinner becomes different from zero,
|
||||
// enabled the random selection button.
|
||||
int spinValue = (int) spinner.getValue();
|
||||
if (spinValue > 0) {
|
||||
if (!randomSelectionButton.isEnabled())
|
||||
randomSelectionButton.setEnabled(true);
|
||||
} else {
|
||||
// Similarly, when all spinners are set to zero,
|
||||
// disable the random selection button
|
||||
boolean allZeros = true;
|
||||
for (FSpinner spin : editionTypeSpinners) {
|
||||
int value = (int) spin.getValue();
|
||||
if (value != 0) {
|
||||
allZeros = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (allZeros)
|
||||
randomSelectionButton.setEnabled(false);
|
||||
}
|
||||
}
|
||||
});
|
||||
spinner.addChangeListener(e -> {
|
||||
// As soon as the value of a spinner becomes different from zero,
|
||||
// enabled the random selection button.
|
||||
int spinValue = (int) spinner.getValue();
|
||||
if (spinValue > 0) {
|
||||
if (!randomSelectionButton.isEnabled())
|
||||
randomSelectionButton.setEnabled(true);
|
||||
} else {
|
||||
// Similarly, when all spinners are set to zero,
|
||||
// disable the random selection button
|
||||
boolean allZeros = true;
|
||||
for (FSpinner spin : editionTypeSpinners) {
|
||||
int value = (int) spin.getValue();
|
||||
if (value != 0) {
|
||||
allZeros = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (allZeros)
|
||||
randomSelectionButton.setEnabled(false);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// == ADD SPINNERS AND LABELS TO THE PANEL ==
|
||||
@@ -271,119 +265,116 @@ public class DialogChooseSets {
|
||||
gameFormats.forEach(item -> {
|
||||
FRadioButton button = new FRadioButton(item.getName());
|
||||
button.setActionCommand(item.getName());
|
||||
button.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
/* Whenever a Format button will be pressed, the status of the UI will be
|
||||
updated accordingly.
|
||||
In particular, for each format, the number of allowed editions will be retrieved.
|
||||
(EMPTY LIST in case of NO RESTRICTIONS).
|
||||
*/
|
||||
List<String> allowedSetCodes = item.getAllowedSetCodes();
|
||||
/* A. NO RESTRICTIONS:
|
||||
-------------------
|
||||
All the components will be enabled, namely:
|
||||
- all nodes in the checkbox tree;
|
||||
- all spinners are enabled and their maximum value updated accordingly from the Tree status
|
||||
*/
|
||||
if (allowedSetCodes.size() == 0) {
|
||||
for (CardEdition ce : allCardEditions) {
|
||||
String code = ce.getCode();
|
||||
FTreeNode node = checkBoxTree.getNodeByKey(code);
|
||||
if (node != null)
|
||||
checkBoxTree.setNodeEnabledStatus(node, true);
|
||||
}
|
||||
for (CardEdition.Type editionType : allEditionTypes.keySet()) {
|
||||
int numberOfEnabledEditions = allEditionTypes.get(editionType);
|
||||
if (numberOfEnabledEditions == 0)
|
||||
// This component will remain disabled, no matter the format selected
|
||||
continue;
|
||||
FSpinner spinner = spinnersEditionTypeMap.get(editionType);
|
||||
FLabel label = labelsEditionTypeMap.get(editionType);
|
||||
spinner.setEnabled(true);
|
||||
label.setEnabled(true);
|
||||
FTreeNode node = checkBoxTree.getNodeByKey(editionType);
|
||||
if (node != null){
|
||||
int maxValue = checkBoxTree.getNumberOfActiveChildNodes(node);
|
||||
int currentValue = (int) spinner.getValue();
|
||||
spinner.setValue(Math.min(currentValue, maxValue));
|
||||
SpinnerNumberModel m = (SpinnerNumberModel) spinner.getModel();
|
||||
m.setMaximum(maxValue);
|
||||
} else {
|
||||
spinner.setValue(0);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
/* B. FORMAT RESTRICTIONS:
|
||||
-----------------------
|
||||
All components matching with **allowed** editions will be ENABLED.
|
||||
This includes:
|
||||
- nodes in the checkbox tree;
|
||||
- spinners (along with their corresponding MAX values as returned from Tree status).
|
||||
All components matching with the **BLACK LIST** of editions will be DISABLED
|
||||
(Same as in the previous case).
|
||||
*/
|
||||
List<String> codesToDisable = new ArrayList<>();
|
||||
Set<CardEdition.Type> typesToDisable = new HashSet<>();
|
||||
Set<CardEdition.Type> allowedTypes = new HashSet<>();
|
||||
for (CardEdition ce : allCardEditions) {
|
||||
String code = ce.getCode();
|
||||
if (unselectableSets != null && unselectableSets.contains(code))
|
||||
continue;
|
||||
if (!allowedSetCodes.contains(code)) {
|
||||
codesToDisable.add(code);
|
||||
typesToDisable.add(ce.getType());
|
||||
} else {
|
||||
allowedTypes.add(ce.getType());
|
||||
}
|
||||
}
|
||||
// NOTE: We need to distinguish CardEdition.Type not having any actual CardEdition
|
||||
// in the allowed sets (i.e. to be completely disabled) from those still
|
||||
// having partial sets to be allowed.
|
||||
// The latter will result in adjusted maxValues of the corresponding spinner,
|
||||
// as well as their current value, when necessary.
|
||||
typesToDisable.removeAll(allowedTypes);
|
||||
button.addActionListener(e -> {
|
||||
/* Whenever a Format button will be pressed, the status of the UI will be
|
||||
updated accordingly.
|
||||
In particular, for each format, the number of allowed editions will be retrieved.
|
||||
(EMPTY LIST in case of NO RESTRICTIONS).
|
||||
*/
|
||||
List<String> allowedSetCodes = item.getAllowedSetCodes();
|
||||
/* A. NO RESTRICTIONS:
|
||||
-------------------
|
||||
All the components will be enabled, namely:
|
||||
- all nodes in the checkbox tree;
|
||||
- all spinners are enabled and their maximum value updated accordingly from the Tree status
|
||||
*/
|
||||
if (allowedSetCodes.size() == 0) {
|
||||
for (CardEdition ce : allCardEditions) {
|
||||
String code = ce.getCode();
|
||||
FTreeNode node = checkBoxTree.getNodeByKey(code);
|
||||
if (node != null)
|
||||
checkBoxTree.setNodeEnabledStatus(node, true);
|
||||
}
|
||||
for (CardEdition.Type editionType : allEditionTypes.keySet()) {
|
||||
int numberOfEnabledEditions = allEditionTypes.get(editionType);
|
||||
if (numberOfEnabledEditions == 0)
|
||||
// This component will remain disabled, no matter the format selected
|
||||
continue;
|
||||
FSpinner spinner = spinnersEditionTypeMap.get(editionType);
|
||||
FLabel label = labelsEditionTypeMap.get(editionType);
|
||||
spinner.setEnabled(true);
|
||||
label.setEnabled(true);
|
||||
FTreeNode node = checkBoxTree.getNodeByKey(editionType);
|
||||
if (node != null){
|
||||
int maxValue = checkBoxTree.getNumberOfActiveChildNodes(node);
|
||||
int currentValue = (int) spinner.getValue();
|
||||
spinner.setValue(Math.min(currentValue, maxValue));
|
||||
SpinnerNumberModel m = (SpinnerNumberModel) spinner.getModel();
|
||||
m.setMaximum(maxValue);
|
||||
} else {
|
||||
spinner.setValue(0);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
/* B. FORMAT RESTRICTIONS:
|
||||
-----------------------
|
||||
All components matching with **allowed** editions will be ENABLED.
|
||||
This includes:
|
||||
- nodes in the checkbox tree;
|
||||
- spinners (along with their corresponding MAX values as returned from Tree status).
|
||||
All components matching with the **BLACK LIST** of editions will be DISABLED
|
||||
(Same as in the previous case).
|
||||
*/
|
||||
List<String> codesToDisable = new ArrayList<>();
|
||||
Set<CardEdition.Type> typesToDisable = new HashSet<>();
|
||||
Set<CardEdition.Type> allowedTypes = new HashSet<>();
|
||||
for (CardEdition ce : allCardEditions) {
|
||||
String code = ce.getCode();
|
||||
if (unselectableSets != null && unselectableSets.contains(code))
|
||||
continue;
|
||||
if (!allowedSetCodes.contains(code)) {
|
||||
codesToDisable.add(code);
|
||||
typesToDisable.add(ce.getType());
|
||||
} else {
|
||||
allowedTypes.add(ce.getType());
|
||||
}
|
||||
}
|
||||
// NOTE: We need to distinguish CardEdition.Type not having any actual CardEdition
|
||||
// in the allowed sets (i.e. to be completely disabled) from those still
|
||||
// having partial sets to be allowed.
|
||||
// The latter will result in adjusted maxValues of the corresponding spinner,
|
||||
// as well as their current value, when necessary.
|
||||
typesToDisable.removeAll(allowedTypes);
|
||||
|
||||
// == Update Checkbox Tree ==
|
||||
for (String code : codesToDisable) {
|
||||
FTreeNode node = checkBoxTree.getNodeByKey(code);
|
||||
if (node != null)
|
||||
checkBoxTree.setNodeEnabledStatus(node, false);
|
||||
}
|
||||
for (String code : allowedSetCodes) {
|
||||
FTreeNode node = checkBoxTree.getNodeByKey(code);
|
||||
if (node != null)
|
||||
checkBoxTree.setNodeEnabledStatus(node, true);
|
||||
}
|
||||
// == update spinners ==
|
||||
for (CardEdition.Type editionType : typesToDisable) {
|
||||
FSpinner spinner = spinnersEditionTypeMap.get(editionType);
|
||||
FLabel label = labelsEditionTypeMap.get(editionType);
|
||||
spinner.setEnabled(false);
|
||||
spinner.setValue(0);
|
||||
label.setEnabled(false);
|
||||
}
|
||||
for (CardEdition.Type editionType : allowedTypes) {
|
||||
if (allEditionTypes.get(editionType) == 0)
|
||||
continue;
|
||||
FLabel label = labelsEditionTypeMap.get(editionType);
|
||||
label.setEnabled(true);
|
||||
FSpinner spinner = spinnersEditionTypeMap.get(editionType);
|
||||
spinner.setEnabled(true);
|
||||
FTreeNode node = checkBoxTree.getNodeByKey(editionType);
|
||||
if (node != null){
|
||||
int maxValue = checkBoxTree.getNumberOfActiveChildNodes(node);
|
||||
int currentValue = (int) spinner.getValue();
|
||||
spinner.setValue(Math.min(currentValue, maxValue));
|
||||
SpinnerNumberModel m = (SpinnerNumberModel) spinner.getModel();
|
||||
m.setMaximum(maxValue);
|
||||
} else {
|
||||
spinner.setValue(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
// == Update Checkbox Tree ==
|
||||
for (String code : codesToDisable) {
|
||||
FTreeNode node = checkBoxTree.getNodeByKey(code);
|
||||
if (node != null)
|
||||
checkBoxTree.setNodeEnabledStatus(node, false);
|
||||
}
|
||||
for (String code : allowedSetCodes) {
|
||||
FTreeNode node = checkBoxTree.getNodeByKey(code);
|
||||
if (node != null)
|
||||
checkBoxTree.setNodeEnabledStatus(node, true);
|
||||
}
|
||||
// == update spinners ==
|
||||
for (CardEdition.Type editionType : typesToDisable) {
|
||||
FSpinner spinner = spinnersEditionTypeMap.get(editionType);
|
||||
FLabel label = labelsEditionTypeMap.get(editionType);
|
||||
spinner.setEnabled(false);
|
||||
spinner.setValue(0);
|
||||
label.setEnabled(false);
|
||||
}
|
||||
for (CardEdition.Type editionType : allowedTypes) {
|
||||
if (allEditionTypes.get(editionType) == 0)
|
||||
continue;
|
||||
FLabel label = labelsEditionTypeMap.get(editionType);
|
||||
label.setEnabled(true);
|
||||
FSpinner spinner = spinnersEditionTypeMap.get(editionType);
|
||||
spinner.setEnabled(true);
|
||||
FTreeNode node = checkBoxTree.getNodeByKey(editionType);
|
||||
if (node != null){
|
||||
int maxValue = checkBoxTree.getNumberOfActiveChildNodes(node);
|
||||
int currentValue = (int) spinner.getValue();
|
||||
spinner.setValue(Math.min(currentValue, maxValue));
|
||||
SpinnerNumberModel m = (SpinnerNumberModel) spinner.getModel();
|
||||
m.setMaximum(maxValue);
|
||||
} else {
|
||||
spinner.setValue(0);
|
||||
}
|
||||
}
|
||||
});
|
||||
formatButtonGroup.add(button);
|
||||
formatOptionsPanel.add(button);
|
||||
formatButtonGroupMap.put(item.getName(), button);
|
||||
@@ -392,36 +383,33 @@ public class DialogChooseSets {
|
||||
// NO FORMAT Button
|
||||
FRadioButton noFormatSelectionButton = new FRadioButton(Localizer.getInstance().getMessage("lblNoFormatRestriction"));
|
||||
noFormatSelectionButton.setActionCommand("No Format");
|
||||
noFormatSelectionButton.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
for (CardEdition ce: allCardEditions){
|
||||
String code = ce.getCode();
|
||||
FTreeNode node = checkBoxTree.getNodeByKey(code);
|
||||
if (node != null)
|
||||
checkBoxTree.setNodeEnabledStatus(node, true);
|
||||
}
|
||||
for (CardEdition.Type editionType : allEditionTypes.keySet()) {
|
||||
if (allEditionTypes.get(editionType) == 0)
|
||||
// This component will remain disabled, no matter the format selected
|
||||
continue;
|
||||
FSpinner spinner = spinnersEditionTypeMap.get(editionType);
|
||||
FLabel label = labelsEditionTypeMap.get(editionType);
|
||||
spinner.setEnabled(true);
|
||||
label.setEnabled(true);
|
||||
FTreeNode node = checkBoxTree.getNodeByKey(editionType);
|
||||
if (node != null){
|
||||
int maxValue = checkBoxTree.getNumberOfActiveChildNodes(node);
|
||||
int currentValue = (int) spinner.getValue();
|
||||
spinner.setValue(Math.min(currentValue, maxValue));
|
||||
SpinnerNumberModel m = (SpinnerNumberModel) spinner.getModel();
|
||||
m.setMaximum(maxValue);
|
||||
} else {
|
||||
spinner.setValue(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
noFormatSelectionButton.addActionListener(e -> {
|
||||
for (CardEdition ce: allCardEditions){
|
||||
String code = ce.getCode();
|
||||
FTreeNode node = checkBoxTree.getNodeByKey(code);
|
||||
if (node != null)
|
||||
checkBoxTree.setNodeEnabledStatus(node, true);
|
||||
}
|
||||
for (CardEdition.Type editionType : allEditionTypes.keySet()) {
|
||||
if (allEditionTypes.get(editionType) == 0)
|
||||
// This component will remain disabled, no matter the format selected
|
||||
continue;
|
||||
FSpinner spinner = spinnersEditionTypeMap.get(editionType);
|
||||
FLabel label = labelsEditionTypeMap.get(editionType);
|
||||
spinner.setEnabled(true);
|
||||
label.setEnabled(true);
|
||||
FTreeNode node = checkBoxTree.getNodeByKey(editionType);
|
||||
if (node != null){
|
||||
int maxValue = checkBoxTree.getNumberOfActiveChildNodes(node);
|
||||
int currentValue = (int) spinner.getValue();
|
||||
spinner.setValue(Math.min(currentValue, maxValue));
|
||||
SpinnerNumberModel m = (SpinnerNumberModel) spinner.getModel();
|
||||
m.setMaximum(maxValue);
|
||||
} else {
|
||||
spinner.setValue(0);
|
||||
}
|
||||
}
|
||||
});
|
||||
formatButtonGroup.add(noFormatSelectionButton);
|
||||
formatOptionsPanel.add(noFormatSelectionButton);
|
||||
formatButtonGroupMap.put("No Format", noFormatSelectionButton);
|
||||
@@ -500,29 +488,16 @@ public class DialogChooseSets {
|
||||
final JPanel overlay = FOverlay.SINGLETON_INSTANCE.getPanel();
|
||||
overlay.setLayout(new MigLayout("insets 0, gap 0, wrap, ax center, ay center"));
|
||||
|
||||
final Runnable cleanup = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
SOverlayUtils.hideOverlay();
|
||||
}
|
||||
};
|
||||
final Runnable cleanup = SOverlayUtils::hideOverlay;
|
||||
|
||||
FButton btnOk = new FButton(Localizer.getInstance().getMessage("lblOK"));
|
||||
btnOk.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
cleanup.run();
|
||||
handleOk();
|
||||
}
|
||||
});
|
||||
btnOk.addActionListener(arg0 -> {
|
||||
cleanup.run();
|
||||
handleOk();
|
||||
});
|
||||
|
||||
FButton btnCancel = new FButton(Localizer.getInstance().getMessage("lblCancel"));
|
||||
btnCancel.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
cleanup.run();
|
||||
}
|
||||
});
|
||||
btnCancel.addActionListener(e -> cleanup.run());
|
||||
|
||||
JPanel southPanel = new JPanel(new MigLayout("insets 10, gap 30, ax center"));
|
||||
southPanel.setOpaque(false);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user