Flesh out Setting screen structure

This commit is contained in:
drdev
2014-03-05 00:21:20 +00:00
parent cedda9622f
commit a7296a35c6
5 changed files with 85 additions and 16 deletions

1
.gitattributes vendored
View File

@@ -16037,6 +16037,7 @@ forge-m-base/src/forge/toolbox/FContainer.java -text
forge-m-base/src/forge/toolbox/FDisplayObject.java -text
forge-m-base/src/forge/toolbox/FLabel.java -text
forge-m-base/src/forge/toolbox/FProgressBar.java -text
forge-m-base/src/forge/toolbox/FScrollPane.java -text
forge-m-base/src/forge/utils/Constants.java -text
forge-m-base/src/forge/utils/FileLocation.java -text
forge-m-base/src/forge/utils/Utils.java -text

View File

@@ -1,20 +1,84 @@
package forge.screens.settings;
import java.util.ArrayList;
import java.util.List;
import forge.assets.FSkin;
import forge.screens.FScreen;
import forge.toolbox.FComboBox;
import forge.toolbox.FContainer;
import forge.toolbox.FLabel;
import forge.toolbox.FScrollPane;
public class SettingsScreen extends FScreen {
private FComboBox<String> cmbTheme;
private static final float INSETS_FACTOR = 0.025f;
private static final float GAP_Y_FACTOR = 0.01f;
private final FScrollPane scroller = add(new FScrollPane());
private final List<SettingPanel> settingPanels = new ArrayList<SettingPanel>();
public SettingsScreen() {
super(true, "Settings", true);
cmbTheme = add(new FComboBox<>(FSkin.getAllSkins()));
super(true, "Settings", false);
addPanel(new ComboBoxPanel<String>("Theme", FSkin.getAllSkins()));
}
private void addPanel(SettingPanel panel) {
scroller.add(panel);
settingPanels.add(panel);
}
@Override
protected void doLayout(float startY, float width, float height) {
cmbTheme.setBounds(20, startY + 20, width - 40, 25);
float dy = height * GAP_Y_FACTOR;
scroller.setBounds(0, startY + dy, width, height - startY - dy);
float x = width * INSETS_FACTOR;
float y = 0;
float panelWidth = width - 2 * x;
float panelHeight;
for (SettingPanel panel : settingPanels) {
panelHeight = panel.getPreferredHeight();
panel.setBounds(x, y, panelWidth, panelHeight);
y += panelHeight + dy;
}
}
private abstract class SettingPanel extends FContainer {
public abstract float getPreferredHeight();
}
public class ComboBoxPanel<E> extends SettingPanel {
private final FLabel label;
private final FComboBox<E> comboBox;
public ComboBoxPanel(String labelText) {
this(labelText, new FComboBox<E>());
}
public ComboBoxPanel(String labelText, E[] items) {
this(labelText, new FComboBox<E>(items));
}
public ComboBoxPanel(String labelText, Iterable<E> items) {
this(labelText, new FComboBox<E>(items));
}
private ComboBoxPanel(String labelText, FComboBox<E> comboBox0) {
label = add(new FLabel.Builder().text(labelText).build());
comboBox = add(comboBox0);
label.setHeight(FComboBox.PREFERRED_HEIGHT - 6);
comboBox.setHeight(FComboBox.PREFERRED_HEIGHT);
}
@Override
protected void doLayout(float width, float height) {
label.setBounds(0, 0, width, label.getHeight());
comboBox.setBounds(0, label.getHeight(), width, comboBox.getHeight());
}
@Override
public float getPreferredHeight() {
return label.getHeight() + comboBox.getHeight();
}
}
}

View File

@@ -4,13 +4,15 @@ import java.util.ArrayList;
import java.util.List;
import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment;
import forge.Forge.Graphics;
import forge.assets.FSkinColor;
import forge.assets.FSkinFont;
import forge.assets.FSkinColor.Colors;
import forge.utils.Utils;
public class FComboBox<E> extends FDisplayObject {
public static final float PREFERRED_HEIGHT = Utils.AVG_FINGER_HEIGHT * 0.7f;
private static final FSkinColor FORE_COLOR = FSkinColor.get(Colors.CLR_TEXT);
private static final FSkinColor BACK_COLOR = FSkinColor.get(Colors.CLR_THEME2);
private static final FSkinColor BORDER_COLOR = BACK_COLOR.getContrastColor(10);
@@ -84,16 +86,10 @@ public class FComboBox<E> extends FDisplayObject {
g.fillRect(BACK_COLOR, 0, 0, w, h);
g.drawRect(BORDER_COLOR, 0, 0, w, h);
float shapeWidth = 8;
float shapeHeight = 8;
float x = w - shapeWidth - 6;
float shapeWidth = PREFERRED_HEIGHT / 3;
float shapeHeight = shapeWidth;
float x = w - 2 * (shapeWidth - 1);
float y = h / 2 - 1;
if (getHeight() > 26) { //increase arrow size if taller combo box
shapeWidth += 2;
shapeHeight += 2;
x -= 4;
y--;
}
g.fillTriangle(FORE_COLOR, x, y, x + shapeWidth, y, x + (shapeWidth / 2), y + (shapeHeight / 2));
E selectedItem = getSelectedItem();

View File

@@ -13,7 +13,7 @@ public class FLabel extends FDisplayObject {
public static class Builder {
//========== Default values for FLabel are set here.
private float bldIconScaleFactor = 0.8f;
private int bldFontSize = 14;
private int bldFontSize = 12;
private HAlignment bldAlignment = HAlignment.LEFT;
private Vector2 bldInsets = new Vector2(0, 0);

View File

@@ -0,0 +1,8 @@
package forge.toolbox;
public class FScrollPane extends FContainer {
@Override
protected void doLayout(float width, float height) {
}
}