import java.util.Set;\r
\r
import org.apache.log4j.Logger;\r
-import org.eclipse.swt.SWT;\r
import org.eclipse.swt.events.FocusAdapter;\r
import org.eclipse.swt.events.FocusEvent;\r
import org.eclipse.swt.graphics.Font;\r
import org.eclipse.swt.graphics.Image;\r
import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.Listener;\r
import org.eclipse.ui.views.properties.IPropertySource;\r
\r
import eu.etaxonomy.cdm.model.name.BotanicalName;\r
this.taxonBase = taxonBase;\r
\r
createTextViewer();\r
- createBorderSupport();\r
+// createBorderSupport();\r
createLineWrapSupport();\r
createLineBreakListener();\r
\r
\r
TaxonNameBase name = getParsedName() != null ? getParsedName() : getName();\r
\r
- textViewer.setShowParsingError(name);\r
+ textViewer.setShowParsingErrors(name);\r
}\r
\r
protected void handleSplitText(String text) {\r
\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
+import eu.etaxonomy.cdm.strategy.parser.ParserProblem;\r
import eu.etaxonomy.taxeditor.editor.ErrorAnnotation;\r
import eu.etaxonomy.taxeditor.editor.LineWrapSquigglesStrategy;\r
import eu.etaxonomy.taxeditor.editor.ViewerConfiguration;\r
\r
// Lay out the viewer's widgets\r
getControl().setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));\r
- getTextWidget().setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB));\r
+ TableWrapData twdata = new TableWrapData(TableWrapData.FILL_GRAB);\r
+ twdata.heightHint = 20;\r
+ getTextWidget().setLayoutData(twdata);\r
\r
// Default implentation adds ruler after the text widget, then \r
// uses a custom layout to display it before the text widget\r
Iterator<Annotation> annotations = this.getAnnotationModel().getAnnotationIterator();\r
while (annotations.hasNext()) {\r
Annotation annotation = annotations.next(); \r
- if (annotation.getType().equals(ErrorAnnotation.ERROR_TYPE))\r
+ if (annotation.getType().equals(ErrorAnnotation.ERROR_TYPE) || annotation.getType().equals(WarningAnnotation.WARNING_TYPE)) {\r
this.getAnnotationModel().removeAnnotation(annotation);\r
+ }\r
}\r
}\r
\r
* \r
* @param name\r
*/\r
- public void setShowParsingError(TaxonNameBase<?, ?> name) {\r
+ public void setShowParsingErrors(TaxonNameBase<?, ?> name) {\r
\r
// testMarkers();\r
\r
- if (!name.hasProblem()) {\r
- logger.debug(name.getProblemStarts());\r
- }\r
- \r
- String text = this.getTextWidget().getText();\r
- \r
- if (name.hasProblem() && text.length() > 0) {\r
-// logger.warn("Name: " + name.getTitleCache() + ", start: " + name.getProblemStarts()+ ", end: " + name.getProblemEnds());\r
- int start = name.getProblemStarts();\r
- int length = name.getProblemEnds() - start;\r
+ for (ParserProblem problem : name.getParsingProblems()) {\r
\r
- if (start == -1 || name.getProblemEnds() == -1) {\r
-// logger.warn("Start: " + start + ", End " + name.getProblemEnds());\r
- return;\r
- }\r
+// boolean hasProblem = name.getHasProblem();\r
\r
- // Don't let squigglies try to draw beyond the end of the text\r
- if (text.length() < start + length) {\r
- length = text.length() - start;\r
+// if (!hasProblem) {\r
+// logger.debug(name.getProblemStarts());\r
+// }\r
+// \r
+ String text = this.getTextWidget().getText();\r
+// \r
+// if (hasProblem && text.length() > 0) {\r
+ \r
+ int start = 0;\r
+ int length = 0;\r
+ if (text.length() >= 0) { \r
+ start = name.getProblemStarts();\r
+ length = name.getProblemEnds() - start;\r
+ \r
+ if (start == -1 || name.getProblemEnds() == -1) {\r
+ continue;\r
+ }\r
+ \r
+ // Don't let squigglies try to draw beyond the end of the text\r
+ if (text.length() < start + length) {\r
+ length = text.length() - start;\r
+ }\r
+ }\r
+\r
+ Annotation annotation = null;\r
+ if (problem.isWarning()) {\r
+ annotation = new WarningAnnotation(0, problem.toString());\r
}\r
+// if (problem.isError()) {\r
+// annotation = new ErrorAnnotation(0, problem.toString());\r
+// }\r
\r
this.getAnnotationModel().addAnnotation(\r
- new ErrorAnnotation(0, "Error parsing string '" + text + "'"), \r
+ annotation, \r
new Position(start, length));\r
+// }\r
}\r
}\r
\r