public void run() { boolean exitRequested = false; if (!initialized) { init(); initialized = true; } if (state != FAILED) { state = LOADING; curBook = 0; enqueMsg(MSG_BOOK); } repaint(); while (midlet.thread == Thread.currentThread()) { int msg; while ((msg = dequeMsg()) != 0) { switch (msg) { case MSG_BOOK: loadBook(); repaint(); break; case MSG_NEXT_LINE: nextLine(); repaint(); break; case MSG_PREV_LINE: prevLine(); repaint(); break; case MSG_NEXT_PAGE: nextPage(); repaint(); break; case MSG_PREV_PAGE: prevPage(); repaint(); break; case MSG_EXIT: exitRequested = true; break; } } if (exitRequested) break; synchronized (this) { try { if (!hasPendingMsg()) wait(); } catch (InterruptedException e) { } } } midlet.threadTerminated(); if (exitRequested) midlet.notifyDestroyed(); else state = PAUSED; }
private void nextPage() { for (int i = 0; i < screenRows; i++) nextLine(); }