1 package de.jos.game.objects.buttons;
2
3 import de.jos.game.objects.screen.AbstractGameObject;
4 import de.jos.game.objects.screen.MultiPageScreen;
5
6 public class PreviousButton extends GameButton {
7
8 /***
9 * Create a PreviousButton at the position.
10 *
11 * @param gameObject
12 * @param x
13 * @param y
14 */
15 public PreviousButton(AbstractGameObject gameObject, int x, int y) {
16 super(gameObject.getString("menu.previous"), x, y, 0, 0, gameObject);
17
18 setButtonClickCallback(new PreviousButtonClickCallback(gameObject));
19 }
20
21 @Override
22 public Action getAction() {
23 return Action.PREVIOUS;
24 }
25
26 /***
27 * Callback fuer einen Button click.
28 *
29 * @author root
30 *
31 */
32 private static final class PreviousButtonClickCallback implements ButtonClickCallback {
33
34 AbstractGameObject gameObject = null;
35
36 public PreviousButtonClickCallback(AbstractGameObject gameObject) {
37 this.gameObject = gameObject;
38 }
39
40 /***
41 * {@inheritDoc}
42 */
43 public void performClickAction() {
44 if (gameObject instanceof MultiPageScreen) {
45 MultiPageScreen multiPageScreen = (MultiPageScreen) gameObject;
46 multiPageScreen.setCurrentPage(multiPageScreen.getCurrentPage() - 1);
47
48 if (multiPageScreen.getCurrentPage() == 0) {
49 multiPageScreen.setCurrentPage(1);
50 } else if (multiPageScreen.getCurrentPage() > multiPageScreen.getNumberOfPages()) {
51 multiPageScreen.setCurrentPage(multiPageScreen.getNumberOfPages());
52 }
53
54 multiPageScreen.executePagingAction();
55 }
56 }
57
58 }
59
60 }