20 package net.sf.gridarta.gui.panel.archetypechooser;
22 import java.awt.BorderLayout;
23 import java.util.prefs.Preferences;
24 import javax.swing.AbstractButton;
25 import javax.swing.Action;
26 import javax.swing.BorderFactory;
27 import javax.swing.ButtonGroup;
28 import javax.swing.JPanel;
29 import javax.swing.JTabbedPane;
30 import javax.swing.JToggleButton;
31 import javax.swing.SwingConstants;
32 import javax.swing.event.ChangeEvent;
33 import javax.swing.event.ChangeListener;
46 import net.
sf.japi.swing.action.ActionMethod;
47 import org.jetbrains.annotations.NotNull;
48 import org.jetbrains.annotations.Nullable;
106 private final JTabbedPane
tabDesktop =
new JTabbedPane(SwingConstants.TOP);
136 public void stateChanged(
final ChangeEvent e) {
137 final JTabbedPane tabbedPane = (JTabbedPane) e.getSource();
138 final int index = tabbedPane.getSelectedIndex();
163 public ArchetypeChooserView(
final boolean createDirectionPane, @NotNull
final ArchetypeChooserModel<G, A, R> archetypeChooserModel, @NotNull
final FaceObjectProviders faceObjectProviders, @NotNull
final Action displayGameObjectNamesAction, @NotNull
final Action displayArchetypeNamesAction, @NotNull
final Action displayIconsOnlyAction, @NotNull
final DisplayMode<G, A, R> displayModeGameObjectNames, @NotNull
final DisplayMode<G, A, R> displayModeArchetypeNames, @NotNull
final DisplayMode<G, A, R> displayModeIconsOnly) {
164 super(
new BorderLayout());
181 public void selectedArchetypeChanged(@Nullable
final R selectedArchetype) {
185 public void directionChanged(@Nullable
final Integer direction) {
190 if (displayMode == displayModeGameObjectNames) {
191 PREFERENCES.putInt(DISPLAY_MODE_KEY, 0);
192 }
else if (displayMode == displayModeArchetypeNames) {
193 PREFERENCES.putInt(DISPLAY_MODE_KEY, 1);
194 }
else if (displayMode == displayModeIconsOnly) {
195 PREFERENCES.putInt(DISPLAY_MODE_KEY, 2);
204 public void facesReloaded() {
206 if (archetypeChooserPanel != null) {
208 if (archetypePanel != null) {
209 archetypePanel.repaint();
215 faceObjectProviders.addFaceObjectProvidersListener(faceObjectProvidersListener);
217 buttonDisplayGameObjectNames =
new JToggleButton(displayGameObjectNamesAction);
218 buttonDisplayArchetypeNames =
new JToggleButton(displayArchetypeNamesAction);
219 buttonDisplayIconsOnly =
new JToggleButton(displayIconsOnlyAction);
220 final ButtonGroup buttonGroup =
new ButtonGroup();
221 buttonGroup.add(buttonDisplayGameObjectNames);
222 buttonGroup.add(buttonDisplayArchetypeNames);
223 buttonGroup.add(buttonDisplayIconsOnly);
224 final int preferencesDisplayMode = PREFERENCES.getInt(DISPLAY_MODE_KEY, 0);
225 switch (preferencesDisplayMode) {
228 archetypeChooserModel.setDisplayMode(displayModeGameObjectNames);
232 archetypeChooserModel.setDisplayMode(displayModeArchetypeNames);
236 archetypeChooserModel.setDisplayMode(displayModeIconsOnly);
241 if (createDirectionPane) {
242 add(
new DirectionPane<>(archetypeChooserModel,
true), BorderLayout.SOUTH);
245 if (selectedPanel != null) {
247 if (archetypePanel != null) {
251 tabDesktop.addChangeListener(changeListener);
262 if (existingPanel != null) {
263 return existingPanel;
271 for (i = 0; i < tabDesktop.getTabCount() && panelName.compareToIgnoreCase(tabDesktop.getTitleAt(i)) > 0; i++) {
273 tabDesktop.insertTab(panelName, null, newPanel, null, i);
285 for (
int i = 0; i < tabDesktop.getTabCount(); i++) {
286 if (panelName.equals(tabDesktop.getTitleAt(i))) {
303 return archetypePanel;
311 final int selectedIndex = tabDesktop.indexOfComponent(selectedPanel);
312 if (selectedIndex == -1 || selectedIndex == tabDesktop.getSelectedIndex()) {
317 tabDesktop.setSelectedIndex(selectedIndex);
341 if (displayMode == displayModeGameObjectNames) {
342 buttonDisplayGameObjectNames.setSelected(
true);
343 }
else if (displayMode == displayModeArchetypeNames) {
344 buttonDisplayArchetypeNames.setSelected(
true);
345 }
else if (displayMode == displayModeIconsOnly) {
346 buttonDisplayIconsOnly.setSelected(
true);
356 archetypeChooserModel.
setSelectedPanel(archetypePanel.getArchetypeChooserPanel());
ArchetypeChooserPanel< G, A, R > getPanel(@NotNull final String panelName)
Returns an ArchetypeChooserPanel by panel name.
final ArchetypeChooserModel< G, A, R > archetypeChooserModel
The archetype chooser model.
A named panel within the ArchetypeChooserModel.
final DisplayMode< G, A, R > displayModeGameObjectNames
The list cell renderer displaying object names.
final ChangeListener changeListener
The change listener attached to tabDesktop.
final JTabbedPane tabDesktop
The tab panel containing the archetype lists.
A named folder within the ArchetypeChooserModel.
static final Preferences PREFERENCES
Preferences.
void displayIconsOnly()
Sets whether icons are shown.
String getName()
Returns the panel name.
ArchetypePanel< G, A, R > getArchetypePanel(final int index)
Returns an ArchetypePanel by tab index.
void setSelectedPanelInt(@NotNull final ArchetypePanel< G, A, R > archetypePanel)
Sets the selected ArchetypePanel in archetypeChooserModel.
Class with constants used in Gridarta and derivates.
static final long serialVersionUID
The serial version UID.
A panel showing a set of archetypes.
ArchetypePanel< G, A, R > findPanel(@NotNull final String panelName)
Returns an ArchetypePanel by name.
void setDisplayMode(@NotNull final DisplayMode< G, A, R > displayMode)
Updates the display mode.
Base package of all Gridarta classes.
static final String DISPLAY_MODE_KEY
The key for saving the display mode selection.
Reflects a game object (object on a map).
GameObjects are the objects based on Archetypes found on maps.
Interface used as preferences location.
The view of the archetype chooser.
void updateActions()
Update the actions' state.
final DisplayMode< G, A, R > displayModeIconsOnly
The list cell renderer displaying archetype icons.
void displayArchetypeNames()
Sets whether archetype names are shown.
final AbstractButton buttonDisplayArchetypeNames
The button for "display archetype names".
A GUI component for selecting a direction.
static final int SPACE_PICKMAP_ARCHETYPE_TOP
The height of rigid area between the two tab-panes on the pickmap- and archetype-panel.
Interface for listeners interested in ArchetypeChooserModel related events.
Abstract base class for classes implementing display modes of the archetype chooser.
ArchetypeChooserView(final boolean createDirectionPane, @NotNull final ArchetypeChooserModel< G, A, R > archetypeChooserModel, @NotNull final FaceObjectProviders faceObjectProviders, @NotNull final Action displayGameObjectNamesAction, @NotNull final Action displayArchetypeNamesAction, @NotNull final Action displayIconsOnlyAction, @NotNull final DisplayMode< G, A, R > displayModeGameObjectNames, @NotNull final DisplayMode< G, A, R > displayModeArchetypeNames, @NotNull final DisplayMode< G, A, R > displayModeIconsOnly)
Creates a new instance.
Interface for listeners interested in FaceObjectProviders related events.
Provider for faces of GameObjects and Archetypes.
The face is the appearance of an object.
The view of the archetype chooser.
DisplayMode< G, A, R > getDisplayMode()
Returns the current display mode.
void setSelectedPanel(@NotNull final ArchetypeChooserPanel< G, A, R > selectedPanel)
Sets the selected ArchetypeChooserPanel.
final void setSelectedPanel(@NotNull final ArchetypePanel< G, A, R > selectedPanel)
Selects an archetype panel.
ArchetypePanel< G, A, R > findOrCreatePanel(@NotNull final String panelName)
Returns a panel by name.
final AbstractButton buttonDisplayGameObjectNames
The button for "display game object names".
Interface for MapArchObjects.
final AbstractButton buttonDisplayIconsOnly
The button for "display icons only".
final DisplayMode< G, A, R > displayModeArchetypeNames
The list cell renderer displaying archetype names.