Crossfire JXClient, Trunk
GUIPictureStat.java
Go to the documentation of this file.
1 /*
2  * This file is part of JXClient, the Fullscreen Java Crossfire Client.
3  *
4  * JXClient is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * JXClient is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with JXClient; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17  *
18  * Copyright (C) 2005-2008 Yann Chachkoff
19  * Copyright (C) 2006-2017,2019-2023 Andreas Kirschbaum
20  * Copyright (C) 2010-2012,2014-2018,2020-2023 Nicolas Weeger
21  */
22 
23 package com.realtime.crossfire.jxclient.gui.misc;
24 
32 import java.awt.Dimension;
33 import java.awt.Graphics;
34 import java.awt.Image;
35 import java.awt.Transparency;
36 import java.awt.image.BufferedImage;
37 import org.jetbrains.annotations.NotNull;
38 import org.jetbrains.annotations.Nullable;
39 
45 public class GUIPictureStat extends AbstractGUIElement {
46 
50  private static final long serialVersionUID = 1;
51 
55  private final int stat;
56 
60  @Nullable
61  private final Image imageInactive;
62 
66  @Nullable
67  private final Image imageActive;
68 
72  @NotNull
73  private final String tooltipText;
74 
78  @NotNull
79  private final Dimension preferredSize;
80 
84  @NotNull
85  private final Stats stats;
86 
90  private boolean active = true; // initial value is "true" to force an update in the constructor
91 
95  @NotNull
96  private final StatsListener statsListener = new StatsListener() {
97 
98  @Override
99  public void resetBefore() {
100  // ignore
101  }
102 
103  @Override
104  public void resetAfter() {
105  // ignore
106  }
107 
108  @Override
109  public void statChanged(final int statNo, final int value) {
110  if (statNo == stat) {
111  setActive(value != 0);
112  }
113  }
114 
115  @Override
116  public void simpleWeaponSpeedChanged(final boolean simpleWeaponSpeed) {
117  // ignore
118  }
119 
120  @Override
121  public void titleChanged(@NotNull final String title) {
122  // ignore
123  }
124 
125  @Override
126  public void godNameChanged(@NotNull final String godName) {
127  // ignore
128  }
129 
130  @Override
131  public void rangeChanged(@NotNull final String range) {
132  // ignore
133  }
134 
135  @Override
136  public void activeSkillChanged(@NotNull final String activeSkill) {
137  // ignore
138  }
139 
140  @Override
141  public void experienceChanged(final long exp) {
142  // ignore
143  }
144 
145  @Override
146  public void experienceNextLevelChanged(final long expNextLevel) {
147  // ignore
148  }
149 
150  };
151 
166  public GUIPictureStat(@NotNull final TooltipManager tooltipManager, @NotNull final GUIElementListener elementListener, @NotNull final String name, final int stat, @Nullable final BufferedImage imageInactive, @Nullable final BufferedImage imageActive, final int preferredWidth, final int preferredHeight, @NotNull final Stats stats, @NotNull final GuiFactory guiFactory, @NotNull final String tooltipText) {
167  super(tooltipManager, elementListener, name, imageInactive != null && imageActive != null && imageInactive.getTransparency() == Transparency.OPAQUE && imageActive.getTransparency() == Transparency.OPAQUE, guiFactory);
168  if (imageInactive == null && imageActive == null) {
169  throw new IllegalArgumentException("neither imageInactive nor imageActive is set");
170  }
171  this.stat = stat;
172  this.imageInactive = imageInactive;
173  this.imageActive = imageActive;
174  this.tooltipText = tooltipText;
175  preferredSize = new Dimension(preferredWidth, preferredHeight);
176  this.stats = stats;
178  setActive(false);
179  }
180 
181  @Override
182  public void dispose() {
183  super.dispose();
185  }
186 
187  @Override
188  public void paintComponent(@NotNull final Graphics g) {
189  super.paintComponent(g);
190  final Image image = active ? imageActive : imageInactive;
191  if (image != null) {
192  g.drawImage(image, 0, 0, null);
193  }
194  }
195 
196  @NotNull
197  @Override
198  @SuppressWarnings("MethodDoesntCallSuperMethod")
199  public Dimension getPreferredSize() {
200  return new Dimension(preferredSize);
201  }
202 
203  @NotNull
204  @Override
205  @SuppressWarnings("MethodDoesntCallSuperMethod")
206  public Dimension getMinimumSize() {
207  return new Dimension(preferredSize);
208  }
209 
210  @NotNull
211  @Override
212  @SuppressWarnings("MethodDoesntCallSuperMethod")
213  public Dimension getMaximumSize() {
214  return new Dimension(preferredSize);
215  }
216 
217  @Override
218  public void notifyOpen() {
219  }
220 
221  @Nullable
222  @Override
224  return newTooltipText(tooltipText);
225  }
226 
232  private void setActive(final boolean active) {
233  if (this.active == active) {
234  return;
235  }
236  this.active = active;
237 
238  setVisible((active ? imageActive : imageInactive) != null);
239  repaint();
240  }
241 
242 }
com.realtime.crossfire.jxclient.gui.gui.AbstractGUIElement.newTooltipText
TooltipText newTooltipText(@Nullable final String tooltipText)
Definition: AbstractGUIElement.java:247
com.realtime.crossfire.jxclient.gui.gui.AbstractGUIElement.name
final String name
Definition: AbstractGUIElement.java:77
com.realtime.crossfire.jxclient
com.realtime.crossfire.jxclient.gui.misc.GUIPictureStat.preferredSize
final Dimension preferredSize
Definition: GUIPictureStat.java:79
com.realtime.crossfire.jxclient.skin.skin
Definition: DefaultJXCSkin.java:23
com.realtime.crossfire.jxclient.gui.misc.GUIPictureStat.imageInactive
final Image imageInactive
Definition: GUIPictureStat.java:61
com.realtime.crossfire.jxclient.gui.misc.GUIPictureStat.notifyOpen
void notifyOpen()
Definition: GUIPictureStat.java:218
com.realtime.crossfire.jxclient.skin
com.realtime.crossfire.jxclient.gui.misc.GUIPictureStat.tooltipText
final String tooltipText
Definition: GUIPictureStat.java:73
com.realtime.crossfire.jxclient.skin.skin.GuiFactory
Definition: GuiFactory.java:41
com.realtime.crossfire.jxclient.gui.misc.GUIPictureStat.getMinimumSize
Dimension getMinimumSize()
Definition: GUIPictureStat.java:206
com.realtime.crossfire.jxclient.stats.Stats
Definition: Stats.java:44
com.realtime.crossfire.jxclient.gui.misc.GUIPictureStat.getPreferredSize
Dimension getPreferredSize()
Definition: GUIPictureStat.java:199
com.realtime.crossfire.jxclient.stats.StatsListener
Definition: StatsListener.java:32
com.realtime.crossfire.jxclient.gui.misc.GUIPictureStat.statsListener
final StatsListener statsListener
Definition: GUIPictureStat.java:96
com.realtime.crossfire.jxclient.gui.misc.GUIPictureStat.active
boolean active
Definition: GUIPictureStat.java:90
com.realtime.crossfire.jxclient.gui.misc.GUIPictureStat.dispose
void dispose()
Definition: GUIPictureStat.java:182
com.realtime.crossfire.jxclient.gui.misc.GUIPictureStat.setActive
void setActive(final boolean active)
Definition: GUIPictureStat.java:232
com.realtime.crossfire.jxclient.gui.misc.GUIPictureStat.getMaximumSize
Dimension getMaximumSize()
Definition: GUIPictureStat.java:213
com.realtime.crossfire.jxclient.gui.misc.GUIPictureStat.paintComponent
void paintComponent(@NotNull final Graphics g)
Definition: GUIPictureStat.java:188
com.realtime.crossfire.jxclient.gui.misc.GUIPictureStat.getTooltip
TooltipText getTooltip()
Definition: GUIPictureStat.java:223
com.realtime.crossfire.jxclient.gui
com.realtime.crossfire.jxclient.gui.misc.GUIPictureStat.stat
final int stat
Definition: GUIPictureStat.java:55
com.realtime.crossfire.jxclient.gui.misc.GUIPictureStat.stats
final Stats stats
Definition: GUIPictureStat.java:85
com.realtime.crossfire.jxclient.stats.Stats.addCrossfireStatsListener
void addCrossfireStatsListener(@NotNull final StatsListener statsListener)
Definition: Stats.java:963
com.realtime.crossfire.jxclient.gui.gui.AbstractGUIElement.elementListener
final GUIElementListener elementListener
Definition: AbstractGUIElement.java:89
com.realtime.crossfire.jxclient.gui.gui.TooltipManager
Definition: TooltipManager.java:33
com.realtime.crossfire.jxclient.gui.misc.GUIPictureStat.imageActive
final Image imageActive
Definition: GUIPictureStat.java:67
com.realtime.crossfire.jxclient.gui.misc.GUIPictureStat.GUIPictureStat
GUIPictureStat(@NotNull final TooltipManager tooltipManager, @NotNull final GUIElementListener elementListener, @NotNull final String name, final int stat, @Nullable final BufferedImage imageInactive, @Nullable final BufferedImage imageActive, final int preferredWidth, final int preferredHeight, @NotNull final Stats stats, @NotNull final GuiFactory guiFactory, @NotNull final String tooltipText)
Definition: GUIPictureStat.java:166
com.realtime.crossfire.jxclient.gui.gui
Definition: AbstractGUIElement.java:23
com.realtime.crossfire.jxclient.gui.misc.GUIPictureStat
Definition: GUIPictureStat.java:45
com.realtime.crossfire.jxclient.gui.gui.TooltipText
Definition: TooltipText.java:31
com.realtime.crossfire
com.realtime
com
com.realtime.crossfire.jxclient.stats.Stats.removeCrossfireStatsListener
void removeCrossfireStatsListener(@NotNull final StatsListener statsListener)
Definition: Stats.java:971
com.realtime.crossfire.jxclient.gui.gui.AbstractGUIElement
Definition: AbstractGUIElement.java:37
com.realtime.crossfire.jxclient.gui.gui.AbstractGUIElement.guiFactory
final GuiFactory guiFactory
Definition: AbstractGUIElement.java:48
com.realtime.crossfire.jxclient.gui.misc.GUIPictureStat.serialVersionUID
static final long serialVersionUID
Definition: GUIPictureStat.java:50
com.realtime.crossfire.jxclient.gui.gui.GUIElementListener
Definition: GUIElementListener.java:32
com.realtime.crossfire.jxclient.gui.gui.AbstractGUIElement.tooltipManager
final TooltipManager tooltipManager
Definition: AbstractGUIElement.java:83
com.realtime.crossfire.jxclient.stats
Definition: ActiveSkillWatcher.java:23