00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 package com.realtime.crossfire.jxclient.faces;
00023
00024 import com.realtime.crossfire.jxclient.util.EventListenerList2;
00025 import javax.swing.ImageIcon;
00026 import org.jetbrains.annotations.NotNull;
00027 import org.jetbrains.annotations.Nullable;
00028
00033 public abstract class AbstractFacesManager implements FacesManager {
00034
00039 @NotNull
00040 private final EventListenerList2<FacesManagerListener> facesManagerListeners = new EventListenerList2<FacesManagerListener>(FacesManagerListener.class);
00041
00045 @NotNull
00046 private final FaceCache faceCache;
00047
00052 protected AbstractFacesManager(@NotNull final FaceCache faceCache) {
00053 this.faceCache = faceCache;
00054 }
00055
00059 @Override
00060 public void addFacesManagerListener(@NotNull final FacesManagerListener facesManagerListener) {
00061 facesManagerListeners.add(facesManagerListener);
00062 }
00063
00067 @Override
00068 public void removeFacesManagerListener(@NotNull final FacesManagerListener facesManagerListener) {
00069 facesManagerListeners.remove(facesManagerListener);
00070 }
00071
00077 protected void fireFaceUpdated(@NotNull final Face face) {
00078 for (final FacesManagerListener facesManagerListener : facesManagerListeners.getListeners()) {
00079 facesManagerListener.faceUpdated(face);
00080 }
00081 }
00082
00086 @NotNull
00087 @Override
00088 public ImageIcon getOriginalImageIcon(final int faceNum, @Nullable final boolean[] isUnknownImage) {
00089 return getFaceImages(faceNum, isUnknownImage).getOriginalImageIcon();
00090 }
00091
00095 @NotNull
00096 @Override
00097 public ImageIcon getScaledImageIcon(final int faceNum, @Nullable final boolean[] isUnknownImage) {
00098 return getFaceImages(faceNum, isUnknownImage).getScaledImageIcon();
00099 }
00100
00104 @NotNull
00105 @Override
00106 public ImageIcon getMagicMapImageIcon(final int faceNum, @Nullable final boolean[] isUnknownImage) {
00107 return getFaceImages(faceNum, isUnknownImage).getMagicMapImageIcon();
00108 }
00109
00113 @NotNull
00114 @Override
00115 public Face getFace(final int faceNum) {
00116 getFaceImages(faceNum, null);
00117 return faceCache.getFace(faceNum);
00118 }
00119
00129 @NotNull
00130 protected abstract FaceImages getFaceImages(final int faceNum, @Nullable boolean[] isUnknownImage);
00131
00139 @NotNull
00140 protected Face lookupFace(final int faceNum) {
00141 return faceCache.getFace(faceNum);
00142 }
00143
00147 @Nullable
00148 @Override
00149 public Face getFace2(final int faceNum) {
00150 if (faceNum == 0) {
00151 return null;
00152 }
00153
00154 getFaceImages(faceNum, null);
00155 return faceCache.getFace(faceNum);
00156 }
00157
00161 @Override
00162 public void reset() {
00163 faceCache.reset();
00164 }
00165
00166 }