// License: GPL. For details, see LICENSE file. package panels; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.EnumMap; import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.ImageIcon; import javax.swing.JPanel; import javax.swing.JRadioButton; import messages.Messages; import seamarks.SeaMark.Ent; import seamarks.SeaMark.Pat; import smed.SmedAction; public class PanelPat extends JPanel { private SmedAction dlg; private Ent ent; public PanelCol panelCol; private ButtonGroup patButtons = new ButtonGroup(); public JRadioButton noneButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/NoneButton.png"))); public JRadioButton horizButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/HorizontalButton.png"))); public JRadioButton vertButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/VerticalButton.png"))); public JRadioButton diagButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/DiagonalButton.png"))); public JRadioButton squareButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/SquaredButton.png"))); public JRadioButton borderButton = new JRadioButton(new ImageIcon(getClass().getResource("/images/BorderButton.png"))); public EnumMap<Pat, JRadioButton> patterns = new EnumMap<>(Pat.class); private ActionListener alPat = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { for (Pat pat : patterns.keySet()) { JRadioButton button = patterns.get(pat); if (button.isSelected()) { SmedAction.panelMain.mark.setPattern(ent, pat); button.setBorderPainted(true); } else { button.setBorderPainted(false); } } switch (SmedAction.panelMain.mark.getPattern(ent)) { case NOPAT: panelCol.trimStack(1); break; case HSTRP: case VSTRP: case DIAG: break; case SQUARED: panelCol.trimStack(4); break; case BORDER: case CROSS: panelCol.trimStack(2); break; default: break; } } }; public PanelPat(SmedAction dia, Ent entity) { dlg = dia; ent = entity; setLayout(null); panelCol = new PanelCol(dlg, ent); panelCol.setBounds(new Rectangle(0, 0, 72, 160)); add(panelCol); add(getPatButton(noneButton, 76, 0, 27, 27, "NoPat", Pat.NOPAT)); add(getPatButton(horizButton, 76, 26, 27, 27, "HorizPat", Pat.HSTRP)); add(getPatButton(vertButton, 76, 52, 27, 27, "VertPat", Pat.VSTRP)); add(getPatButton(diagButton, 76, 78, 27, 27, "DiagPat", Pat.DIAG)); add(getPatButton(squareButton, 76, 104, 27, 27, "SquarePat", Pat.SQUARED)); add(getPatButton(borderButton, 76, 130, 27, 27, "BorderPat", Pat.BORDER)); } public void syncPanel() { for (Pat pat : patterns.keySet()) { JRadioButton button = patterns.get(pat); if (SmedAction.panelMain.mark.getPattern(ent) == pat) { button.setBorderPainted(true); } else { button.setBorderPainted(false); } } panelCol.syncPanel(); } private JRadioButton getPatButton(JRadioButton button, int x, int y, int w, int h, String tip, Pat pat) { button.setBounds(new Rectangle(x, y, w, h)); button.setBorder(BorderFactory.createLoweredBevelBorder()); button.setToolTipText(Messages.getString(tip)); button.addActionListener(alPat); patButtons.add(button); patterns.put(pat, button); return button; } }