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()) { if (isContextMenuOpen()) {
contextMenu.hide(); //ensure context menu hidden contextMenu.hide(); //ensure context menu hidden
} }
setSelectedIndex(indexToSelect); if (indexToSelect != -1) {
setSelectedIndex(indexToSelect);
}
} }
//whether item manager's pool of items is in infinite supply //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() { btnExileRetrieveMultiple.setCommand(new FEventHandler() {
@Override @Override
public void handleEvent(FEvent e) { 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() { FThreads.invokeInBackgroundThread(new Runnable() {
@Override @Override
public void run() { public void run() {
if (getSelectedPage() == tabPages[0]) { if (getSelectedPage() == tabPages[0]) {
int value = 0; int value = 0;
final Collection<PaperCard> cards = getCollectionTab().list.getSelectedItems();
for (PaperCard card : cards) { for (PaperCard card : cards) {
value += ConquestUtil.getShardValue(card, CQPref.AETHER_BASE_EXILE_VALUE); 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() { FThreads.invokeInEdtLater(new Runnable() {
@Override @Override
public void run() { public void run() {
@@ -72,11 +78,10 @@ public class ConquestCollectionScreen extends TabPageScreen<ConquestCollectionSc
} }
else { else {
int cost = 0; int cost = 0;
final Collection<PaperCard> cards = getExileTab().list.getSelectedItems();
for (PaperCard card : cards) { for (PaperCard card : cards) {
cost += ConquestUtil.getShardValue(card, CQPref.AETHER_BASE_RETRIEVE_COST); 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() { FThreads.invokeInEdtLater(new Runnable() {
@Override @Override
public void run() { public void run() {
@@ -136,23 +141,25 @@ public class ConquestCollectionScreen extends TabPageScreen<ConquestCollectionSc
} }
private void updateExileRetrieveButtonCaption() { private void updateExileRetrieveButtonCaption() {
String action; String caption;
CQPref baseValuePref; CQPref baseValuePref;
Collection<PaperCard> cards; Collection<PaperCard> cards;
if (getSelectedPage() == tabPages[0]) { if (getSelectedPage() == tabPages[0]) {
action = "Exile"; caption = "Exile";
baseValuePref = CQPref.AETHER_BASE_EXILE_VALUE; baseValuePref = CQPref.AETHER_BASE_EXILE_VALUE;
cards = getCollectionTab().list.getSelectedItems(); cards = getCollectionTab().list.getSelectedItems();
} }
else { else {
action = "Retrieve"; caption = "Retrieve";
baseValuePref = CQPref.AETHER_BASE_RETRIEVE_COST; baseValuePref = CQPref.AETHER_BASE_RETRIEVE_COST;
cards = getExileTab().list.getSelectedItems(); cards = getExileTab().list.getSelectedItems();
} }
int count = cards.size(); int count = cards.size();
String caption = action; if (count == 0) {
if (count > 0) { caption = "Cancel";
}
else {
if (count > 1) { if (count > 1) {
caption += " " + count + " cards"; caption += " " + count + " cards";
} }
@@ -162,9 +169,7 @@ public class ConquestCollectionScreen extends TabPageScreen<ConquestCollectionSc
} }
caption += " for {AE}" + total; caption += " for {AE}" + total;
} }
btnExileRetrieveMultiple.setText(caption); btnExileRetrieveMultiple.setText(caption);
btnExileRetrieveMultiple.setEnabled(count > 0);
} }
private CollectionTab getCollectionTab() { private CollectionTab getCollectionTab() {
@@ -300,8 +305,8 @@ public class ConquestCollectionScreen extends TabPageScreen<ConquestCollectionSc
} }
@Override @Override
protected void onCardLongPress(int index, Entry<PaperCard, Integer> value, float x, float y) { public void toggleMultiSelectMode(int indexToSelect) {
toggleMultiSelectMode(index); super.toggleMultiSelectMode(indexToSelect);
//hide tabs and show Exile/Retrieve button while in multi-select mode //hide tabs and show Exile/Retrieve button while in multi-select mode
boolean multiSelectMode = getMultiSelectMode(); boolean multiSelectMode = getMultiSelectMode();
@@ -311,6 +316,11 @@ public class ConquestCollectionScreen extends TabPageScreen<ConquestCollectionSc
parentScreen.btnExileRetrieveMultiple.setVisible(multiSelectMode); parentScreen.btnExileRetrieveMultiple.setVisible(multiSelectMode);
parentScreen.tabHeader.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> { private static class CardOriginFilter extends ComboBoxFilter<PaperCard, ConquestPlane> {

View File

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