Crossfire JXClient, Trunk
GUIItemKnowledgeType.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.item;
24 
35 import java.awt.Dimension;
36 import java.awt.Image;
37 import org.jetbrains.annotations.NotNull;
38 
42 public class GUIItemKnowledgeType extends GUIItemItem {
43 
47  private static final long serialVersionUID = 1;
48 
52  @NotNull
53  private final Object sync = new Object();
54 
58  @NotNull
59  private final FacesManager facesManager;
60 
64  @NotNull
66 
70  private final int defaultIndex;
71 
76  private int index = -1;
77 
81  private boolean selected;
82 
83  private int currentFace = -1;
84 
88  @NotNull
89  private final ItemView itemView;
90 
94  @NotNull
95  @SuppressWarnings("FieldCanBeLocal")
96  private final FacesManagerListener facesManagerListener = face -> {
97  if (currentFace == face.getFaceNum()) {
98  setChanged();
99  }
100  };
101 
115  public GUIItemKnowledgeType(@NotNull final TooltipManager tooltipManager, @NotNull final GUIElementListener elementListener, @NotNull final String name, @NotNull final ItemPainter itemPainter, final int defaultIndex, @NotNull final FacesManager facesManager, @NotNull final KnowledgeManager knowledgeManager, @NotNull final ItemView itemView, final int size, @NotNull final GuiFactory guiFactory) {
117  this.defaultIndex = defaultIndex;
118  this.facesManager = facesManager;
119  this.knowledgeManager = knowledgeManager;
120  this.itemView = itemView;
122 
124 
125  @Override
126  public void typeAdded(final int index) {
127  synchronized (sync) {
128  if (GUIItemKnowledgeType.this.index < index) {
129  return;
130  }
131  }
132 
133  setSkill();
134  }
135 
136  @Override
137  public void knowledgeAdded(final int index) {
138  }
139 
140  });
142  if (size != 0) {
143  setSize(0, 0);
144  }
145  }
146 
147  @Override
148  public boolean canScroll(final int distance) {
149  if (distance < 0) {
150  synchronized (sync) {
151  return index >= -distance;
152  }
153  }
154  if (distance > 0) {
155  synchronized (sync) {
156  return index+distance < knowledgeManager.getTypes();
157  }
158  }
159  return false;
160  }
161 
162  @Override
163  public void scroll(final int distance) {
164  final int index;
165  synchronized (sync) {
166  index = this.index;
167  }
168  setIndex(index+distance);
169  setChanged();
170  }
171 
172  @Override
173  public void resetScroll() {
175  }
176 
177  @NotNull
178  @Override
179  @SuppressWarnings("MethodDoesntCallSuperMethod")
180  public Dimension getPreferredSize() {
181  return getMinimumSizeInt();
182  }
183 
184  @NotNull
185  @Override
186  @SuppressWarnings("MethodDoesntCallSuperMethod")
187  public Dimension getMinimumSize() {
188  return getMinimumSizeInt();
189  }
190 
195  @NotNull
196  private static Dimension getMinimumSizeInt() {
197  return new Dimension(32, 32);
198  }
199 
203  private void setSkill() {
204  final int index;
205  synchronized (sync) {
206  index = this.index;
207  }
208  currentFace = knowledgeManager.getTypeFace(index);
209  setChanged();
210  /*
211  setTooltipText(newSkill == null ? null : newSkill.toString());*/
212  }
213 
219  private void setIndex(final int index) {
220  synchronized (sync) {
221  if (this.index == index) {
222  return;
223  }
224  this.index = index;
225  }
226 
227  setSkill();
228  }
229 
230  @NotNull
231  @Override
232  protected Image getFace(@NotNull final CfItem item) {
233  return facesManager.getOriginalImageIcon(item.getFace().getFaceNum(), null).getImage();
234  }
235 
236  @Override
237  public void setSelected(final boolean selected) {
238  if (this.selected == selected) {
239  return;
240  }
241 
242  this.selected = selected;
243  setChanged();
244  }
245 
246  @Override
247  protected boolean isSelected() {
248  return selected || isActive();
249  }
250 
251  @Override
252  public int getIndex() {
253  synchronized (sync) {
254  return index;
255  }
256  }
257 
258  @Override
259  public void setIndexNoListeners(final int index) {
260  synchronized (sync) {
261  this.index = index;
262  }
263 
265  }
266 
267  @Override
268  public void button1Clicked(final int modifiers) {
269  }
270 
271  @Override
272  public void button2Clicked(final int modifiers) {
273  }
274 
275  @Override
276  public void button3Clicked(final int modifiers) {
277  }
278 
279  @Override
280  public void notifyOpen() {
281  }
282 
283 }
com.realtime.crossfire.jxclient.knowledge
Definition: KnowledgeItem.java:23
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.serialVersionUID
static final long serialVersionUID
Definition: GUIItemKnowledgeType.java:47
com.realtime.crossfire.jxclient.gui.gui.AbstractGUIElement.name
final String name
Definition: AbstractGUIElement.java:77
com.realtime.crossfire.jxclient
com.realtime.crossfire.jxclient.skin.skin
Definition: DefaultJXCSkin.java:23
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.button3Clicked
void button3Clicked(final int modifiers)
Definition: GUIItemKnowledgeType.java:276
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.scroll
void scroll(final int distance)
Definition: GUIItemKnowledgeType.java:163
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.getMinimumSizeInt
static Dimension getMinimumSizeInt()
Definition: GUIItemKnowledgeType.java:196
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.currentFace
int currentFace
Definition: GUIItemKnowledgeType.java:83
com.realtime.crossfire.jxclient.skin
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.getMinimumSize
Dimension getMinimumSize()
Definition: GUIItemKnowledgeType.java:187
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType
Definition: GUIItemKnowledgeType.java:42
com.realtime.crossfire.jxclient.gui.item.GUIItemItem.setItemNoListeners
void setItemNoListeners(@Nullable final CfItem item)
Definition: GUIItemItem.java:190
com.realtime.crossfire.jxclient.faces.FacesManager.getOriginalImageIcon
ImageIcon getOriginalImageIcon(int faceNum, @Nullable AtomicBoolean returnIsUnknownImage)
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.setIndexNoListeners
void setIndexNoListeners(final int index)
Definition: GUIItemKnowledgeType.java:259
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager.getTypes
int getTypes()
Definition: KnowledgeManager.java:146
com.realtime.crossfire.jxclient.skin.skin.GuiFactory
Definition: GuiFactory.java:41
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.getFace
Image getFace(@NotNull final CfItem item)
Definition: GUIItemKnowledgeType.java:232
com.realtime.crossfire.jxclient.faces.FacesManagerListener
Definition: FacesManagerListener.java:32
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager.addKnowledgeListener
void addKnowledgeListener(@NotNull final KnowledgeListener listener)
Definition: KnowledgeManager.java:121
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.resetScroll
void resetScroll()
Definition: GUIItemKnowledgeType.java:173
com.realtime.crossfire.jxclient.faces
Definition: AbstractFaceQueue.java:23
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.sync
final Object sync
Definition: GUIItemKnowledgeType.java:53
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.GUIItemKnowledgeType
GUIItemKnowledgeType(@NotNull final TooltipManager tooltipManager, @NotNull final GUIElementListener elementListener, @NotNull final String name, @NotNull final ItemPainter itemPainter, final int defaultIndex, @NotNull final FacesManager facesManager, @NotNull final KnowledgeManager knowledgeManager, @NotNull final ItemView itemView, final int size, @NotNull final GuiFactory guiFactory)
Definition: GUIItemKnowledgeType.java:115
com.realtime.crossfire.jxclient.gui.list
Definition: CharacterCellRenderer.java:23
com.realtime.crossfire.jxclient.gui.item.GUIItemItem
Definition: GUIItemItem.java:46
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.itemView
final ItemView itemView
Definition: GUIItemKnowledgeType.java:89
com.realtime.crossfire.jxclient.gui.list.GUIKnowledgeTypeList
Definition: GUIKnowledgeTypeList.java:41
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.notifyOpen
void notifyOpen()
Definition: GUIItemKnowledgeType.java:280
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager.getTypeFace
int getTypeFace(final int index)
Definition: KnowledgeManager.java:158
com.realtime.crossfire.jxclient.gui
com.realtime.crossfire.jxclient.gui.gui.ActivatableGUIElement.elementListener
final GUIElementListener elementListener
Definition: ActivatableGUIElement.java:44
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.selected
boolean selected
Definition: GUIItemKnowledgeType.java:81
com.realtime.crossfire.jxclient.gui.item.ItemPainter
Definition: ItemPainter.java:41
com.realtime.crossfire.jxclient.items.CfItem
Definition: CfItem.java:37
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.getPreferredSize
Dimension getPreferredSize()
Definition: GUIItemKnowledgeType.java:180
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.defaultIndex
final int defaultIndex
Definition: GUIItemKnowledgeType.java:70
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.index
int index
Definition: GUIItemKnowledgeType.java:76
com.realtime.crossfire.jxclient.gui.gui.TooltipManager
Definition: TooltipManager.java:33
com.realtime.crossfire.jxclient.gui.item.GUIItemItem.itemPainter
final ItemPainter itemPainter
Definition: GUIItemItem.java:63
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.getIndex
int getIndex()
Definition: GUIItemKnowledgeType.java:252
com.realtime.crossfire.jxclient.faces.FacesManager.addFacesManagerListener
void addFacesManagerListener(@NotNull FacesManagerListener facesManagerListener)
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.setSkill
void setSkill()
Definition: GUIItemKnowledgeType.java:203
com.realtime.crossfire.jxclient.faces.FacesManager
Definition: FacesManager.java:40
com.realtime.crossfire.jxclient.gui.gui
Definition: AbstractGUIElement.java:23
com.realtime.crossfire.jxclient.gui.item.GUIItemItem.item
CfItem item
Definition: GUIItemItem.java:69
com.realtime.crossfire
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.facesManager
final FacesManager facesManager
Definition: GUIItemKnowledgeType.java:59
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.isSelected
boolean isSelected()
Definition: GUIItemKnowledgeType.java:247
com.realtime
com.realtime.crossfire.jxclient.knowledge.KnowledgeManager
Definition: KnowledgeManager.java:19
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.setSelected
void setSelected(final boolean selected)
Definition: GUIItemKnowledgeType.java:237
com
com.realtime.crossfire.jxclient.faces.Face.getFaceNum
int getFaceNum()
Definition: Face.java:105
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.facesManagerListener
final FacesManagerListener facesManagerListener
Definition: GUIItemKnowledgeType.java:96
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.knowledgeManager
final KnowledgeManager knowledgeManager
Definition: GUIItemKnowledgeType.java:65
com.realtime.crossfire.jxclient.items
Definition: AbstractItemView.java:23
com.realtime.crossfire.jxclient.items.CfItem.getFace
Face getFace()
Definition: CfItem.java:304
com.realtime.crossfire.jxclient.gui.gui.AbstractGUIElement.setChanged
void setChanged()
Definition: AbstractGUIElement.java:223
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.setIndex
void setIndex(final int index)
Definition: GUIItemKnowledgeType.java:219
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.button1Clicked
void button1Clicked(final int modifiers)
Definition: GUIItemKnowledgeType.java:268
com.realtime.crossfire.jxclient.items.ItemView
Definition: ItemView.java:32
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.canScroll
boolean canScroll(final int distance)
Definition: GUIItemKnowledgeType.java:148
com.realtime.crossfire.jxclient.gui.gui.AbstractGUIElement.guiFactory
final GuiFactory guiFactory
Definition: AbstractGUIElement.java:48
com.realtime.crossfire.jxclient.items.ItemView.getItem
CfItem getItem(int index)
com.realtime.crossfire.jxclient.knowledge.KnowledgeListener
Definition: KnowledgeListener.java:30
com.realtime.crossfire.jxclient.gui.item.GUIItemKnowledgeType.button2Clicked
void button2Clicked(final int modifiers)
Definition: GUIItemKnowledgeType.java:272
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.gui.gui.ActivatableGUIElement.isActive
boolean isActive()
Definition: ActivatableGUIElement.java:124