--- /dev/null
+/* ====================================================================
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+==================================================================== */
+
+package org.apache.poi.ss.usermodel;
+
+/**
+ * The enumeration value indicating reading order of a cell,
+ * i.e., whether the reading order is Context(Default), Left To Right or Right To Left
+ */
+public enum ReadingOrder {
+ /**
+ * The reading order is Context(Default).
+ */
+ CONTEXT,
+
+ /**
+ * The reading order is Left To Right.
+ */
+ LEFT_TO_RIGHT,
+
+ /**
+ * The reading order is Right To Left.
+ */
+ RIGHT_TO_LEFT;
+
+ public short getCode() {
+ return (short) ordinal();
+ }
+
+ public static ReadingOrder forLong(long code) {
+ if (code < 0 || code >= values().length) {
+ throw new IllegalArgumentException("Invalid ReadingOrder code: " + code);
+ }
+ return values()[(int)code];
+ }
+}
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.IndexedColors;
+import org.apache.poi.ss.usermodel.ReadingOrder;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.util.Internal;
import org.apache.poi.xssf.model.StylesTable;
}
return ct;
}
+
+ /**
+ * Set reading order for the cell
+ *
+ * @param order - the reading order
+ */
+ public void setReadingOrder(ReadingOrder order) {
+ getCellAlignment().setReadingOrder(order);
+ }
+
+ /**
+ * Get reading order of the cell
+ *
+ * @return ReadingOrder - the reading order
+ */
+ public ReadingOrder getReadingOrder() {
+ return getCellAlignment().getReadingOrder();
+ }
/**
* Get a <b>copy</b> of the currently used CTBorder, if none is used, return a new instance.
package org.apache.poi.xssf.usermodel.extensions;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
+import org.apache.poi.ss.usermodel.ReadingOrder;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.util.Internal;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCellAlignment;
public void setHorizontal(HorizontalAlignment align) {
cellAlignement.setHorizontal(STHorizontalAlignment.Enum.forInt(align.ordinal() + 1));
}
-
+
+ /**
+ * Set the type of reading order for the cell
+ *
+ * @param order - the type of reading order
+ * @see ReadingOrder
+ */
+ public void setReadingOrder(ReadingOrder order) {
+ cellAlignement.setReadingOrder(order.getCode());
+ }
+
+ /**
+ * Get the reading order for the cell
+ *
+ * @return the value of reading order
+ * @see ReadingOrder
+ */
+ public ReadingOrder getReadingOrder() {
+ if(cellAlignement != null && cellAlignement.isSetReadingOrder()) {
+ return ReadingOrder.forLong(cellAlignement.getReadingOrder());
+ }
+ return ReadingOrder.CONTEXT;
+ }
+
/**
* Get the number of spaces to indent the text in the cell
*
assertEquals(HorizontalAlignment.CENTER, cellStyle.getAlignmentEnum());
assertEquals(STHorizontalAlignment.CENTER, cellStyle.getCellAlignment().getCTCellAlignment().getHorizontal());
}
+
+ @Test
+ public void testGetSetReadingOrder() {
+ assertEquals(ReadingOrder.CONTEXT, cellStyle.getReadingOrder());
+ assertEquals(ReadingOrder.CONTEXT.getCode(), cellStyle.getCellAlignment().getCTCellAlignment().getReadingOrder());
+
+ cellStyle.setReadingOrder(ReadingOrder.LEFT_TO_RIGHT);
+ assertEquals(ReadingOrder.LEFT_TO_RIGHT, cellStyle.getReadingOrder());
+ assertEquals(ReadingOrder.LEFT_TO_RIGHT.getCode(), cellStyle.getCellAlignment().getCTCellAlignment().getReadingOrder());
+
+ cellStyle.setReadingOrder(ReadingOrder.RIGHT_TO_LEFT);
+ assertEquals(ReadingOrder.RIGHT_TO_LEFT, cellStyle.getReadingOrder());
+ assertEquals(ReadingOrder.RIGHT_TO_LEFT.getCode(), cellStyle.getCellAlignment().getCTCellAlignment().getReadingOrder());
+
+ cellStyle.setReadingOrder(ReadingOrder.CONTEXT);
+ assertEquals(ReadingOrder.CONTEXT, cellStyle.getReadingOrder());
+ assertEquals(ReadingOrder.CONTEXT.getCode(), cellStyle.getCellAlignment().getCTCellAlignment().getReadingOrder());
+ }
@SuppressWarnings("deprecation")
@Test