You are viewing a plain text version of this content. The canonical link for it is here.
Posted to doxia-commits@maven.apache.org by vs...@apache.org on 2008/04/22 14:59:37 UTC

svn commit: r650503 - /maven/doxia/doxia-tools/trunk/doxia-ide/eclipse/plugins/org.apache.maven.doxia.ide.eclipse.twiki.ui/src/main/java/org/apache/maven/doxia/ide/eclipse/twiki/ui/editor/TWikiEditor.java

Author: vsiveton
Date: Tue Apr 22 05:59:31 2008
New Revision: 650503

URL: http://svn.apache.org/viewvc?rev=650503&view=rev
Log:
o added more color rules

Modified:
    maven/doxia/doxia-tools/trunk/doxia-ide/eclipse/plugins/org.apache.maven.doxia.ide.eclipse.twiki.ui/src/main/java/org/apache/maven/doxia/ide/eclipse/twiki/ui/editor/TWikiEditor.java

Modified: maven/doxia/doxia-tools/trunk/doxia-ide/eclipse/plugins/org.apache.maven.doxia.ide.eclipse.twiki.ui/src/main/java/org/apache/maven/doxia/ide/eclipse/twiki/ui/editor/TWikiEditor.java
URL: http://svn.apache.org/viewvc/maven/doxia/doxia-tools/trunk/doxia-ide/eclipse/plugins/org.apache.maven.doxia.ide.eclipse.twiki.ui/src/main/java/org/apache/maven/doxia/ide/eclipse/twiki/ui/editor/TWikiEditor.java?rev=650503&r1=650502&r2=650503&view=diff
==============================================================================
--- maven/doxia/doxia-tools/trunk/doxia-ide/eclipse/plugins/org.apache.maven.doxia.ide.eclipse.twiki.ui/src/main/java/org/apache/maven/doxia/ide/eclipse/twiki/ui/editor/TWikiEditor.java (original)
+++ maven/doxia/doxia-tools/trunk/doxia-ide/eclipse/plugins/org.apache.maven.doxia.ide.eclipse.twiki.ui/src/main/java/org/apache/maven/doxia/ide/eclipse/twiki/ui/editor/TWikiEditor.java Tue Apr 22 05:59:31 2008
@@ -19,12 +19,16 @@
  * under the License.
  */
 
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.util.ArrayList;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.StringTokenizer;
 
+import javax.swing.text.html.HTML.Tag;
+
 import org.apache.maven.doxia.ide.eclipse.common.ui.ColorManager;
 import org.apache.maven.doxia.ide.eclipse.common.ui.CommonPlugin;
 import org.apache.maven.doxia.ide.eclipse.common.ui.actions.AbstractBoldAction;
@@ -64,7 +68,10 @@
 import org.eclipse.jface.text.rules.SingleLineRule;
 import org.eclipse.jface.text.rules.Token;
 import org.eclipse.jface.text.source.ISourceViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.graphics.Font;
 import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.editors.text.TextEditor;
 import org.eclipse.ui.editors.text.TextSourceViewerConfiguration;
 import org.eclipse.ui.texteditor.IDocumentProvider;
@@ -204,6 +211,9 @@
     class TWikiSourceViewerConfiguration
         extends AbstractTextSourceViewerConfiguration
     {
+        /**
+         * Default constructor.
+         */
         public TWikiSourceViewerConfiguration()
         {
             super();
@@ -246,9 +256,12 @@
         class AptURLHyperlinkDetector
             extends URLHyperlinkDetector
         {
-
+            /**
+             * Default constructor.
+             */
             public AptURLHyperlinkDetector()
             {
+                super();
             }
 
             @Override
@@ -355,6 +368,9 @@
     class TWikiScanner
         extends AbstractTextScanner
     {
+        /**
+         * Default constructor.
+         */
         public TWikiScanner()
         {
             super();
@@ -363,29 +379,105 @@
         @Override
         public List<IRule> getRules()
         {
-            List<IRule> rules = new ArrayList<IRule>();
-
-            // TODO add more rules and review color!
+            List<IRule> rules = new LinkedList<IRule>();
 
             // horizontal rule
-            rules.add( new EndOfLineRule( "-------", new Token( new TextAttribute( ColorManager.getInstance()
-                .getColor( ColorManager.LINK ) ) ) ) );
+            rules.add( new EndOfLineRule( "-------", AbstractTextScanner.SinkToken.HORIZONTALRULE_TOKEN ) );
+
+            // sections title rule
+            rules.add( new EndOfLineRule( "---+++++", SinkToken.SECTIONTITLE5_TOKEN ) );
+            rules.add( new EndOfLineRule( "---++++", SinkToken.SECTIONTITLE4_TOKEN ) );
+            rules.add( new EndOfLineRule( "---+++", SinkToken.SECTIONTITLE3_TOKEN ) );
+            rules.add( new EndOfLineRule( "---++", SinkToken.SECTIONTITLE2_TOKEN ) );
+            rules.add( new EndOfLineRule( "---+", SinkToken.SECTIONTITLE1_TOKEN ) );
 
             // verbatim rules
-            rules.add( new MultiLineRule( "<verbatim>", "</verbatim>", new Token( new TextAttribute( ColorManager
-                .getInstance().getColor( ColorManager.STRING ) ) ) ) );
+            rules.add( new MultiLineRule( "<verbatim>", "</verbatim>", SinkToken.VERBATIM_TOKEN ) );
 
-            // monospaced rule
-            rules.add( new SingleLineRule( "=", "=", monospacedToken ) );
+            // bold rule or list
+            rules.add( new SingleLineRule( "*", " ", SinkToken.BOLD_TOKEN ) );
 
-            // bold rule
-            rules.add( new SingleLineRule( "*", "*", boldToken ) );
+            // bold + italic rule
+            rules.add( new SingleLineRule( "__", "__",
+                                           new Token( new TextAttribute( ColorManager.SinkColor.ITALIC_COLOR, null,
+                                                                         SWT.ITALIC + SWT.BOLD ) ) ) );
 
             // italic rule
-            rules.add( new SingleLineRule( "_", "_", italicToken ) );
+            rules.add( new SingleLineRule( "_", "_", SinkToken.ITALIC_TOKEN ) );
+
+            // bold + fixed rule
+            rules.add( new SingleLineRule( "==", "==",
+                                           new Token( new TextAttribute( ColorManager.SinkColor.MONOSPACED_COLOR, null,
+                                                                         SWT.NORMAL, new Font( Display.getDefault(),
+                                                                                               "Courier", Display
+                                                                                                   .getDefault()
+                                                                                                   .getSystemFont()
+                                                                                                   .getFontData()[0]
+                                                                                                   .getHeight(),
+                                                                                               SWT.BOLD ) ) ) ) );
+
+            // monospaced rule
+            rules.add( new SingleLineRule( "=", "=", SinkToken.MONOSPACED_TOKEN ) );
+
+            // numbered list rule
+            // Multiple of three spaces, a type character, a dot, and another space.
+            rules.add( new SingleLineRule( "   1", ". ", SinkToken.NUMBEREDLISTITEM_TOKEN ) );
+            // lower case
+            rules.add( new SingleLineRule( "   a", ". ", SinkToken.NUMBEREDLISTITEM_TOKEN ) );
+            // upper case
+            rules.add( new SingleLineRule( "   A", ". ", SinkToken.NUMBEREDLISTITEM_TOKEN ) );
+            // roman lower case
+            rules.add( new SingleLineRule( "   i", ". ", SinkToken.NUMBEREDLISTITEM_TOKEN ) );
+            // roman upper case
+            rules.add( new SingleLineRule( "   I", ". ", SinkToken.NUMBEREDLISTITEM_TOKEN ) );
+
+            // definition list rule
+            // Three spaces, a dollar sign, the term, a colon, a space, followed by the definition.
+            rules.add( new SingleLineRule( "   $", " ", SinkToken.DEFINITIONLIST_TOKEN ) );
+
+            // table rule
+            rules.add( new EndOfLineRule( "|", SinkToken.TABLE_TOKEN ) );
 
             // link rule
-            rules.add( new SingleLineRule( "[[", "]]", linkToken ) );
+            rules.add( new SingleLineRule( "![[", "]]", DEFAULT_TOKEN ) );
+            rules.add( new SingleLineRule( "[[", "]]", SinkToken.LINK_TOKEN ) );
+            // inline links
+            rules.add( new SingleLineRule( "http://", " ", SinkToken.LINK_TOKEN ) );
+            rules.add( new SingleLineRule( "https://", " ", SinkToken.LINK_TOKEN ) );
+            rules.add( new SingleLineRule( "ftp://", " ", SinkToken.LINK_TOKEN ) );
+            rules.add( new SingleLineRule( "gopher://", " ", SinkToken.LINK_TOKEN ) );
+            rules.add( new SingleLineRule( "news://", " ", SinkToken.LINK_TOKEN ) );
+            rules.add( new SingleLineRule( "file://", " ", SinkToken.LINK_TOKEN ) );
+            rules.add( new SingleLineRule( "telnet://", " ", SinkToken.LINK_TOKEN ) );
+            rules.add( new SingleLineRule( "mailto:", " ", SinkToken.LINK_TOKEN ) );
+
+            // anchor rule
+            rules.add( new SingleLineRule( "#", " ", SinkToken.ANCHOR_TOKEN ) );
+
+            // TODO better unsupported
+            // some other advanced formatting unsupported by Doxia
+            rules.add( new MultiLineRule( "<noautolink>", "</noautolink>", UNSUPPORTED_TOKEN ) );
+            // Unsupported HTML tags
+            try
+            {
+                Field[] fields = Tag.class.getDeclaredFields();
+                for ( int i = 0; i < fields.length; i++ )
+                {
+                    Field field = fields[i];
+                    if ( field.getModifiers() == ( Modifier.PUBLIC + Modifier.STATIC + Modifier.FINAL ) )
+                    {
+                        String fieldValue = field.get( null ).toString();
+                        rules.add( new MultiLineRule( "<" + fieldValue + ">", "</" + fieldValue + ">",
+                                                      UNSUPPORTED_TOKEN ) );
+                    }
+                }
+            }
+            catch ( Exception e )
+            {
+                // nop
+            }
+            // TWiki Variables
+            rules.add( new SingleLineRule( "%", "%", UNSUPPORTED_TOKEN ) );
 
             return rules;
         }
@@ -394,6 +486,9 @@
     class TWikiContentAssistProcessor
         extends AbstractContentAssistProcessor
     {
+        /**
+         * Default constructor.
+         */
         public TWikiContentAssistProcessor()
         {
             super();