blob: 4d3b146a1dfa0061adae0f9837f6a854648d2597 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.uima.tools.cvd;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GraphicsConfiguration;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.text.Document;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyleContext;
/**
* Class comment for MultiAnnotViewerFrame goes here.
*
*
*/
public class MultiAnnotViewerFrame extends JFrame {
private static final long serialVersionUID = -920372876117526451L;
/**
* @throws java.awt.HeadlessException
*/
public MultiAnnotViewerFrame() {
super();
// TODO Auto-generated constructor stub
}
/**
* @param gc
*/
public MultiAnnotViewerFrame(GraphicsConfiguration gc) {
super(gc);
// TODO Auto-generated constructor stub
}
/**
* @param title
* @throws java.awt.HeadlessException
*/
public MultiAnnotViewerFrame(String title) {
super(title);
// TODO Auto-generated constructor stub
}
/**
* @param title
* @param gc
*/
public MultiAnnotViewerFrame(String title, GraphicsConfiguration gc) {
super(title, gc);
// TODO Auto-generated constructor stub
}
private JScrollPane scrollPane;
private JTextPane textPane;
public void init(String text, MarkupExtent[] extents) {
this.textPane = new JTextPane();
this.scrollPane = new JScrollPane(this.textPane);
this.setContentPane(this.scrollPane);
Document doc = this.textPane.getDocument();
Style def = StyleContext.getDefaultStyleContext().getStyle(StyleContext.DEFAULT_STYLE);
Style level0 = this.textPane.addStyle("level0", def);
Style level1 = this.textPane.addStyle("level1", level0);
StyleConstants.setBackground(level1, Color.green);
Style level2 = this.textPane.addStyle("level2", level0);
StyleConstants.setBackground(level2, Color.yellow);
Style level3 = this.textPane.addStyle("level3", level0);
StyleConstants.setBackground(level3, Color.orange);
Style[] styleArray = { level0, level1, level2, level3 };
System.out.println(" Creating the text.");
MarkupExtent e;
int level;
String s;
try {
for (int i = 0; i < extents.length; i++) {
e = extents[i];
level = e.getMarkupDepth();
if (level > 3) {
level = 3;
}
s = text.substring(e.getStart(), e.getEnd());
doc.insertString(doc.getLength(), s, styleArray[level]);
// System.out.println("Adding text: \"" + s + "\"\nat level: " +
// level);
}
} catch (Exception ex) {
ex.printStackTrace();
}
this.textPane.getCaret().setDot(0);
System.out.println(" Packing frame.");
this.pack();
System.out.println(" Showing frame.");
this.setVisible(true);
}
public void init(String text, AnnotationExtent[] extents, Dimension size) {
this.textPane = new JTextPane();
this.scrollPane = new JScrollPane(this.textPane);
if (size == null) {
System.out.println("Size is null.");
} else {
System.out.println("Setting size");
}
this.scrollPane.setPreferredSize(size);
this.setContentPane(this.scrollPane);
Document doc = this.textPane.getDocument();
AnnotationExtent e;
String s;
try {
for (int i = 0; i < extents.length; i++) {
e = extents[i];
s = text.substring(e.getStart(), e.getEnd());
doc.insertString(doc.getLength(), s, e.getStyle());
// System.out.println("Adding text: \"" + s + "\"\nat level: " +
// level);
}
} catch (Exception ex) {
ex.printStackTrace();
}
System.out.println(" Packing frame.");
this.pack();
System.out.println(" Showing frame.");
this.setVisible(true);
}
public void initHtml(String text, MarkupExtent[] extents) {
this.textPane = new JTextPane();
this.textPane.setContentType("text/html");
this.scrollPane = new JScrollPane(this.textPane);
this.setContentPane(this.scrollPane);
MarkupExtent e;
int level;
String s;
StringBuffer buf = new StringBuffer();
buf.append("<html><head></head><body>\n");
for (int i = 0; i < extents.length; i++) {
e = extents[i];
level = e.getMarkupDepth();
s = text.substring(e.getStart(), e.getEnd());
if (level > 3) {
level = 3;
}
switch (level) {
case 0: {
buf.append(s);
break;
}
case 1: {
buf.append("<font color=green>");
buf.append(s);
buf.append("</font>");
break;
}
case 2: {
buf.append("<font color=yellow>");
buf.append(s);
buf.append("</font>");
break;
}
case 3: {
buf.append("<font color=red>");
buf.append(s);
buf.append("</font>");
break;
}
}
}
buf.append("\n</body></html>");
this.textPane.setText(buf.toString());
// System.out.println(buf.toString());
this.pack();
this.setVisible(true);
}
}