You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

XSSFBorderFormatting.java 12KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369
  1. /* ====================================================================
  2. Licensed to the Apache Software Foundation (ASF) under one or more
  3. contributor license agreements. See the NOTICE file distributed with
  4. this work for additional information regarding copyright ownership.
  5. The ASF licenses this file to You under the Apache License, Version 2.0
  6. (the "License"); you may not use this file except in compliance with
  7. the License. You may obtain a copy of the License at
  8. http://www.apache.org/licenses/LICENSE-2.0
  9. Unless required by applicable law or agreed to in writing, software
  10. distributed under the License is distributed on an "AS IS" BASIS,
  11. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. See the License for the specific language governing permissions and
  13. limitations under the License.
  14. ==================================================================== */
  15. package org.apache.poi.xssf.usermodel;
  16. import org.apache.poi.ss.usermodel.BorderFormatting;
  17. import org.apache.poi.ss.usermodel.BorderStyle;
  18. import org.apache.poi.ss.usermodel.Color;
  19. import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBorder;
  20. import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBorderPr;
  21. import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTColor;
  22. import org.openxmlformats.schemas.spreadsheetml.x2006.main.STBorderStyle;
  23. /**
  24. * XSSF high level representation for Border Formatting component
  25. * of Conditional Formatting settings
  26. */
  27. public class XSSFBorderFormatting implements BorderFormatting {
  28. IndexedColorMap _colorMap;
  29. CTBorder _border;
  30. /*package*/ XSSFBorderFormatting(CTBorder border, IndexedColorMap colorMap) {
  31. _border = border;
  32. _colorMap = colorMap;
  33. }
  34. /**
  35. * @deprecated POI 3.15. Use {@link #getBorderBottomEnum()}.
  36. * This method will return an BorderStyle enum in the future.
  37. */
  38. @Override
  39. public short getBorderBottom() {
  40. return getBorderBottomEnum().getCode();
  41. }
  42. /**
  43. * @since POI 3.15
  44. */
  45. @Override
  46. public BorderStyle getBorderBottomEnum() {
  47. STBorderStyle.Enum ptrn = _border.isSetBottom() ? _border.getBottom().getStyle() : null;
  48. return ptrn == null ? BorderStyle.NONE : BorderStyle.valueOf((short)(ptrn.intValue() - 1));
  49. }
  50. /**
  51. * @deprecated POI 3.15. Use {@link #getBorderDiagonalEnum()}.
  52. * This method will return an BorderStyle enum in the future.
  53. */
  54. @Override
  55. public short getBorderDiagonal() {
  56. return getBorderDiagonalEnum().getCode();
  57. }
  58. /**
  59. * @since POI 3.15
  60. */
  61. @Override
  62. public BorderStyle getBorderDiagonalEnum() {
  63. STBorderStyle.Enum ptrn = _border.isSetDiagonal() ? _border.getDiagonal().getStyle() : null;
  64. return ptrn == null ? BorderStyle.NONE : BorderStyle.valueOf((short)(ptrn.intValue() - 1));
  65. }
  66. /**
  67. * @deprecated POI 3.15. Use {@link #getBorderLeftEnum()}.
  68. * This method will return an BorderStyle enum in the future.
  69. */
  70. @Override
  71. public short getBorderLeft() {
  72. return getBorderLeftEnum().getCode();
  73. }
  74. /**
  75. * @since POI 3.15
  76. */
  77. @Override
  78. public BorderStyle getBorderLeftEnum() {
  79. STBorderStyle.Enum ptrn = _border.isSetLeft() ? _border.getLeft().getStyle() : null;
  80. return ptrn == null ? BorderStyle.NONE : BorderStyle.valueOf((short)(ptrn.intValue() - 1));
  81. }
  82. /**
  83. * @deprecated POI 3.15. Use {@link #getBorderRightEnum()}.
  84. * This method will return an BorderStyle enum in the future.
  85. */
  86. @Override
  87. public short getBorderRight() {
  88. return getBorderRightEnum().getCode();
  89. }
  90. /**
  91. * @since POI 3.15
  92. */
  93. @Override
  94. public BorderStyle getBorderRightEnum() {
  95. STBorderStyle.Enum ptrn = _border.isSetRight() ? _border.getRight().getStyle() : null;
  96. return ptrn == null ? BorderStyle.NONE : BorderStyle.valueOf((short)(ptrn.intValue() - 1));
  97. }
  98. /**
  99. * @deprecated POI 3.15. Use {@link #getBorderTopEnum()}.
  100. * This method will return an BorderStyle enum in the future.
  101. */
  102. @Override
  103. public short getBorderTop() {
  104. return getBorderTopEnum().getCode();
  105. }
  106. /**
  107. * @since POI 3.15
  108. */
  109. @Override
  110. public BorderStyle getBorderTopEnum() {
  111. STBorderStyle.Enum ptrn = _border.isSetTop() ? _border.getTop().getStyle() : null;
  112. return ptrn == null ? BorderStyle.NONE : BorderStyle.valueOf((short)(ptrn.intValue() - 1));
  113. }
  114. @Override
  115. public XSSFColor getBottomBorderColorColor() {
  116. if(!_border.isSetBottom()) return null;
  117. CTBorderPr pr = _border.getBottom();
  118. return new XSSFColor(pr.getColor(), _colorMap);
  119. }
  120. @Override
  121. public short getBottomBorderColor() {
  122. XSSFColor color = getBottomBorderColorColor();
  123. if (color == null) return 0;
  124. return color.getIndexed();
  125. }
  126. @Override
  127. public XSSFColor getDiagonalBorderColorColor() {
  128. if(!_border.isSetDiagonal()) return null;
  129. CTBorderPr pr = _border.getDiagonal();
  130. return new XSSFColor(pr.getColor(), _colorMap);
  131. }
  132. @Override
  133. public short getDiagonalBorderColor() {
  134. XSSFColor color = getDiagonalBorderColorColor();
  135. if (color == null) return 0;
  136. return color.getIndexed();
  137. }
  138. @Override
  139. public XSSFColor getLeftBorderColorColor() {
  140. if(!_border.isSetLeft()) return null;
  141. CTBorderPr pr = _border.getLeft();
  142. return new XSSFColor(pr.getColor(), _colorMap);
  143. }
  144. @Override
  145. public short getLeftBorderColor() {
  146. XSSFColor color = getLeftBorderColorColor();
  147. if (color == null) return 0;
  148. return color.getIndexed();
  149. }
  150. @Override
  151. public XSSFColor getRightBorderColorColor() {
  152. if(!_border.isSetRight()) return null;
  153. CTBorderPr pr = _border.getRight();
  154. return new XSSFColor(pr.getColor(), _colorMap);
  155. }
  156. @Override
  157. public short getRightBorderColor() {
  158. XSSFColor color = getRightBorderColorColor();
  159. if (color == null) return 0;
  160. return color.getIndexed();
  161. }
  162. @Override
  163. public XSSFColor getTopBorderColorColor() {
  164. if(!_border.isSetTop()) return null;
  165. CTBorderPr pr = _border.getTop();
  166. return new XSSFColor(pr.getColor(), _colorMap);
  167. }
  168. @Override
  169. public short getTopBorderColor() {
  170. XSSFColor color = getRightBorderColorColor();
  171. if (color == null) return 0;
  172. return color.getIndexed();
  173. }
  174. /**
  175. * @deprecated 3.15 beta 2. Use {@link #setBorderBottom(BorderStyle)}
  176. */
  177. @Override
  178. public void setBorderBottom(short border) {
  179. setBorderBottom(BorderStyle.valueOf(border));
  180. }
  181. @Override
  182. public void setBorderBottom(BorderStyle border) {
  183. CTBorderPr pr = _border.isSetBottom() ? _border.getBottom() : _border.addNewBottom();
  184. if(border == BorderStyle.NONE) _border.unsetBottom();
  185. else pr.setStyle(STBorderStyle.Enum.forInt(border.getCode() + 1));
  186. }
  187. /**
  188. * @deprecated 3.15 beta 2. Use {@link #setBorderDiagonal(BorderStyle)}
  189. */
  190. @Override
  191. public void setBorderDiagonal(short border) {
  192. setBorderDiagonal(BorderStyle.valueOf(border));
  193. }
  194. @Override
  195. public void setBorderDiagonal(BorderStyle border) {
  196. CTBorderPr pr = _border.isSetDiagonal() ? _border.getDiagonal() : _border.addNewDiagonal();
  197. if(border == BorderStyle.NONE) _border.unsetDiagonal();
  198. else pr.setStyle(STBorderStyle.Enum.forInt(border.getCode() + 1));
  199. }
  200. /**
  201. * @deprecated 3.15 beta 2. Use {@link #setBorderLeft(BorderStyle)}
  202. */
  203. @Override
  204. public void setBorderLeft(short border) {
  205. setBorderLeft(BorderStyle.valueOf(border));
  206. }
  207. @Override
  208. public void setBorderLeft(BorderStyle border) {
  209. CTBorderPr pr = _border.isSetLeft() ? _border.getLeft() : _border.addNewLeft();
  210. if(border == BorderStyle.NONE) _border.unsetLeft();
  211. else pr.setStyle(STBorderStyle.Enum.forInt(border.getCode() + 1));
  212. }
  213. /**
  214. * @deprecated 3.15 beta 2. Use {@link #setBorderRight(BorderStyle)}
  215. */
  216. @Override
  217. public void setBorderRight(short border) {
  218. setBorderRight(BorderStyle.valueOf(border));
  219. }
  220. @Override
  221. public void setBorderRight(BorderStyle border) {
  222. CTBorderPr pr = _border.isSetRight() ? _border.getRight() : _border.addNewRight();
  223. if(border == BorderStyle.NONE) _border.unsetRight();
  224. else pr.setStyle(STBorderStyle.Enum.forInt(border.getCode() + 1));
  225. }
  226. /**
  227. * @deprecated 3.15 beta 2. Use {@link #setBorderTop(BorderStyle)}
  228. */
  229. @Override
  230. public void setBorderTop(short border) {
  231. setBorderTop(BorderStyle.valueOf(border));
  232. }
  233. @Override
  234. public void setBorderTop(BorderStyle border) {
  235. CTBorderPr pr = _border.isSetTop() ? _border.getTop() : _border.addNewTop();
  236. if(border == BorderStyle.NONE) _border.unsetTop();
  237. else pr.setStyle(STBorderStyle.Enum.forInt(border.getCode() + 1));
  238. }
  239. @Override
  240. public void setBottomBorderColor(Color color) {
  241. XSSFColor xcolor = XSSFColor.toXSSFColor(color);
  242. if (xcolor == null) setBottomBorderColor((CTColor)null);
  243. else setBottomBorderColor(xcolor.getCTColor());
  244. }
  245. @Override
  246. public void setBottomBorderColor(short color) {
  247. CTColor ctColor = CTColor.Factory.newInstance();
  248. ctColor.setIndexed(color);
  249. setBottomBorderColor(ctColor);
  250. }
  251. public void setBottomBorderColor(CTColor color) {
  252. CTBorderPr pr = _border.isSetBottom() ? _border.getBottom() : _border.addNewBottom();
  253. if (color == null) {
  254. pr.unsetColor();
  255. } else {
  256. pr.setColor(color);
  257. }
  258. }
  259. @Override
  260. public void setDiagonalBorderColor(Color color) {
  261. XSSFColor xcolor = XSSFColor.toXSSFColor(color);
  262. if (xcolor == null) setDiagonalBorderColor((CTColor)null);
  263. else setDiagonalBorderColor(xcolor.getCTColor());
  264. }
  265. @Override
  266. public void setDiagonalBorderColor(short color) {
  267. CTColor ctColor = CTColor.Factory.newInstance();
  268. ctColor.setIndexed(color);
  269. setDiagonalBorderColor(ctColor);
  270. }
  271. public void setDiagonalBorderColor(CTColor color) {
  272. CTBorderPr pr = _border.isSetDiagonal() ? _border.getDiagonal() : _border.addNewDiagonal();
  273. if (color == null) {
  274. pr.unsetColor();
  275. } else {
  276. pr.setColor(color);
  277. }
  278. }
  279. @Override
  280. public void setLeftBorderColor(Color color) {
  281. XSSFColor xcolor = XSSFColor.toXSSFColor(color);
  282. if (xcolor == null) setLeftBorderColor((CTColor)null);
  283. else setLeftBorderColor(xcolor.getCTColor());
  284. }
  285. @Override
  286. public void setLeftBorderColor(short color) {
  287. CTColor ctColor = CTColor.Factory.newInstance();
  288. ctColor.setIndexed(color);
  289. setLeftBorderColor(ctColor);
  290. }
  291. public void setLeftBorderColor(CTColor color) {
  292. CTBorderPr pr = _border.isSetLeft() ? _border.getLeft() : _border.addNewLeft();
  293. if (color == null) {
  294. pr.unsetColor();
  295. } else {
  296. pr.setColor(color);
  297. }
  298. }
  299. @Override
  300. public void setRightBorderColor(Color color) {
  301. XSSFColor xcolor = XSSFColor.toXSSFColor(color);
  302. if (xcolor == null) setRightBorderColor((CTColor)null);
  303. else setRightBorderColor(xcolor.getCTColor());
  304. }
  305. @Override
  306. public void setRightBorderColor(short color) {
  307. CTColor ctColor = CTColor.Factory.newInstance();
  308. ctColor.setIndexed(color);
  309. setRightBorderColor(ctColor);
  310. }
  311. public void setRightBorderColor(CTColor color) {
  312. CTBorderPr pr = _border.isSetRight() ? _border.getRight() : _border.addNewRight();
  313. if (color == null) {
  314. pr.unsetColor();
  315. } else {
  316. pr.setColor(color);
  317. }
  318. }
  319. @Override
  320. public void setTopBorderColor(Color color) {
  321. XSSFColor xcolor = XSSFColor.toXSSFColor(color);
  322. if (xcolor == null) setTopBorderColor((CTColor)null);
  323. else setTopBorderColor(xcolor.getCTColor());
  324. }
  325. @Override
  326. public void setTopBorderColor(short color) {
  327. CTColor ctColor = CTColor.Factory.newInstance();
  328. ctColor.setIndexed(color);
  329. setTopBorderColor(ctColor);
  330. }
  331. public void setTopBorderColor(CTColor color) {
  332. CTBorderPr pr = _border.isSetTop() ? _border.getTop() : _border.addNewTop();
  333. if (color == null) {
  334. pr.unsetColor();
  335. } else {
  336. pr.setColor(color);
  337. }
  338. }
  339. }