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:
Jetz72
2024-08-02 01:23:58 -04:00
committed by GitHub
parent 86ac0349ca
commit d62dfe1c8c
490 changed files with 6692 additions and 13091 deletions

View File

@@ -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() {

View File

@@ -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();
}
};
}

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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 {

View File

@@ -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");

View File

@@ -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 */

View File

@@ -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.

View File

@@ -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");

View File

@@ -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

View File

@@ -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() {

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);
});
}

View File

@@ -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();

View File

@@ -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);

View File

@@ -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));
}
});
}

View File

@@ -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);

View File

@@ -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 &emsp; {@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

View File

@@ -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);
});
}

View File

@@ -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);
}
}
});

View File

@@ -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);
}
}
});

View File

@@ -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();
}

View File

@@ -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);
});
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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...
});
}
}

View File

@@ -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);
}
}

View File

@@ -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;

View File

@@ -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
});
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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;
};
}

View File

@@ -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());
});
}
}

View File

@@ -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());
}
}

View File

@@ -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
}
};
}

View File

@@ -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));
}
}

View File

@@ -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() {

View File

@@ -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);

View File

@@ -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

View File

@@ -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();
});
}

View File

@@ -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);
}
}

View File

@@ -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

View File

@@ -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();

View File

@@ -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();
}
}

View File

@@ -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);
}
}

View File

@@ -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());
};
}
}

View File

@@ -30,11 +30,9 @@ public enum CBazaarUI implements ICDoc {
/** @param s0 &emsp; {@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());
}
}

View File

@@ -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();
}
});
}

View File

@@ -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);

View File

@@ -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

View File

@@ -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();
});
}

View File

@@ -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)

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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));

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);
});
}

View File

@@ -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);
}
}

View File

@@ -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);

View File

@@ -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");

View File

@@ -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

View File

@@ -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

View File

@@ -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);

View File

@@ -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)

View File

@@ -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) + "%)");
}

View File

@@ -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) + "%)");
}

View File

@@ -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();
}
}

View File

@@ -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;
}

View File

@@ -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));
});
}
}

View File

@@ -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));
});
}
}

View File

@@ -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();
};
/////////////////////////////////////

View File

@@ -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

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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();
}
}
});

View File

@@ -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;
}
}

View File

@@ -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");

View File

@@ -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);
}
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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();

View File

@@ -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);

View File

@@ -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());
}
}

View File

@@ -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() {

View File

@@ -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) {

View File

@@ -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);
}
/**

View File

@@ -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();
});
});
}

View File

@@ -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"));

View File

@@ -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);

View File

@@ -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