00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 package com.realtime.crossfire.jxclient.gui.gui;
00023
00024 import java.awt.Component;
00025 import java.awt.Dimension;
00026 import java.awt.Font;
00027 import java.awt.FontMetrics;
00028 import org.jetbrains.annotations.NotNull;
00029 import org.jetbrains.annotations.Nullable;
00030
00035 public class GuiUtils {
00036
00040 private GuiUtils() {
00041 }
00042
00050 @NotNull
00051 public static Dimension getTextDimension(@NotNull final String text, @NotNull final FontMetrics fontMetrics) {
00052 final int width = fontMetrics.stringWidth(text);
00053 final int height = fontMetrics.getMaxAscent()+fontMetrics.getMaxDescent();
00054 return new Dimension(width, height);
00055 }
00056
00062 public static int getElementX(@NotNull final Component element) {
00063 final Component gui = getGui(element);
00064 int x = gui != null ? gui.getX() : 0;
00065 for (Component component = element; component != null && !(component instanceof Gui); component = component.getParent()) {
00066 x += component.getX();
00067 }
00068 return x;
00069 }
00070
00076 public static int getElementY(@NotNull final Component element) {
00077 final Component gui = getGui(element);
00078 int y = gui != null ? gui.getY() : 0;
00079 for (Component component = element; component != null && !(component instanceof Gui); component = component.getParent()) {
00080 y += component.getY();
00081 }
00082 return y;
00083 }
00084
00090 @Nullable
00091 public static Gui getGui(@NotNull final Component element) {
00092 for (Component component = element; component != null; component = component.getParent()) {
00093 if (component instanceof Gui) {
00094 return (Gui)component;
00095 }
00096 }
00097 return null;
00098 }
00099
00100 }