Files
HRMS/hrmsEjb/net/sf/jasperreports/engine/util/JRStyledText.java
2025-07-28 13:56:49 +05:30

101 lines
2.8 KiB
Java

package net.sf.jasperreports.engine.util;
import java.text.AttributedCharacterIterator;
import java.text.AttributedString;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
public class JRStyledText {
private StringBuffer sbuffer = new StringBuffer();
private List runs = new ArrayList();
private AttributedString attributedString = null;
private AttributedString awtAttributedString = null;
private Map globalAttributes;
public void append(String text) {
this.sbuffer.append(text);
this.attributedString = null;
this.awtAttributedString = null;
}
public void addRun(Run run) {
this.runs.add(run);
this.attributedString = null;
this.awtAttributedString = null;
}
public int length() {
return this.sbuffer.length();
}
public String getText() {
return this.sbuffer.toString();
}
public AttributedString getAttributedString() {
if (this.attributedString == null) {
this.attributedString = new AttributedString(this.sbuffer.toString());
for (int i = this.runs.size() - 1; i >= 0; i--) {
Run run = this.runs.get(i);
if (run.startIndex != run.endIndex && run.attributes != null)
this.attributedString.addAttributes(run.attributes, run.startIndex, run.endIndex);
}
}
return this.attributedString;
}
public AttributedString getAwtAttributedString() {
if (this.awtAttributedString == null) {
this.awtAttributedString = new AttributedString(this.sbuffer.toString());
for (int i = this.runs.size() - 1; i >= 0; i--) {
Run run = this.runs.get(i);
if (run.startIndex != run.endIndex && run.attributes != null && !run.attributes.isEmpty()) {
Iterator it = run.attributes.entrySet().iterator();
while (it.hasNext()) {
Map.Entry entry = it.next();
AttributedCharacterIterator.Attribute attribute = (AttributedCharacterIterator.Attribute)entry.getKey();
if (!(attribute instanceof JRTextAttribute)) {
Object value = entry.getValue();
this.awtAttributedString.addAttribute(attribute, value, run.startIndex, run.endIndex);
}
}
}
}
}
return this.awtAttributedString;
}
public List getRuns() {
return this.runs;
}
public static class Run {
public Map attributes = null;
public int startIndex = 0;
public int endIndex = 0;
public Run(Map attributes, int startIndex, int endIndex) {
this.attributes = attributes;
this.startIndex = startIndex;
this.endIndex = endIndex;
}
}
public void setGlobalAttributes(Map attributes) {
this.globalAttributes = attributes;
addRun(new Run(attributes, 0, length()));
}
public Map getGlobalAttributes() {
return this.globalAttributes;
}
}