Support canceling out of multi-select mode if no items are checked

This commit is contained in:
drdev
2016-04-08 15:42:13 +00:00
parent c33f08318c
commit e20ddea9c9
3 changed files with 45 additions and 24 deletions

View File

@@ -827,7 +827,9 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
if (isContextMenuOpen()) {
contextMenu.hide(); //ensure context menu hidden
}
setSelectedIndex(indexToSelect);
if (indexToSelect != -1) {
setSelectedIndex(indexToSelect);
}
}
//whether item manager's pool of items is in infinite supply

View File

@@ -47,18 +47,24 @@ public class ConquestCollectionScreen extends TabPageScreen<ConquestCollectionSc
btnExileRetrieveMultiple.setCommand(new FEventHandler() {
@Override
public void handleEvent(FEvent e) {
final ConquestData model = FModel.getConquest().getModel();
final CardManager list = ((CollectionTab)getSelectedPage()).list;
final Collection<PaperCard> cards = list.getSelectedItems();
if (cards.isEmpty()) {
//toggle off multi-select mode if no items selected
list.toggleMultiSelectMode(-1);
return;
}
FThreads.invokeInBackgroundThread(new Runnable() {
@Override
public void run() {
if (getSelectedPage() == tabPages[0]) {
int value = 0;
final Collection<PaperCard> cards = getCollectionTab().list.getSelectedItems();
for (PaperCard card : cards) {
value += ConquestUtil.getShardValue(card, CQPref.AETHER_BASE_EXILE_VALUE);
}
if (model.exileCards(cards, value)) {
if (FModel.getConquest().getModel().exileCards(cards, value)) {
FThreads.invokeInEdtLater(new Runnable() {
@Override
public void run() {
@@ -72,11 +78,10 @@ public class ConquestCollectionScreen extends TabPageScreen<ConquestCollectionSc
}
else {
int cost = 0;
final Collection<PaperCard> cards = getExileTab().list.getSelectedItems();
for (PaperCard card : cards) {
cost += ConquestUtil.getShardValue(card, CQPref.AETHER_BASE_RETRIEVE_COST);
}
if (model.retrieveCardsFromExile(cards, cost)) {
if (FModel.getConquest().getModel().retrieveCardsFromExile(cards, cost)) {
FThreads.invokeInEdtLater(new Runnable() {
@Override
public void run() {
@@ -136,23 +141,25 @@ public class ConquestCollectionScreen extends TabPageScreen<ConquestCollectionSc
}
private void updateExileRetrieveButtonCaption() {
String action;
String caption;
CQPref baseValuePref;
Collection<PaperCard> cards;
if (getSelectedPage() == tabPages[0]) {
action = "Exile";
caption = "Exile";
baseValuePref = CQPref.AETHER_BASE_EXILE_VALUE;
cards = getCollectionTab().list.getSelectedItems();
}
else {
action = "Retrieve";
caption = "Retrieve";
baseValuePref = CQPref.AETHER_BASE_RETRIEVE_COST;
cards = getExileTab().list.getSelectedItems();
}
int count = cards.size();
String caption = action;
if (count > 0) {
if (count == 0) {
caption = "Cancel";
}
else {
if (count > 1) {
caption += " " + count + " cards";
}
@@ -162,9 +169,7 @@ public class ConquestCollectionScreen extends TabPageScreen<ConquestCollectionSc
}
caption += " for {AE}" + total;
}
btnExileRetrieveMultiple.setText(caption);
btnExileRetrieveMultiple.setEnabled(count > 0);
}
private CollectionTab getCollectionTab() {
@@ -300,8 +305,8 @@ public class ConquestCollectionScreen extends TabPageScreen<ConquestCollectionSc
}
@Override
protected void onCardLongPress(int index, Entry<PaperCard, Integer> value, float x, float y) {
toggleMultiSelectMode(index);
public void toggleMultiSelectMode(int indexToSelect) {
super.toggleMultiSelectMode(indexToSelect);
//hide tabs and show Exile/Retrieve button while in multi-select mode
boolean multiSelectMode = getMultiSelectMode();
@@ -311,6 +316,11 @@ public class ConquestCollectionScreen extends TabPageScreen<ConquestCollectionSc
parentScreen.btnExileRetrieveMultiple.setVisible(multiSelectMode);
parentScreen.tabHeader.setVisible(!multiSelectMode);
}
@Override
protected void onCardLongPress(int index, Entry<PaperCard, Integer> value, float x, float y) {
toggleMultiSelectMode(index);
}
}
private static class CardOriginFilter extends ComboBoxFilter<PaperCard, ConquestPlane> {

View File

@@ -50,14 +50,23 @@ public class QuestSpellShopScreen extends TabPageScreen<QuestSpellShopScreen> {
btnBuySellMultiple.setCommand(new FEventHandler() {
@Override
public void handleEvent(FEvent e) {
final SpellShopManager itemManager = ((SpellShopBasePage)getSelectedPage()).itemManager;
final ItemPool<InventoryItem> items = itemManager.getSelectedItemPool();
if (items.isEmpty()) {
//toggle off multi-select mode if no items selected
itemManager.toggleMultiSelectMode(-1);
return;
}
FThreads.invokeInBackgroundThread(new Runnable() {
@Override
public void run() {
if (getSelectedPage() == spellShopPage) {
spellShopPage.activateItems(spellShopPage.itemManager.getSelectedItemPool());
spellShopPage.activateItems(items);
}
else {
inventoryPage.activateItems(inventoryPage.itemManager.getSelectedItemPool());
inventoryPage.activateItems(items);
}
FThreads.invokeInEdtLater(new Runnable() {
@Override
@@ -116,23 +125,25 @@ public class QuestSpellShopScreen extends TabPageScreen<QuestSpellShopScreen> {
}
private void updateBuySellButtonCaption() {
String action;
String caption;
ItemPool<InventoryItem> items;
long total;
if (getSelectedPage() == spellShopPage) {
action = "Buy";
caption = "Buy";
items = spellShopPage.itemManager.getSelectedItemPool();
total = QuestSpellShop.getTotalBuyCost(items);
}
else {
action = "Sell";
caption = "Sell";
items = inventoryPage.itemManager.getSelectedItemPool();
total = QuestSpellShop.getTotalSellValue(items);
}
int count = items.countAll();
String caption = action;
if (count > 0) {
if (count == 0) {
caption = "Cancel";
}
else {
if (count > 1) {
String itemType = "card";
for (Entry<InventoryItem, Integer> item : items) {
@@ -145,9 +156,7 @@ public class QuestSpellShopScreen extends TabPageScreen<QuestSpellShopScreen> {
}
caption += " for {CR} " + total;
}
btnBuySellMultiple.setText(caption);
btnBuySellMultiple.setEnabled(count > 0);
}
@Override