mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 12:18:00 +00:00
Fix deck editor Set/Format edit problems.
Add code to respect the "allow reprints" option on the Formats dialog. Default it to 'true'. Also add code to be able to initialize the sate of that same checkbox. Change format and set edits to refresh the item manager list so edits are realized. Change wording of set "allow reprints" checkbox to remove confusion / conflict with the format "allow reprints" checkbox. Add constructor so a whole format list can simply be added at once rather than iterating and creating multiple filter objects for each format. (Net result is the same in either case.) Change text of filter drop down to indicate things are being added or edited vs just added.
This commit is contained in:
@@ -95,18 +95,17 @@ public class CardManager extends ItemManager<PaperCard> {
|
|||||||
|
|
||||||
GuiUtils.addMenuItem(menu, "Formats...", null, new Runnable() {
|
GuiUtils.addMenuItem(menu, "Formats...", null, new Runnable() {
|
||||||
@Override public void run() {
|
@Override public void run() {
|
||||||
final CardSetFilter existingFilter = itemManager.getFilter(CardSetFilter.class);
|
final CardFormatFilter existingFilter = itemManager.getFilter(CardFormatFilter.class);
|
||||||
if (existingFilter != null) {
|
if (existingFilter != null) {
|
||||||
existingFilter.edit();
|
existingFilter.edit(itemManager);
|
||||||
} else {
|
} else {
|
||||||
final DialogChooseFormats dialog = new DialogChooseFormats();
|
final DialogChooseFormats dialog = new DialogChooseFormats();
|
||||||
|
dialog.setWantReprintsCB(true); // assume user wants things permissive...
|
||||||
dialog.setOkCallback(new Runnable() {
|
dialog.setOkCallback(new Runnable() {
|
||||||
@Override public void run() {
|
@Override public void run() {
|
||||||
final List<GameFormat> formats = dialog.getSelectedFormats();
|
final List<GameFormat> formats = dialog.getSelectedFormats();
|
||||||
if (!formats.isEmpty()) {
|
if (!formats.isEmpty()) {
|
||||||
for(GameFormat format: formats) {
|
itemManager.addFilter(new CardFormatFilter(itemManager,formats,dialog.getWantReprints()));
|
||||||
itemManager.addFilter(new CardFormatFilter(itemManager, format));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -119,7 +118,7 @@ public class CardManager extends ItemManager<PaperCard> {
|
|||||||
public void run() {
|
public void run() {
|
||||||
CardSetFilter existingFilter = itemManager.getFilter(CardSetFilter.class);
|
CardSetFilter existingFilter = itemManager.getFilter(CardSetFilter.class);
|
||||||
if (existingFilter != null) {
|
if (existingFilter != null) {
|
||||||
existingFilter.edit();
|
existingFilter.edit(itemManager);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
final DialogChooseSets dialog = new DialogChooseSets(null, null, true);
|
final DialogChooseSets dialog = new DialogChooseSets(null, null, true);
|
||||||
|
|||||||
@@ -250,7 +250,7 @@ public abstract class ItemManager<T extends InventoryItem> extends JPanel implem
|
|||||||
if (hideFilters) {
|
if (hideFilters) {
|
||||||
GuiUtils.addMenuItem(menu, "Show Filters", null, cmdHideFilters);
|
GuiUtils.addMenuItem(menu, "Show Filters", null, cmdHideFilters);
|
||||||
} else {
|
} else {
|
||||||
final JMenu addMenu = GuiUtils.createMenu("Add Filter");
|
final JMenu addMenu = GuiUtils.createMenu("Add/Edit Filter");
|
||||||
GuiUtils.addMenuItem(addMenu, "Current text search",
|
GuiUtils.addMenuItem(addMenu, "Current text search",
|
||||||
KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()),
|
KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()),
|
||||||
cmdAddCurrentSearch, !mainSearchFilter.isEmpty());
|
cmdAddCurrentSearch, !mainSearchFilter.isEmpty());
|
||||||
|
|||||||
@@ -1,21 +1,29 @@
|
|||||||
package forge.itemmanager.filters;
|
package forge.itemmanager.filters;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import com.google.common.base.Predicate;
|
import com.google.common.base.Predicate;
|
||||||
|
|
||||||
import forge.game.GameFormat;
|
import forge.game.GameFormat;
|
||||||
import forge.item.PaperCard;
|
import forge.item.PaperCard;
|
||||||
import forge.itemmanager.ItemManager;
|
import forge.itemmanager.ItemManager;
|
||||||
import forge.itemmanager.SFilterUtil;
|
import forge.itemmanager.SFilterUtil;
|
||||||
|
import forge.screens.home.quest.DialogChooseFormats;
|
||||||
|
|
||||||
public class CardFormatFilter extends FormatFilter<PaperCard> {
|
public class CardFormatFilter extends FormatFilter<PaperCard> {
|
||||||
public CardFormatFilter(ItemManager<? super PaperCard> itemManager0) {
|
public CardFormatFilter(ItemManager<? super PaperCard> itemManager0) {
|
||||||
super(itemManager0);
|
super(itemManager0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public CardFormatFilter(ItemManager<? super PaperCard> itemManager0, GameFormat format0) {
|
public CardFormatFilter(ItemManager<? super PaperCard> itemManager0, GameFormat format0) {
|
||||||
super(itemManager0, format0);
|
super(itemManager0, format0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public CardFormatFilter(ItemManager<? super PaperCard> itemManager0, List<GameFormat> formats0,boolean allowReprints0) {
|
||||||
|
super(itemManager0);
|
||||||
|
this.formats.addAll(formats0);
|
||||||
|
this.allowReprints = allowReprints0;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemFilter<PaperCard> createCopy() {
|
public ItemFilter<PaperCard> createCopy() {
|
||||||
CardFormatFilter copy = new CardFormatFilter(itemManager);
|
CardFormatFilter copy = new CardFormatFilter(itemManager);
|
||||||
@@ -27,4 +35,20 @@ public class CardFormatFilter extends FormatFilter<PaperCard> {
|
|||||||
protected final Predicate<PaperCard> buildPredicate() {
|
protected final Predicate<PaperCard> buildPredicate() {
|
||||||
return SFilterUtil.buildFormatFilter(this.formats, this.allowReprints);
|
return SFilterUtil.buildFormatFilter(this.formats, this.allowReprints);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void edit(final ItemManager<? super PaperCard> itemManager) {
|
||||||
|
final DialogChooseFormats dialog = new DialogChooseFormats(this.formats);
|
||||||
|
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...
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,16 +49,18 @@ public class CardSetFilter extends CardFormatFilter {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void edit() {
|
public void edit(final ItemManager<? super PaperCard> itemManager) {
|
||||||
final DialogChooseSets dialog = new DialogChooseSets(this.sets, null, true);
|
final DialogChooseSets dialog = new DialogChooseSets(this.sets, null, true);
|
||||||
|
final CardSetFilter itemFilter = this;
|
||||||
|
dialog.setWantReprintsCB(allowReprints);
|
||||||
|
|
||||||
dialog.setOkCallback(new Runnable() {
|
dialog.setOkCallback(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
sets.clear();
|
sets.clear();
|
||||||
sets.addAll(dialog.getSelectedSets());
|
sets.addAll(dialog.getSelectedSets());
|
||||||
allowReprints = dialog.getWantReprints();
|
allowReprints = dialog.getWantReprints();
|
||||||
formats.clear();
|
itemManager.addFilter(itemFilter); // this adds/updates the current filter
|
||||||
formats.add(new GameFormat(null, sets, null));
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -116,6 +116,10 @@ public class DialogChooseFormats {
|
|||||||
return wantReprints;
|
return wantReprints;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setWantReprintsCB(boolean isSet) {
|
||||||
|
cbWantReprints.setSelected(isSet);
|
||||||
|
}
|
||||||
|
|
||||||
private JPanel makeCheckBoxList(List<FCheckBox> formats, String title, boolean focused) {
|
private JPanel makeCheckBoxList(List<FCheckBox> formats, String title, boolean focused) {
|
||||||
|
|
||||||
choices.addAll(formats);
|
choices.addAll(formats);
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ public class DialogChooseSets {
|
|||||||
private Runnable okCallback;
|
private Runnable okCallback;
|
||||||
|
|
||||||
private final List<FCheckBox> choices = new ArrayList<>();
|
private final List<FCheckBox> choices = new ArrayList<>();
|
||||||
private final FCheckBox cbWantReprints = new FCheckBox("Allow compatible reprints from other sets");
|
private final FCheckBox cbWantReprints = new FCheckBox("Display compatible reprints from more recent sets");
|
||||||
|
|
||||||
// lists are of set codes (e.g. "2ED")
|
// lists are of set codes (e.g. "2ED")
|
||||||
public DialogChooseSets(Collection<String> preselectedSets, Collection<String> unselectableSets, boolean showWantReprintsCheckbox) {
|
public DialogChooseSets(Collection<String> preselectedSets, Collection<String> unselectableSets, boolean showWantReprintsCheckbox) {
|
||||||
@@ -129,6 +129,10 @@ public class DialogChooseSets {
|
|||||||
public boolean getWantReprints() {
|
public boolean getWantReprints() {
|
||||||
return wantReprints;
|
return wantReprints;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setWantReprintsCB(boolean isSet) {
|
||||||
|
cbWantReprints.setSelected(isSet);
|
||||||
|
}
|
||||||
|
|
||||||
private JPanel makeCheckBoxList(List<FCheckBox> sets, String title, boolean focused) {
|
private JPanel makeCheckBoxList(List<FCheckBox> sets, String title, boolean focused) {
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user