Fixed #1003 - Text cut off in taxon editor
authorp.ciardelli <p.ciardelli@localhost>
Tue, 8 Sep 2009 14:30:10 +0000 (14:30 +0000)
committerp.ciardelli <p.ciardelli@localhost>
Tue, 8 Sep 2009 14:30:10 +0000 (14:30 +0000)
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/NameComposite.java
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/NameViewer.java

index 0261f1b6c2476c91a47ba5f1a2806bc4c004b2b2..f7311c76b787dd127f335505a3b0d6b240c4ed74 100644 (file)
@@ -12,13 +12,11 @@ package eu.etaxonomy.taxeditor.editor.name;
 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
@@ -148,7 +146,7 @@ public abstract class NameComposite<T extends TaxonBase> extends GroupedComposit
                this.taxonBase = taxonBase;\r
                \r
                createTextViewer();\r
-               createBorderSupport();\r
+//             createBorderSupport();\r
                createLineWrapSupport();\r
                createLineBreakListener();\r
 \r
@@ -294,7 +292,7 @@ public abstract class NameComposite<T extends TaxonBase> extends GroupedComposit
                \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
index 3e0d44791e83eb0cb519eb0cb7658ee76c6da60b..01bb241e1aea2f81862566feba634ac29fdd486c 100644 (file)
@@ -45,6 +45,7 @@ import org.eclipse.ui.texteditor.IWorkbenchActionDefinitionIds;
 \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
@@ -76,7 +77,9 @@ public class NameViewer extends SourceViewer {
                                \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
@@ -160,8 +163,9 @@ public class NameViewer extends SourceViewer {
                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
@@ -172,34 +176,50 @@ public class NameViewer extends SourceViewer {
         * \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