@Override protected Connection connect () { return signal.connect(new UnitSlot() { @Override public void onEmit () { boolean old = _current; notifyChange(_current = !old, old); } }); } protected boolean _current = initial;
@Override protected void visitElems (Elements<?> elems) { elems.childAdded().disconnect(_descendantAdded); elems.childRemoved().disconnect(_descendantRemoved); } @Override protected void visitItem (MenuItem item) {
@Override protected Connection connect () { return signal.connect(new Slot<T>() { public void onEmit (T value) { updateAndNotifyIf(value); } }); } protected T _value = initial;
/** * Stops tracking the children of {@code elements} for setting the selection. */ public Selector remove (Elements<?> elements) { for (Element<?> child : elements) { _removeSlot.onEmit(child); } elements.childAdded().disconnect(_addSlot); elements.childRemoved().disconnect(_removeSlot); return this; }
@Override protected Connection connect () { return signal.connect(new UnitSlot() { @Override public void onEmit () { boolean old = _current; notifyChange(_current = !old, old); } }); } protected boolean _current = initial;
@Override protected Connection connect () { return signal.connect(new Slot<T>() { public void onEmit (T value) { updateAndNotifyIf(value); } }); } protected T _value = initial;
/** A convenience method for registering a long press handler. Assumes you don't need the * result of {@link SignalView#connect}, because it throws it away. */ public LongPressButton onLongPress (SignalView.Listener<? super Button> onLongPress) { longPressed().connect(onLongPress); return this; }
/** A convenience method for registering a click handler. Assumes you don't need the result of * {@link SignalView#connect}, because it throws it away. */ public ImageButton onClick (SignalView.Listener<? super ImageButton> onClick) { clicked().connect(onClick); return this; }
/** A convenience method for registering a click handler. Assumes you don't need the result of * {@link SignalView#connect}, because it throws it away. */ public Button onClick (SignalView.Listener<? super Button> onClick) { clicked().connect(onClick); return this; }
/** * Tracks the children of {@code elements} for setting the selection. Children subsequently * added or removed from {@code elements} are automatically handled appropriately. */ public Selector add (Elements<?> elements) { for (Element<?> child : elements) { _addSlot.onEmit(child); } elements.childAdded().connect(_addSlot); elements.childRemoved().connect(_removeSlot); return this; }
grid.add(new Button(screen.name()).onClick(new UnitSlot() { public void onEmit () { _stack.push(screen); screen.back.clicked().connect(new UnitSlot() { public void onEmit () { _stack.remove(screen); }}); }})); // push this screen immediately if it was specified on the command line
/** * Creates a new menu using the given layout for its elements. */ public Menu (Layout layout) { super(layout); // use a hit tester "eater" to pretend our layer covers all its siblings layer.setHitTester(new Layer.HitTester() { @Override public Layer hitTest (Layer layer, Point p) { Layer descendant = layer.hitTestDefault(p); return descendant == null ? absorbHits() ? layer : null : descendant; } }); // deactivate the menu on any pointer events (children will still get theirs) layer.events().connect(new Pointer.Listener() { @Override public void onStart (Pointer.Interaction iact) { if (iact.hitLayer == layer) deactivate(); } }); childAdded().connect(_descendantAdded); childRemoved().connect(_descendantRemoved); }
return new Button(title).onClick(new UnitSlot() { public void onEmit () { final DemoScreen screen = factory.apply(); _stack.push(screen); screen.back.clicked().connect(new UnitSlot() { public void onEmit () { _stack.remove(screen); }}); }}); }
@Override public void onEmit (Button self) { MenuHost.Pop pop = new MenuHost.Pop(self, createMenu("Trees", "Elm", "Ash", "Maple", "Oak")); pop.menu.itemTriggered().connect(updater(self)); menuHost.popup(pop); } });
@Override public void onEmit (Button self) { MenuHost.Pop pop = new MenuHost.Pop(self, createMenu("Directions", "North", "South", "East", "West")); pop.menu.itemTriggered().connect(updater(self)); addIcons(pop.menu); menuHost.popup(pop); } });
@Override public void onEmit (Button self) { MenuHost.Pop pop = new MenuHost.Pop(self, createMenu(null, "Road", "Street", "Boulevard", "Avenue")); pop.menu.itemTriggered().connect(updater(self)); pop.menu.addStyles(Menu.OPENER.is(new Menu.AnimFn() { @Override public Animation go (Menu menu, Animator animator) { // TODO: fix short delay where menu is visible at this scale menu.layer.setScale(1, .25f); return animator.tweenScaleY(menu.layer).to(1).easeOut().in(125); } })); menuHost.popup(pop); } });
public TripleDemo (Platform plat) { super(plat, 25); // update our "simulation" 40 times per second game = this; // jam ourselves into a global variable, woo! new Pointer(plat, rootLayer, true); // wire up event dispatch screens.push(new DemoMenuScreen(screens)); // start off with our menu screen // show debug rectangles when D key is pressed; dump scene graph on shift-D plat.input().keyboardEvents.collect(Keyboard.isKey(Key.D)).connect(event -> { Layer.DEBUG_RECTS = event.down; if (event.down && event.isShiftDown()) { rootLayer.debugPrint(plat.log()); } }); } }