20 package net.sf.gridarta.gui.panel.tools;
22 import java.awt.BorderLayout;
23 import java.awt.CardLayout;
24 import java.awt.Component;
25 import java.awt.Container;
26 import java.awt.FlowLayout;
27 import java.awt.Insets;
28 import java.awt.event.ActionEvent;
29 import java.util.HashMap;
31 import javax.swing.AbstractAction;
32 import javax.swing.AbstractButton;
33 import javax.swing.Action;
34 import javax.swing.ButtonGroup;
35 import javax.swing.JPanel;
36 import javax.swing.JToggleButton;
47 import net.
sf.japi.swing.action.ActionBuilder;
48 import net.
sf.japi.swing.action.ActionBuilderFactory;
49 import org.jetbrains.annotations.NotNull;
50 import org.jetbrains.annotations.Nullable;
68 private static final ActionBuilder
ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder(
"net.sf.gridarta.gui.panel.tools");
104 private final Map<String, Tool<G, A, R>>
tools =
new HashMap<>();
123 public ToolSelector(@NotNull
final String defaultTool, @NotNull
final MapViewSettings mapViewSettings, @NotNull
final SelectedSquareModel<G, A, R> selectedSquareModel, @NotNull
final ObjectChooser<G, A, R> objectChooser, @NotNull
final PickmapSettings pickmapSettings, @Nullable
final GameObjectMatcher floorGameObjectMatcher, @Nullable
final GameObjectMatcher wallGameObjectMatcher, @Nullable
final GameObjectMatcher monsterGameObjectMatcher, @NotNull
final InsertionModeSet<G, A, R> insertionModeSet) {
127 addTool(
new DeletionTool<>(mapViewSettings, objectChooser, pickmapSettings, floorGameObjectMatcher, wallGameObjectMatcher, monsterGameObjectMatcher), defaultTool);
128 addTool(
new InsertionTool<>(selectedSquareModel, objectChooser, pickmapSettings, insertionModeSet, mapViewSettings), defaultTool);
137 add(tool, tool.getId().equals(defaultTool));
144 setLayout(
new BorderLayout());
164 @NotNull
final Action selectionAction =
new SelectionAction(tool);
165 @NotNull
final AbstractButton toggleButton =
new JToggleButton(selectionAction);
170 final Container panel =
new JPanel(
new BorderLayout());
171 panel.add(optionsView, BorderLayout.NORTH);
173 toggleButton.setSelected(selected);
174 tools.put(tool.getId(), tool);
191 @Nullable
final Component optionsView = tool.createOptionsView();
192 return optionsView ==
null ?
new JPanel() : optionsView;
259 public Object
clone() throws CloneNotSupportedException {
260 return super.clone();