Crossfire JXClient, Trunk
AbstractButton2.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.button;
24 
31 import java.awt.Color;
32 import java.awt.Dimension;
33 import java.awt.Font;
34 import java.awt.Graphics;
35 import java.awt.Image;
36 import java.awt.image.BufferedImage;
37 import org.jetbrains.annotations.NotNull;
38 import org.jetbrains.annotations.Nullable;
39 
47 public abstract class AbstractButton2 extends AbstractButton {
48 
52  private static final long serialVersionUID = 1;
53 
57  @NotNull
58  private final Image imageUp;
59 
63  @NotNull
64  private final Image imageDown;
65 
70  @Nullable
71  private final String text;
72 
77  @Nullable
78  private final Font font;
79 
83  private final int textX;
84 
89  private final int textY;
90 
95  @Nullable
96  private final Color color;
97 
101  @NotNull
102  private final Dimension preferredSize;
103 
126  protected AbstractButton2(@NotNull final TooltipManager tooltipManager, @NotNull final GUIElementListener elementListener, @NotNull final String name, @NotNull final BufferedImage imageUp, @NotNull final BufferedImage imageDown, @Nullable final String text, @Nullable final Font font, @Nullable final Color color, final int textX, final int textY, final boolean autoRepeat, @NotNull final CommandList commandList, @NotNull final GuiFactory guiFactory, @NotNull final NewCharModel newCharModel) {
128  final int preferredWidth = imageUp.getWidth();
129  if (preferredWidth != imageDown.getWidth()) {
130  throw new IllegalArgumentException("preferredWidth="+preferredWidth+", imageWidth="+imageDown.getWidth());
131  }
132  final int preferredHeight = imageUp.getHeight();
133  if (preferredHeight != imageDown.getHeight()) {
134  throw new IllegalArgumentException("preferredHeight="+preferredHeight+", imageHeight="+imageDown.getHeight());
135  }
136  this.imageUp = imageUp;
137  this.imageDown = imageDown;
138  this.text = text;
139  this.font = font;
140  this.color = color;
141  this.textX = textX;
142  this.textY = textY;
143  preferredSize = new Dimension(preferredWidth, preferredHeight);
144  }
145 
146  @Override
147  public void paintComponent(@NotNull final Graphics g) {
148  super.paintComponent(g);
149  g.drawImage(isSelected() ? imageDown : imageUp, 0, 0, null);
150  if (text != null && font != null && color != null) {
151  g.setFont(font);
152  g.setColor(color);
153  g.drawString(text, textX, textY);
154  }
155  }
156 
161  protected abstract boolean isSelected();
162 
163  @NotNull
164  @Override
165  protected Dimension getMinimumSizeInt() {
166  return new Dimension(preferredSize);
167  }
168 
169  @NotNull
170  @Override
171  @SuppressWarnings("MethodDoesntCallSuperMethod")
172  public Dimension getMaximumSize() {
173  return getMinimumSizeInt();
174  }
175 
176  @Nullable
177  @Override
179  return null;
180  }
181 
182 }
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.button.AbstractButton2.paintComponent
void paintComponent(@NotNull final Graphics g)
Definition: AbstractButton2.java:147
com.realtime.crossfire.jxclient.gui.button.AbstractButton2.color
final Color color
Definition: AbstractButton2.java:96
com.realtime.crossfire.jxclient.gui.commandlist.CommandList
Definition: CommandList.java:34
com.realtime.crossfire.jxclient.gui.button.AbstractButton2.AbstractButton2
AbstractButton2(@NotNull final TooltipManager tooltipManager, @NotNull final GUIElementListener elementListener, @NotNull final String name, @NotNull final BufferedImage imageUp, @NotNull final BufferedImage imageDown, @Nullable final String text, @Nullable final Font font, @Nullable final Color color, final int textX, final int textY, final boolean autoRepeat, @NotNull final CommandList commandList, @NotNull final GuiFactory guiFactory, @NotNull final NewCharModel newCharModel)
Definition: AbstractButton2.java:126
com.realtime.crossfire.jxclient.skin
com.realtime.crossfire.jxclient.gui.button.AbstractButton2.textY
final int textY
Definition: AbstractButton2.java:89
com.realtime.crossfire.jxclient.gui.button.AbstractButton2.isSelected
abstract boolean isSelected()
com.realtime.crossfire.jxclient.gui.label
Definition: AbstractLabel.java:23
com.realtime.crossfire.jxclient.skin.skin.GuiFactory
Definition: GuiFactory.java:41
com.realtime.crossfire.jxclient.gui.commandlist
Definition: CommandList.java:23
com.realtime.crossfire.jxclient.gui.button.AbstractButton2
Definition: AbstractButton2.java:47
com.realtime.crossfire.jxclient.gui.button.AbstractButton2.preferredSize
final Dimension preferredSize
Definition: AbstractButton2.java:102
com.realtime.crossfire.jxclient.gui.button.AbstractButton2.text
final String text
Definition: AbstractButton2.java:71
com.realtime.crossfire.jxclient.gui.button.AbstractButton.newCharModel
final NewCharModel newCharModel
Definition: AbstractButton.java:79
com.realtime.crossfire.jxclient.gui.button.AbstractButton.commandList
final CommandList commandList
Definition: AbstractButton.java:73
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.button.AbstractButton2.textX
final int textX
Definition: AbstractButton2.java:83
com.realtime.crossfire.jxclient.gui.gui.TooltipManager
Definition: TooltipManager.java:33
com.realtime.crossfire.jxclient.gui.button.AbstractButton2.imageDown
final Image imageDown
Definition: AbstractButton2.java:64
com.realtime.crossfire.jxclient.gui.button.AbstractButton2.serialVersionUID
static final long serialVersionUID
Definition: AbstractButton2.java:52
com.realtime.crossfire.jxclient.gui.label.NewCharModel
Definition: NewCharModel.java:43
com.realtime.crossfire.jxclient.gui.button.AbstractButton2.getMaximumSize
Dimension getMaximumSize()
Definition: AbstractButton2.java:172
com.realtime.crossfire.jxclient.gui.button.AbstractButton2.getMinimumSizeInt
Dimension getMinimumSizeInt()
Definition: AbstractButton2.java:165
com.realtime.crossfire.jxclient.gui.gui
Definition: AbstractGUIElement.java:23
com.realtime.crossfire.jxclient.gui.gui.TooltipText
Definition: TooltipText.java:31
com.realtime.crossfire
com.realtime.crossfire.jxclient.gui.button.AbstractButton2.imageUp
final Image imageUp
Definition: AbstractButton2.java:58
com.realtime
com
com.realtime.crossfire.jxclient.gui.button.AbstractButton2.getTooltip
TooltipText getTooltip()
Definition: AbstractButton2.java:178
com.realtime.crossfire.jxclient.gui.gui.AbstractGUIElement.guiFactory
final GuiFactory guiFactory
Definition: AbstractGUIElement.java:48
com.realtime.crossfire.jxclient.gui.button.AbstractButton
Definition: AbstractButton.java:47
com.realtime.crossfire.jxclient.gui.button.AbstractButton.autoRepeat
final boolean autoRepeat
Definition: AbstractButton.java:67
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.button.AbstractButton2.font
final Font font
Definition: AbstractButton2.java:78