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.label;
00023
00024 import com.realtime.crossfire.jxclient.gui.gui.GUIElementListener;
00025 import com.realtime.crossfire.jxclient.gui.gui.Gui;
00026 import com.realtime.crossfire.jxclient.gui.gui.GuiUtils;
00027 import com.realtime.crossfire.jxclient.gui.gui.TooltipManager;
00028 import java.awt.Color;
00029 import java.awt.Component;
00030 import java.awt.Font;
00031 import java.awt.Point;
00032 import java.awt.event.MouseEvent;
00033 import org.jetbrains.annotations.NotNull;
00034 import org.jetbrains.annotations.Nullable;
00035
00040 public class GUIDialogTitle extends GUIOneLineLabel {
00041
00045 private static final long serialVersionUID = 1;
00046
00050 @NotNull
00051 private final JXCWindowRenderer windowRenderer;
00052
00057 @Nullable
00058 private Point offset = null;
00059
00071 public GUIDialogTitle(@NotNull final TooltipManager tooltipManager, @NotNull final JXCWindowRenderer windowRenderer, @NotNull final GUIElementListener elementListener, @NotNull final String name, @NotNull final Font textFont, @NotNull final Color textColor, @Nullable final Color backgroundColor, @NotNull final String title) {
00072 super(tooltipManager, elementListener, name, null, textFont, textColor, backgroundColor, Alignment.LEFT, title);
00073 this.windowRenderer = windowRenderer;
00074 }
00075
00079 @Override
00080 public void mousePressed(@NotNull final MouseEvent e) {
00081 super.mousePressed(e);
00082 final Component gui = GuiUtils.getGui(this);
00083 if (gui == null) {
00084 offset = null;
00085 return;
00086 }
00087
00088 final Point point = e.getLocationOnScreen();
00089 offset = new Point(gui.getX()-point.x, gui.getY()-point.y);
00090 }
00091
00095 @Override
00096 public void mouseReleased(@NotNull final MouseEvent e) {
00097 super.mouseReleased(e);
00098 moveTo(e);
00099 offset = null;
00100 }
00101
00105 @Override
00106 public void mouseDragged(@NotNull final MouseEvent e) {
00107 super.mouseDragged(e);
00108 moveTo(e);
00109 }
00110
00115 private void moveTo(@NotNull final MouseEvent e) {
00116 final Point tmpOffset = offset;
00117 if (tmpOffset == null) {
00118 return;
00119 }
00120
00121 final Gui gui = GuiUtils.getGui(this);
00122 if (gui == null || gui.isAutoSize()) {
00123 offset = null;
00124 return;
00125 }
00126
00127 final Point point = e.getLocationOnScreen();
00128 gui.showDialog(point.x+tmpOffset.x, point.y+tmpOffset.y, windowRenderer.getWindowWidth(), windowRenderer.getWindowHeight());
00129 }
00130
00131 }