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-2015 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 }
MouseOpListener< G, A, R > getSelectedTool()
Returns the tool that is currently selected.
final ToolSelector< G, A, R > mmbSelector
The ToolSelector for mmb.
Graphical User Interface of Gridarta.
Interface for classes that match GameObjects.
This package contains classes related to matching GameObjects, so called GameObjectMatchers.
static final ActionBuilder ACTION_BUILDER
Action Builder.
void add(@NotNull final Tool< G, A, R > tool)
Adds a tool to this tool selector.
static String getString(@NotNull final ActionBuilder actionBuilder, @NotNull final String key, @NotNull final String defaultValue)
Returns the value of a key.
Base package of all Gridarta classes.
Reflects a game object (object on a map).
Definition: GameObject.java:36
static final long serialVersionUID
The serial version UID.
Container for settings that affect the rendering of maps.
GameObjects are the objects based on Archetypes found on maps.
Displays the contents of the currently selected map square.
Base classes for rendering maps.
final ToolSelector< G, A, R > lmbSelector
The ToolSelector for lmb.
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)
Create a ToolPalette.
Utility class for ActionBuilder related functions.
Pane for controlling which mouse to select and configure tools for.
A MouseOpEvent is an event triggered for a MouseOpListener.
static JLabel newLabel(@NotNull final ActionBuilder actionBuilder, @NotNull final String key)
Creates a new JLabel from a resource key.
Common base interface for ObjectChoosers.
The model component of the selected square control.
final ToolSelector< G, A, R > rmbSelector
The ToolSelector for rmb.
MouseOpListener< G, A, R > getTool(final MouseOpEvent< G, A, R > event)
Returns a MouseOpListener depending on the.
Container for settings that affect pickmaps.