package magic.ui.screen.duel.game;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import javax.swing.JLayeredPane;
import magic.ui.widget.ZoneBackgroundLabel;
import magic.ui.widget.card.AnnotatedCardPanel;
import magic.ui.widget.duel.DuelDialogPanel;
import magic.ui.widget.duel.animation.AnimationPanel;
@SuppressWarnings("serial")
class DuelLayeredPane extends JLayeredPane {
private final DuelPanel duelPanel;
private final ZoneBackgroundLabel backgroundLabel;
private final AnimationPanel animationPanel;
private final AnnotatedCardPanel imageCardViewer;
private final DuelDialogPanel dialogPanel;
DuelLayeredPane() {
this.duelPanel = new DuelPanel();
backgroundLabel = new ZoneBackgroundLabel();
duelPanel.setBackgroundLabel(backgroundLabel);
animationPanel = new AnimationPanel();
dialogPanel = new DuelDialogPanel();
imageCardViewer = new AnnotatedCardPanel();
updateLayout();
this.addComponentListener(new ComponentAdapter() {
@Override
public void componentResized(final ComponentEvent event) {
resizeComponents();
}
});
setVisible(false);
}
private void updateLayout() {
removeAll();
// game board layers from bottom to top.
add(backgroundLabel, new Integer(0)); // background image.
add(duelPanel, new Integer(1)); // sidebar and battlefield.
add(animationPanel, new Integer(2)); // animations.
add(imageCardViewer, new Integer(3)); // card popup.
add(dialogPanel, new Integer(4)); // dialogs.
revalidate();
}
private void resizeComponents() {
final Dimension size = getSize();
for (Component component : getComponents()) {
component.setSize(size);
}
}
DuelPanel getDuelPanel() {
return duelPanel;
}
void updateView() {
// backgroundLabel.setImage(GeneralConfig.getInstance().getTextView() == false);
duelPanel.updateView();
// setVisible(true);
}
@Override
public void requestFocus() {
if (duelPanel != null) {
duelPanel.requestFocus();
}
}
@Override
public boolean requestFocusInWindow() {
return duelPanel.requestFocusInWindow();
}
DuelDialogPanel getDialogPanel() {
return dialogPanel;
}
AnimationPanel getAnimationPanel() {
return animationPanel;
}
AnnotatedCardPanel getCardViewer() {
return imageCardViewer;
}
}