query PWL stats only once per deck using PwlWorker.
parent
b4bce924e4
commit
32557fdf64
|
@ -7,15 +7,18 @@ import magic.model.MagicCardDefinition;
|
||||||
import magic.model.MagicDeck;
|
import magic.model.MagicDeck;
|
||||||
import magic.ui.screen.deck.editor.DeckSideBar;
|
import magic.ui.screen.deck.editor.DeckSideBar;
|
||||||
import magic.ui.widget.cards.table.CardTablePanelA;
|
import magic.ui.widget.cards.table.CardTablePanelA;
|
||||||
|
import magic.ui.widget.deck.stats.IPwlWorkerListener;
|
||||||
|
import magic.ui.widget.deck.stats.PwlWorker;
|
||||||
import net.miginfocom.swing.MigLayout;
|
import net.miginfocom.swing.MigLayout;
|
||||||
|
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
class DeckScreenPanel extends JPanel {
|
class DeckScreenPanel extends JPanel implements IPwlWorkerListener {
|
||||||
|
|
||||||
private MagicDeck deck;
|
private MagicDeck deck;
|
||||||
private final MigLayout migLayout = new MigLayout();
|
private final MigLayout migLayout = new MigLayout();
|
||||||
private final DeckSideBar sideBarPanel;
|
private final DeckSideBar sideBarPanel;
|
||||||
private final CardTablePanelA deckTable;
|
private final CardTablePanelA deckTable;
|
||||||
|
private PwlWorker pwlWorker;
|
||||||
|
|
||||||
DeckScreenPanel(final MagicDeck aDeck, final MagicCardDefinition selectedCard) {
|
DeckScreenPanel(final MagicDeck aDeck, final MagicCardDefinition selectedCard) {
|
||||||
|
|
||||||
|
@ -86,6 +89,17 @@ class DeckScreenPanel extends JPanel {
|
||||||
|
|
||||||
void setDeck(MagicDeck aDeck) {
|
void setDeck(MagicDeck aDeck) {
|
||||||
this.deck = aDeck;
|
this.deck = aDeck;
|
||||||
|
doPWLStatsQuery(deck);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setPlayedWonLost(String pwl) {
|
||||||
|
sideBarPanel.setPlayedWonLost(pwl);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void doPWLStatsQuery(MagicDeck deck) {
|
||||||
|
pwlWorker = new PwlWorker(deck);
|
||||||
|
pwlWorker.setListeners(sideBarPanel);
|
||||||
|
pwlWorker.execute();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@ import magic.model.MagicDeck;
|
||||||
import magic.model.MagicDeckConstructionRule;
|
import magic.model.MagicDeckConstructionRule;
|
||||||
import magic.translate.MText;
|
import magic.translate.MText;
|
||||||
import magic.ui.ScreenController;
|
import magic.ui.ScreenController;
|
||||||
|
import magic.ui.widget.deck.stats.PwlWorker;
|
||||||
import magic.utility.MagicSystem;
|
import magic.utility.MagicSystem;
|
||||||
import net.miginfocom.swing.MigLayout;
|
import net.miginfocom.swing.MigLayout;
|
||||||
|
|
||||||
|
@ -24,6 +25,7 @@ class ContentPanel extends JPanel implements IDeckEditorListener {
|
||||||
private final MainViewsPanel viewsPanel; // RHS
|
private final MainViewsPanel viewsPanel; // RHS
|
||||||
private final IDeckEditorListener listener;
|
private final IDeckEditorListener listener;
|
||||||
private boolean isStandalone = true;
|
private boolean isStandalone = true;
|
||||||
|
private PwlWorker pwlWorker;
|
||||||
|
|
||||||
ContentPanel(IDeckEditorListener aListener) {
|
ContentPanel(IDeckEditorListener aListener) {
|
||||||
|
|
||||||
|
@ -96,6 +98,7 @@ class ContentPanel extends JPanel implements IDeckEditorListener {
|
||||||
CONFIG.save();
|
CONFIG.save();
|
||||||
}
|
}
|
||||||
listener.deckUpdated(deck);
|
listener.deckUpdated(deck);
|
||||||
|
doPWLStatsQuery(deck);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -114,4 +117,10 @@ class ContentPanel extends JPanel implements IDeckEditorListener {
|
||||||
throw new UnsupportedOperationException("Not supported yet.");
|
throw new UnsupportedOperationException("Not supported yet.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void doPWLStatsQuery(MagicDeck deck) {
|
||||||
|
pwlWorker = new PwlWorker(deck);
|
||||||
|
pwlWorker.setListeners(sideBarPanel, viewsPanel);
|
||||||
|
pwlWorker.execute();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,14 +6,15 @@ import javax.swing.BorderFactory;
|
||||||
import magic.model.MagicCardDefinition;
|
import magic.model.MagicCardDefinition;
|
||||||
import magic.model.MagicDeck;
|
import magic.model.MagicDeck;
|
||||||
import magic.ui.widget.M.MScrollPane;
|
import magic.ui.widget.M.MScrollPane;
|
||||||
import magic.ui.widget.duel.viewer.CardViewer;
|
|
||||||
import magic.ui.widget.duel.viewer.DeckEditorCardViewer;
|
|
||||||
import magic.ui.widget.TexturedPanel;
|
import magic.ui.widget.TexturedPanel;
|
||||||
import magic.ui.widget.deck.DeckInfoPanel;
|
import magic.ui.widget.deck.DeckInfoPanel;
|
||||||
|
import magic.ui.widget.deck.stats.IPwlWorkerListener;
|
||||||
|
import magic.ui.widget.duel.viewer.CardViewer;
|
||||||
|
import magic.ui.widget.duel.viewer.DeckEditorCardViewer;
|
||||||
import net.miginfocom.swing.MigLayout;
|
import net.miginfocom.swing.MigLayout;
|
||||||
|
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
public class DeckSideBar extends TexturedPanel {
|
public class DeckSideBar extends TexturedPanel implements IPwlWorkerListener {
|
||||||
|
|
||||||
private final MigLayout migLayout = new MigLayout();
|
private final MigLayout migLayout = new MigLayout();
|
||||||
private final MScrollPane cardScrollPane = new MScrollPane();
|
private final MScrollPane cardScrollPane = new MScrollPane();
|
||||||
|
@ -68,4 +69,9 @@ public class DeckSideBar extends TexturedPanel {
|
||||||
return cardViewer;
|
return cardViewer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setPlayedWonLost(String pwl) {
|
||||||
|
deckInfo.setPlayedWonLost(pwl);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,6 @@ import javax.swing.AbstractAction;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.JToggleButton;
|
import javax.swing.JToggleButton;
|
||||||
import magic.data.GeneralConfig;
|
import magic.data.GeneralConfig;
|
||||||
import magic.data.stats.MagicStats;
|
|
||||||
import magic.model.MagicCardDefinition;
|
import magic.model.MagicCardDefinition;
|
||||||
import magic.model.MagicDeck;
|
import magic.model.MagicDeck;
|
||||||
import magic.translate.MText;
|
import magic.translate.MText;
|
||||||
|
@ -15,10 +14,12 @@ import magic.ui.ScreenController;
|
||||||
import magic.ui.helpers.MouseHelper;
|
import magic.ui.helpers.MouseHelper;
|
||||||
import magic.ui.screen.deck.editor.stats.DeckStatsPanel;
|
import magic.ui.screen.deck.editor.stats.DeckStatsPanel;
|
||||||
import magic.ui.widget.cards.table.CardsJTable;
|
import magic.ui.widget.cards.table.CardsJTable;
|
||||||
|
import magic.ui.widget.deck.stats.IPwlWorkerListener;
|
||||||
import net.miginfocom.swing.MigLayout;
|
import net.miginfocom.swing.MigLayout;
|
||||||
|
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
class MainViewsPanel extends JPanel implements IDeckEditorListener {
|
class MainViewsPanel extends JPanel
|
||||||
|
implements IDeckEditorListener, IPwlWorkerListener {
|
||||||
|
|
||||||
// translatable strings
|
// translatable strings
|
||||||
private static final String _S1 = "Deck";
|
private static final String _S1 = "Deck";
|
||||||
|
@ -132,7 +133,7 @@ class MainViewsPanel extends JPanel implements IDeckEditorListener {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
statsToggleButton = toggleButtonsPanel.addToggleButton(getStatsTabCaption(), new AbstractAction() {
|
statsToggleButton = toggleButtonsPanel.addToggleButton("", new AbstractAction() {
|
||||||
@Override
|
@Override
|
||||||
public void actionPerformed(ActionEvent e) {
|
public void actionPerformed(ActionEvent e) {
|
||||||
MouseHelper.showBusyCursor((Component) e.getSource());
|
MouseHelper.showBusyCursor((Component) e.getSource());
|
||||||
|
@ -146,10 +147,6 @@ class MainViewsPanel extends JPanel implements IDeckEditorListener {
|
||||||
toggleButtonsPanel.refreshLayout();
|
toggleButtonsPanel.refreshLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getStatsTabCaption() {
|
|
||||||
return MagicStats.getPlayedWonLost(controller.getDeck());
|
|
||||||
}
|
|
||||||
|
|
||||||
private void addPropertyChangeListeners() {
|
private void addPropertyChangeListeners() {
|
||||||
|
|
||||||
// DeckPanel
|
// DeckPanel
|
||||||
|
@ -242,7 +239,6 @@ class MainViewsPanel extends JPanel implements IDeckEditorListener {
|
||||||
deckPanel.doRefreshView();
|
deckPanel.doRefreshView();
|
||||||
legalityPanel.setDeck(controller.getDeck());
|
legalityPanel.setDeck(controller.getDeck());
|
||||||
statsPanel.setDeck(controller.getDeck());
|
statsPanel.setDeck(controller.getDeck());
|
||||||
statsToggleButton.setText(getStatsTabCaption());
|
|
||||||
activeView.notifyShowing();
|
activeView.notifyShowing();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -267,4 +263,9 @@ class MainViewsPanel extends JPanel implements IDeckEditorListener {
|
||||||
doRefreshViews();
|
doRefreshViews();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setPlayedWonLost(String pwl) {
|
||||||
|
statsToggleButton.setText(pwl);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,6 +9,7 @@ import magic.model.MagicDeck;
|
||||||
import magic.ui.screen.interfaces.IDeckConsumer;
|
import magic.ui.screen.interfaces.IDeckConsumer;
|
||||||
import magic.ui.widget.cards.table.CardTablePanelB;
|
import magic.ui.widget.cards.table.CardTablePanelB;
|
||||||
import magic.ui.widget.deck.DeckStatusPanel;
|
import magic.ui.widget.deck.DeckStatusPanel;
|
||||||
|
import magic.ui.widget.deck.stats.PwlWorker;
|
||||||
import magic.ui.widget.duel.viewer.CardViewer;
|
import magic.ui.widget.duel.viewer.CardViewer;
|
||||||
import magic.utility.DeckUtils;
|
import magic.utility.DeckUtils;
|
||||||
import net.miginfocom.swing.MigLayout;
|
import net.miginfocom.swing.MigLayout;
|
||||||
|
@ -23,6 +24,7 @@ class DecksScreenPanel extends JPanel implements IDeckConsumer {
|
||||||
private final JSplitPane splitter = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
|
private final JSplitPane splitter = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
|
||||||
private final DeckStatusPanel deckStatusPanel;
|
private final DeckStatusPanel deckStatusPanel;
|
||||||
private final SidebarPanel sidebar;
|
private final SidebarPanel sidebar;
|
||||||
|
private PwlWorker pwlWorker;
|
||||||
|
|
||||||
DecksScreenPanel(DeckStatusPanel deckStatusPanel) {
|
DecksScreenPanel(DeckStatusPanel deckStatusPanel) {
|
||||||
|
|
||||||
|
@ -74,7 +76,7 @@ class DecksScreenPanel extends JPanel implements IDeckConsumer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setDeck(String deckName, DeckType deckType) {
|
public void setDeck(String deckName, DeckType deckType) {
|
||||||
System.out.println("setDeck(" + deckName + ", " + deckType + ")");
|
throw new UnsupportedOperationException("setDeck(" + deckName + ", " + deckType + ")");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -94,17 +96,19 @@ class DecksScreenPanel extends JPanel implements IDeckConsumer {
|
||||||
deckStatusPanel.setDeck(null, false);
|
deckStatusPanel.setDeck(null, false);
|
||||||
splitter.setVisible(false);
|
splitter.setVisible(false);
|
||||||
}
|
}
|
||||||
|
doPWLStatsQuery(deck);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setDeck(MagicDeck deck) {
|
public void setDeck(MagicDeck deck) {
|
||||||
selectedDeck = deck;
|
setDeck(deck, DeckUtils.getDeckPath(deck));
|
||||||
deckFilePath = DeckUtils.getDeckPath(deck);
|
}
|
||||||
sidebar.setDeck(deck);
|
|
||||||
deckTable.setCards(deck);
|
private void doPWLStatsQuery(MagicDeck deck) {
|
||||||
deckStatusPanel.setDeck(deck, deck.isValid() || deck.size() > 0);
|
pwlWorker = new PwlWorker(deck);
|
||||||
splitter.setVisible(deck.isValid() || deck.size() > 0);
|
pwlWorker.setListeners(sidebar);
|
||||||
|
pwlWorker.execute();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,16 +4,17 @@ import java.awt.Color;
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
import javax.swing.BorderFactory;
|
import javax.swing.BorderFactory;
|
||||||
import magic.model.MagicDeck;
|
import magic.model.MagicDeck;
|
||||||
|
import magic.ui.FontsAndBorders;
|
||||||
|
import magic.ui.screen.interfaces.IDeckConsumer;
|
||||||
|
import magic.ui.widget.TexturedPanel;
|
||||||
import magic.ui.widget.deck.DeckInfoPanel;
|
import magic.ui.widget.deck.DeckInfoPanel;
|
||||||
import magic.ui.widget.deck.DeckPicker;
|
import magic.ui.widget.deck.DeckPicker;
|
||||||
|
import magic.ui.widget.deck.stats.IPwlWorkerListener;
|
||||||
import magic.ui.widget.duel.viewer.CardViewer;
|
import magic.ui.widget.duel.viewer.CardViewer;
|
||||||
import magic.ui.screen.interfaces.IDeckConsumer;
|
|
||||||
import magic.ui.FontsAndBorders;
|
|
||||||
import magic.ui.widget.TexturedPanel;
|
|
||||||
import net.miginfocom.swing.MigLayout;
|
import net.miginfocom.swing.MigLayout;
|
||||||
|
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
class SidebarPanel extends TexturedPanel {
|
class SidebarPanel extends TexturedPanel implements IPwlWorkerListener {
|
||||||
|
|
||||||
private final DeckPicker deckPicker;
|
private final DeckPicker deckPicker;
|
||||||
private final DeckInfoPanel deckInfo;
|
private final DeckInfoPanel deckInfo;
|
||||||
|
@ -53,4 +54,9 @@ class SidebarPanel extends TexturedPanel {
|
||||||
deckInfo.setDeck(deck);
|
deckInfo.setDeck(deck);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setPlayedWonLost(String pwl) {
|
||||||
|
deckInfo.setPlayedWonLost(pwl);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,10 +30,13 @@ import magic.ui.screen.widget.ActionBarButton;
|
||||||
import magic.ui.screen.widget.MenuButton;
|
import magic.ui.screen.widget.MenuButton;
|
||||||
import magic.ui.widget.TexturedPanel;
|
import magic.ui.widget.TexturedPanel;
|
||||||
import magic.ui.widget.cards.table.CardTablePanelB;
|
import magic.ui.widget.cards.table.CardTablePanelB;
|
||||||
|
import magic.ui.widget.deck.stats.IPwlWorkerListener;
|
||||||
|
import magic.ui.widget.deck.stats.PwlWorker;
|
||||||
import net.miginfocom.swing.MigLayout;
|
import net.miginfocom.swing.MigLayout;
|
||||||
|
|
||||||
@SuppressWarnings("serial")
|
@SuppressWarnings("serial")
|
||||||
class DuelDecksPanel extends TexturedPanel implements IPlayerProfileListener {
|
class DuelDecksPanel extends TexturedPanel
|
||||||
|
implements IPlayerProfileListener, IPwlWorkerListener {
|
||||||
|
|
||||||
// translatable strings
|
// translatable strings
|
||||||
private static final String _S7 = "Swap Decks";
|
private static final String _S7 = "Swap Decks";
|
||||||
|
@ -50,8 +53,8 @@ class DuelDecksPanel extends TexturedPanel implements IPlayerProfileListener {
|
||||||
private final CardTablePanelB[] cardTables;
|
private final CardTablePanelB[] cardTables;
|
||||||
private final DeckSideBar sidebar;
|
private final DeckSideBar sidebar;
|
||||||
private final ActionBarButton newDeckButton;
|
private final ActionBarButton newDeckButton;
|
||||||
|
|
||||||
private boolean isTabChanged = false;
|
private boolean isTabChanged = false;
|
||||||
|
private PwlWorker pwlWorker;
|
||||||
|
|
||||||
DuelDecksPanel(final MagicDuel duel) {
|
DuelDecksPanel(final MagicDuel duel) {
|
||||||
|
|
||||||
|
@ -128,6 +131,7 @@ class DuelDecksPanel extends TexturedPanel implements IPlayerProfileListener {
|
||||||
DuelPlayerConfig player = getSelectedPlayer();
|
DuelPlayerConfig player = getSelectedPlayer();
|
||||||
MagicDeck deck = player.getDeck();
|
MagicDeck deck = player.getDeck();
|
||||||
sidebar.setDeck(deck);
|
sidebar.setDeck(deck);
|
||||||
|
doPWLStatsQuery(deck);
|
||||||
sidebar.setCard(deck.get(0));
|
sidebar.setCard(deck.get(0));
|
||||||
boolean isRandomDeck = player.getDeckProfile().getDeckType() == DeckType.Random;
|
boolean isRandomDeck = player.getDeckProfile().getDeckType() == DeckType.Random;
|
||||||
newDeckButton.setEnabled(isRandomDeck && duel.getGamesPlayed() == 0);
|
newDeckButton.setEnabled(isRandomDeck && duel.getGamesPlayed() == 0);
|
||||||
|
@ -275,4 +279,15 @@ class DuelDecksPanel extends TexturedPanel implements IPlayerProfileListener {
|
||||||
cardTables[0].setStyle();
|
cardTables[0].setStyle();
|
||||||
cardTables[1].setStyle();
|
cardTables[1].setStyle();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setPlayedWonLost(String pwl) {
|
||||||
|
sidebar.setPlayedWonLost(pwl);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void doPWLStatsQuery(MagicDeck deck) {
|
||||||
|
pwlWorker = new PwlWorker(deck);
|
||||||
|
pwlWorker.setListeners(sidebar);
|
||||||
|
pwlWorker.execute();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,4 +49,8 @@ public class DeckInfoPanel extends TexturedPanel {
|
||||||
descViewer.setDeckDescription(aDeck);
|
descViewer.setDeckDescription(aDeck);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setPlayedWonLost(String pwl) {
|
||||||
|
statsViewer.setPlayedWonLost(pwl);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,21 +3,16 @@ package magic.ui.widget.deck.stats;
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.CancellationException;
|
|
||||||
import java.util.logging.Level;
|
|
||||||
import java.util.logging.Logger;
|
|
||||||
import javax.swing.AbstractAction;
|
import javax.swing.AbstractAction;
|
||||||
import javax.swing.JButton;
|
import javax.swing.JButton;
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import javax.swing.SwingConstants;
|
import javax.swing.SwingConstants;
|
||||||
import javax.swing.SwingWorker;
|
|
||||||
import javax.swing.event.ChangeEvent;
|
import javax.swing.event.ChangeEvent;
|
||||||
import javax.swing.event.ChangeListener;
|
import javax.swing.event.ChangeListener;
|
||||||
import magic.data.CardStatistics;
|
import magic.data.CardStatistics;
|
||||||
import magic.data.GeneralConfig;
|
import magic.data.GeneralConfig;
|
||||||
import magic.data.MagicIcon;
|
import magic.data.MagicIcon;
|
||||||
import magic.data.stats.MagicStats;
|
|
||||||
import magic.model.DuelPlayerConfig;
|
import magic.model.DuelPlayerConfig;
|
||||||
import magic.model.MagicDeck;
|
import magic.model.MagicDeck;
|
||||||
import magic.translate.MText;
|
import magic.translate.MText;
|
||||||
|
@ -36,13 +31,10 @@ public class DeckStatisticsViewer extends JPanel implements ChangeListener {
|
||||||
private static final String _S1 = "Deck Statistics";
|
private static final String _S1 = "Deck Statistics";
|
||||||
private static final String _S2 = "%d card deck";
|
private static final String _S2 = "%d card deck";
|
||||||
|
|
||||||
private static final Logger LOGGER = Logger.getLogger(DeckStatisticsViewer.class.getName());
|
|
||||||
|
|
||||||
private final ActionButtonTitleBar titleBar;
|
private final ActionButtonTitleBar titleBar;
|
||||||
private final ManaCurvePanel manaCurvePanel;
|
private final ManaCurvePanel manaCurvePanel;
|
||||||
private final ActionBarButton titlebarButton;
|
private final ActionBarButton titlebarButton;
|
||||||
private final StatsTable statsTable;
|
private final StatsTable statsTable;
|
||||||
private SwingWorker<String, Void> pwlWorker;
|
|
||||||
private String pwl = "";
|
private String pwl = "";
|
||||||
private CardStatistics statistics;
|
private CardStatistics statistics;
|
||||||
private MagicDeck thisDeck;
|
private MagicDeck thisDeck;
|
||||||
|
@ -127,39 +119,17 @@ public class DeckStatisticsViewer extends JPanel implements ChangeListener {
|
||||||
manaCurvePanel.setStats(statistics);
|
manaCurvePanel.setStats(statistics);
|
||||||
if (isNewDeck(aDeck)) {
|
if (isNewDeck(aDeck)) {
|
||||||
this.thisDeck = aDeck;
|
this.thisDeck = aDeck;
|
||||||
doStatsQueryPWL(aDeck);
|
|
||||||
}
|
}
|
||||||
setPlayedWinLost(pwl);
|
setPlayedWonLost(pwl);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setPlayedWinLost(String newPWL) {
|
public void setPlayedWonLost(String newPWL) {
|
||||||
pwl = newPWL;
|
pwl = newPWL;
|
||||||
titleBar.setText(MText.get(_S2, statistics.totalCards)
|
titleBar.setText(MText.get(_S2, statistics.totalCards)
|
||||||
+ (!newPWL.isEmpty() ? " • " + newPWL : "")
|
+ (!newPWL.isEmpty() ? " • " + newPWL : "")
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void doStatsQueryPWL(MagicDeck aDeck) {
|
|
||||||
final MagicDeck deckCopy = new MagicDeck(aDeck);
|
|
||||||
pwlWorker = new SwingWorker<String, Void>() {
|
|
||||||
@Override
|
|
||||||
protected String doInBackground() throws Exception {
|
|
||||||
return MagicStats.getPlayedWonLost(deckCopy);
|
|
||||||
}
|
|
||||||
@Override
|
|
||||||
protected void done() {
|
|
||||||
try {
|
|
||||||
setPlayedWinLost(get());
|
|
||||||
} catch (CancellationException ex) {
|
|
||||||
LOGGER.log(Level.INFO, "pwlWorker cancelled.");
|
|
||||||
} catch (Exception ex) {
|
|
||||||
LOGGER.log(Level.SEVERE, null, ex);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
pwlWorker.execute();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void stateChanged(final ChangeEvent event) {
|
public void stateChanged(final ChangeEvent event) {
|
||||||
setDeck(((DuelPlayerConfig)event.getSource()).getDeck());
|
setDeck(((DuelPlayerConfig)event.getSource()).getDeck());
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
package magic.ui.widget.deck.stats;
|
||||||
|
|
||||||
|
public interface IPwlWorkerListener {
|
||||||
|
public void setPlayedWonLost(String pwl);
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
package magic.ui.widget.deck.stats;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.concurrent.CancellationException;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
|
import javax.swing.SwingUtilities;
|
||||||
|
import javax.swing.SwingWorker;
|
||||||
|
import magic.data.stats.MagicStats;
|
||||||
|
import magic.model.MagicDeck;
|
||||||
|
|
||||||
|
public class PwlWorker extends SwingWorker<String, Void> {
|
||||||
|
|
||||||
|
private static final Logger LOGGER = Logger.getLogger(PwlWorker.class.getName());
|
||||||
|
|
||||||
|
private final MagicDeck deckCopy;
|
||||||
|
private final List<IPwlWorkerListener> listeners = new ArrayList<>();
|
||||||
|
|
||||||
|
public PwlWorker(MagicDeck deck) {
|
||||||
|
deckCopy = new MagicDeck(deck);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setListeners(IPwlWorkerListener... newListeners) {
|
||||||
|
listeners.clear();
|
||||||
|
listeners.addAll(Arrays.asList(newListeners));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String doInBackground() throws Exception {
|
||||||
|
return MagicStats.getPlayedWonLost(deckCopy);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void done() {
|
||||||
|
try {
|
||||||
|
final String pwl = get();
|
||||||
|
for (IPwlWorkerListener listener : listeners) {
|
||||||
|
SwingUtilities.invokeLater(() -> {
|
||||||
|
listener.setPlayedWonLost(pwl);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
System.out.println("PwlWorker.done() : " + pwl);
|
||||||
|
} catch (CancellationException ex) {
|
||||||
|
LOGGER.log(Level.INFO, "pwlWorker cancelled.");
|
||||||
|
} catch (Exception ex) {
|
||||||
|
LOGGER.log(Level.SEVERE, null, ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue