RightPanelPresenter.java
package org.microcol.gui;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JPanel;
import org.microcol.gui.event.ChangeLanguageController;
import org.microcol.gui.event.FocusedTileController;
import org.microcol.gui.event.FocusedTileEvent;
import org.microcol.gui.event.GameController;
import org.microcol.gui.event.KeyController;
import org.microcol.gui.event.StatusBarMessageController;
import org.microcol.gui.event.StatusBarMessageEvent;
import org.microcol.gui.event.TurnStartedController;
import org.microcol.model.Location;
import org.microcol.model.Model;
import org.microcol.model.Player;
import com.google.inject.Inject;
public class RightPanelPresenter implements Localized {
public interface Display {
JButton getNextTurnButton();
void showTile(final FocusedTileEvent event, Model game);
JPanel getRightPanel();
void setCurrentPlayer(Player player);
}
private Location focusedTile;
@Inject
public RightPanelPresenter(final RightPanelPresenter.Display display, final GameController gameController,
final KeyController keyController, final FocusedTileController focusedTileController,
final ChangeLanguageController languangeController,
final StatusBarMessageController statusBarMessageController,
final TurnStartedController turnStartedController) {
display.getNextTurnButton().setText(getText().get("nextTurnButton"));
display.getNextTurnButton().setEnabled(false);
display.getNextTurnButton().addActionListener(e -> {
display.getNextTurnButton().setEnabled(false);
gameController.nextTurn();
});
display.getNextTurnButton().addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(final KeyEvent keyEvent) {
keyController.fireEvent(keyEvent);
}
});
display.getNextTurnButton().addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(final MouseEvent e) {
statusBarMessageController
.fireEvent(new StatusBarMessageEvent(getText().get("nextTurnButton.desctiption")));
}
});
display.getRightPanel().addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(final MouseEvent e) {
statusBarMessageController
.fireEvent(new StatusBarMessageEvent(getText().get("rightPanel.description")));
}
});
languangeController.addListener(event -> {
display.getNextTurnButton().setText(getText().get("nextTurnButton"));
});
focusedTileController.addListener(event -> {
if (isItDifferentTile(event.getLocation())) {
focusedTile = event.getLocation();
display.showTile(event, gameController.getModel());
}
});
turnStartedController.addListener(event -> {
display.setCurrentPlayer(event.getPlayer());
if (event.getPlayer().isHuman()) {
display.getNextTurnButton().setEnabled(true);
}
});
}
private boolean isItDifferentTile(final Location tile) {
return focusedTile == null || !focusedTile.equals(tile);
}
}