21 package com.realtime.crossfire.jxclient.account;
24 import java.util.ArrayList;
25 import java.util.Collection;
26 import java.util.Collections;
27 import java.util.HashMap;
28 import java.util.List;
30 import org.jetbrains.annotations.NotNull;
31 import org.jetbrains.annotations.Nullable;
44 private final List<CharacterInformation>
characters =
new ArrayList<>();
57 private final Object
sync =
new Object();
81 return characters.get(index);
83 }
catch (
final IndexOutOfBoundsException ignored) {
97 if (characterInformation.getName().equals(characterName)) {
113 synchronized (
sync) {
114 return characters.size();
123 synchronized (
sync) {
124 charactersPending.add(characterInformation);
132 charactersPending.clear();
139 final int oldMetaListSize;
140 final int newMetaListSize;
141 synchronized (
sync) {
142 oldMetaListSize = characters.size();
144 characters.addAll(charactersPending);
145 Collections.sort(characters);
146 newMetaListSize = characters.size();
148 charactersPending.clear();
151 characterListener.numberOfItemsChanged();
154 for (
int i = 0, iMax = Math.max(oldMetaListSize, newMetaListSize); i < iMax; i++) {
156 characterInformationListener.informationChanged();
166 characterListeners.
add(listener);
174 characterListeners.
remove(listener);
204 if (existingListeners != null) {
205 return existingListeners;
209 characterInformationListeners.put(index, newListeners);
221 if (character.getFaceNumber() == faceNum) {
void removeCharacterInformationListener(final int index, @NotNull final CharacterInformationListener listener)
Removes a character entry listener for one entry.
EventListenerList2< CharacterInformationListener > getCharacterInformationListeners(final int index)
Returns the character entry listeners for one entry index.
A list of event listeners.
boolean displaysFace(final int faceNum)
Returns whether any character has the given face.
final List< CharacterInformation > characters
The current entries.
final Collection< CharacterInformation > charactersPending
The pending entries.
void removeCharacterListener(@NotNull final CharacterListener listener)
Removes a character listener.
final Map< Integer, EventListenerList2< CharacterInformationListener > > characterInformationListeners
All registered character entry listeners.
void commit()
Finishes an update transaction.
void addCharacterInformationListener(final int index, @NotNull final CharacterInformationListener listener)
Adds a character entry listener for one entry.
Callback for a change in a character list.
CharacterInformation getEntry(final int index)
Returns a character entry by index.
int getCharacterIndex(@NotNull final String characterName)
Returns the index of an entry by character name.
void add(@NotNull final T listener)
Adds a listener.
Maintains the character list for an account.
void begin()
Starts an update transaction.
void addCharacterListener(@NotNull final CharacterListener listener)
Adds a character listener.
final Object sync
Object used for synchronization.
final EventListenerList2< CharacterListener > characterListeners
All registered character listeners.
int size()
Returns the number of character entries.
void remove(@NotNull final T listener)
Removes a listener.
void add(@NotNull final CharacterInformation characterInformation)
Adds an entry.