00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 package com.realtime.crossfire.jxclient.items;
00022
00023 import com.realtime.crossfire.jxclient.faces.Face;
00024 import com.realtime.crossfire.jxclient.faces.FacesManager;
00025 import com.realtime.crossfire.jxclient.faces.FacesManagerListener;
00026 import com.realtime.crossfire.jxclient.spells.Spell;
00027 import com.realtime.crossfire.jxclient.spells.SpellsManager;
00028 import com.realtime.crossfire.jxclient.spells.SpellsManagerListener;
00029 import org.jetbrains.annotations.NotNull;
00030 import org.jetbrains.annotations.Nullable;
00031
00036 public class SpellsView extends AbstractItemView {
00037
00041 @NotNull
00042 private final SpellsManager spellsManager;
00043
00047 @NotNull
00048 private final FacesManager facesManager;
00049
00055 public SpellsView(@NotNull final SpellsManager spellsManager, @NotNull final FacesManager facesManager) {
00056 this.spellsManager = spellsManager;
00057 this.facesManager = facesManager;
00058 spellsManager.addCrossfireSpellChangedListener(new SpellsManagerListener() {
00059
00060 @Override
00061 public void spellAdded(final int index) {
00062 addModifiedRange(index, spellsManager.getSpells());
00063 }
00064
00065 @Override
00066 public void spellRemoved(final int index) {
00067 addModifiedRange(index, spellsManager.getSpells());
00068 }
00069
00070 });
00071 facesManager.addFacesManagerListener(new FacesManagerListener() {
00072
00073 @Override
00074 public void faceUpdated(@NotNull final Face face) {
00075 if (spellsManager.displaysFace(face.getFaceNum())) {
00076 addModifiedRange(0, spellsManager.getSpells());
00077 }
00078 }
00079
00080 });
00081 }
00082
00086 @Override
00087 public int getSize() {
00088 return spellsManager.getSpells();
00089 }
00090
00094 @Nullable
00095 @Override
00096 public CfItem getItem(final int index) {
00097 final Spell spell = spellsManager.getSpell(index);
00098 if (spell == null) {
00099 return null;
00100 }
00101 final Face face = facesManager.getFace(spell.getFaceNum());
00102 return new CfItem(0, spell.getTag(), 0, 0, face, spell.getName(), spell.getName(), 0, 0, 0, 0);
00103 }
00104
00105 }