Crossfire JXClient, Trunk
GUIItemItem.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.Graphics;
37 import java.awt.Graphics2D;
38 import java.awt.Image;
39 import org.jetbrains.annotations.NotNull;
40 import org.jetbrains.annotations.Nullable;
41 
46 public abstract class GUIItemItem extends GUIItem {
47 
51  private static final long serialVersionUID = 1;
52 
56  @NotNull
57  private final FacesManager facesManager;
58 
62  @NotNull
63  private final ItemPainter itemPainter;
64 
68  @Nullable
69  private CfItem item;
70 
75  @NotNull
76  private final CfItemListener itemListener = () -> {
77  setChanged();
79  };
80 
84  @NotNull
86 
87  @Override
88  public void faceUpdated(@NotNull final Face face) {
89  if (item != null && face.equals(item.getFace())) {
90  setChanged();
92  }
93  }
94 
95  };
96 
106  protected GUIItemItem(@NotNull final TooltipManager tooltipManager, @NotNull final GUIElementListener elementListener, @NotNull final String name, @NotNull final ItemPainter itemPainter, @NotNull final FacesManager facesManager, @NotNull final GuiFactory guiFactory) {
108  this.itemPainter = itemPainter;
109  this.facesManager = facesManager;
111  }
112 
113  @Override
114  public void dispose() {
115  super.dispose();
117  setItem(null);
118  }
119 
120  @Override
121  public void paintComponent(@NotNull final Graphics g) {
122  super.paintComponent(g);
123 
124  final CfItem tmpItem = item;
125  if (tmpItem == null) {
126  return;
127  }
128 
129  final Graphics2D g2 = (Graphics2D)g;
130  itemPainter.paint(g2, tmpItem, isSelected(), getFace(tmpItem), getWidth(), getHeight());
131  }
132 
133  @Nullable
134  @Override
135  @SuppressWarnings("MethodDoesntCallSuperMethod")
136  public Dimension getPreferredSize() {
137  return itemPainter.getMinimumSize();
138  }
139 
140  @Nullable
141  @Override
142  @SuppressWarnings("MethodDoesntCallSuperMethod")
143  public Dimension getMinimumSize() {
144  return itemPainter.getMinimumSize();
145  }
146 
152  @NotNull
153  protected abstract Image getFace(@NotNull final CfItem item);
154 
159  @Nullable
160  public CfItem getItem() {
161  return item;
162  }
163 
168  protected void setItem(@Nullable final CfItem item) {
169  if (this.item == item) {
170  return;
171  }
172 
173  if (this.item != null) {
174  this.item.removeCfItemModifiedListener(itemListener);
175  }
176  this.item = item;
177  if (this.item != null) {
179  }
180 
181  setChanged();
182  tooltipChanged();
183  }
184 
190  protected void setItemNoListeners(@Nullable final CfItem item) {
191  this.item = item;
192  }
193 
198  public abstract void setSelected(final boolean selected);
199 
204  protected abstract boolean isSelected();
205 
210  public abstract int getIndex();
211 
217  public abstract void setIndexNoListeners(final int index);
218 
219  @Nullable
220  @Override
222  return item == null ? null : newTooltipText(item.getTooltipText());
223  }
224 
225 }
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.skin.skin
Definition: DefaultJXCSkin.java:23
com.realtime.crossfire.jxclient.gui.item.GUIItemItem.setItem
void setItem(@Nullable final CfItem item)
Definition: GUIItemItem.java:168
com.realtime.crossfire.jxclient.items.CfItem.addCfItemModifiedListener
void addCfItemModifiedListener(@NotNull final CfItemListener listener)
Definition: CfItem.java:517
com.realtime.crossfire.jxclient.skin
com.realtime.crossfire.jxclient.gui.item.GUIItemItem.setItemNoListeners
void setItemNoListeners(@Nullable final CfItem item)
Definition: GUIItemItem.java:190
com.realtime.crossfire.jxclient.skin.skin.GuiFactory
Definition: GuiFactory.java:41
com.realtime.crossfire.jxclient.faces.FacesManagerListener
Definition: FacesManagerListener.java:32
com.realtime.crossfire.jxclient.faces
Definition: AbstractFaceQueue.java:23
com.realtime.crossfire.jxclient.gui.item.GUIItemItem.getFace
abstract Image getFace(@NotNull final CfItem item)
com.realtime.crossfire.jxclient.gui.item.GUIItemItem.dispose
void dispose()
Definition: GUIItemItem.java:114
com.realtime.crossfire.jxclient.gui.item.GUIItem
Definition: GUIItem.java:39
com.realtime.crossfire.jxclient.gui.item.ItemPainter.getMinimumSize
Dimension getMinimumSize()
Definition: ItemPainter.java:245
com.realtime.crossfire.jxclient.gui.item.GUIItemItem.getItem
CfItem getItem()
Definition: GUIItemItem.java:160
com.realtime.crossfire.jxclient.gui.item.GUIItemItem.facesManager
final FacesManager facesManager
Definition: GUIItemItem.java:57
com.realtime.crossfire.jxclient.gui.gui.AbstractGUIElement.tooltipChanged
void tooltipChanged()
Definition: AbstractGUIElement.java:265
com.realtime.crossfire.jxclient.items.CfItem.getTooltipText
String getTooltipText()
Definition: CfItem.java:534
com.realtime.crossfire.jxclient.gui.item.GUIItemItem.getPreferredSize
Dimension getPreferredSize()
Definition: GUIItemItem.java:136
com.realtime.crossfire.jxclient.gui.item.GUIItemItem.setSelected
abstract void setSelected(final boolean selected)
com.realtime.crossfire.jxclient.gui.item.GUIItemItem
Definition: GUIItemItem.java:46
com.realtime.crossfire.jxclient.gui.item.GUIItemItem.isSelected
abstract boolean isSelected()
com.realtime.crossfire.jxclient.gui.item.GUIItemItem.getMinimumSize
Dimension getMinimumSize()
Definition: GUIItemItem.java:143
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.ItemPainter
Definition: ItemPainter.java:41
com.realtime.crossfire.jxclient.items.CfItem
Definition: CfItem.java:37
com.realtime.crossfire.jxclient.gui.gui.TooltipManager
Definition: TooltipManager.java:33
com.realtime.crossfire.jxclient.gui.gui.GUIElement
Definition: GUIElement.java:33
com.realtime.crossfire.jxclient.gui.item.GUIItemItem.itemPainter
final ItemPainter itemPainter
Definition: GUIItemItem.java:63
com.realtime.crossfire.jxclient.faces.FacesManager.addFacesManagerListener
void addFacesManagerListener(@NotNull FacesManagerListener facesManagerListener)
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.jxclient.gui.item.GUIItemItem.itemListener
final CfItemListener itemListener
Definition: GUIItemItem.java:76
com.realtime.crossfire.jxclient.gui.gui.TooltipText
Definition: TooltipText.java:31
com.realtime.crossfire
com.realtime
com
com.realtime.crossfire.jxclient.gui.item.GUIItemItem.facesManagerListener
final FacesManagerListener facesManagerListener
Definition: GUIItemItem.java:85
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.items.CfItemListener
Definition: CfItemListener.java:31
com.realtime.crossfire.jxclient.gui.item.GUIItemItem.setIndexNoListeners
abstract void setIndexNoListeners(final int index)
com.realtime.crossfire.jxclient.gui.gui.AbstractGUIElement.guiFactory
final GuiFactory guiFactory
Definition: AbstractGUIElement.java:48
com.realtime.crossfire.jxclient.gui.item.GUIItemItem.paintComponent
void paintComponent(@NotNull final Graphics g)
Definition: GUIItemItem.java:121
com.realtime.crossfire.jxclient.faces.Face
Definition: Face.java:37
com.realtime.crossfire.jxclient.gui.item.GUIItemItem.serialVersionUID
static final long serialVersionUID
Definition: GUIItemItem.java:51
com.realtime.crossfire.jxclient.gui.item.ItemPainter.paint
void paint(@NotNull final Graphics2D g, @NotNull final CfItem item, final boolean selected, @NotNull final Image face, final int w, final int h)
Definition: ItemPainter.java:288
com.realtime.crossfire.jxclient.faces.FacesManager.removeFacesManagerListener
void removeFacesManagerListener(@NotNull FacesManagerListener facesManagerListener)
com.realtime.crossfire.jxclient.gui.item.GUIItemItem.GUIItemItem
GUIItemItem(@NotNull final TooltipManager tooltipManager, @NotNull final GUIElementListener elementListener, @NotNull final String name, @NotNull final ItemPainter itemPainter, @NotNull final FacesManager facesManager, @NotNull final GuiFactory guiFactory)
Definition: GUIItemItem.java:106
com.realtime.crossfire.jxclient.gui.item.GUIItemItem.getIndex
abstract int getIndex()
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.item.GUIItemItem.getTooltip
TooltipText getTooltip()
Definition: GUIItemItem.java:221