mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 03:38:01 +00:00
Fix so restored deck in view when application first opened
Prevent selection going out of view when table height changes
This commit is contained in:
@@ -29,10 +29,9 @@ import forge.quest.QuestUtil;
|
||||
|
||||
@SuppressWarnings("serial")
|
||||
public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
||||
private boolean isUISetup = false;
|
||||
|
||||
private DecksComboBox decksComboBox = new DecksComboBox();
|
||||
private DeckType selectedDeckType = DeckType.COLOR_DECK;
|
||||
private DecksComboBox decksComboBox;
|
||||
private DeckType selectedDeckType;
|
||||
private ItemManagerContainer lstDecksContainer;
|
||||
|
||||
private final DeckManager lstDecks = new DeckManager(GameType.Constructed);
|
||||
private final FLabel btnViewDeck = new FLabel.ButtonBuilder().text("View Deck").fontSize(14).build();
|
||||
@@ -267,17 +266,24 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
||||
}
|
||||
|
||||
public void populate() {
|
||||
if (decksComboBox == null) { //initialize components with delayed initialization the first time this is populated
|
||||
decksComboBox = new DecksComboBox();
|
||||
lstDecksContainer = new ItemManagerContainer(lstDecks);
|
||||
restoreSavedState();
|
||||
decksComboBox.addListener(this);
|
||||
}
|
||||
else {
|
||||
removeAll();
|
||||
}
|
||||
this.setLayout(new MigLayout("insets 0, gap 0"));
|
||||
decksComboBox.addTo(this, "w 100%, h 30px!, gapbottom 5px, spanx 2, wrap");
|
||||
this.add(new ItemManagerContainer(lstDecks), "w 100%, growy, pushy, spanx 2, wrap");
|
||||
this.add(lstDecksContainer, "w 100%, growy, pushy, spanx 2, wrap");
|
||||
this.add(btnViewDeck, "w 50%-3px, h 30px!, gaptop 5px, gapright 6px");
|
||||
this.add(btnRandom, "w 50%-3px, h 30px!, gaptop 5px");
|
||||
if (isShowing()) {
|
||||
validate();
|
||||
revalidate();
|
||||
repaint();
|
||||
}
|
||||
setupUI();
|
||||
}
|
||||
|
||||
public final boolean isAi() {
|
||||
@@ -296,23 +302,6 @@ public class FDeckChooser extends JPanel implements IDecksComboBoxListener {
|
||||
refreshDecksList(ev.getDeckType(), false, ev);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the various UI components that make up the Deck Chooser.
|
||||
* <p>
|
||||
* Only needs to be called once from populate() method so that
|
||||
* components are "lazy-loaded" when Deck Chooser is first displayed.
|
||||
*/
|
||||
private void setupUI() {
|
||||
if (!isUISetup) {
|
||||
// Only do this once.
|
||||
isUISetup = true;
|
||||
// monitor events generated by these components.
|
||||
decksComboBox.addListener(this);
|
||||
// now everything is in place, fire initial populate event.
|
||||
restoreSavedState();
|
||||
}
|
||||
}
|
||||
|
||||
private void refreshDecksList(DeckType deckType, boolean forceRefresh, DecksComboBoxEvent ev) {
|
||||
if (selectedDeckType == deckType && !forceRefresh) { return; }
|
||||
selectedDeckType = deckType;
|
||||
|
||||
@@ -483,7 +483,6 @@ public enum VSubmenuConstructed implements IVSubmenu<CSubmenuConstructed> {
|
||||
*/
|
||||
@Override
|
||||
public void populate() {
|
||||
|
||||
JPanel container = VHomeUI.SINGLETON_INSTANCE.getPnlDisplay();
|
||||
|
||||
container.removeAll();
|
||||
|
||||
@@ -19,6 +19,8 @@ package forge.gui.toolbox.itemmanager;
|
||||
|
||||
import java.awt.Component;
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.event.ComponentAdapter;
|
||||
import java.awt.event.ComponentEvent;
|
||||
import java.awt.event.ItemEvent;
|
||||
import java.awt.event.ItemListener;
|
||||
import java.awt.event.KeyAdapter;
|
||||
@@ -86,6 +88,7 @@ public abstract class ItemManager<T extends InventoryItem> extends JPanel {
|
||||
private boolean alwaysNonUnique = false;
|
||||
private boolean allowMultipleSelections = false;
|
||||
private boolean hideFilters = false;
|
||||
private int viewHeightBackup;
|
||||
private Command itemActivateCommand;
|
||||
private ContextMenuBuilder contextMenuBuilder;
|
||||
private final Class<T> genericType;
|
||||
@@ -154,6 +157,17 @@ public abstract class ItemManager<T extends InventoryItem> extends JPanel {
|
||||
this.viewScroller.setBorder(null);
|
||||
this.viewScroller.getViewport().setBorder(null);
|
||||
this.viewScroller.getVerticalScrollBar().addAdjustmentListener(new ToolTipListener());
|
||||
this.viewScroller.addComponentListener(new ComponentAdapter() {
|
||||
@Override
|
||||
public void componentResized(ComponentEvent e) {
|
||||
//scroll selection into view whenever view height changes
|
||||
int height = e.getComponent().getHeight();
|
||||
if (height != viewHeightBackup) {
|
||||
viewHeightBackup = height;
|
||||
scrollSelectionIntoView();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
//build enable filters checkbox
|
||||
ItemFilter.layoutCheckbox(this.chkEnableFilters);
|
||||
|
||||
Reference in New Issue
Block a user