23 package com.realtime.crossfire.jxclient.gui.log;
32 import java.awt.Color;
33 import java.awt.Graphics;
34 import java.awt.Graphics2D;
35 import java.awt.GraphicsEnvironment;
36 import java.awt.Image;
37 import java.awt.Toolkit;
38 import java.awt.datatransfer.Clipboard;
39 import java.awt.datatransfer.StringSelection;
40 import java.awt.datatransfer.Transferable;
41 import java.awt.event.ActionListener;
42 import java.awt.event.MouseEvent;
43 import java.awt.font.FontRenderContext;
44 import java.awt.image.BufferedImage;
45 import java.util.Iterator;
46 import java.util.List;
47 import javax.swing.Timer;
48 import org.jetbrains.annotations.NotNull;
49 import org.jetbrains.annotations.Nullable;
103 private final Clipboard
clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
110 private final Clipboard
selection = Toolkit.getDefaultToolkit().getSystemSelection();
150 @SuppressWarnings(
"FieldCanBeLocal")
154 public void stateChanged() {
162 public int getHeight() {
163 return Math.max(1,
GUILog.this.getHeight());
175 public void lineAdded() {
180 public void lineReplaced() {
185 public void linesRemoved(@NotNull
final List<Line> lines) {
186 final int endPosition = lines.get(lines.size()-1).getEndPosition();
216 final FontRenderContext context;
217 final GraphicsEnvironment graphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();
218 final Graphics2D g = graphicsEnvironment.createGraphics(
new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB));
220 context = g.getFontRenderContext();
239 super.paintComponent(g);
241 g.setColor(
new Color(0, 0, 0, 0.0f));
242 g.fillRect(0, 0, getWidth(), getHeight());
253 if (y >= getHeight()) {
256 final int height = line.getHeight();
281 }
else if (distance > 0) {
318 public void setBounds(
final int x,
final int y,
final int width,
final int height) {
319 super.setBounds(x, y, width, height);
326 super.mousePressed(e);
328 if (
timer.isRunning()) {
336 super.mouseReleased(e);
338 if (
timer.isRunning()) {
346 super.mouseDragged(e);
350 if (!
timer.isRunning()) {
354 }
else if (e.getY() >= getHeight()) {
356 if (!
timer.isRunning()) {
362 if (
timer.isRunning()) {
370 super.mouseWheelMoved(wheelRotation);
455 if (this.selection !=
null) {
456 this.selection.setContents(
selection,
null);