Prevent crashes from calling CardView.getCards and assumming non-null

This commit is contained in:
drdev
2014-10-10 16:31:05 +00:00
parent f74f438765
commit 033cf1701a
3 changed files with 18 additions and 9 deletions

View File

@@ -48,7 +48,7 @@ public class ZoneAction extends ForgeAction {
@Override @Override
public void actionPerformed(final ActionEvent e) { public void actionPerformed(final ActionEvent e) {
final Iterable<CardView> choices = this.getCardsAsIterable(); final Iterable<CardView> choices = this.getCardsAsIterable();
if (!choices.iterator().hasNext()) { if (choices == null || !choices.iterator().hasNext()) {
GuiChoose.reveal(this.title, "no cards"); GuiChoose.reveal(this.title, "no cards");
return; return;
} }

View File

@@ -598,7 +598,13 @@ public class PlayArea extends CardPanelContainer implements CardPanelMouseListen
private void recalculateCardPanels(final PlayerView model, final ZoneType zone) { private void recalculateCardPanels(final PlayerView model, final ZoneType zone) {
final List<CardView> modelCopy; final List<CardView> modelCopy;
synchronized (model) { synchronized (model) {
modelCopy = Lists.newArrayList(model.getCards(zone)); Iterable<CardView> cards = model.getCards(zone);
if (cards != null) {
modelCopy = Lists.newArrayList(cards);
}
else {
modelCopy = Lists.newArrayList();
}
} }
final List<CardView> oldCards = Lists.newArrayList(); final List<CardView> oldCards = Lists.newArrayList();
@@ -620,7 +626,8 @@ public class PlayArea extends CardPanelContainer implements CardPanelMouseListen
if (toDelete.size() == getCardPanels().size()) { if (toDelete.size() == getCardPanels().size()) {
clear(); clear();
} else { }
else {
for (final CardView card : toDelete) { for (final CardView card : toDelete) {
removeCardPanel(getCardPanel(card.getId())); removeCardPanel(getCardPanel(card.getId()));
} }

View File

@@ -46,6 +46,7 @@ public abstract class VCardDisplayArea extends VDisplayArea {
clear(); clear();
CardAreaPanel newCardPanel = null; CardAreaPanel newCardPanel = null;
if (model != null) {
for (CardView card : model) { for (CardView card : model) {
CardAreaPanel cardPanel = CardAreaPanel.get(card); CardAreaPanel cardPanel = CardAreaPanel.get(card);
addCardPanelToDisplayArea(cardPanel); addCardPanelToDisplayArea(cardPanel);
@@ -54,6 +55,7 @@ public abstract class VCardDisplayArea extends VDisplayArea {
newCardPanel = cardPanel; newCardPanel = cardPanel;
} }
} }
}
revalidate(); revalidate();
if (newCardPanel != null) { //if new cards added, ensure first new card is scrolled into view if (newCardPanel != null) { //if new cards added, ensure first new card is scrolled into view