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.gui.label;
00023
00024 import com.realtime.crossfire.jxclient.faces.FacesManager;
00025 import com.realtime.crossfire.jxclient.gui.gui.GUIElementListener;
00026 import com.realtime.crossfire.jxclient.gui.gui.TooltipManager;
00027 import com.realtime.crossfire.jxclient.spells.CurrentSpellManager;
00028 import com.realtime.crossfire.jxclient.spells.CurrentSpellManagerListener;
00029 import com.realtime.crossfire.jxclient.spells.Spell;
00030 import java.awt.Color;
00031 import java.awt.Font;
00032 import java.awt.image.BufferedImage;
00033 import org.jetbrains.annotations.NotNull;
00034 import org.jetbrains.annotations.Nullable;
00035
00040 public class GUISpellLabel extends GUIHTMLLabel {
00041
00045 private static final long serialVersionUID = 1;
00046
00050 @NotNull
00051 private final FacesManager facesManager;
00052
00056 @NotNull
00057 private final Type type;
00058
00062 @NotNull
00063 private final CurrentSpellManager currentSpellManager;
00064
00069 @NotNull
00070 private final CurrentSpellManagerListener currentSpellManagerListener = new CurrentSpellManagerListener() {
00071
00072 @Override
00073 public void spellChanged(@Nullable final Spell spell) {
00074 if (spell == null) {
00075 setText("");
00076 return;
00077 }
00078
00079 switch (type) {
00080 case SPELL_NAME:
00081 setText(spell.getName());
00082 break;
00083
00084 case SPELL_ICON:
00085 setText("");
00086 setBackgroundImage(facesManager.getOriginalImageIcon(spell.getFaceNum(), null));
00087 break;
00088
00089 case SPELL_COST:
00090 final int mana = spell.getMana();
00091 final int grace = spell.getGrace();
00092 if (grace == 0) {
00093 setText("M:"+mana);
00094 } else if (mana == 0) {
00095 setText("G:"+grace);
00096 } else {
00097 setText("M:"+mana+" G:"+grace);
00098 }
00099 break;
00100
00101 case SPELL_LEVEL:
00102 setText(Integer.toString(spell.getLevel()));
00103 break;
00104
00105 case SPELL_DESCRIPTION:
00106 setText(spell.getMessage());
00107 break;
00108 }
00109 }
00110
00111 };
00112
00125 public GUISpellLabel(@NotNull final TooltipManager tooltipManager, @NotNull final GUIElementListener elementListener, @NotNull final String name, @Nullable final BufferedImage picture, @NotNull final FacesManager facesManager, @NotNull final Font font, @NotNull final Type type, @NotNull final CurrentSpellManager currentSpellManager) {
00126 super(tooltipManager, elementListener, name, picture, font, Color.WHITE, null, "");
00127 this.facesManager = facesManager;
00128 this.type = type;
00129 this.currentSpellManager = currentSpellManager;
00130 this.currentSpellManager.addSpellListener(currentSpellManagerListener);
00131 }
00132
00136 @Override
00137 public void dispose() {
00138 super.dispose();
00139 currentSpellManager.removeSpellListener(currentSpellManagerListener);
00140 }
00141
00142 }