]> source.dussan.org Git - poi.git/commitdiff
XSSFCellStyle alignment methods and others + tests
authorPaolo Mottadelli <paolo@apache.org>
Sat, 5 Apr 2008 16:19:56 +0000 (16:19 +0000)
committerPaolo Mottadelli <paolo@apache.org>
Sat, 5 Apr 2008 16:19:56 +0000 (16:19 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@645129 13f79535-47bb-0310-9956-ffa450edef68

src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java
src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellAlignment.java
src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellBorder.java
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFCellStyle.java

index 84d9ed96c77b996140f503825ecd97e2a9417725..4fe095ded660e0b1821f76b92357488d6bb95731 100644 (file)
@@ -22,11 +22,17 @@ import org.apache.poi.ss.usermodel.Font;
 import org.apache.poi.ss.usermodel.StylesSource;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.xssf.model.StylesTable;
+import org.apache.poi.xssf.usermodel.extensions.XSSFCellAlignment;
 import org.apache.poi.xssf.usermodel.extensions.XSSFCellBorder;
 import org.apache.poi.xssf.usermodel.extensions.XSSFCellFill;
 import org.apache.poi.xssf.usermodel.extensions.XSSFCellBorder.BorderSides;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCellAlignment;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCellProtection;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXf;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.STBorderStyle.Enum;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.STBorderStyle;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.STHorizontalAlignment;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.STVerticalAlignment;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.STVerticalAlignment.Enum;
 
 
 public class XSSFCellStyle implements CellStyle {
@@ -36,6 +42,7 @@ public class XSSFCellStyle implements CellStyle {
        private XSSFCellBorder cellBorder;
        private XSSFCellFill cellFill;
        private XSSFFont font;
+       private XSSFCellAlignment cellAlignment;
        
        /**
         * Creates a Cell Style from the supplied parts
@@ -75,8 +82,11 @@ public class XSSFCellStyle implements CellStyle {
        }
        
        public short getAlignment() {
-               // TODO Auto-generated method stub
-               return 0;
+               return (short)getAlignmentEnum().intValue();
+       }
+       
+       public STHorizontalAlignment.Enum getAlignmentEnum() {
+               return getCellAlignment().getHorizontal();
        }
 
        public short getBorderBottom() {
@@ -135,8 +145,7 @@ public class XSSFCellStyle implements CellStyle {
        }
 
        public Font getFont(Workbook parentWorkbook) {
-               // TODO Auto-generated method stub
-               return null;
+               return getFont();
        }
        
        public Font getFont() {
@@ -147,18 +156,15 @@ public class XSSFCellStyle implements CellStyle {
        }
 
        public short getFontIndex() {
-               // TODO Auto-generated method stub
-               return 0;
+               return (short) getFontId();
        }
 
        public boolean getHidden() {
-               // TODO Auto-generated method stub
-               return false;
+               return getCellProtection().getHidden();
        }
 
        public short getIndention() {
-               // TODO Auto-generated method stub
-               return 0;
+               return (short) getCellAlignment().getIndent();
        }
 
        public short getIndex() {
@@ -171,8 +177,7 @@ public class XSSFCellStyle implements CellStyle {
        }
 
        public boolean getLocked() {
-               // TODO Auto-generated method stub
-               return false;
+               return getCellProtection().getLocked();
        }
 
        public short getRightBorderColor() {
@@ -180,8 +185,7 @@ public class XSSFCellStyle implements CellStyle {
        }
 
        public short getRotation() {
-               // TODO Auto-generated method stub
-               return 0;
+               return (short) getCellAlignment().getTextRotation();
        }
 
        public short getTopBorderColor() {
@@ -189,18 +193,23 @@ public class XSSFCellStyle implements CellStyle {
        }
 
        public short getVerticalAlignment() {
-               // TODO Auto-generated method stub
-               return 0;
+               return (short) getVerticalAlignmentEnum().intValue();
+       }
+       
+       public STVerticalAlignment.Enum getVerticalAlignmentEnum() {
+               return getCellAlignment().getVertical();
        }
 
        public boolean getWrapText() {
-               // TODO Auto-generated method stub
-               return false;
+               return getCellAlignment().getWrapText();
        }
 
        public void setAlignment(short align) {
-               // TODO Auto-generated method stub
-               
+               getCellAlignment().setHorizontal(STHorizontalAlignment.Enum.forInt(align));
+       }
+       
+       public void setAlignementEnum(STHorizontalAlignment.Enum align) {
+               getCellAlignment().setHorizontal(align);
        }
 
        public void setBorderBottom(short border) {
@@ -253,13 +262,11 @@ public class XSSFCellStyle implements CellStyle {
        }
 
        public void setHidden(boolean hidden) {
-               // TODO Auto-generated method stub
-               
+               getCellProtection().setHidden(hidden);
        }
 
        public void setIndention(short indent) {
-               // TODO Auto-generated method stub
-               
+               getCellAlignment().setIndent(indent);
        }
 
        public void setLeftBorderColor(short color) {
@@ -268,8 +275,7 @@ public class XSSFCellStyle implements CellStyle {
        }
 
        public void setLocked(boolean locked) {
-               // TODO Auto-generated method stub
-               
+               getCellProtection().setLocked(locked);
        }
 
        public void setRightBorderColor(short color) {
@@ -288,8 +294,11 @@ public class XSSFCellStyle implements CellStyle {
        }
 
        public void setVerticalAlignment(short align) {
-               // TODO Auto-generated method stub
-               
+               setVerticalAlignmentEnum(STVerticalAlignment.Enum.forInt(align));
+       }
+
+       public void setVerticalAlignmentEnum(STVerticalAlignment.Enum align) {
+               getCellAlignment().setVertical(align);
        }
 
        public void setWrapText(boolean wrapped) {
@@ -326,7 +335,7 @@ public class XSSFCellStyle implements CellStyle {
                return (int) cellStyleXf.getFillId();
        }
 
-       private Enum getBorderStyle(BorderSides side) {
+       private STBorderStyle.Enum getBorderStyle(BorderSides side) {
                return getCellBorder().getBorderStyle(side);
        }
 
@@ -340,5 +349,26 @@ public class XSSFCellStyle implements CellStyle {
                }
                return (int) cellStyleXf.getFontId();
        }
+
+       private CTCellProtection getCellProtection() {
+               if (cellXf.getProtection() == null) {
+                       CTCellProtection protection = cellXf.addNewProtection();
+               }
+               return cellXf.getProtection();
+       }
+
+       private XSSFCellAlignment getCellAlignment() {
+               if (this.cellAlignment == null) {
+                       this.cellAlignment = new XSSFCellAlignment(getCTCellAlignment());
+               }
+               return this.cellAlignment;
+       }
+
+       private CTCellAlignment getCTCellAlignment() {
+               if (cellXf.getAlignment() == null) {
+                       cellXf.setAlignment(CTCellAlignment.Factory.newInstance());
+               }
+               return cellXf.getAlignment();
+       }
        
 }
index 141383d20f558446585384d0ce36c8f2111b11b7..18656b61e8a34e754e5fbf7edc8cad5de9e98dfa 100644 (file)
@@ -18,7 +18,7 @@ package org.apache.poi.xssf.usermodel.extensions;
 
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCellAlignment;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.STHorizontalAlignment;
-import org.openxmlformats.schemas.spreadsheetml.x2006.main.STHorizontalAlignment.Enum;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.STVerticalAlignment;
 
 
 public class XSSFCellAlignment {
@@ -29,7 +29,21 @@ public class XSSFCellAlignment {
                this.cellAlignement = cellAlignment;
        }
        
-       public Enum getHorizontal() {
+       public STVerticalAlignment.Enum getVertical() {
+               if (cellAlignement.getVertical() == null) {
+                       cellAlignement.setVertical(STVerticalAlignment.TOP);
+               }
+               return cellAlignement.getVertical();
+       }
+       
+       public void setVertical(STVerticalAlignment.Enum vertical) {
+               cellAlignement.setVertical(vertical);
+       }
+       
+       public STHorizontalAlignment.Enum getHorizontal() {
+               if (cellAlignement.getHorizontal() == null) {
+                       cellAlignement.setHorizontal(STHorizontalAlignment.GENERAL);
+               }
                return cellAlignement.getHorizontal();
        }
        
@@ -44,4 +58,12 @@ public class XSSFCellAlignment {
        public void setIndent(long indent) {
                cellAlignement.setIndent(indent);
        }
+       
+       public long getTextRotation() {
+               return cellAlignement.getTextRotation();
+       }
+       
+       public boolean getWrapText() {
+               return cellAlignement.getWrapText();
+       }
 }
index bd260dd17aef6943ee6c6c45cb8a2c9b32aa3ac2..37e67f674384ca2012e828f94f1301d4153dd65a 100644 (file)
@@ -53,7 +53,7 @@ public class XSSFCellBorder {
                return borders.size() - 1;
        }
        
-       public Enum getBorderStyle(BorderSides side) {
+       public org.openxmlformats.schemas.spreadsheetml.x2006.main.STBorderStyle.Enum getBorderStyle(BorderSides side) {
                return getBorder(side).getStyle();
        }
        
index 542e7a4bbdd098a3d9c379a86e1a674a06f3ff4d..ef1bcf23a4969ce2d5d566649b7668bcce8d79b8 100644 (file)
@@ -23,6 +23,7 @@ import org.apache.poi.xssf.model.StylesTable;
 import org.apache.poi.xssf.usermodel.extensions.XSSFCellBorder;
 import org.apache.poi.xssf.usermodel.extensions.XSSFCellFill;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBorder;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCellXfs;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTColor;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFill;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFont;
@@ -30,7 +31,9 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPatternFill;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTStylesheet;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTXf;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.STBorderStyle;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.STHorizontalAlignment;
 import org.openxmlformats.schemas.spreadsheetml.x2006.main.STPatternType;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.STVerticalAlignment;
 
 
 public class TestXSSFCellStyle extends TestCase {
@@ -41,12 +44,14 @@ public class TestXSSFCellStyle extends TestCase {
        private CTFont ctFont;
        private CTXf cellStyleXf;
        private CTXf cellXf;
+       private CTCellXfs cellXfs;
        private XSSFCellStyle cellStyle;
+       private CTStylesheet ctStylesheet;
 
        public void setUp() {
                stylesTable = new StylesTable();
                
-               CTStylesheet ctStylesheet = stylesTable._getRawStylesheet();
+               ctStylesheet = stylesTable._getRawStylesheet();
                
                // Until we do XSSFBorder properly, cheat
                ctBorderA = CTBorder.Factory.newInstance();
@@ -69,7 +74,8 @@ public class TestXSSFCellStyle extends TestCase {
                
                cellStyleXf = ctStylesheet.addNewCellStyleXfs().addNewXf();
                cellStyleXf.setBorderId(0);
-               cellXf = ctStylesheet.addNewCellXfs().addNewXf();
+               cellXfs = ctStylesheet.addNewCellXfs();
+               cellXf = cellXfs.addNewXf();
                cellXf.setXfId(0);
                cellStyle = new XSSFCellStyle(cellXf, cellStyleXf, stylesTable);
        }
@@ -137,4 +143,44 @@ public class TestXSSFCellStyle extends TestCase {
        public void testGetFont() {
                assertNotNull(cellStyle.getFont());
        }
+       
+       public void testGetSetHidden() {
+               assertFalse(cellStyle.getHidden());
+               cellXf.getProtection().setHidden(true);
+               assertTrue(cellStyle.getHidden());
+               cellStyle.setHidden(false);
+               assertFalse(cellStyle.getHidden());
+       }
+       
+       public void testGetSetLocked() {
+               assertFalse(cellStyle.getLocked());
+               cellXf.getProtection().setLocked(true);
+               assertTrue(cellStyle.getLocked());
+               cellStyle.setLocked(false);
+               assertFalse(cellStyle.getLocked());
+       }
+       
+       public void testGetSetIndent() {
+               assertEquals((short)0, cellStyle.getIndention());
+               cellXf.getAlignment().setIndent(3);
+               assertEquals((short)3, cellStyle.getIndention());
+               cellStyle.setIndention((short) 13);
+               assertEquals((short)13, cellXf.getAlignment().getIndent());
+       }
+       
+       public void testGetSetAlignement() {
+               assertEquals(1, cellStyle.getAlignment());
+               cellStyle.setAlignment((short)2);
+               assertEquals(STHorizontalAlignment.LEFT, cellStyle.getAlignmentEnum());
+               cellStyle.setAlignementEnum(STHorizontalAlignment.JUSTIFY);
+               assertEquals((short)6, cellStyle.getAlignment());
+       }
+       
+       public void testGetSetVerticalAlignment() {
+               assertEquals(1, cellStyle.getVerticalAlignment());
+               cellStyle.setVerticalAlignment((short)2);
+               assertEquals(STVerticalAlignment.CENTER, cellStyle.getVerticalAlignmentEnum());
+               cellStyle.setVerticalAlignmentEnum(STVerticalAlignment.JUSTIFY);
+               assertEquals((short)4, cellStyle.getVerticalAlignment());
+       }
 }