Gridarta Editor
ToolPalette.java
Go to the documentation of this file.
1 /*
2  * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games.
3  * Copyright (C) 2000-2023 The Gridarta Developers.
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18  */
19 
20 package net.sf.gridarta.gui.panel.tools;
21 
22 import java.awt.BorderLayout;
23 import java.awt.Container;
24 import java.awt.event.InputEvent;
25 import java.awt.event.MouseEvent;
26 import javax.swing.JPanel;
27 import javax.swing.JTabbedPane;
40 import net.sf.japi.swing.action.ActionBuilder;
41 import net.sf.japi.swing.action.ActionBuilderFactory;
42 import org.jetbrains.annotations.NotNull;
43 import org.jetbrains.annotations.Nullable;
44 
50 public class ToolPalette<G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> extends JPanel {
51 
55  private static final long serialVersionUID = 1L;
56 
60  @NotNull
61  private static final ActionBuilder ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder("net.sf.gridarta.gui.panel.tools");
62 
66  @NotNull
68 
72  @NotNull
74 
78  @NotNull
80 
92  public ToolPalette(@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) {
93  super(new BorderLayout());
94  lmbSelector = new ToolSelector<>("selection", mapViewSettings, selectedSquareModel, objectChooser, pickmapSettings, floorGameObjectMatcher, wallGameObjectMatcher, monsterGameObjectMatcher, insertionModeSet);
95  mmbSelector = new ToolSelector<>("deletion", mapViewSettings, selectedSquareModel, objectChooser, pickmapSettings, floorGameObjectMatcher, wallGameObjectMatcher, monsterGameObjectMatcher, insertionModeSet);
96  rmbSelector = new ToolSelector<>("insertion", mapViewSettings, selectedSquareModel, objectChooser, pickmapSettings, floorGameObjectMatcher, wallGameObjectMatcher, monsterGameObjectMatcher, insertionModeSet);
97  add(ActionBuilderUtils.newLabel(ACTION_BUILDER, "mouse"), BorderLayout.NORTH);
98  final Container mouseTabs = new JTabbedPane();
99  mouseTabs.add(ActionBuilderUtils.getString(ACTION_BUILDER, "left"), lmbSelector);
100  mouseTabs.add(ActionBuilderUtils.getString(ACTION_BUILDER, "middle"), mmbSelector);
101  mouseTabs.add(ActionBuilderUtils.getString(ACTION_BUILDER, "right"), rmbSelector);
102  add(mouseTabs);
103  }
104 
112  @Nullable
114  final int button = event.getButton();
115  final ToolSelector<G, A, R> toolSelector;
116  switch (button) {
117  case MouseEvent.BUTTON1:
118  toolSelector = lmbSelector;
119  break;
120  case MouseEvent.BUTTON2:
121  toolSelector = mmbSelector;
122  break;
123  case MouseEvent.BUTTON3:
124  toolSelector = rmbSelector;
125  break;
126  default:
127  final int mask = event.getModifiers();
128  if ((mask & InputEvent.BUTTON1_DOWN_MASK) == InputEvent.BUTTON1_DOWN_MASK) {
129  toolSelector = lmbSelector;
130  } else if ((mask & InputEvent.BUTTON2_DOWN_MASK) == InputEvent.BUTTON2_DOWN_MASK) {
131  toolSelector = mmbSelector;
132  } else if ((mask & InputEvent.BUTTON3_DOWN_MASK) == InputEvent.BUTTON3_DOWN_MASK) {
133  toolSelector = rmbSelector;
134  } else {
135  return null;
136  }
137  break;
138  }
139  return toolSelector.getSelectedTool();
140  }
141 
142 }
net.sf.gridarta.gui.map.event.MouseOpEvent
A MouseOpEvent is an event triggered for a MouseOpListener.
Definition: MouseOpEvent.java:37
net.sf.gridarta.gui.panel
net.sf.gridarta.model.mapmodel.InsertionModeSet
A set of InsertionModes.
Definition: InsertionModeSet.java:33
net.sf.gridarta.gui.panel.tools.ToolPalette.ACTION_BUILDER
static final ActionBuilder ACTION_BUILDER
Action Builder.
Definition: ToolPalette.java:61
net.sf.gridarta
Base package of all Gridarta classes.
net.sf.gridarta.gui.map.event.MouseOpListener
Interface for Mouse Operations.
Definition: MouseOpListener.java:31
net.sf.gridarta.model.mapviewsettings
Definition: AbstractMapViewSettings.java:20
net.sf
net.sf.gridarta.model.mapmodel
Definition: AboveFloorInsertionMode.java:20
net.sf.gridarta.model.match.GameObjectMatcher
Interface for classes that match GameObjects.
Definition: GameObjectMatcher.java:30
net.sf.gridarta.model.archetype
Definition: AbstractArchetype.java:20
net.sf.gridarta.model.gameobject.GameObject
Reflects a game object (object on a map).
Definition: GameObject.java:36
net.sf.gridarta.model.mapviewsettings.MapViewSettings
Container for settings that affect the rendering of maps.
Definition: MapViewSettings.java:30
net.sf.gridarta.utils.ActionBuilderUtils.newLabel
static JLabel newLabel(@NotNull final ActionBuilder actionBuilder, @NotNull final String key)
Creates a new JLabel from a resource key.
Definition: ActionBuilderUtils.java:117
net.sf.gridarta.gui.panel.tools.ToolPalette.ToolPalette
ToolPalette(@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)
Creates a new instance.
Definition: ToolPalette.java:92
net.sf.gridarta.gui.panel.tools.ToolSelector.getSelectedTool
MouseOpListener< G, A, R > getSelectedTool()
Returns the tool that is currently selected.
Definition: ToolSelector.java:224
net.sf.gridarta.gui
Graphical User Interface of Gridarta.
net.sf.gridarta.gui.panel.tools.ToolPalette.getTool
MouseOpListener< G, A, R > getTool(final MouseOpEvent< G, A, R > event)
Returns a MouseOpListener depending on the.
Definition: ToolPalette.java:113
net.sf.gridarta.gui.panel.objectchooser
Definition: DefaultObjectChooser.java:20
net.sf.gridarta.model.gameobject
GameObjects are the objects based on Archetypes found on maps.
Definition: AbstractGameObject.java:20
net.sf.gridarta.gui.panel.tools.ToolPalette.mmbSelector
final ToolSelector< G, A, R > mmbSelector
The ToolSelector for mmb.
Definition: ToolPalette.java:73
net
net.sf.gridarta.model.match
Classes related to matching {GameObjects}, so called { net.sf.gridarta.model.match....
Definition: AndGameObjectMatcher.java:20
net.sf.gridarta.model.maparchobject.MapArchObject
Interface for MapArchObjects.
Definition: MapArchObject.java:40
net.sf.gridarta.gui.panel.selectedsquare.SelectedSquareModel
The model component of the selected square control.
Definition: SelectedSquareModel.java:35
net.sf.gridarta.gui.map.event
Definition: MouseOpEvent.java:20
net.sf.gridarta.utils.ActionBuilderUtils.getString
static String getString(@NotNull final ActionBuilder actionBuilder, @NotNull final String key, @NotNull final String defaultValue)
Returns the value of a key.
Definition: ActionBuilderUtils.java:71
net.sf.gridarta.gui.panel.objectchooser.ObjectChooser
Common base interface for ObjectChoosers.
Definition: ObjectChooser.java:34
net.sf.gridarta.gui.panel.tools.ToolPalette
Pane for controlling which mouse to select and configure tools for.
Definition: ToolPalette.java:50
net.sf.gridarta.gui.panel.tools.ToolSelector< G, A, R >
net.sf.gridarta.gui.panel.tools.ToolPalette.rmbSelector
final ToolSelector< G, A, R > rmbSelector
The ToolSelector for rmb.
Definition: ToolPalette.java:79
net.sf.gridarta.model
net.sf.gridarta.model.archetype.Archetype
Reflects an Archetype.
Definition: Archetype.java:41
net.sf.gridarta.gui.panel.tools.ToolPalette.lmbSelector
final ToolSelector< G, A, R > lmbSelector
The ToolSelector for lmb.
Definition: ToolPalette.java:67
net.sf.gridarta.gui.map
Base classes for rendering maps.
Definition: AbstractPerMapDialogManager.java:20
net.sf.gridarta.model.pickmapsettings
Definition: AbstractPickmapSettings.java:20
net.sf.gridarta.utils.ActionBuilderUtils
Utility class for ActionBuilder related functions.
Definition: ActionBuilderUtils.java:31
net.sf.gridarta.model.maparchobject
Definition: AbstractMapArchObject.java:20
net.sf.gridarta.gui.panel.tools.ToolPalette.serialVersionUID
static final long serialVersionUID
The serial version UID.
Definition: ToolPalette.java:55
net.sf.gridarta.gui.panel.selectedsquare
Displays the contents of the currently selected map square.
Definition: CellRenderer.java:20
net.sf.gridarta.utils
Definition: ActionBuilderUtils.java:20
net.sf.gridarta.model.pickmapsettings.PickmapSettings
Container for settings that affect pickmaps.
Definition: PickmapSettings.java:28