Gridarta Editor
ArchetypeChooserControl.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.archetypechooser;
21 
22 import java.awt.Component;
23 import java.util.Collections;
24 import java.util.HashMap;
25 import java.util.Iterator;
26 import java.util.List;
27 import java.util.Map;
36 import net.sf.japi.swing.action.ActionBuilder;
37 import net.sf.japi.swing.action.ActionBuilderFactory;
38 import org.jetbrains.annotations.NotNull;
39 import org.jetbrains.annotations.Nullable;
40 
45 public class ArchetypeChooserControl<G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> implements Iterable<R>, ObjectChooserTab<G, A, R> {
46 
50  @NotNull
51  private static final ActionBuilder ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder("net.sf.gridarta");
52 
56  @NotNull
57  private final Map<R, ArchetypePanel<G, A, R>> archetypes = new HashMap<>();
58 
62  @NotNull
64 
68  @NotNull
70 
78  this.archetypeChooserModel = archetypeChooserModel;
79  this.archetypeChooserView = archetypeChooserView;
80 
82  final ArchetypePanel<G, A, R> archetypePanel = archetypeChooserView.findOrCreatePanel(panel.getName());
83  final ArchetypeChooserFolder<G, A, R> folder = panel.getDefaultFolder();
84  for (final R archetype : folder.getArchetypes()) {
85  archetypes.put(archetype, archetypePanel);
86  }
87  }
88 
89  }
90 
95  public void selectArchetype(@NotNull final R archetype) {
96  final ArchetypePanel<G, A, R> panel = archetypes.get(archetype);
97  if (panel == null) {
98  return;
99  }
100 
102  panel.selectArchetype(archetype);
103  }
104 
109  @NotNull
110  @Override
111  public Iterator<R> iterator() {
112  return Collections.unmodifiableSet(archetypes.keySet()).iterator();
113  }
114 
115  @NotNull
116  @Override
117  public Component getComponent() {
118  return archetypeChooserView;
119  }
120 
121  @Override
122  public void setActive(final boolean active) {
123  // ignore
124  }
125 
126  @Override
127  public boolean isMatching(@NotNull final G gameObject) {
128  return getSelection() == gameObject.getArchetype();
129  }
130 
131  @Nullable
132  @Override
133  public R getSelection() {
135  return selectedPanel == null ? null : selectedPanel.getSelectedFolder().getSelectedArchetype();
136  }
137 
138  @NotNull
139  @Override
140  public List<R> getSelections() {
141  final R archObject = getSelection();
142  return archObject == null ? Collections.emptyList() : Collections.singletonList(archObject);
143  }
144 
145  @NotNull
146  @Override
147  public String getTitle() {
148  return ActionBuilderUtils.getString(ACTION_BUILDER, "objectChooser.archetypesTabTitle");
149  }
150 
151 }
net.sf.gridarta.gui.panel
net.sf.gridarta.gui.panel.archetypechooser.ArchetypeChooserControl.archetypeChooserModel
final ArchetypeChooserModel< G, A, R > archetypeChooserModel
Definition: ArchetypeChooserControl.java:63
net.sf.gridarta.model.archetypechooser.ArchetypeChooserModel
Definition: ArchetypeChooserModel.java:38
net.sf.gridarta
net.sf.gridarta.gui.panel.archetypechooser.ArchetypeChooserControl.isMatching
boolean isMatching(@NotNull final G gameObject)
Definition: ArchetypeChooserControl.java:127
net.sf.gridarta.gui.panel.objectchooser.ObjectChooserTab
Definition: ObjectChooserTab.java:35
net.sf.gridarta.gui.panel.archetypechooser.ArchetypeChooserView.findOrCreatePanel
ArchetypePanel< G, A, R > findOrCreatePanel(@NotNull final String panelName)
Definition: ArchetypeChooserView.java:260
net.sf.gridarta.model.archetypechooser
Definition: ArchetypeChooserFolder.java:20
net.sf
net.sf.gridarta.gui.panel.archetypechooser.ArchetypeChooserControl.archetypeChooserView
final ArchetypeChooserView< G, A, R > archetypeChooserView
Definition: ArchetypeChooserControl.java:69
net.sf.gridarta.model.archetype
Definition: AbstractArchetype.java:20
net.sf.gridarta.model.gameobject.GameObject
Definition: GameObject.java:36
net.sf.gridarta.model.archetypechooser.ArchetypeChooserModel.getPanels
Iterable< ArchetypeChooserPanel< G, A, R > > getPanels()
Definition: ArchetypeChooserModel.java:121
net.sf.gridarta.gui
net.sf.gridarta.model.archetypechooser.ArchetypeChooserFolder
Definition: ArchetypeChooserFolder.java:40
net.sf.gridarta.model.archetypechooser.ArchetypeChooserModel.getSelectedPanel
ArchetypeChooserPanel< G, A, R > getSelectedPanel()
Definition: ArchetypeChooserModel.java:162
net.sf.gridarta.gui.panel.archetypechooser.ArchetypeChooserControl.iterator
Iterator< R > iterator()
Definition: ArchetypeChooserControl.java:111
net.sf.gridarta.gui.panel.objectchooser
Definition: DefaultObjectChooser.java:20
net.sf.gridarta.model.gameobject
Definition: AbstractGameObject.java:20
net
net.sf.gridarta.gui.panel.archetypechooser.ArchetypeChooserControl.archetypes
final Map< R, ArchetypePanel< G, A, R > > archetypes
Definition: ArchetypeChooserControl.java:57
net.sf.gridarta.model.maparchobject.MapArchObject
Definition: MapArchObject.java:40
net.sf.gridarta.gui.panel.archetypechooser.ArchetypeChooserControl.getSelection
R getSelection()
Definition: ArchetypeChooserControl.java:133
net.sf.gridarta.model.archetypechooser.ArchetypeChooserPanel
Definition: ArchetypeChooserPanel.java:40
net.sf.gridarta.gui.panel.archetypechooser.ArchetypeChooserControl.setActive
void setActive(final boolean active)
Definition: ArchetypeChooserControl.java:122
net.sf.gridarta.utils.ActionBuilderUtils.getString
static String getString(@NotNull final ActionBuilder actionBuilder, @NotNull final String key, @NotNull final String defaultValue)
Definition: ActionBuilderUtils.java:71
net.sf.gridarta.gui.panel.archetypechooser.ArchetypeChooserView.setSelectedPanel
final void setSelectedPanel(@NotNull final ArchetypePanel< G, A, R > selectedPanel)
Definition: ArchetypeChooserView.java:310
net.sf.gridarta.gui.panel.archetypechooser.ArchetypeChooserControl.selectArchetype
void selectArchetype(@NotNull final R archetype)
Definition: ArchetypeChooserControl.java:95
net.sf.gridarta.gui.panel.archetypechooser.ArchetypePanel.selectArchetype
void selectArchetype(@NotNull final R archetype)
Definition: ArchetypePanel.java:339
net.sf.gridarta.gui.panel.archetypechooser.ArchetypeChooserControl
Definition: ArchetypeChooserControl.java:45
net.sf.gridarta.model
net.sf.gridarta.model.archetype.Archetype
Definition: Archetype.java:41
net.sf.gridarta.gui.panel.archetypechooser.ArchetypeChooserControl.getSelections
List< R > getSelections()
Definition: ArchetypeChooserControl.java:140
net.sf.gridarta.model.archetypechooser.ArchetypeChooserFolder.getSelectedArchetype
R getSelectedArchetype()
Definition: ArchetypeChooserFolder.java:127
net.sf.gridarta.utils.ActionBuilderUtils
Definition: ActionBuilderUtils.java:31
net.sf.gridarta.model.maparchobject
Definition: AbstractMapArchObject.java:20
net.sf.gridarta.gui.panel.archetypechooser.ArchetypeChooserControl.ArchetypeChooserControl
ArchetypeChooserControl(@NotNull final ArchetypeChooserModel< G, A, R > archetypeChooserModel, @NotNull final ArchetypeChooserView< G, A, R > archetypeChooserView)
Definition: ArchetypeChooserControl.java:77
net.sf.gridarta.gui.panel.archetypechooser.ArchetypePanel
Definition: ArchetypePanel.java:60
net.sf.gridarta.utils
Definition: ActionBuilderUtils.java:20
net.sf.gridarta.gui.panel.archetypechooser.ArchetypeChooserControl.getComponent
Component getComponent()
Definition: ArchetypeChooserControl.java:117
net.sf.gridarta.model.archetypechooser.ArchetypeChooserPanel.getSelectedFolder
ArchetypeChooserFolder< G, A, R > getSelectedFolder()
Definition: ArchetypeChooserPanel.java:189
net.sf.gridarta.gui.panel.archetypechooser.ArchetypeChooserControl.getTitle
String getTitle()
Definition: ArchetypeChooserControl.java:147
net.sf.gridarta.model.archetypechooser.ArchetypeChooserFolder.getArchetypes
Collection< R > getArchetypes()
Definition: ArchetypeChooserFolder.java:110
net.sf.gridarta.gui.panel.archetypechooser.ArchetypeChooserControl.ACTION_BUILDER
static final ActionBuilder ACTION_BUILDER
Definition: ArchetypeChooserControl.java:51
net.sf.gridarta.gui.panel.archetypechooser.ArchetypeChooserView< G, A, R >