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.gui.misc;
00022
00023 import com.realtime.crossfire.jxclient.account.CharacterInformation;
00024 import com.realtime.crossfire.jxclient.account.CharacterInformationListener;
00025 import com.realtime.crossfire.jxclient.account.CharacterModel;
00026 import com.realtime.crossfire.jxclient.faces.FacesManager;
00027 import com.realtime.crossfire.jxclient.gui.gui.ActivatableGUIElement;
00028 import com.realtime.crossfire.jxclient.gui.gui.GUIElementListener;
00029 import com.realtime.crossfire.jxclient.gui.gui.GuiUtils;
00030 import com.realtime.crossfire.jxclient.gui.gui.TooltipManager;
00031 import com.realtime.crossfire.jxclient.gui.scrollable.GUIScrollable;
00032 import java.awt.Color;
00033 import java.awt.Dimension;
00034 import java.awt.Font;
00035 import java.awt.Graphics;
00036 import java.awt.Transparency;
00037 import org.jetbrains.annotations.NotNull;
00038 import org.jetbrains.annotations.Nullable;
00039
00044 public class GUICharacter extends ActivatableGUIElement implements GUIScrollable {
00045
00049 private static final long serialVersionUID = 1;
00050
00054 @NotNull
00055 private final FacesManager facesManager;
00056
00060 private final CharacterModel characterModel;
00061
00065 private int index;
00066
00070 @NotNull
00071 private final Font font;
00072
00076 private boolean selected = false;
00077
00081 @NotNull
00082 private final CharacterInformationListener characterInformationListener = new CharacterInformationListener() {
00083
00084 @Override
00085 public void informationChanged() {
00086 setChanged();
00087 updateTooltip();
00088 }
00089
00090 };
00091
00104 public GUICharacter(@NotNull final TooltipManager tooltipManager, @NotNull final FacesManager facesManager, @NotNull final GUIElementListener elementListener, @NotNull final String name, final int w, final int h, @NotNull final Font font, final int defaultIndex, final CharacterModel characterModel) {
00105 super(tooltipManager, elementListener, name, Transparency.TRANSLUCENT);
00106 setSize(w, h);
00107 this.facesManager = facesManager;
00108 this.characterModel = characterModel;
00109 this.font = font;
00110 index = defaultIndex;
00111 }
00112
00116 @Override
00117 protected void activeChanged() {
00118 throw new UnsupportedOperationException("Not supported yet.");
00119 }
00120
00124 @Override
00125 public void paintComponent(@NotNull final Graphics g) {
00126 super.paintComponent(g);
00127 g.setColor(new Color(0, 0, 0, 0.0f));
00128 g.fillRect(0, 0, getWidth(), getHeight());
00129 g.setFont(font);
00130 g.setColor(isActive() || selected ? Color.RED : Color.GRAY);
00131 final CharacterInformation character = characterModel.getEntry(index);
00132 if (character == null) {
00133 return;
00134 }
00135
00140 final int y = (getHeight()+font.getSize())/2;
00141 int x = 0;
00142 g.drawImage(facesManager.getOriginalImageIcon(character.getFaceNumber(), null).getImage(), x, (getHeight()-facesManager.getOriginalImageIcon(character.getFaceNumber(), null).getImage().getHeight(null))/2, this);
00143 x += 40;
00144 g.drawString(character.getName(), x, y);
00145 x += 80;
00146 g.drawString(character.getRace(), x, y);
00147 x += 100;
00148 g.drawString(character.getParty(), x, y);
00149 x += 100;
00150 g.drawString(character.getMap(), x, y);
00151 }
00152
00156 @Nullable
00157 @Override
00158 public Dimension getPreferredSize() {
00159 return getMinimumSizeInt();
00160 }
00161
00165 @Nullable
00166 @Override
00167 public Dimension getMinimumSize() {
00168 return getMinimumSizeInt();
00169 }
00170
00175 @NotNull
00176 private Dimension getMinimumSizeInt() {
00177 final CharacterInformation character = characterModel.getEntry(index);
00178 return GuiUtils.getTextDimension(character == null ? "" : character.getName(), getFontMetrics(font));
00179 }
00180
00184 @Override
00185 public boolean canScroll(final int distance) {
00186 throw new UnsupportedOperationException("Not supported yet.");
00187 }
00188
00192 @Override
00193 public void scroll(final int distance) {
00194 throw new UnsupportedOperationException("Not supported yet.");
00195 }
00196
00200 @Override
00201 public void resetScroll() {
00202 throw new UnsupportedOperationException("Not supported yet.");
00203 }
00204
00209 public int getIndex() {
00210 return index;
00211 }
00212
00217 public void setIndex(final int index) {
00218 if (this.index == index) {
00219 return;
00220 }
00221
00222 characterModel.removeCharacterInformationListener(index, characterInformationListener);
00223 this.index = index;
00224 characterModel.addCharacterInformationListener(index, characterInformationListener);
00225 setChanged();
00226 updateTooltip();
00227 }
00228
00232 private void updateTooltip() {
00233 final CharacterInformation characterInformation = characterModel.getEntry(index);
00234 setTooltipText(characterInformation == null ? null : characterInformation.getName());
00235 }
00236
00241 public void setSelected(final boolean selected) {
00242 if (this.selected == selected) {
00243 return;
00244 }
00245
00246 this.selected = selected;
00247 setChanged();
00248 }
00249
00253 @Override
00254 public void execute() {
00255
00256 }
00257
00258 }