66 lines
1.9 KiB
Java
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();
|
|
}
|
|
|
|
}
|