mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 18:58:00 +00:00
Support canceling out of multi-select mode if no items are checked
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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> {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user