package com.drawbridge.vl; import java.awt.Dimension; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JComponent; import com.drawbridge.utils.GraphicUtils; import com.drawbridge.vl.blocks.BlockOperator; import com.drawbridge.vl.blocks.BlockOperator.SupportedOperationType; public class PopupSelectorOperator extends Popup { /** * */ private static final long serialVersionUID = 265488567065362276L; JButton mButtonPlu = new JButton(GraphicUtils.loadIconFromResource("/Assets/operator-plus-trans.png")); JButton mButtonMin = new JButton(GraphicUtils.loadIconFromResource("/Assets/operator-minus-trans.png")); JButton mButtonDiv = new JButton(GraphicUtils.loadIconFromResource("/Assets/operator-div-trans.png")); JButton mButtonMul = new JButton(GraphicUtils.loadIconFromResource("/Assets/operator-mult-trans.png")); JButton mButtonMod = new JButton(GraphicUtils.loadIconFromResource("/Assets/operator-mod-trans.png")); BoxLayout mBoxLayout; PopupSelectorListener mParent; public PopupSelectorOperator(PopupSelectorListener parent){ super(true, 0.6f); mParent = parent; initUI(); } public void initUI() { BoxLayout bl = new BoxLayout(this, BoxLayout.Y_AXIS); this.setLayout(bl); add(new PopupSelectorOverlay()); } public interface PopupSelectorListener{ public void onPopupSelectorChange(BlockOperator.SupportedOperationType opType); } class PopupSelectorOverlay extends JComponent{ /** * */ private static final long serialVersionUID = -5216308426633193027L; public PopupSelectorOverlay(){ mBoxLayout = new BoxLayout(this, BoxLayout.X_AXIS); this.setSize(getPreferredSize()); setLayout(mBoxLayout); setOpaque(false); add(mButtonPlu); mButtonPlu.addMouseListener(ma); add(Box.createHorizontalGlue()); add(mButtonMin); mButtonMin.addMouseListener(ma); add(Box.createHorizontalGlue()); add(mButtonDiv); mButtonDiv.addMouseListener(ma); add(Box.createHorizontalGlue()); add(mButtonMul); mButtonMul.addMouseListener(ma); add(Box.createHorizontalGlue()); add(mButtonMod); mButtonMod.addMouseListener(ma); } MouseAdapter ma = new MouseAdapter(){ @Override public void mousePressed(MouseEvent me){ SupportedOperationType op = null; if(me.getSource().equals(mButtonPlu)) op = SupportedOperationType.ADDITION; else if(me.getSource().equals(mButtonMin)) op = SupportedOperationType.SUBTRACTION; else if(me.getSource().equals(mButtonDiv)) op = SupportedOperationType.DIVISION; else if(me.getSource().equals(mButtonMod)) op = SupportedOperationType.MODULUS; else if(me.getSource().equals(mButtonMul)) op = SupportedOperationType.MULTIPLICATION; mParent.onPopupSelectorChange(op); } }; @Override public Dimension getMinimumSize() { return new Dimension(230, 30); } @Override public Dimension getMaximumSize() { return new Dimension(230, 30); } @Override public Dimension getPreferredSize() { return new Dimension(230, 30); } } }