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.log;
00023
00024 import java.awt.Color;
00025 import java.awt.font.FontRenderContext;
00026 import java.util.ArrayList;
00027 import java.util.Collections;
00028 import java.util.Iterator;
00029 import java.util.List;
00030 import org.jetbrains.annotations.NotNull;
00031 import org.jetbrains.annotations.Nullable;
00032
00038 public class Line implements Iterable<Segment> {
00039
00044 @NotNull
00045 private final List<Segment> segments = new ArrayList<Segment>();
00046
00050 private int height = -1;
00051
00061 public void addSegment(@NotNull final String text, final boolean bold, final boolean italic, final boolean underline, @NotNull final FontID font, @Nullable final Color color) {
00062 segments.add(new TextSegment(text, bold, italic, underline, font, color));
00063 }
00064
00068 @NotNull
00069 @Override
00070 public Iterator<Segment> iterator() {
00071 return Collections.unmodifiableList(segments).iterator();
00072 }
00073
00078 @Nullable
00079 public Segment getLastSegment() {
00080 return segments.isEmpty() ? null : segments.get(segments.size()-1);
00081 }
00082
00086 public void removeLastSegment() {
00087 segments.remove(segments.size()-1);
00088 }
00089
00095 public int getHeight() {
00096 return height;
00097 }
00098
00103 public void setHeight(final int height) {
00104 this.height = height;
00105 }
00106
00115 public void updateAttributes(final int begin, final int end, final int y, @NotNull final Fonts fonts, @NotNull final FontRenderContext context) {
00116 for (int i = begin; i < end; i++) {
00117 final Segment segment = segments.get(i);
00118 segment.updateAttributes(fonts, context);
00119 segment.setY(y);
00120 }
00121 }
00122
00123 }