Fix so hovering cards in FDeckViewer shows Details/Picture in dialog as expected

This commit is contained in:
drdev
2014-02-04 03:50:00 +00:00
parent 038418ca0d
commit 1d1950d3cb
4 changed files with 29 additions and 5 deletions

View File

@@ -25,7 +25,9 @@ import forge.gui.toolbox.FButton;
import forge.gui.toolbox.FOptionPane; import forge.gui.toolbox.FOptionPane;
import forge.gui.toolbox.itemmanager.CardManager; import forge.gui.toolbox.itemmanager.CardManager;
import forge.gui.toolbox.itemmanager.ItemManagerContainer; import forge.gui.toolbox.itemmanager.ItemManagerContainer;
import forge.gui.toolbox.itemmanager.ItemManagerModel;
import forge.gui.toolbox.itemmanager.views.GroupDef; import forge.gui.toolbox.itemmanager.views.GroupDef;
import forge.gui.toolbox.itemmanager.views.ImageView;
import forge.gui.toolbox.itemmanager.views.ItemColumn; import forge.gui.toolbox.itemmanager.views.ItemColumn;
import forge.gui.toolbox.itemmanager.views.SColumnUtil; import forge.gui.toolbox.itemmanager.views.SColumnUtil;
import forge.gui.toolbox.itemmanager.views.ColumnDef; import forge.gui.toolbox.itemmanager.views.ColumnDef;
@@ -56,7 +58,21 @@ public class FDeckViewer extends FDialog {
private FDeckViewer(Deck deck0) { private FDeckViewer(Deck deck0) {
this.deck = deck0; this.deck = deck0;
this.setTitle(deck.getName()); this.setTitle(deck.getName());
this.cardManager = new CardManager(false); this.cardManager = new CardManager(false) {
@Override //show hovered card in Image View in dialog instead of main Detail/Picture panes
protected ImageView<PaperCard> createImageView(final ItemManagerModel<PaperCard> model0) {
return new ImageView<PaperCard>(this, model0) {
@Override
protected void showHoveredItem(PaperCard item) {
Card card = Card.getCardForUi(item);
if (card == null) { return; }
cardDetail.setCard(card);
cardPicture.setCard(card);
}
};
}
};
this.cardManager.setPool(deck.getMain()); this.cardManager.setPool(deck.getMain());
this.cardManager.addSelectionListener(new ListSelectionListener() { this.cardManager.addSelectionListener(new ListSelectionListener() {
@Override @Override

View File

@@ -27,7 +27,7 @@ import forge.quest.QuestWorld;
* *
*/ */
@SuppressWarnings("serial") @SuppressWarnings("serial")
public final class CardManager extends ItemManager<PaperCard> { public class CardManager extends ItemManager<PaperCard> {
public CardManager(boolean wantUnique0) { public CardManager(boolean wantUnique0) {
super(PaperCard.class, wantUnique0); super(PaperCard.class, wantUnique0);
} }

View File

@@ -139,13 +139,17 @@ public abstract class ItemManager<T extends InventoryItem> extends JPanel {
this.model = new ItemManagerModel<T>(genericType0); this.model = new ItemManagerModel<T>(genericType0);
this.listView = new ItemListView<T>(this, this.model); this.listView = new ItemListView<T>(this, this.model);
this.imageView = new ImageView<T>(this, this.model); this.imageView = createImageView(this.model);
this.views.add(this.listView); this.views.add(this.listView);
this.views.add(this.imageView); this.views.add(this.imageView);
this.currentView = this.listView; this.currentView = this.listView;
} }
protected ImageView<T> createImageView(final ItemManagerModel<T> model0) {
return new ImageView<T>(this, model0);
}
/** /**
* Initialize item manager if needed * Initialize item manager if needed
*/ */

View File

@@ -356,12 +356,16 @@ public class ImageView<T extends InventoryItem> extends ItemView<T> {
if (hoveredItem == item) { return false; } if (hoveredItem == item) { return false; }
hoveredItem = item; hoveredItem = item;
if (item != null) { if (item != null) {
CDetail.SINGLETON_INSTANCE.showCard(item.item); showHoveredItem(item.item);
CPicture.SINGLETON_INSTANCE.showImage(item.item);
} }
return true; return true;
} }
protected void showHoveredItem(T item) {
CDetail.SINGLETON_INSTANCE.showCard(item);
CPicture.SINGLETON_INSTANCE.showImage(item);
}
@Override @Override
public JComponent getComponent() { public JComponent getComponent() {
return display; return display;