/* * ####################################################### * * Copyright (c) 2013, A. Weinberger. All rights reserved. * -------------------------------------------------------- */ package ale.view.gui.editor.fields; import java.awt.Color; import java.awt.Dimension; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.JRadioButton; import ale.model.skin.SkinConstants.Animation; import ale.view.gui.GUIConstants; import ale.view.gui.util.VerticalLayout; public abstract class AnimationField extends Field { private static final int FIELDHEIGHT = 160; public AnimationField(Color bg, Animation init, String fieldTitle) { if (fieldTitle == null) { fieldTitle = ""; } if (init == null) { init = Animation.ORIGINAL; } if (bg == null) { bg = Color.WHITE; } create(bg, init, fieldTitle); } public abstract void originalAnimChosen(); public abstract void horizontalSlowAnimChosen(); public abstract void horizontalFastAnimChosen(); public abstract void verticalSlowAnimChosen(); public abstract void verticalFastAnimChosen(); private void create(Color bg, Animation init, String fieldTitle) { setPreferredSize(new Dimension(GUIConstants.DEFAULT_FIELD_WIDTH, FIELDHEIGHT)); setBackground(bg); setLayout(new VerticalLayout(5, VerticalLayout.CENTER)); setBorder(BorderFactory.createTitledBorder(fieldTitle)); JRadioButton noAnimation = new JRadioButton(Field.strAnimationOriginal); JRadioButton animHSlow = new JRadioButton(Field.strAnimationHorizontal + " & " + Field.strAnimationSlow); JRadioButton animVSlow = new JRadioButton(Field.strAnimationVertical + " & " + Field.strAnimationSlow); JRadioButton animHFast = new JRadioButton(Field.strAnimationHorizontal + " & " + Field.strAnimationFast); JRadioButton animVFast = new JRadioButton(Field.strAnimationVertical + " & " + Field.strAnimationFast); noAnimation.setBackground(bg); animHSlow.setBackground(bg); animVSlow.setBackground(bg); animHFast.setBackground(bg); animVFast.setBackground(bg); noAnimation.addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { originalAnimChosen(); } }); animHSlow.addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { horizontalSlowAnimChosen(); } }); animVSlow.addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { verticalSlowAnimChosen(); } }); animHFast.addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { horizontalFastAnimChosen(); } }); animVFast.addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent e) { verticalFastAnimChosen(); } }); ButtonGroup btnGroup = new ButtonGroup(); btnGroup.add(noAnimation); btnGroup.add(animHSlow); btnGroup.add(animVSlow); btnGroup.add(animHFast); btnGroup.add(animVFast); add(noAnimation); add(animHSlow); add(animVSlow); add(animHFast); add(animVFast); switch (init) { case ORIGINAL: noAnimation.setSelected(true); break; case RECTANGLE_H_FAST: animHFast.setSelected(true); break; case RECTANGLE_H_SLOW: animHSlow.setSelected(true); break; case RECTANGLE_V_FAST: animVFast.setSelected(true); break; case RECTANGLE_V_SLOW: animVSlow.setSelected(true); break; default: noAnimation.setSelected(true); break; } } }