mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-19 04:08:01 +00:00
Move Advanced Search option into ItemManager as button next to search field
Add menu option to reset filters
This commit is contained in:
2
.gitattributes
vendored
2
.gitattributes
vendored
@@ -1244,7 +1244,7 @@ forge-gui-mobile/src/forge/itemmanager/CardManager.java -text
|
||||
forge-gui-mobile/src/forge/itemmanager/DeckManager.java -text
|
||||
forge-gui-mobile/src/forge/itemmanager/ItemManager.java -text
|
||||
forge-gui-mobile/src/forge/itemmanager/SpellShopManager.java -text
|
||||
forge-gui-mobile/src/forge/itemmanager/filters/CardAdvancedFilter.java -text
|
||||
forge-gui-mobile/src/forge/itemmanager/filters/AdvancedSearchFilter.java -text
|
||||
forge-gui-mobile/src/forge/itemmanager/filters/CardCMCFilter.java -text
|
||||
forge-gui-mobile/src/forge/itemmanager/filters/CardColorFilter.java -text
|
||||
forge-gui-mobile/src/forge/itemmanager/filters/CardColorlessCostFilter.java -text
|
||||
|
||||
@@ -21,7 +21,6 @@ import forge.itemmanager.ColumnDef;
|
||||
import forge.itemmanager.ItemColumn;
|
||||
import forge.itemmanager.ItemManager.ContextMenuBuilder;
|
||||
import forge.itemmanager.ItemManagerConfig;
|
||||
import forge.itemmanager.filters.CardAdvancedFilter;
|
||||
import forge.itemmanager.filters.ItemFilter;
|
||||
import forge.limited.BoosterDraft;
|
||||
import forge.menu.FCheckBoxMenuItem;
|
||||
@@ -185,7 +184,6 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
||||
protected final FLabel lblName = deckHeader.add(new FLabel.Builder().font(FSkinFont.get(16)).insets(new Vector2(Utils.scale(5), 0)).build());
|
||||
private final FLabel btnSave = deckHeader.add(new FLabel.Builder().icon(FSkinImage.SAVE).align(HAlignment.CENTER).pressedColor(Header.BTN_PRESSED_COLOR).build());
|
||||
private final FLabel btnMoreOptions = deckHeader.add(new FLabel.Builder().text("...").font(FSkinFont.get(20)).align(HAlignment.CENTER).pressedColor(Header.BTN_PRESSED_COLOR).build());
|
||||
private final CardAdvancedFilter advancedSearchFilter;
|
||||
|
||||
public FDeckEditor(EditorType editorType0, DeckProxy editDeck, boolean showMainDeck) {
|
||||
this(editorType0, editDeck.getName(), editDeck.getPath(), null, showMainDeck);
|
||||
@@ -227,8 +225,6 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
||||
}
|
||||
}
|
||||
|
||||
advancedSearchFilter = catalogPage != null ? new CardAdvancedFilter(catalogPage.cardManager) : null;
|
||||
|
||||
switch (editorType) {
|
||||
case Sealed:
|
||||
//if opening brand new sealed deck, show sideboard (card pool) by default
|
||||
@@ -305,15 +301,6 @@ public class FDeckEditor extends TabPageScreen<FDeckEditor> {
|
||||
setSelectedPage(getMainDeckPage()); //select main deck page if needed so main deck is visible below dialog
|
||||
}
|
||||
}));
|
||||
if (advancedSearchFilter != null) {
|
||||
addItem(new FMenuItem("Advanced Search", FSkinImage.SEARCH, new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
advancedSearchFilter.edit();
|
||||
setSelectedPage(getCatalogPage()); //select catalog page if needed so catalog is visible below dialog
|
||||
}
|
||||
}));
|
||||
}
|
||||
if (!isLimitedEditor()) {
|
||||
addItem(new FMenuItem("Import from Clipboard", FSkinImage.OPEN, new FEventHandler() {
|
||||
@Override
|
||||
|
||||
@@ -8,6 +8,7 @@ import forge.assets.FSkinFont;
|
||||
import forge.card.CardRenderer;
|
||||
import forge.card.CardZoom;
|
||||
import forge.item.PaperCard;
|
||||
import forge.itemmanager.filters.AdvancedSearchFilter;
|
||||
import forge.itemmanager.filters.CardColorFilter;
|
||||
import forge.itemmanager.filters.CardFormatFilter;
|
||||
import forge.itemmanager.filters.CardSearchFilter;
|
||||
@@ -33,6 +34,11 @@ public class CardManager extends ItemManager<PaperCard> {
|
||||
return createSearchFilter(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected AdvancedSearchFilter<PaperCard> createAdvancedSearchFilter() {
|
||||
return createAdvancedSearchFilter(this);
|
||||
}
|
||||
|
||||
/* Static overrides shared with SpellShopManager*/
|
||||
|
||||
public static void addDefaultFilters(final ItemManager<? super PaperCard> itemManager) {
|
||||
@@ -45,6 +51,10 @@ public class CardManager extends ItemManager<PaperCard> {
|
||||
return new CardSearchFilter(itemManager);
|
||||
}
|
||||
|
||||
public static AdvancedSearchFilter<PaperCard> createAdvancedSearchFilter(final ItemManager<? super PaperCard> itemManager) {
|
||||
return new AdvancedSearchFilter<PaperCard>(itemManager);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemRenderer getListItemRenderer(final CompactModeHandler compactModeHandler) {
|
||||
return new ItemRenderer() {
|
||||
|
||||
@@ -12,6 +12,7 @@ import forge.deck.FDeckViewer;
|
||||
import forge.deck.io.DeckPreferences;
|
||||
import forge.game.GameType;
|
||||
import forge.game.IHasGameType;
|
||||
import forge.itemmanager.filters.AdvancedSearchFilter;
|
||||
import forge.itemmanager.filters.DeckColorFilter;
|
||||
import forge.itemmanager.filters.DeckFormatFilter;
|
||||
import forge.itemmanager.filters.DeckSearchFilter;
|
||||
@@ -72,6 +73,11 @@ public final class DeckManager extends ItemManager<DeckProxy> implements IHasGam
|
||||
return new DeckSearchFilter(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected AdvancedSearchFilter<DeckProxy> createAdvancedSearchFilter() {
|
||||
return new AdvancedSearchFilter<DeckProxy>(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean allowSortChange() {
|
||||
return false;
|
||||
|
||||
@@ -33,12 +33,15 @@ import forge.assets.FSkinFont;
|
||||
import forge.assets.FSkinImage;
|
||||
import forge.card.CardZoom.ActivateHandler;
|
||||
import forge.item.InventoryItem;
|
||||
import forge.itemmanager.filters.AdvancedSearchFilter;
|
||||
import forge.itemmanager.filters.ItemFilter;
|
||||
import forge.itemmanager.filters.TextSearchFilter;
|
||||
import forge.itemmanager.views.ImageView;
|
||||
import forge.itemmanager.views.ItemListView;
|
||||
import forge.itemmanager.views.ItemView;
|
||||
import forge.menu.FDropDownMenu;
|
||||
import forge.menu.FMenuItem;
|
||||
import forge.menu.FPopupMenu;
|
||||
import forge.screens.FScreen;
|
||||
import forge.toolbox.FComboBox;
|
||||
import forge.toolbox.FContainer;
|
||||
@@ -58,6 +61,7 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
|
||||
private ItemPool<T> pool;
|
||||
protected final ItemManagerModel<T> model;
|
||||
private Predicate<? super T> filterPredicate = null;
|
||||
private AdvancedSearchFilter<? extends T> advancedSearchFilter;
|
||||
private final List<ItemFilter<? extends T>> filters = new ArrayList<ItemFilter<? extends T>>();
|
||||
private boolean hideFilters = false;
|
||||
private boolean wantUnique = false;
|
||||
@@ -72,10 +76,13 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
|
||||
|
||||
private final TextSearchFilter<? extends T> searchFilter;
|
||||
|
||||
private static final FSkinImage VIEW_OPTIONS_ICON = FSkinImage.SETTINGS;
|
||||
private final FLabel btnSearch = new FLabel.ButtonBuilder()
|
||||
.icon(FSkinImage.SEARCH).iconScaleFactor(0.9f).build();
|
||||
private final FLabel btnView = new FLabel.ButtonBuilder()
|
||||
.iconScaleFactor(0.9f).build(); //icon set later
|
||||
private final FLabel btnAdvancedSearchOptions = new FLabel.Builder()
|
||||
.selectable(true).align(HAlignment.CENTER)
|
||||
.icon(VIEW_OPTIONS_ICON).iconScaleFactor(0.9f)
|
||||
.icon(FSkinImage.SETTINGS).iconScaleFactor(0.9f)
|
||||
.build();
|
||||
|
||||
private final FComboBox<ItemColumn> cbxSortOptions;
|
||||
@@ -107,18 +114,12 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
|
||||
views.add(listView);
|
||||
views.add(imageView);
|
||||
currentView = listView;
|
||||
|
||||
//initialize views
|
||||
for (int i = 0; i < views.size(); i++) {
|
||||
views.get(i).initialize(i);
|
||||
}
|
||||
btnView.setIcon(currentView.getIcon());
|
||||
|
||||
//build display
|
||||
add(searchFilter.getWidget());
|
||||
for (ItemView<T> view : views) {
|
||||
add(view.getButton());
|
||||
view.getButton().setSelected(view == currentView);
|
||||
}
|
||||
add(btnSearch);
|
||||
add(btnView);
|
||||
add(btnAdvancedSearchOptions);
|
||||
btnAdvancedSearchOptions.setSelected(!hideFilters);
|
||||
if (allowSortChange()) {
|
||||
@@ -131,6 +132,57 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
|
||||
add(currentView.getPnlOptions());
|
||||
add(currentView.getScroller());
|
||||
|
||||
btnSearch.setCommand(new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
FPopupMenu menu = new FPopupMenu() {
|
||||
@Override
|
||||
protected void buildMenu() {
|
||||
addItem(new FMenuItem("Advanced Search", FSkinImage.SEARCH, new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
if (advancedSearchFilter == null) {
|
||||
advancedSearchFilter = createAdvancedSearchFilter();
|
||||
}
|
||||
advancedSearchFilter.edit();
|
||||
}
|
||||
}));
|
||||
addItem(new FMenuItem("Reset Filters", FSkinImage.DELETE, new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
resetFilters();
|
||||
}
|
||||
}));
|
||||
}
|
||||
};
|
||||
menu.show(btnSearch, 0, btnSearch.getHeight());
|
||||
}
|
||||
});
|
||||
btnView.setCommand(new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
FPopupMenu menu = new FPopupMenu() {
|
||||
@Override
|
||||
protected void buildMenu() {
|
||||
for (int i = 0; i < views.size(); i++) {
|
||||
final int index = i;
|
||||
ItemView<T> view = views.get(i);
|
||||
FMenuItem item = new FMenuItem(view.getCaption(), view.getIcon(), new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
setViewIndex(index);
|
||||
}
|
||||
});
|
||||
if (currentView == view) {
|
||||
item.setSelected(true);
|
||||
}
|
||||
addItem(item);
|
||||
}
|
||||
}
|
||||
};
|
||||
menu.show(btnView, 0, btnView.getHeight());
|
||||
}
|
||||
});
|
||||
btnAdvancedSearchOptions.setCommand(new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
@@ -287,13 +339,12 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
|
||||
itemsToSelect = null;
|
||||
}
|
||||
|
||||
currentView.getButton().setSelected(false);
|
||||
remove(currentView.getPnlOptions());
|
||||
remove(currentView.getScroller());
|
||||
|
||||
currentView = view;
|
||||
btnView.setIcon(view.getIcon());
|
||||
|
||||
view.getButton().setSelected(true);
|
||||
view.refresh(itemsToSelect, backupIndexToSelect, 0);
|
||||
|
||||
add(view.getPnlOptions());
|
||||
@@ -306,12 +357,10 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
|
||||
LayoutHelper helper = new LayoutHelper(this, ItemFilter.PADDING, ItemFilter.PADDING);
|
||||
float fieldHeight = searchFilter.getMainComponent().getHeight();
|
||||
float viewButtonWidth = fieldHeight;
|
||||
float viewButtonCount = views.size() + 1;
|
||||
helper.offset(0, ItemFilter.PADDING);
|
||||
helper.fillLine(searchFilter.getWidget(), fieldHeight, (viewButtonWidth + helper.getGapX()) * viewButtonCount); //leave room for view buttons
|
||||
for (ItemView<T> view : views) {
|
||||
helper.include(view.getButton(), viewButtonWidth, fieldHeight);
|
||||
}
|
||||
helper.fillLine(searchFilter.getWidget(), fieldHeight, (viewButtonWidth + helper.getGapX()) * 3); //leave room for search, view, and options buttons
|
||||
helper.include(btnSearch, viewButtonWidth, fieldHeight);
|
||||
helper.include(btnView, viewButtonWidth, fieldHeight);
|
||||
helper.include(btnAdvancedSearchOptions, viewButtonWidth, fieldHeight);
|
||||
helper.newLine();
|
||||
if (!hideFilters) {
|
||||
@@ -740,6 +789,7 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
|
||||
|
||||
protected abstract void addDefaultFilters();
|
||||
protected abstract TextSearchFilter<? extends T> createSearchFilter();
|
||||
protected abstract AdvancedSearchFilter<? extends T> createAdvancedSearchFilter();
|
||||
|
||||
public void addFilter(final ItemFilter<? extends T> filter) {
|
||||
addFilter(-1, filter);
|
||||
@@ -779,6 +829,20 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
|
||||
applyFilters();
|
||||
}
|
||||
|
||||
public void resetFilters() {
|
||||
lockFiltering = true; //prevent updating filtering from this change until all filters reset
|
||||
for (final ItemFilter<? extends T> filter : filters) {
|
||||
filter.reset();
|
||||
}
|
||||
searchFilter.reset();
|
||||
if (advancedSearchFilter != null) {
|
||||
advancedSearchFilter.reset();
|
||||
}
|
||||
lockFiltering = false;
|
||||
|
||||
applyFilters();
|
||||
}
|
||||
|
||||
public void removeFilter(ItemFilter<? extends T> filter) {
|
||||
filters.remove(filter);
|
||||
remove(filter.getWidget());
|
||||
@@ -1103,7 +1167,10 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
|
||||
showMenu(true);
|
||||
}
|
||||
|
||||
public FComboBox<ItemColumn> getSortOptions() {
|
||||
return cbxSortOptions;
|
||||
public float getPileByWidth() {
|
||||
if (cbxSortOptions != null) {
|
||||
return cbxSortOptions.getWidth();
|
||||
}
|
||||
return filters.get(filters.size() - 1).getWidget().getWidth();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@ import forge.card.CardRenderer;
|
||||
import forge.card.CardZoom;
|
||||
import forge.item.InventoryItem;
|
||||
import forge.item.PaperCard;
|
||||
import forge.itemmanager.filters.AdvancedSearchFilter;
|
||||
import forge.itemmanager.filters.TextSearchFilter;
|
||||
import forge.quest.QuestSpellShop;
|
||||
import forge.toolbox.FList;
|
||||
@@ -43,6 +44,11 @@ public final class SpellShopManager extends ItemManager<InventoryItem> {
|
||||
return CardManager.createSearchFilter(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected AdvancedSearchFilter<? extends InventoryItem> createAdvancedSearchFilter() {
|
||||
return CardManager.createAdvancedSearchFilter(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemRenderer getListItemRenderer(final CompactModeHandler compactModeHandler) {
|
||||
return new ItemRenderer() {
|
||||
|
||||
@@ -8,8 +8,7 @@ import com.google.common.base.Predicate;
|
||||
import com.google.common.base.Predicates;
|
||||
|
||||
import forge.Forge;
|
||||
import forge.assets.FSkinImage;
|
||||
import forge.item.PaperCard;
|
||||
import forge.item.InventoryItem;
|
||||
import forge.itemmanager.BooleanExpression.Operator;
|
||||
import forge.itemmanager.ItemManager;
|
||||
import forge.menu.FTooltip;
|
||||
@@ -24,26 +23,25 @@ import forge.toolbox.FEvent.FEventHandler;
|
||||
import forge.toolbox.FLabel;
|
||||
|
||||
|
||||
public class CardAdvancedFilter extends ItemFilter<PaperCard> {
|
||||
public class AdvancedSearchFilter<T extends InventoryItem> extends ItemFilter<T> {
|
||||
private final List<Object> expression = new ArrayList<Object>();
|
||||
|
||||
private FiltersLabel label;
|
||||
private FLabel btnEdit;
|
||||
private boolean isAdded;
|
||||
private EditScreen editScreen;
|
||||
|
||||
public CardAdvancedFilter(ItemManager<? super PaperCard> itemManager0) {
|
||||
public AdvancedSearchFilter(ItemManager<? super T> itemManager0) {
|
||||
super(itemManager0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemFilter<PaperCard> createCopy() {
|
||||
CardAdvancedFilter copy = new CardAdvancedFilter(itemManager);
|
||||
public ItemFilter<T> createCopy() {
|
||||
AdvancedSearchFilter<T> copy = new AdvancedSearchFilter<T>(itemManager);
|
||||
return copy;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected final Predicate<PaperCard> buildPredicate() {
|
||||
protected final Predicate<T> buildPredicate() {
|
||||
if (expression.isEmpty()) {
|
||||
return Predicates.alwaysTrue();
|
||||
}
|
||||
@@ -65,9 +63,9 @@ public class CardAdvancedFilter extends ItemFilter<PaperCard> {
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private Predicate<PaperCard> getPredicatePiece(ExpressionIterator iterator) {
|
||||
Predicate<PaperCard> pred = null;
|
||||
Predicate<PaperCard> predPiece = null;
|
||||
private Predicate<T> getPredicatePiece(ExpressionIterator iterator) {
|
||||
Predicate<T> pred = null;
|
||||
Predicate<T> predPiece = null;
|
||||
Operator operator = null;
|
||||
boolean applyNot = false;
|
||||
|
||||
@@ -92,7 +90,7 @@ public class CardAdvancedFilter extends ItemFilter<PaperCard> {
|
||||
continue;
|
||||
}
|
||||
else {
|
||||
predPiece = ((ItemFilter<PaperCard>) piece).buildPredicate();
|
||||
predPiece = ((ItemFilter<T>) piece).buildPredicate();
|
||||
}
|
||||
if (applyNot) {
|
||||
predPiece = Predicates.not(predPiece);
|
||||
@@ -168,22 +166,11 @@ public class CardAdvancedFilter extends ItemFilter<PaperCard> {
|
||||
label = new FiltersLabel();
|
||||
updateLabel();
|
||||
widget.add(label);
|
||||
|
||||
btnEdit = new FLabel.ButtonBuilder().icon(FSkinImage.SEARCH).iconScaleFactor(0.9f).command(new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
edit();
|
||||
}
|
||||
}).build();
|
||||
widget.add(btnEdit);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doWidgetLayout(float width, float height) {
|
||||
float buttonWidth = height;
|
||||
float buttonHeight = height;
|
||||
btnEdit.setBounds(width - buttonWidth, (height - buttonHeight) / 2, buttonWidth, buttonHeight);
|
||||
label.setSize(btnEdit.getLeft() - ItemFilter.PADDING, height);
|
||||
label.setSize(width, height);
|
||||
}
|
||||
|
||||
private class FiltersLabel extends FLabel {
|
||||
@@ -388,7 +388,7 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
|
||||
btnExpandCollapseAll.setBounds(x, y, h, h);
|
||||
x += h + padding;
|
||||
|
||||
float pileByWidth = itemManager.getSortOptions().getWidth();
|
||||
float pileByWidth = itemManager.getPileByWidth();
|
||||
float groupByWidth = width - x - padding - pileByWidth;
|
||||
|
||||
cbGroupByOptions.setBounds(x, y, groupByWidth, h);
|
||||
@@ -654,7 +654,7 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected FImage getIcon() {
|
||||
public FImage getIcon() {
|
||||
if (itemManager.getGenericType().equals(DeckProxy.class)) {
|
||||
return FSkinImage.PACK;
|
||||
}
|
||||
@@ -662,7 +662,7 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getCaption() {
|
||||
public String getCaption() {
|
||||
return "Image View";
|
||||
}
|
||||
|
||||
|
||||
@@ -71,12 +71,12 @@ public final class ItemListView<T extends InventoryItem> extends ItemView<T> {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected FImage getIcon() {
|
||||
public FImage getIcon() {
|
||||
return FSkinImage.LIST;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getCaption() {
|
||||
public String getCaption() {
|
||||
return "List View";
|
||||
}
|
||||
|
||||
|
||||
@@ -12,9 +12,7 @@ import forge.itemmanager.ItemManagerConfig;
|
||||
import forge.itemmanager.ItemManagerModel;
|
||||
import forge.toolbox.FContainer;
|
||||
import forge.toolbox.FEvent;
|
||||
import forge.toolbox.FEvent.FEventHandler;
|
||||
import forge.toolbox.FEvent.FEventType;
|
||||
import forge.toolbox.FLabel;
|
||||
import forge.toolbox.FScrollPane;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -22,7 +20,6 @@ import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment;
|
||||
import com.badlogic.gdx.math.Rectangle;
|
||||
|
||||
public abstract class ItemView<T extends InventoryItem> {
|
||||
@@ -33,7 +30,6 @@ public abstract class ItemView<T extends InventoryItem> {
|
||||
protected int minSelections = 0;
|
||||
protected int maxSelections = 1;
|
||||
private final Scroller scroller = new Scroller();
|
||||
private final FLabel button;
|
||||
private final OptionsPanel pnlOptions = new OptionsPanel();
|
||||
|
||||
private float heightBackup;
|
||||
@@ -42,8 +38,6 @@ public abstract class ItemView<T extends InventoryItem> {
|
||||
protected ItemView(ItemManager<T> itemManager0, ItemManagerModel<T> model0) {
|
||||
itemManager = itemManager0;
|
||||
model = model0;
|
||||
button = new FLabel.Builder().selectable(true).align(HAlignment.CENTER)
|
||||
.iconScaleFactor(0.9f).icon(getIcon()).build();
|
||||
}
|
||||
|
||||
private class Scroller extends FScrollPane {
|
||||
@@ -96,24 +90,6 @@ public abstract class ItemView<T extends InventoryItem> {
|
||||
}
|
||||
}
|
||||
|
||||
public void initialize(final int index) {
|
||||
button.setCommand(new FEventHandler() {
|
||||
@Override
|
||||
public void handleEvent(FEvent e) {
|
||||
if (button.isSelected()) {
|
||||
itemManager.setViewIndex(index);
|
||||
}
|
||||
else {
|
||||
button.setSelected(true); //prevent toggling off button
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public FLabel getButton() {
|
||||
return button;
|
||||
}
|
||||
|
||||
public FScrollPane getScroller() {
|
||||
return scroller;
|
||||
}
|
||||
@@ -285,8 +261,8 @@ public abstract class ItemView<T extends InventoryItem> {
|
||||
public abstract int getIndexAtPoint(float x, float y);
|
||||
public abstract void scrollSelectionIntoView();
|
||||
public abstract Rectangle getSelectionBounds();
|
||||
protected abstract FImage getIcon();
|
||||
protected abstract String getCaption();
|
||||
public abstract FImage getIcon();
|
||||
public abstract String getCaption();
|
||||
protected abstract void onSetSelectedIndex(int index);
|
||||
protected abstract void onSetSelectedIndices(Iterable<Integer> indices);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user