Package tripleplay.demo.ui

Source Code of tripleplay.demo.ui.SelectorDemo

//
// Triple Play - utilities for use in PlayN-based games
// Copyright (c) 2011-2014, Three Rings Design, Inc. - All rights reserved.
// http://github.com/threerings/tripleplay/blob/master/LICENSE

package tripleplay.demo.ui;

import playn.core.Font;
import react.Slot;
import tripleplay.demo.DemoScreen;
import tripleplay.ui.Background;
import tripleplay.ui.Element;
import tripleplay.ui.Group;
import tripleplay.ui.Label;
import tripleplay.ui.Selector;
import tripleplay.ui.Shim;
import tripleplay.ui.Style;
import tripleplay.ui.Stylesheet;
import tripleplay.ui.ToggleButton;
import tripleplay.ui.layout.AxisLayout;

import static playn.core.PlayN.graphics;

public class SelectorDemo extends DemoScreen
{
    @Override protected String name () {
        return "Selector";
    }

    @Override protected String title () {
        return "UI: Selector";
    }

    @Override protected Group createIface () {
        Group main = new Group(AxisLayout.vertical()), buttons;
        Selector sel;

        String font = Style.FONT.getDefault(main).name();
        Style.Binding<Font> hdr = Style.FONT.is(graphics().createFont(font, Font.Style.BOLD, 14));
        main.setStylesheet(Stylesheet.builder().add(Label.class,
            Style.FONT.is(graphics().createFont(font, Font.Style.PLAIN, 12))).create());

        main.add(new Label("Simple").addStyles(hdr));
        main.add(new Label("A single parent with buttons - at most one is selected."));
        main.add(buttons = new Group(AxisLayout.horizontal()).add(
            mkButt("A"), mkButt("B"), mkButt("C")));
        sel = new Selector(buttons, buttons.childAt(0));
        main.add(hookup("Selection:", sel));
        main.add(new Shim(10, 10));

        main.add(new Label("Mixed").addStyles(hdr));
        main.add(new Label("A single parent with two groups - one from each may be selected."));
        main.add(buttons = new Group(AxisLayout.horizontal()).add(
            mkButt("Alvin"), mkButt("Simon"), mkButt("Theodore"),
            mkButt("Alpha"), mkButt("Sigma"), mkButt("Theta")));
        sel = new Selector().add(buttons.childAt(0), buttons.childAt(1), buttons.childAt(2));
        main.add(hookup("Chipmunk:", sel));
        sel = new Selector().add(buttons.childAt(3), buttons.childAt(4), buttons.childAt(5));
        main.add(hookup("Greek Letter:", sel));
        main.add(new Shim(10, 10));

        Style.Binding<Background> box = Style.BACKGROUND.is(
            Background.bordered(0xffffffff, 0xff000000, 1).inset(5));
        main.add(new Label("Multiple parents").addStyles(hdr));
        main.add(new Label("At most one button may be selected."));
        main.add(buttons = new Group(AxisLayout.horizontal()).add(
            new Group(AxisLayout.vertical(), box).add(mkButt("R1C1"), mkButt("R2C1")),
            new Group(AxisLayout.vertical(), box).add(mkButt("R1C2"), mkButt("R2C2"))));
        sel = new Selector().add((Group)buttons.childAt(0)).add((Group)buttons.childAt(1));
        main.add(hookup("Selection:", sel));

        return main;
    }

    protected Group hookup (String name, Selector sel) {
        final Label label = new Label();
        sel.selected.connect(new Slot<Element<?>>() {
            @Override public void onEmit (Element<?> event) {
                update(label, (ToggleButton)event);
            }
        });
        update(label, (ToggleButton)sel.selected.get());
        return new Group(AxisLayout.horizontal()).add(new Label(name), label);
    }

    protected void update (Label label, ToggleButton sel) {
        label.text.update(sel == null ? "<None>" : sel.text.get());
    }

    protected ToggleButton mkButt (String label) {
        return new ToggleButton(label);
    }
}
TOP

Related Classes of tripleplay.demo.ui.SelectorDemo

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.