View Javadoc

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      // callback registrieren
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  }