Crossfire JXClient, Trunk
GUICharacterList.java
Go to the documentation of this file.
1 /*
2  * This file is part of JXClient, the Fullscreen Java Crossfire Client.
3  *
4  * JXClient is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * JXClient is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with JXClient; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17  *
18  * Copyright (C) 2005-2008 Yann Chachkoff
19  * Copyright (C) 2006-2017,2019-2023 Andreas Kirschbaum
20  * Copyright (C) 2010-2012,2014-2018,2020-2023 Nicolas Weeger
21  */
22 
23 package com.realtime.crossfire.jxclient.gui.list;
24 
33 import java.awt.Font;
34 import org.jetbrains.annotations.NotNull;
35 import org.jetbrains.annotations.Nullable;
36 
41 public class GUICharacterList extends GUIList<GUICharacter> {
42 
46  private static final long serialVersionUID = 1;
47 
51  @NotNull
53 
57  @NotNull
59 
63  @NotNull
64  private final FacesManager facesManager;
65 
69  @NotNull
70  private final GuiFactory guiFactory;
71 
75  @NotNull
77 
81  @NotNull
82  private final String name;
83 
87  @NotNull
88  private final Font font;
89 
93  private int selectedIndex;
94 
100  @NotNull
102 
115  public GUICharacterList(@NotNull final TooltipManager tooltipManager, @NotNull final FacesManager facesManager, @NotNull final GUIElementListener elementListener, @NotNull final String name, final int cellWidth, final int cellHeight, @NotNull final Font font, @NotNull final CharacterModel characterModel, @NotNull final GuiFactory guiFactory) {
117  this.characterModel = characterModel;
118  this.facesManager = facesManager;
119  this.guiFactory = guiFactory;
120  this.facesManager.addFacesManagerListener(face -> {
121  if (characterModel.displaysFace(face.getFaceNum())) {
122  final Gui parent = guiFactory.getGui(this);
123  if (parent != null) {
124  parent.repaint();
125  }
126  }
127  });
128  this.characterModel.addCharacterListener(this::rebuildList);
129  this.tooltipManager = tooltipManager;
130  this.font = font;
131  this.elementListener = elementListener;
132  this.name = name;
133  }
134 
135  @Override
136  protected void selectionChanged(final int selectedIndex) {
137  this.selectedIndex = selectedIndex;
138  }
139 
140  @Nullable
141  @Override
142  protected String getTooltip(final int index) {
143  return null;
144  }
145 
146  @Override
147  protected void activeChanged() {
148  }
149 
153  private void rebuildList() {
154  synchronized (getTreeLock()) {
155  final int newSize = characterModel.size();
156  final int oldSize = resizeElements(newSize);
157  if (oldSize < newSize) {
158  for (int i = oldSize; i < newSize; i++) {
159  final GUICharacter metaElement = new GUICharacter(tooltipManager, facesManager, elementListener, name+i, 1, 1, font, i, characterModel, guiFactory);
160  addElement(metaElement);
161  characterModel.addCharacterInformationListener(i, characterInformationListener);
162  }
163  } else {
164  for (int i = newSize; i < oldSize; i++) {
165  characterModel.removeCharacterInformationListener(i, characterInformationListener);
166  }
167  }
168  }
169  setChanged();
170  }
171 
176  @Nullable
178  return characterModel.getEntry(selectedIndex);
179  }
180 
185  public void setCharacter(@NotNull final String characterName) {
186  setSelectedIndex(characterModel.getCharacterIndex(characterName));
187  }
188 
189  @Override
190  public void notifyOpen() {
191  }
192 
193 }
com.realtime.crossfire.jxclient.account.CharacterModel.displaysFace
boolean displaysFace(final int faceNum)
Definition: CharacterModel.java:221
com.realtime.crossfire.jxclient.gui.list.GUICharacterList.getTooltip
String getTooltip(final int index)
Definition: GUICharacterList.java:142
com.realtime.crossfire.jxclient
com.realtime.crossfire.jxclient.skin.skin
Definition: DefaultJXCSkin.java:23
com.realtime.crossfire.jxclient.account.CharacterModel.getEntry
CharacterInformation getEntry(final int index)
Definition: CharacterModel.java:80
com.realtime.crossfire.jxclient.gui.list.GUICharacterList.setCharacter
void setCharacter(@NotNull final String characterName)
Definition: GUICharacterList.java:185
com.realtime.crossfire.jxclient.gui.gui.Gui
Definition: Gui.java:49
com.realtime.crossfire.jxclient.gui.list.GUICharacterList.elementListener
final GUIElementListener elementListener
Definition: GUICharacterList.java:76
com.realtime.crossfire.jxclient.gui.list.GUICharacterList.name
final String name
Definition: GUICharacterList.java:82
com.realtime.crossfire.jxclient.skin
com.realtime.crossfire.jxclient.gui.list.GUICharacterList.getCurrentCharacter
CharacterInformation getCurrentCharacter()
Definition: GUICharacterList.java:177
com.realtime.crossfire.jxclient.gui.list.GUICharacterList.GUICharacterList
GUICharacterList(@NotNull final TooltipManager tooltipManager, @NotNull final FacesManager facesManager, @NotNull final GUIElementListener elementListener, @NotNull final String name, final int cellWidth, final int cellHeight, @NotNull final Font font, @NotNull final CharacterModel characterModel, @NotNull final GuiFactory guiFactory)
Definition: GUICharacterList.java:115
com.realtime.crossfire.jxclient.gui.list.CharacterCellRenderer
Definition: CharacterCellRenderer.java:35
com.realtime.crossfire.jxclient.account.CharacterInformationListener
Definition: CharacterInformationListener.java:31
com.realtime.crossfire.jxclient.account.CharacterModel.removeCharacterInformationListener
void removeCharacterInformationListener(final int index, @NotNull final CharacterInformationListener listener)
Definition: CharacterModel.java:193
com.realtime.crossfire.jxclient.skin.skin.GuiFactory
Definition: GuiFactory.java:41
com.realtime.crossfire.jxclient.gui.list.GUICharacterList.tooltipManager
final TooltipManager tooltipManager
Definition: GUICharacterList.java:58
com.realtime.crossfire.jxclient.gui.list.GUICharacter
Definition: GUICharacter.java:47
com.realtime.crossfire.jxclient.account.CharacterInformation
Definition: CharacterInformation.java:32
com.realtime.crossfire.jxclient.gui.list.GUICharacterList.facesManager
final FacesManager facesManager
Definition: GUICharacterList.java:64
com.realtime.crossfire.jxclient.faces
Definition: AbstractFaceQueue.java:23
com.realtime.crossfire.jxclient.account.CharacterModel.getCharacterIndex
int getCharacterIndex(@NotNull final String characterName)
Definition: CharacterModel.java:95
com.realtime.crossfire.jxclient.gui.list.GUIList< GUICharacter >::cellHeight
final int cellHeight
Definition: GUIList.java:66
com.realtime.crossfire.jxclient.gui.list.GUICharacterList.serialVersionUID
static final long serialVersionUID
Definition: GUICharacterList.java:46
com.realtime.crossfire.jxclient.gui.list.GUICharacterList.selectedIndex
int selectedIndex
Definition: GUICharacterList.java:93
com.realtime.crossfire.jxclient.gui.list.GUICharacterList.rebuildList
void rebuildList()
Definition: GUICharacterList.java:153
com.realtime.crossfire.jxclient.account.CharacterModel.addCharacterListener
void addCharacterListener(@NotNull final CharacterListener listener)
Definition: CharacterModel.java:167
com.realtime.crossfire.jxclient.gui
com.realtime.crossfire.jxclient.account.CharacterModel.size
int size()
Definition: CharacterModel.java:114
com.realtime.crossfire.jxclient.gui.list.GUICharacterList.characterModel
final CharacterModel characterModel
Definition: GUICharacterList.java:52
com.realtime.crossfire.jxclient.gui.gui.TooltipManager
Definition: TooltipManager.java:33
com.realtime.crossfire.jxclient.account
Definition: CharacterInformation.java:23
com.realtime.crossfire.jxclient.gui.list.GUIList
Definition: GUIList.java:56
com.realtime.crossfire.jxclient.faces.FacesManager
Definition: FacesManager.java:40
com.realtime.crossfire.jxclient.gui.gui
Definition: AbstractGUIElement.java:23
com.realtime.crossfire.jxclient.gui.list.GUICharacterList.notifyOpen
void notifyOpen()
Definition: GUICharacterList.java:190
com.realtime.crossfire.jxclient.gui.list.GUICharacterList.characterInformationListener
final CharacterInformationListener characterInformationListener
Definition: GUICharacterList.java:101
com.realtime.crossfire
com.realtime.crossfire.jxclient.gui.list.GUICharacterList.selectionChanged
void selectionChanged(final int selectedIndex)
Definition: GUICharacterList.java:136
com.realtime
com
com.realtime.crossfire.jxclient.gui.list.GUICharacterList
Definition: GUICharacterList.java:41
com.realtime.crossfire.jxclient.account.CharacterModel.addCharacterInformationListener
void addCharacterInformationListener(final int index, @NotNull final CharacterInformationListener listener)
Definition: CharacterModel.java:184
com.realtime.crossfire.jxclient.gui.list.GUICharacterList.activeChanged
void activeChanged()
Definition: GUICharacterList.java:147
com.realtime.crossfire.jxclient.gui.list.GUICharacterList.guiFactory
final GuiFactory guiFactory
Definition: GUICharacterList.java:70
com.realtime.crossfire.jxclient.gui.gui.GUIElementListener
Definition: GUIElementListener.java:32
com.realtime.crossfire.jxclient.account.CharacterModel
Definition: CharacterModel.java:40
com.realtime.crossfire.jxclient.gui.list.GUICharacterList.font
final Font font
Definition: GUICharacterList.java:88