mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 12:48:00 +00:00
DeckChooser will notify of their selection change
This commit is contained in:
@@ -13,11 +13,16 @@ import javax.swing.JPanel;
|
|||||||
import javax.swing.JScrollPane;
|
import javax.swing.JScrollPane;
|
||||||
import javax.swing.ListSelectionModel;
|
import javax.swing.ListSelectionModel;
|
||||||
import javax.swing.ScrollPaneConstants;
|
import javax.swing.ScrollPaneConstants;
|
||||||
|
import javax.swing.event.ListSelectionEvent;
|
||||||
|
import javax.swing.event.ListSelectionListener;
|
||||||
|
|
||||||
import net.miginfocom.swing.MigLayout;
|
import net.miginfocom.swing.MigLayout;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.commons.lang3.ArrayUtils;
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
|
import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||||
|
|
||||||
|
import com.google.common.base.Function;
|
||||||
|
|
||||||
import forge.Command;
|
import forge.Command;
|
||||||
import forge.Singletons;
|
import forge.Singletons;
|
||||||
@@ -62,6 +67,11 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
|||||||
private final ForgePreferences prefs = Singletons.getModel().getPreferences();
|
private final ForgePreferences prefs = Singletons.getModel().getPreferences();
|
||||||
private FPref stateSetting = null;
|
private FPref stateSetting = null;
|
||||||
|
|
||||||
|
private Function<ImmutablePair<DeckType, List<String>>, Void> onDeckSelected;
|
||||||
|
public void setChangeListener(Function<ImmutablePair<DeckType, List<String>>, Void> fn) {
|
||||||
|
onDeckSelected = fn;
|
||||||
|
}
|
||||||
|
|
||||||
private final MouseAdapter madDecklist = new MouseAdapter() {
|
private final MouseAdapter madDecklist = new MouseAdapter() {
|
||||||
@Override
|
@Override
|
||||||
public void mouseClicked(final MouseEvent e) {
|
public void mouseClicked(final MouseEvent e) {
|
||||||
@@ -73,6 +83,14 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
private final ListSelectionListener selChangeListener = new ListSelectionListener(){
|
||||||
|
@Override
|
||||||
|
public void valueChanged(ListSelectionEvent e) {
|
||||||
|
if( null != onDeckSelected )
|
||||||
|
onDeckSelected.apply(ImmutablePair.of(selectedDeckType, getLstDecks().getSelectedValuesList()));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
public FDeckChooser(final String titleText, boolean forAi, boolean canSwitchType) {
|
public FDeckChooser(final String titleText, boolean forAi, boolean canSwitchType) {
|
||||||
setOpaque(false);
|
setOpaque(false);
|
||||||
isAi = forAi;
|
isAi = forAi;
|
||||||
@@ -103,6 +121,10 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
|||||||
final String[] listData = new String[] {"Random 1", "Random 2", "Random 3", "Black", "Blue", "Green", "Red", "White"};
|
final String[] listData = new String[] {"Random 1", "Random 2", "Random 3", "Black", "Blue", "Green", "Red", "White"};
|
||||||
lst.setListData(listData);
|
lst.setListData(listData);
|
||||||
lst.setName(DeckgenUtil.DeckTypes.COLORS.toString());
|
lst.setName(DeckgenUtil.DeckTypes.COLORS.toString());
|
||||||
|
|
||||||
|
lst.removeListSelectionListener(selChangeListener);
|
||||||
|
lst.addListSelectionListener(selChangeListener);
|
||||||
|
|
||||||
lst.removeMouseListener(madDecklist);
|
lst.removeMouseListener(madDecklist);
|
||||||
lst.addMouseListener(madDecklist);
|
lst.addMouseListener(madDecklist);
|
||||||
|
|
||||||
@@ -121,6 +143,9 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
|||||||
final JList<String> lst = getLstDecks();
|
final JList<String> lst = getLstDecks();
|
||||||
lst.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
lst.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
||||||
|
|
||||||
|
lst.removeListSelectionListener(selChangeListener);
|
||||||
|
lst.addListSelectionListener(selChangeListener);
|
||||||
|
|
||||||
lst.removeMouseListener(madDecklist);
|
lst.removeMouseListener(madDecklist);
|
||||||
lst.addMouseListener(madDecklist);
|
lst.addMouseListener(madDecklist);
|
||||||
|
|
||||||
@@ -150,6 +175,9 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
|||||||
|
|
||||||
lst.setListData(listData.toArray(ArrayUtils.EMPTY_STRING_ARRAY));
|
lst.setListData(listData.toArray(ArrayUtils.EMPTY_STRING_ARRAY));
|
||||||
lst.setName(DeckgenUtil.DeckTypes.CUSTOM.toString());
|
lst.setName(DeckgenUtil.DeckTypes.CUSTOM.toString());
|
||||||
|
|
||||||
|
lst.removeListSelectionListener(selChangeListener);
|
||||||
|
lst.addListSelectionListener(selChangeListener);
|
||||||
lst.removeMouseListener(madDecklist);
|
lst.removeMouseListener(madDecklist);
|
||||||
lst.addMouseListener(madDecklist);
|
lst.addMouseListener(madDecklist);
|
||||||
|
|
||||||
@@ -182,6 +210,9 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
|||||||
|
|
||||||
lst.setListData(listData.toArray(ArrayUtils.EMPTY_STRING_ARRAY));
|
lst.setListData(listData.toArray(ArrayUtils.EMPTY_STRING_ARRAY));
|
||||||
lst.setName(DeckgenUtil.DeckTypes.PRECON.toString());
|
lst.setName(DeckgenUtil.DeckTypes.PRECON.toString());
|
||||||
|
|
||||||
|
lst.removeListSelectionListener(selChangeListener);
|
||||||
|
lst.addListSelectionListener(selChangeListener);
|
||||||
lst.removeMouseListener(madDecklist);
|
lst.removeMouseListener(madDecklist);
|
||||||
lst.addMouseListener(madDecklist);
|
lst.addMouseListener(madDecklist);
|
||||||
|
|
||||||
@@ -212,6 +243,9 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
|||||||
|
|
||||||
lst.setListData(listData.toArray(ArrayUtils.EMPTY_STRING_ARRAY));
|
lst.setListData(listData.toArray(ArrayUtils.EMPTY_STRING_ARRAY));
|
||||||
lst.setName(DeckgenUtil.DeckTypes.QUESTEVENTS.toString());
|
lst.setName(DeckgenUtil.DeckTypes.QUESTEVENTS.toString());
|
||||||
|
|
||||||
|
lst.removeListSelectionListener(selChangeListener);
|
||||||
|
lst.addListSelectionListener(selChangeListener);
|
||||||
lst.removeMouseListener(madDecklist);
|
lst.removeMouseListener(madDecklist);
|
||||||
lst.addMouseListener(madDecklist);
|
lst.addMouseListener(madDecklist);
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ import forge.game.GameType;
|
|||||||
import forge.game.player.RegisteredPlayer;
|
import forge.game.player.RegisteredPlayer;
|
||||||
import forge.gui.deckchooser.DecksComboBox.DeckType;
|
import forge.gui.deckchooser.DecksComboBox.DeckType;
|
||||||
import forge.gui.framework.ICDoc;
|
import forge.gui.framework.ICDoc;
|
||||||
import forge.gui.home.settings.GamePlayerUtil;
|
|
||||||
import forge.gui.menus.IMenuProvider;
|
import forge.gui.menus.IMenuProvider;
|
||||||
import forge.gui.menus.MenuUtil;
|
import forge.gui.menus.MenuUtil;
|
||||||
import forge.gui.toolbox.FOptionPane;
|
import forge.gui.toolbox.FOptionPane;
|
||||||
|
|||||||
@@ -26,10 +26,14 @@ import javax.swing.JRadioButton;
|
|||||||
import net.miginfocom.swing.MigLayout;
|
import net.miginfocom.swing.MigLayout;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||||
|
|
||||||
|
import com.google.common.base.Function;
|
||||||
|
|
||||||
import forge.Singletons;
|
import forge.Singletons;
|
||||||
import forge.game.GameType;
|
import forge.game.GameType;
|
||||||
import forge.gui.deckchooser.FDeckChooser;
|
import forge.gui.deckchooser.FDeckChooser;
|
||||||
|
import forge.gui.deckchooser.DecksComboBox.DeckType;
|
||||||
import forge.gui.framework.DragCell;
|
import forge.gui.framework.DragCell;
|
||||||
import forge.gui.framework.DragTab;
|
import forge.gui.framework.DragTab;
|
||||||
import forge.gui.framework.EDocID;
|
import forge.gui.framework.EDocID;
|
||||||
@@ -48,6 +52,7 @@ import forge.gui.toolbox.FSkin;
|
|||||||
import forge.gui.toolbox.FTextField;
|
import forge.gui.toolbox.FTextField;
|
||||||
import forge.properties.ForgePreferences;
|
import forge.properties.ForgePreferences;
|
||||||
import forge.properties.ForgePreferences.FPref;
|
import forge.properties.ForgePreferences.FPref;
|
||||||
|
import forge.util.Lang;
|
||||||
import forge.util.MyRandom;
|
import forge.util.MyRandom;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -319,11 +324,23 @@ public enum VSubmenuConstructed implements IVSubmenu<CSubmenuConstructed> {
|
|||||||
|
|
||||||
FDeckChooser mainChooser = new FDeckChooser("Main deck:", isPlayerAI(playerIndex));
|
FDeckChooser mainChooser = new FDeckChooser("Main deck:", isPlayerAI(playerIndex));
|
||||||
mainChooser.initialize();
|
mainChooser.initialize();
|
||||||
|
mainChooser.setChangeListener(new Function<ImmutablePair<DeckType, List<String>>, Void>(){
|
||||||
|
@Override public Void apply(ImmutablePair<DeckType, List<String>> selection) {
|
||||||
|
VSubmenuConstructed.this.onDeckClicked(playerIndex, selection.left, selection.right);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
});
|
||||||
deckChoosers.add(mainChooser);
|
deckChoosers.add(mainChooser);
|
||||||
mainDeckPanel.add(mainChooser, "grow, push, wrap");
|
mainDeckPanel.add(mainChooser, "grow, push, wrap");
|
||||||
deckPanelListMain.add(mainDeckPanel);
|
deckPanelListMain.add(mainDeckPanel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void onDeckClicked(int iPlayer, DeckType type, List<String> selectedLines) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
String text = type.toString() + ": " + Lang.joinHomogenous(selectedLines);
|
||||||
|
deckSelectorBtns.get(iPlayer).setText(text);
|
||||||
|
}
|
||||||
|
|
||||||
/** Populates the deck panel with the focused player's deck choices. */
|
/** Populates the deck panel with the focused player's deck choices. */
|
||||||
private void populateDeckPanel(final boolean firstBuild) {
|
private void populateDeckPanel(final boolean firstBuild) {
|
||||||
if (!firstBuild) { decksFrame.removeAll(); }
|
if (!firstBuild) { decksFrame.removeAll(); }
|
||||||
|
|||||||
Reference in New Issue
Block a user