diff --git a/forge-m-base/src/forge/toolbox/FList.java b/forge-m-base/src/forge/toolbox/FList.java index 897b24671f7..0fcd33eb893 100644 --- a/forge-m-base/src/forge/toolbox/FList.java +++ b/forge-m-base/src/forge/toolbox/FList.java @@ -92,6 +92,19 @@ public class FList extends FScrollPane { return count; } + public Object getItemAt(int index) { + int count = 0; + for (ListGroup group : groups) { + for (ListItem item : group.items) { + if (index == count) { + return item.value; + } + count++; + } + } + return null; + } + public void setListItemRenderer(ListItemRenderer renderer0) { renderer = renderer0; } diff --git a/forge-m-base/src/forge/toolbox/VCardZoom.java b/forge-m-base/src/forge/toolbox/VCardZoom.java index 05da645d3bf..0f6681ae589 100644 --- a/forge-m-base/src/forge/toolbox/VCardZoom.java +++ b/forge-m-base/src/forge/toolbox/VCardZoom.java @@ -42,11 +42,8 @@ public class VCardZoom extends FOverlay { }); optionList.setListItemRenderer(new ListItemRenderer() { @Override - @SuppressWarnings("unchecked") public boolean tap(Object value, float x, float y, int count) { - if (controller.selectOption(orderedCards.get(selectedIndex), value)) { - hide(); - } + selectOption(value); return true; } @@ -118,6 +115,13 @@ public class VCardZoom extends FOverlay { } } + @SuppressWarnings("unchecked") + private void selectOption(Object option) { + if (option == null || controller.selectOption(orderedCards.get(selectedIndex), option)) { + hide(); + } + } + private void setSelectedIndex(int selectedIndex0) { if (selectedIndex0 < 0) { selectedIndex0 = 0; @@ -133,6 +137,8 @@ public class VCardZoom extends FOverlay { slider.frontPanel.setCard(selectedCard); slider.leftPanel.setCard(selectedIndex > 0 ? orderedCards.get(selectedIndex - 1) : null); slider.rightPanel.setCard(selectedIndex < orderedCards.size() - 1 ? orderedCards.get(selectedIndex + 1) : null); + slider.leftPanel.setVisible(slider.leftPanel.getCard() != null); + slider.rightPanel.setVisible(slider.rightPanel.getCard() != null); optionList.clear(); List options = controller.getOptions(selectedCard); @@ -186,12 +192,18 @@ public class VCardZoom extends FOverlay { frontPanel = add(new FCardPanel() { @Override public boolean tap(float x, float y, int count) { - hide(); + selectOption(optionList.getItemAt(0)); return true; } }); } + @Override + public boolean tap(float x, float y, int count) { + hide(); //hide if area around panels tapped + return true; + } + @Override protected void doLayout(float width, float height) { float backPanelHeight = height * 0.8f;