blob: e6cfe2a1941062eb14fd0d451c360b129aff8cf0 [file] [log] [blame]
/*
* (c) Copyright 2001 MyCorporation.
* All Rights Reserved.
*/
package org.eclipse.update.ui.forms.internal.engine;
import java.util.Vector;
import java.util.StringTokenizer;
import org.eclipse.update.ui.forms.internal.HyperlinkSettings;
/**
* @version 1.0
* @author
*/
public class Paragraph implements IParagraph {
public static final String HTTP = "http://";
private Vector segments;
private boolean addVerticalSpace = true;
public Paragraph(boolean addVerticalSpace) {
this.addVerticalSpace = addVerticalSpace;
}
public int getIndent() {
return 0;
}
public boolean getAddVerticalSpace() {
return addVerticalSpace;
}
/*
* @see IParagraph#getSegments()
*/
public IParagraphSegment[] getSegments() {
if (segments == null)
return new IParagraphSegment[0];
return (IParagraphSegment[]) segments.toArray(
new IParagraphSegment[segments.size()]);
}
public void addSegment(IParagraphSegment segment) {
if (segments == null)
segments = new Vector();
segments.add(segment);
}
public void parseRegularText(String text, boolean expandURLs, HyperlinkSettings settings, String fontId) {
if (text.length()==0) return;
if (expandURLs) {
int loc = text.indexOf(HTTP);
if (loc == -1)
addSegment(new TextSegment(text, fontId));
else {
int textLoc = 0;
while (loc != -1) {
addSegment(new TextSegment(text.substring(textLoc, loc), fontId));
boolean added=false;
for (textLoc=loc; textLoc<text.length(); textLoc++) {
char c = text.charAt(textLoc);
if (Character.isSpaceChar(c)) {
addHyperlinkSegment(text.substring(loc, textLoc), settings, fontId);
added=true;
break;
}
}
if (!added) {
// there was no space - just end of text
addHyperlinkSegment(text.substring(loc), settings, fontId);
break;
}
loc = text.indexOf(HTTP, textLoc);
}
if (textLoc<text.length()) {
addSegment(new TextSegment(text.substring(textLoc), fontId));
}
}
}
else {
addSegment(new TextSegment(text, fontId));
}
}
private void addHyperlinkSegment(String text, HyperlinkSettings settings, String fontId) {
HyperlinkSegment hs = new HyperlinkSegment(text, settings, fontId);
hs.setWordWrapAllowed(false);
hs.setActionId(FormEngine.URL_HANDLER_ID);
addSegment(hs);
}
}