private boolean noContentCheck() { if (items == null || items.length <= 0) { luwrain.hint(luwrain.i18n().staticStr(LangStatic.LIST_NO_CONTENT), Hints.NO_CONTENT); return true; } return false; }
private boolean onAltEnd(KeyboardEvent event) { if (noContentCheck()) return true; if (hotPointY <= 0 || hotPointY > items.length || items[hotPointY - 1] == null) { luwrain.hint(Hints.EMPTY_LINE); return true; } final Object item = items[hotPointY - 1]; final String line = appearance.getScreenAppearance(item, 0); int leftBound = appearance.getObservableLeftBound(item); if (leftBound < 0) leftBound = 0; if (leftBound > line.length()) leftBound = line.length(); int rightBound = appearance.getObservableRightBound(item); if (rightBound < 0) rightBound = 0; if (rightBound >= line.length()) rightBound = line.length(); if (leftBound >= rightBound) { luwrain.hint(Hints.EMPTY_LINE); return true; } if (hotPointX <= leftBound) { luwrain.hint(Hints.BEGIN_OF_LINE); return true; } hotPointX = rightBound; luwrain.hint(Hints.END_OF_LINE); luwrain.onAreaNewHotPoint(this); return true; }
private boolean onPageUp(KeyboardEvent event, boolean briefIntroduction) { if (noContentCheck()) return true; if (hotPointY <= 0) { luwrain.hint(Hints.NO_ITEMS_ABOVE); return true; } final int visibleHeight = luwrain.getAreaVisibleHeight(this); if (visibleHeight < 1) return false; if (hotPointY > visibleHeight) hotPointY -= visibleHeight; else hotPointY = 0; onNewHotPointY(briefIntroduction); return true; }
private boolean onPageDown(KeyboardEvent event, boolean briefIntroduction) { if (noContentCheck()) return true; if (hotPointY >= items.length) { luwrain.hint(Hints.NO_ITEMS_BELOW); return true; } final int visibleHeight = luwrain.getAreaVisibleHeight(this); if (visibleHeight < 1) return false; hotPointY += visibleHeight; if (hotPointY > items.length) hotPointY = items.length; onNewHotPointY(briefIntroduction); return true; }
@Override public boolean onEnvironmentEvent(EnvironmentEvent event) { NullCheck.notNull(event, "event"); if (closing.onEnvironmentEvent(event)) return true; switch (event.getCode()) { case INTRODUCE: luwrain.silence(); luwrain.playSound(Sounds.INTRO_POPUP); luwrain.say(getAreaName()); return true; default: return super.onEnvironmentEvent(event); } }
private boolean onAltRight(KeyboardEvent event) { if (noContentCheck()) return true; if (hotPointY <= 0 || hotPointY > items.length || items[hotPointY - 1] == null) { luwrain.hint(Hints.EMPTY_LINE); return true; } final Object item = items[hotPointY - 1]; final String line = appearance.getScreenAppearance(item, 0); int leftBound = appearance.getObservableLeftBound(item); if (leftBound < 0) leftBound = 0; if (leftBound > line.length()) leftBound = line.length(); int rightBound = appearance.getObservableRightBound(item); if (rightBound < 0) rightBound = 0; if (rightBound >= line.length()) rightBound = line.length(); if (leftBound >= rightBound) { luwrain.hint(Hints.EMPTY_LINE); return true; } if (hotPointX >= rightBound) { luwrain.hint(Hints.END_OF_LINE); return true; } final String subline = line.substring(leftBound, rightBound); WordIterator it = new WordIterator(subline, hotPointX - leftBound); if (!it.stepForward()) { luwrain.hint(Hints.END_OF_LINE); return true; } hotPointX = it.pos() + leftBound; if (it.announce().length() > 0) luwrain.say(it.announce()); else luwrain.hint(Hints.END_OF_LINE); luwrain.onAreaNewHotPoint(this); return true; }
public void refresh() { model.refresh(); final int count = model.getItemCount(); if (count < 1) { items = new Object[0]; hotPointX = 0; hotPointY = 0; luwrain.onAreaNewContent(this); luwrain.onAreaNewHotPoint(this); return; } items = new Object[count]; for (int i = 0; i < count; ++i) items[i] = model.getItem(i); if (hotPointY > items.length) hotPointY = items.length; hotPointX = 0; luwrain.onAreaNewContent(this); luwrain.onAreaNewHotPoint(this); }
private void onNewHotPointY(boolean briefIntroduction) { if (hotPointY <= 0) { hotPointX = 0; luwrain.hint(Hints.EMPTY_LINE); luwrain.onAreaNewHotPoint(this); return; } final Object item = items[hotPointY - 1]; luwrain.playSound(Sounds.NEW_LIST_ITEM); if (item == null) { hotPointX = 0; luwrain.hint(Hints.EMPTY_LINE); } else { hotPointX = getInitialHotPointX(item); appearance.introduceItem(item, briefIntroduction ? ListItemAppearance.BRIEF : 0); } luwrain.onAreaNewHotPoint(this); }
@Override public boolean onEnvironmentEvent(EnvironmentEvent event) { NullCheck.notNull(event, "event"); if (closing.onEnvironmentEvent(event)) return true; if (region.onEnvironmentEvent(event, hotPointX, hotPointY)) return false; switch (event.getCode()) { case REFRESH: refresh(); return true; case INTRODUCE: luwrain.silence(); luwrain.playSound(Sounds.INTRO_POPUP); luwrain.say(getAreaName()); return true; default: return false; } }
private boolean onArrowUp(KeyboardEvent event, boolean briefIntroduction) { if (noContentCheck()) return true; if (hotPointY <= 0) { luwrain.hint(Hints.NO_ITEMS_ABOVE); return true; } --hotPointY; onNewHotPointY(briefIntroduction); return true; }
private boolean onArrowDown(KeyboardEvent event, boolean briefIntroduction) { if (noContentCheck()) return true; if (hotPointY >= items.length) { luwrain.hint(Hints.NO_ITEMS_BELOW); return true; } ++hotPointY; onNewHotPointY(briefIntroduction); return true; }