Index: fo/FOElementMapping.java
===================================================================
RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/fo/FOElementMapping.java,v
retrieving revision 1.4
diff -w -u -r1.4 FOElementMapping.java
--- fo/FOElementMapping.java	17 Jul 2003 17:31:28 -0000	1.4
+++ fo/FOElementMapping.java	9 Nov 2003 15:09:55 -0000
@@ -124,7 +124,7 @@
             foObjs.put("table", new Ta());
             foObjs.put("table-column", new TC());
             foObjs.put("table-caption", new TCaption());
-            foObjs.put("table-header", new TB());
+            foObjs.put("table-header", new TH());
             foObjs.put("table-footer", new TB());
             foObjs.put("table-body", new TB());
             foObjs.put("table-row", new TR());
@@ -371,6 +371,12 @@
     static class TB extends ElementMapping.Maker {
         public FONode make(FONode parent) {
             return new org.apache.fop.fo.flow.TableBody(parent);
+        }
+    }
+    
+    static class TH extends ElementMapping.Maker {
+        public FONode make(FONode parent) {
+            return new org.apache.fop.fo.flow.TableHeader(parent);
         }
     }
 
Index: render/rtf/RTFHandler.java
===================================================================
RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/render/rtf/RTFHandler.java,v
retrieving revision 1.4
diff -w -u -r1.4 RTFHandler.java
--- render/rtf/RTFHandler.java	8 Nov 2003 19:58:03 -0000	1.4
+++ render/rtf/RTFHandler.java	9 Nov 2003 15:09:59 -0000
@@ -73,6 +73,7 @@
 import org.apache.fop.fo.flow.TableColumn;
 import org.apache.fop.fo.flow.TableBody;
 import org.apache.fop.fo.flow.TableCell;
+import org.apache.fop.fo.flow.TableHeader;
 import org.apache.fop.fo.flow.TableRow;
 import org.apache.fop.fo.pagination.Flow;
 import org.apache.fop.fo.pagination.PageSequence;
@@ -81,6 +82,7 @@
 import org.apache.fop.fo.Property;
 import org.apache.fop.fo.LengthProperty;
 import org.apache.fop.apps.Document;
+import org.apache.fop.render.rtf.rtflib.rtfdoc.ITableAttributes;
 import org.apache.fop.render.rtf.rtflib.rtfdoc.IRtfAfterContainer;
 import org.apache.fop.render.rtf.rtflib.rtfdoc.IRtfBeforeContainer;
 import org.apache.fop.render.rtf.rtflib.rtfdoc.IRtfTextrunContainer;
@@ -117,8 +119,6 @@
     private final Logger log = new ConsoleLogger();
     private RtfSection sect;
     private RtfDocumentArea docArea;
-    //private RtfParagraph para; //never used
-    private boolean warned = false;
     private boolean bPrevHeaderSpecified = false;//true, if there has been a
                                                  //header in any page-sequence
     private boolean bPrevFooterSpecified = false;//true, if there has been a
@@ -242,11 +242,6 @@
                     contAfter.newAfter(attr);
                 }
 
-                // print ALPHA_WARNING
-                if (!warned) {
-                    sect.newParagraph().newText(ALPHA_WARNING);
-                    warned = true;
-                }
             } else if (fl.getFlowName().equals("xsl-region-before")) {
                 bHeaderSpecified = true;
                 bPrevHeaderSpecified = true;
@@ -529,10 +524,12 @@
             final RtfTable tbl = (RtfTable)builderContext.getContainer(RtfTable.class,
                     true, null);
 
-            RtfAttributes tblAttribs = tbl.getRtfAttributes();
-            RtfAttributes tblRowAttribs = new RtfAttributes();
             RtfAttributes atts = TableAttributesConverter.convertRowAttributes(tr.properties,
                     tbl.getHeaderAttribs());
+                    
+            if(tr.getParent() instanceof TableHeader) {
+                atts.set(ITableAttributes.ATTR_HEADER);
+            }
 
             builderContext.pushContainer(tbl.newTableRow(atts));
 
Index: render/rtf/rtflib/rtfdoc/ITableAttributes.java
===================================================================
RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/render/rtf/rtflib/rtfdoc/ITableAttributes.java,v
retrieving revision 1.3
diff -w -u -r1.3 ITableAttributes.java
--- render/rtf/rtflib/rtfdoc/ITableAttributes.java	8 Nov 2003 19:58:03 -0000	1.3
+++ render/rtf/rtflib/rtfdoc/ITableAttributes.java	9 Nov 2003 15:09:59 -0000
@@ -75,6 +75,9 @@
     /** half the space between the cells of a table row in twips */
     String ATTR_RTF_15_TRGAPH = "trgaph";
     String ATTR_ROW_LEFT_INDENT = "trleft";
+    
+    /** table row header */
+    public final String ATTR_HEADER = "trhdr";
 
 // RTF 1.6 Row and table attributes
     /** table row padding, top */
Index: render/rtf/rtflib/rtfdoc/RtfJforCmd.java
===================================================================
RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/render/rtf/rtflib/rtfdoc/RtfJforCmd.java,v
retrieving revision 1.1
diff -w -u -r1.1 RtfJforCmd.java
--- render/rtf/rtflib/rtfdoc/RtfJforCmd.java	4 Nov 2003 23:59:11 -0000	1.1
+++ render/rtf/rtflib/rtfdoc/RtfJforCmd.java	9 Nov 2003 15:10:00 -0000
@@ -100,9 +100,9 @@
             final String cmd = (String)it.next();
 
             if (cmd.equals(PARA_KEEP_ON)) {
-                paragraphKeeptogetherContext.keepTogetherOpen();
+                ParagraphKeeptogetherContext.keepTogetherOpen();
             } else if (cmd.equals(PARA_KEEP_OFF)) {
-                  paragraphKeeptogetherContext.keepTogetherClose();
+                ParagraphKeeptogetherContext.keepTogetherClose();
             } else {
 //                this.getRtfFile ().getLog ().logInfo
 //                        ("JFOR-CMD ignored, command not recognised:"+cmd);
Index: render/rtf/rtflib/rtfdoc/RtfTableRow.java
===================================================================
RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/render/rtf/rtflib/rtfdoc/RtfTableRow.java,v
retrieving revision 1.3
diff -w -u -r1.3 RtfTableRow.java
--- render/rtf/rtflib/rtfdoc/RtfTableRow.java	8 Nov 2003 19:58:03 -0000	1.3
+++ render/rtf/rtflib/rtfdoc/RtfTableRow.java	9 Nov 2003 15:10:01 -0000
@@ -180,6 +180,7 @@
         final RtfTable parentTable = (RtfTable) parent;
         adjustBorderProperties(parentTable);
 
+        writeAttributes(attrib,new String[]{ITableAttributes.ATTR_HEADER});
         writeAttributes(attrib, ITableAttributes.ROW_BORDER);
         writeAttributes(attrib, ITableAttributes.CELL_BORDER);
         writeAttributes(attrib, BorderAttributesConverter.BORDERS);
Index: render/rtf/rtflib/testdocs/MergedTableCells.java
===================================================================
RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/render/rtf/rtflib/testdocs/MergedTableCells.java,v
retrieving revision 1.1
diff -w -u -r1.1 MergedTableCells.java
--- render/rtf/rtflib/testdocs/MergedTableCells.java	4 Nov 2003 23:59:13 -0000	1.1
+++ render/rtf/rtflib/testdocs/MergedTableCells.java	9 Nov 2003 15:10:01 -0000
@@ -84,16 +84,16 @@
         {
             RtfTableRow r = tbl.newTableRow();
             RtfTableCell c = r.newTableCell(80 * MM_TO_TWIPS);
-            c.setHMerge(c.MERGE_START);
+            c.setHMerge(RtfTableCell.MERGE_START);
             c.newParagraph().newText("cell 0,0, width 80mm, merge start, "
                     + "followed by two merged cells totalling 80mm width.");
 
             c = r.newTableCell(40 * MM_TO_TWIPS);
-            c.setHMerge(c.MERGE_WITH_PREVIOUS);
+            c.setHMerge(RtfTableCell.MERGE_WITH_PREVIOUS);
             c.newParagraph().newText("THIS IS IN AN HMERGED CELL, MUST NOT APPEAR IN RTF DOCUMENT");
 
             c = r.newTableCell(40 * MM_TO_TWIPS);
-            c.setHMerge(c.MERGE_WITH_PREVIOUS);
+            c.setHMerge(RtfTableCell.MERGE_WITH_PREVIOUS);
             c.newParagraph().newText("THIS IS IN AN HMERGED CELL, MUST NOT APPEAR IN RTF DOCUMENT");
         }
 
@@ -101,13 +101,13 @@
         {
             RtfTableRow r = tbl.newTableRow();
             RtfTableCell c = r.newTableCell(40 * MM_TO_TWIPS);
-            c.setVMerge(c.MERGE_START);
+            c.setVMerge(RtfTableCell.MERGE_START);
             c.newParagraph().newText("cell 1,0, vertical merge start, 40mm, spans three rows.");
 
             r.newTableCell(80 * MM_TO_TWIPS).newParagraph().newText("cell 1,1, no merge, 80mm");
 
             c = r.newTableCell(40 * MM_TO_TWIPS);
-            c.setVMerge(c.MERGE_START);
+            c.setVMerge(RtfTableCell.MERGE_START);
             c.newParagraph().newText("cell 1,2, vertical merge start, 40mm, spans two rows.");
         }
 
@@ -115,14 +115,14 @@
         {
             RtfTableRow r = tbl.newTableRow();
             RtfTableCell c = r.newTableCell(40 * MM_TO_TWIPS);
-            c.setVMerge(c.MERGE_WITH_PREVIOUS);
+            c.setVMerge(RtfTableCell.MERGE_WITH_PREVIOUS);
             c.newParagraph().newText("cell 2,0, VMERGED CELL, MUST NOT APPEAR IN RTF DOCUMENT");
 
             r.newTableCell(40 * MM_TO_TWIPS).newParagraph().newText("cell 2,1, no merge, 40mm");
             r.newTableCell(40 * MM_TO_TWIPS).newParagraph().newText("cell 2,2, no merge, 40mm");
 
             c = r.newTableCell(40 * MM_TO_TWIPS);
-            c.setVMerge(c.MERGE_WITH_PREVIOUS);
+            c.setVMerge(RtfTableCell.MERGE_WITH_PREVIOUS);
             c.newParagraph().newText("cell 2,3, VMERGED CELL, MUST NOT APPEAR IN RTF DOCUMENT");
         }
 
@@ -130,7 +130,7 @@
         {
             RtfTableRow r = tbl.newTableRow();
             RtfTableCell c = r.newTableCell(40 * MM_TO_TWIPS);
-            c.setVMerge(c.MERGE_WITH_PREVIOUS);
+            c.setVMerge(RtfTableCell.MERGE_WITH_PREVIOUS);
             c.newParagraph().newText("cell 3,0, VMERGED CELL, MUST NOT APPEAR IN RTF DOCUMENT");
 
             r.newTableCell(10 * MM_TO_TWIPS).newParagraph().newText("cell 3,1, no merge, 10mm");
