KinderMalen/src/main/java/de/ph87/kindermalen/Sidebar.java
2023-02-28 10:19:46 +01:00

66 lines
1.9 KiB
Java

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();
}
}