mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-20 20:58:03 +00:00
Improve ItemManager layout
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
package forge.deck;
|
||||
|
||||
import forge.Forge;
|
||||
import forge.Forge.Graphics;
|
||||
import forge.deck.Deck;
|
||||
import forge.game.GameType;
|
||||
import forge.game.player.RegisteredPlayer;
|
||||
@@ -22,6 +21,8 @@ import forge.toolbox.FEvent.FEventHandler;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
@@ -81,6 +82,7 @@ public class FDeckChooser extends FScreen {
|
||||
|
||||
if (cmbDeckTypes == null) { //initialize components with delayed initialization the first time this is populated
|
||||
cmbDeckTypes = new FComboBox<DeckType>(DeckType.values());
|
||||
cmbDeckTypes.setAlignment(HAlignment.CENTER);
|
||||
restoreSavedState();
|
||||
cmbDeckTypes.setChangedHandler(new FEventHandler() {
|
||||
@Override
|
||||
@@ -98,11 +100,6 @@ public class FDeckChooser extends FScreen {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(Graphics g) {
|
||||
super.draw(g);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doLayout(float startY, float width, float height) {
|
||||
float x = PADDING;
|
||||
|
||||
@@ -78,8 +78,8 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
|
||||
|
||||
private static final FSkinImage VIEW_OPTIONS_ICON = FSkinImage.SETTINGS;
|
||||
private final FLabel btnViewOptions = new FLabel.Builder()
|
||||
.selectable(true)
|
||||
.icon(VIEW_OPTIONS_ICON).iconScaleAuto(false)
|
||||
.selectable(true).align(HAlignment.CENTER)
|
||||
.icon(VIEW_OPTIONS_ICON).iconScaleFactor(0.9f)
|
||||
.build();
|
||||
|
||||
private final List<ItemView<T>> views = new ArrayList<ItemView<T>>();
|
||||
@@ -109,17 +109,6 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
|
||||
views.add(listView);
|
||||
views.add(imageView);
|
||||
currentView = listView;
|
||||
}
|
||||
|
||||
protected ImageView<T> createImageView(final ItemManagerModel<T> model0) {
|
||||
return new ImageView<T>(this, model0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialize item manager if needed
|
||||
*/
|
||||
public void initialize() {
|
||||
if (initialized) { return; } //avoid initializing more than once
|
||||
|
||||
//initialize views
|
||||
for (int i = 0; i < views.size(); i++) {
|
||||
@@ -127,7 +116,7 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
|
||||
}
|
||||
|
||||
//build display
|
||||
add(mainSearchFilter.getWidget());
|
||||
add(mainSearchFilter.getPanel());
|
||||
add(btnFilters);
|
||||
add(lblCaption);
|
||||
add(lblRatio);
|
||||
@@ -218,6 +207,10 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
|
||||
}
|
||||
}
|
||||
|
||||
protected ImageView<T> createImageView(final ItemManagerModel<T> model0) {
|
||||
return new ImageView<T>(this, model0);
|
||||
}
|
||||
|
||||
public ItemManagerConfig getConfig() {
|
||||
return config;
|
||||
}
|
||||
@@ -275,16 +268,16 @@ public abstract class ItemManager<T extends InventoryItem> extends FContainer im
|
||||
|
||||
@Override
|
||||
public void doLayout(float width, float height) {
|
||||
LayoutHelper helper = new LayoutHelper(this, 3, 0);
|
||||
float fieldHeight = ItemFilter.PANEL_HEIGHT;
|
||||
LayoutHelper helper = new LayoutHelper(this, ItemFilter.PADDING, 1);
|
||||
if (!hideFilters) {
|
||||
for (ItemFilter<? extends T> filter : orderedFilters) {
|
||||
helper.fillLine(filter.getPanel(), ItemFilter.PANEL_HEIGHT);
|
||||
helper.newLine();
|
||||
}
|
||||
helper.fillLine(mainSearchFilter.getWidget(), ItemFilter.PANEL_HEIGHT);
|
||||
helper.fillLine(mainSearchFilter.getPanel(), ItemFilter.PANEL_HEIGHT);
|
||||
}
|
||||
helper.newLine();
|
||||
helper.newLine(ItemFilter.PADDING);
|
||||
float fieldHeight = mainSearchFilter.getWidget().getHeight();
|
||||
helper.include(btnFilters, 61, fieldHeight);
|
||||
float captionWidth = lblCaption.getAutoSizeBounds().width;
|
||||
float ratioWidth = lblRatio.getAutoSizeBounds().width;
|
||||
|
||||
@@ -14,7 +14,7 @@ import forge.util.LayoutHelper;
|
||||
|
||||
|
||||
public abstract class ItemFilter<T extends InventoryItem> {
|
||||
private static final float PADDING = 3;
|
||||
public static final float PADDING = 3;
|
||||
public static final int DEFAULT_FONT_SIZE = 11;
|
||||
public static final float PANEL_HEIGHT = FTextField.getDefaultHeight(DEFAULT_FONT_SIZE) + 2 * PADDING;
|
||||
private static final FSkinColor FORE_COLOR = FSkinColor.get(Colors.CLR_TEXT);
|
||||
@@ -104,7 +104,7 @@ public abstract class ItemFilter<T extends InventoryItem> {
|
||||
}
|
||||
|
||||
public void drawOverlay(Graphics g) {
|
||||
float y = getHeight();
|
||||
float y = getHeight() + 1;
|
||||
g.drawLine(1, FORE_COLOR, 0, y, getWidth(), y);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,6 +56,7 @@ public class TextSearchFilter<T extends InventoryItem> extends ItemFilter<T> {
|
||||
@Override
|
||||
protected void buildWidget(Widget widget) {
|
||||
txtSearch = new FTextField();
|
||||
txtSearch.setFontSize(ItemFilter.DEFAULT_FONT_SIZE + 1);
|
||||
txtSearch.setGhostText("Search");
|
||||
widget.add(txtSearch);
|
||||
|
||||
@@ -69,7 +70,7 @@ public class TextSearchFilter<T extends InventoryItem> extends ItemFilter<T> {
|
||||
|
||||
@Override
|
||||
protected void doWidgetLayout(LayoutHelper helper) {
|
||||
helper.fillLine(txtSearch, txtSearch.getHeight());
|
||||
helper.fillLine(txtSearch, helper.getParentHeight());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -11,6 +11,8 @@ import forge.util.LayoutHelper;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment;
|
||||
|
||||
|
||||
public abstract class ToggleButtonsFilter<T extends InventoryItem> extends ItemFilter<T> {
|
||||
protected boolean lockFiltering;
|
||||
@@ -73,6 +75,7 @@ public abstract class ToggleButtonsFilter<T extends InventoryItem> extends ItemF
|
||||
private ToggleButton(FImage icon) {
|
||||
super(new FLabel.Builder()
|
||||
.icon(icon).fontSize(11).iconScaleFactor(0.9f)
|
||||
.align(HAlignment.CENTER)
|
||||
.selectable(true).selected(true)
|
||||
.command(new FEventHandler() {
|
||||
@Override
|
||||
|
||||
@@ -22,6 +22,8 @@ import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment;
|
||||
|
||||
public abstract class ItemView<T extends InventoryItem> {
|
||||
private static final FSkinColor BORDER_COLOR = FSkinColor.get(Colors.CLR_TEXT);
|
||||
|
||||
@@ -37,8 +39,8 @@ public abstract class ItemView<T extends InventoryItem> {
|
||||
protected ItemView(ItemManager<T> itemManager0, ItemManagerModel<T> model0) {
|
||||
itemManager = itemManager0;
|
||||
model = model0;
|
||||
button = new FLabel.Builder().selectable(true)
|
||||
.icon(getIcon()).iconScaleAuto(false).build();
|
||||
button = new FLabel.Builder().selectable(true).align(HAlignment.CENTER)
|
||||
.iconScaleFactor(0.9f).icon(getIcon()).build();
|
||||
}
|
||||
|
||||
private class Scroller extends FScrollPane {
|
||||
|
||||
@@ -3,6 +3,8 @@ package forge.toolbox;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment;
|
||||
|
||||
import forge.Forge;
|
||||
import forge.Forge.Graphics;
|
||||
import forge.menu.FDropDownMenu;
|
||||
@@ -141,6 +143,9 @@ public class FComboBox<E> extends FTextField {
|
||||
|
||||
@Override
|
||||
protected float getRightPadding() {
|
||||
if (getAlignment() == HAlignment.CENTER) {
|
||||
return super.getRightPadding();
|
||||
}
|
||||
return getDivotWidth() + 2 * PADDING;
|
||||
}
|
||||
|
||||
|
||||
@@ -272,6 +272,12 @@ public class FLabel extends FDisplayObject implements IButton {
|
||||
}
|
||||
else {
|
||||
//TODO: Calculate these for center/right alignment
|
||||
if (alignment == HAlignment.CENTER) {
|
||||
float dx = (w - iconWidth - font.getFont().getMultiLineBounds(text).width - insets.x) / 2;
|
||||
if (dx > 0) {
|
||||
x += dx;
|
||||
}
|
||||
}
|
||||
y += (h - iconHeight) / 2;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user