Gridarta Editor
DisplayNameCellRenderer.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 javax.swing.JList;
30 import org.jetbrains.annotations.NotNull;
31 
37 public class DisplayNameCellRenderer<G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> extends DisplayMode<G, A, R> {
38 
42  private static final long serialVersionUID = 1L;
43 
47  @NotNull
49 
55  public DisplayNameCellRenderer(@NotNull final FaceObjectProviders faceObjectProviders) {
56  this.faceObjectProviders = faceObjectProviders;
57  }
58 
59  @Override
60  public Component getListCellRendererComponent(final JList<?> list, final Object value, final int index, final boolean isSelected, final boolean cellHasFocus) {
61  super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
62 
63  final BaseObject<?, ?, ?, ?> archetype = (BaseObject<?, ?, ?, ?>) value;
64  setText(archetype.getBestName());
65  setIcon(faceObjectProviders.getFace(archetype));
66  return this;
67  }
68 
69  @Override
70  public int compare(final Archetype<G, A, R> o1, final Archetype<G, A, R> o2) {
71  final int cmp = o1.getBestName().compareToIgnoreCase(o2.getBestName());
72  if (cmp != 0) {
73  return cmp;
74  }
75 
76  return o1.getArchetypeName().compareToIgnoreCase(o2.getArchetypeName());
77  }
78 
79  @Override
80  public int getLayoutOrientation() {
81  return JList.VERTICAL;
82  }
83 
84 }
String getArchetypeName()
Returns the name of this archetype.
Base package of all Gridarta classes.
Reflects a game object (object on a map).
Definition: GameObject.java:36
GameObjects are the objects based on Archetypes found on maps.
final FaceObjectProviders faceObjectProviders
The FaceObjectProviders for looking up faces.
String getBestName()
Returns the name which is best appropriate to describe this GameObject.
Abstract base class for classes implementing display modes of the archetype chooser.
Component getListCellRendererComponent(final JList<?> list, final Object value, final int index, final boolean isSelected, final boolean cellHasFocus)
Provider for faces of GameObjects and Archetypes.
The face is the appearance of an object.
int compare(final Archetype< G, A, R > o1, final Archetype< G, A, R > o2)
DisplayNameCellRenderer(@NotNull final FaceObjectProviders faceObjectProviders)
Creates a new instance.
A DisplayMode showing archetypes as images and in-game game object name.