package de.ph87.kindermalen; import de.ph87.kindermalen.toolbox.ToolboxPanel; import de.ph87.kindermalen.toolbox.tool.Tool; import de.ph87.kindermalen.toolbox.tool.ToolPanel; import de.ph87.kindermalen.toolbox.tool.stamp.StampPanel; import de.ph87.kindermalen.toolbox.tool.stamp.StampTool; import javax.swing.*; import java.awt.*; import static de.ph87.kindermalen.CONFIG.SIDEBAR_WIDTH; import static de.ph87.kindermalen.util.MyGridBagConstraints.GBC; import static java.awt.GridBagConstraints.HORIZONTAL; import static java.awt.GridBagConstraints.NONE; public class Sidebar extends MyComponent { private ToolPanel toolPanel = null; public Sidebar(final Environment environment) { setPreferredSize(new Dimension(SIDEBAR_WIDTH, 0)); setLayout(new GridBagLayout()); int row = 0; addNewDrawingButton(environment, row++); addToolboxPanel(environment, row++); setBackground(Color.yellow); } private void addNewDrawingButton(final Environment environment, int row) { final JButton button = new JButton("Neues Bild"); button.setPreferredSize(new Dimension(SIDEBAR_WIDTH, 40)); add(button, GBC(0, row, 1, 0, HORIZONTAL)); ComponentListener.on(button).mouseClicked(environment::newDrawing); } private void addToolboxPanel(final Environment environment, int row) { final ToolboxPanel panel = new ToolboxPanel(environment.getToolbox()); add(panel, GBC(0, row, 1, 0, HORIZONTAL)); subscribe(environment.getToolbox().getOnSelect(), this::onToolSelected); } private void onToolSelected(final Tool tool) { if (toolPanel != null) { toolPanel.destruct(); remove(toolPanel); toolPanel = null; } if (tool instanceof StampTool) { toolPanel = new StampPanel((StampTool) tool); } if (toolPanel != null) { add(toolPanel, GBC(0, 2, 0, 0, NONE)); toolPanel.setVisible(true); } revalidate(); repaint(); } }