git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1824826 13f79535-47bb-0310-9956-ffa450edef68tags/REL_4_0_0_FINAL
@@ -40,173 +40,176 @@ import org.apache.poi.hssf.usermodel.HSSFFont; | |||
import org.apache.poi.hssf.usermodel.HSSFWorkbook; | |||
import org.apache.poi.hssf.util.HSSFColor.HSSFColorPredefined; | |||
import org.apache.poi.ss.usermodel.FillPatternType; | |||
import org.apache.poi.util.POILogFactory; | |||
import org.apache.poi.util.POILogger; | |||
/** | |||
* Sheet Viewer Table Cell Editor -- not commented via javadoc as it | |||
* nearly completely consists of overridden methods. | |||
* | |||
* @author Jason Height | |||
* @author Jason Height | |||
*/ | |||
public class SVTableCellEditor extends AbstractCellEditor implements TableCellEditor, ActionListener { | |||
private static final Color black = getAWTColor(HSSFColorPredefined.BLACK); | |||
private static final Color white = getAWTColor(HSSFColorPredefined.WHITE); | |||
private HSSFWorkbook wb; | |||
private JTextField editor; | |||
public SVTableCellEditor(HSSFWorkbook wb) { | |||
this.wb = wb; | |||
this.editor = new JTextField(); | |||
} | |||
/** | |||
* Gets the cellEditable attribute of the SVTableCellEditor object | |||
* | |||
* @return The cellEditable value | |||
*/ | |||
@Override | |||
public boolean isCellEditable(java.util.EventObject e) { | |||
if (e instanceof MouseEvent) { | |||
return ((MouseEvent) e).getClickCount() >= 2; | |||
private static final Color black = getAWTColor(HSSFColorPredefined.BLACK); | |||
private static final Color white = getAWTColor(HSSFColorPredefined.WHITE); | |||
private static final POILogger logger = POILogFactory.getLogger(SVTableCellEditor.class); | |||
private HSSFWorkbook wb; | |||
private JTextField editor; | |||
public SVTableCellEditor(HSSFWorkbook wb) { | |||
this.wb = wb; | |||
this.editor = new JTextField(); | |||
} | |||
/** | |||
* Gets the cellEditable attribute of the SVTableCellEditor object | |||
* | |||
* @return The cellEditable value | |||
*/ | |||
@Override | |||
public boolean isCellEditable(java.util.EventObject e) { | |||
if (e instanceof MouseEvent) { | |||
return ((MouseEvent) e).getClickCount() >= 2; | |||
} | |||
return false; | |||
} | |||
@Override | |||
public boolean shouldSelectCell(EventObject anEvent) { | |||
return true; | |||
} | |||
public boolean startCellEditing(EventObject anEvent) { | |||
logger.log(POILogger.INFO, "Start Cell Editing"); | |||
return true; | |||
} | |||
@Override | |||
public boolean stopCellEditing() { | |||
logger.log(POILogger.INFO, "Stop Cell Editing"); | |||
fireEditingStopped(); | |||
return true; | |||
} | |||
@Override | |||
public void cancelCellEditing() { | |||
logger.log(POILogger.INFO, "Cancel Cell Editing"); | |||
fireEditingCanceled(); | |||
} | |||
@Override | |||
public void actionPerformed(ActionEvent e) { | |||
logger.log(POILogger.INFO, "Action performed"); | |||
stopCellEditing(); | |||
} | |||
/** | |||
* Gets the cellEditorValue attribute of the SVTableCellEditor object | |||
* | |||
* @return The cellEditorValue value | |||
*/ | |||
@Override | |||
public Object getCellEditorValue() { | |||
logger.log(POILogger.INFO, "GetCellEditorValue"); | |||
//JMH Look at when this method is called. Should it return a HSSFCell? | |||
return editor.getText(); | |||
} | |||
return false; | |||
} | |||
@Override | |||
public boolean shouldSelectCell(EventObject anEvent) { | |||
return true; | |||
} | |||
public boolean startCellEditing(EventObject anEvent) { | |||
System.out.println("Start Cell Editing"); | |||
return true; | |||
} | |||
@Override | |||
public boolean stopCellEditing() { | |||
System.out.println("Stop Cell Editing"); | |||
fireEditingStopped(); | |||
return true; | |||
} | |||
@Override | |||
public void cancelCellEditing() { | |||
System.out.println("Cancel Cell Editing"); | |||
fireEditingCanceled(); | |||
} | |||
@Override | |||
public void actionPerformed(ActionEvent e) { | |||
System.out.println("Action performed"); | |||
stopCellEditing(); | |||
} | |||
/** | |||
* Gets the cellEditorValue attribute of the SVTableCellEditor object | |||
* | |||
* @return The cellEditorValue value | |||
*/ | |||
@Override | |||
public Object getCellEditorValue() { | |||
System.out.println("GetCellEditorValue"); | |||
//JMH Look at when this method is called. Should it return a HSSFCell? | |||
return editor.getText(); | |||
} | |||
/** | |||
* Gets the tableCellEditorComponent attribute of the SVTableCellEditor object | |||
* | |||
* @return The tableCellEditorComponent value | |||
*/ | |||
@Override | |||
public Component getTableCellEditorComponent(JTable table, Object value, | |||
boolean isSelected, | |||
int row, | |||
int column) { | |||
System.out.println("GetTableCellEditorComponent"); | |||
HSSFCell cell = (HSSFCell) value; | |||
if (cell != null) { | |||
HSSFCellStyle style = cell.getCellStyle(); | |||
HSSFFont f = wb.getFontAt(style.getFontIndex()); | |||
boolean isbold = f.getBold(); | |||
boolean isitalics = f.getItalic(); | |||
int fontstyle = Font.PLAIN; | |||
if (isbold) { | |||
fontstyle = Font.BOLD; | |||
} | |||
if (isitalics) { | |||
fontstyle = fontstyle | Font.ITALIC; | |||
} | |||
int fontheight = f.getFontHeightInPoints(); | |||
if (fontheight == 9) { | |||
fontheight = 10; //fix for stupid ol Windows | |||
} | |||
Font font = new Font(f.getFontName(),fontstyle,fontheight); | |||
editor.setFont(font); | |||
if (style.getFillPattern() == FillPatternType.SOLID_FOREGROUND) { | |||
editor.setBackground(getAWTColor(style.getFillForegroundColor(), white)); | |||
} else { | |||
editor.setBackground(white); | |||
} | |||
editor.setForeground(getAWTColor(f.getColor(), black)); | |||
//Set the value that is rendered for the cell | |||
switch (cell.getCellType()) { | |||
case BLANK: | |||
editor.setText(""); | |||
break; | |||
case BOOLEAN: | |||
if (cell.getBooleanCellValue()) { | |||
editor.setText("true"); | |||
} else { | |||
editor.setText("false"); | |||
} | |||
break; | |||
case NUMERIC: | |||
editor.setText(Double.toString(cell.getNumericCellValue())); | |||
break; | |||
case STRING: | |||
editor.setText(cell.getRichStringCellValue().getString()); | |||
break; | |||
case FORMULA: | |||
default: | |||
editor.setText("?"); | |||
} | |||
switch (style.getAlignment()) { | |||
case LEFT: | |||
case JUSTIFY: | |||
case FILL: | |||
editor.setHorizontalAlignment(SwingConstants.LEFT); | |||
break; | |||
case CENTER: | |||
case CENTER_SELECTION: | |||
editor.setHorizontalAlignment(SwingConstants.CENTER); | |||
break; | |||
case GENERAL: | |||
case RIGHT: | |||
editor.setHorizontalAlignment(SwingConstants.RIGHT); | |||
break; | |||
default: | |||
editor.setHorizontalAlignment(SwingConstants.LEFT); | |||
break; | |||
} | |||
/** | |||
* Gets the tableCellEditorComponent attribute of the SVTableCellEditor object | |||
* | |||
* @return The tableCellEditorComponent value | |||
*/ | |||
@Override | |||
public Component getTableCellEditorComponent(JTable table, Object value, | |||
boolean isSelected, | |||
int row, | |||
int column) { | |||
logger.log(POILogger.INFO, "GetTableCellEditorComponent"); | |||
HSSFCell cell = (HSSFCell) value; | |||
if (cell != null) { | |||
HSSFCellStyle style = cell.getCellStyle(); | |||
HSSFFont f = wb.getFontAt(style.getFontIntIndex()); | |||
boolean isbold = f.getBold(); | |||
boolean isitalics = f.getItalic(); | |||
int fontstyle = Font.PLAIN; | |||
if (isbold) { | |||
fontstyle = Font.BOLD; | |||
} | |||
if (isitalics) { | |||
fontstyle = fontstyle | Font.ITALIC; | |||
} | |||
int fontheight = f.getFontHeightInPoints(); | |||
if (fontheight == 9) { | |||
fontheight = 10; //fix for stupid ol Windows | |||
} | |||
Font font = new Font(f.getFontName(), fontstyle, fontheight); | |||
editor.setFont(font); | |||
if (style.getFillPattern() == FillPatternType.SOLID_FOREGROUND) { | |||
editor.setBackground(getAWTColor(style.getFillForegroundColor(), white)); | |||
} else { | |||
editor.setBackground(white); | |||
} | |||
editor.setForeground(getAWTColor(f.getColor(), black)); | |||
//Set the value that is rendered for the cell | |||
switch (cell.getCellType()) { | |||
case BLANK: | |||
editor.setText(""); | |||
break; | |||
case BOOLEAN: | |||
if (cell.getBooleanCellValue()) { | |||
editor.setText("true"); | |||
} else { | |||
editor.setText("false"); | |||
} | |||
break; | |||
case NUMERIC: | |||
editor.setText(Double.toString(cell.getNumericCellValue())); | |||
break; | |||
case STRING: | |||
editor.setText(cell.getRichStringCellValue().getString()); | |||
break; | |||
case FORMULA: | |||
default: | |||
editor.setText("?"); | |||
} | |||
switch (style.getAlignment()) { | |||
case LEFT: | |||
case JUSTIFY: | |||
case FILL: | |||
editor.setHorizontalAlignment(SwingConstants.LEFT); | |||
break; | |||
case CENTER: | |||
case CENTER_SELECTION: | |||
editor.setHorizontalAlignment(SwingConstants.CENTER); | |||
break; | |||
case GENERAL: | |||
case RIGHT: | |||
editor.setHorizontalAlignment(SwingConstants.RIGHT); | |||
break; | |||
default: | |||
editor.setHorizontalAlignment(SwingConstants.LEFT); | |||
break; | |||
} | |||
} | |||
return editor; | |||
} | |||
return editor; | |||
} | |||
} |
@@ -140,7 +140,7 @@ public class SVTableCellRenderer extends JLabel | |||
@Override | |||
public Component getTableCellRendererComponent(JTable table, Object value, | |||
boolean isSelected, boolean hasFocus, int row, int column) { | |||
boolean isBorderSet = false; | |||
boolean isBorderSet = false; | |||
//If the JTables default cell renderer has been setup correctly the | |||
//value will be the HSSFCell that we are trying to render | |||
@@ -148,7 +148,7 @@ public class SVTableCellRenderer extends JLabel | |||
if (c != null) { | |||
HSSFCellStyle s = c.getCellStyle(); | |||
HSSFFont f = wb.getFontAt(s.getFontIndex()); | |||
HSSFFont f = wb.getFontAt(s.getFontIntIndex()); | |||
setFont(SVTableUtils.makeFont(f)); | |||
if (s.getFillPattern() == FillPatternType.SOLID_FOREGROUND) { |
@@ -63,7 +63,7 @@ public class CellStyleDetails { | |||
System.out.print("FG=" + renderColor(style.getFillForegroundColorColor()) + " "); | |||
System.out.print("BG=" + renderColor(style.getFillBackgroundColorColor()) + " "); | |||
Font font = wb.getFontAt(style.getFontIndex()); | |||
Font font = wb.getFontAt(style.getFontIntIndex()); | |||
System.out.print("Font=" + font.getFontName() + " "); | |||
System.out.print("FontColor="); | |||
if (font instanceof HSSFFont) { |
@@ -300,7 +300,7 @@ public class ToHtml { | |||
} | |||
private void fontStyle(CellStyle style) { | |||
Font font = wb.getFontAt(style.getFontIndex()); | |||
Font font = wb.getFontAt(style.getFontIntIndex()); | |||
if (font.getBold()) { | |||
out.format(" font-weight: bold;%n"); |
@@ -1660,7 +1660,7 @@ public final class ExtendedFormatRecord | |||
@Override | |||
public String toString() | |||
{ | |||
StringBuffer buffer = new StringBuffer(); | |||
StringBuilder buffer = new StringBuilder(); | |||
buffer.append("[EXTENDEDFORMAT]\n"); | |||
if (getXFType() == XF_STYLE) |
@@ -169,7 +169,7 @@ public final class HSSFCellStyle implements CellStyle { | |||
* set the font for this style | |||
* @param font a font object created or retrieved from the HSSFWorkbook object | |||
* @see org.apache.poi.hssf.usermodel.HSSFWorkbook#createFont() | |||
* @see org.apache.poi.hssf.usermodel.HSSFWorkbook#getFontAt(short) | |||
* @see org.apache.poi.hssf.usermodel.HSSFWorkbook#getFontAt(int) | |||
*/ | |||
@Override | |||
public void setFont(Font font) { | |||
@@ -186,19 +186,31 @@ public final class HSSFCellStyle implements CellStyle { | |||
* @see org.apache.poi.hssf.usermodel.HSSFWorkbook#getFontAt(short) | |||
*/ | |||
@Override | |||
@Deprecated | |||
public short getFontIndex() | |||
{ | |||
return _format.getFontIndex(); | |||
} | |||
/** | |||
* gets the index of the font for this style | |||
* @see org.apache.poi.hssf.usermodel.HSSFWorkbook#getFontAt(int) | |||
* @since 4.0.0 | |||
*/ | |||
@Override | |||
public int getFontIntIndex() | |||
{ | |||
return _format.getFontIndex(); | |||
} | |||
/** | |||
* gets the font for this style | |||
* @param parentWorkbook The HSSFWorkbook that this style belongs to | |||
* @see org.apache.poi.hssf.usermodel.HSSFCellStyle#getFontIndex() | |||
* @see org.apache.poi.hssf.usermodel.HSSFWorkbook#getFontAt(short) | |||
* @see org.apache.poi.hssf.usermodel.HSSFCellStyle#getFontIntIndex() | |||
* @see org.apache.poi.hssf.usermodel.HSSFWorkbook#getFontAt(int) | |||
*/ | |||
public HSSFFont getFont(org.apache.poi.ss.usermodel.Workbook parentWorkbook) { | |||
return ((HSSFWorkbook) parentWorkbook).getFontAt(getFontIndex()); | |||
return ((HSSFWorkbook) parentWorkbook).getFontAt(getFontIntIndex()); | |||
} | |||
/** |
@@ -25,7 +25,7 @@ import org.apache.poi.ss.usermodel.Font; | |||
* Represents a Font used in a workbook. | |||
* | |||
* @see org.apache.poi.hssf.usermodel.HSSFWorkbook#createFont() | |||
* @see org.apache.poi.hssf.usermodel.HSSFWorkbook#getFontAt(short) | |||
* @see org.apache.poi.hssf.usermodel.HSSFWorkbook#getFontAt(int) | |||
* @see org.apache.poi.hssf.usermodel.HSSFCellStyle#setFont(HSSFFont) | |||
*/ | |||
public final class HSSFFont implements Font { | |||
@@ -46,12 +46,12 @@ public final class HSSFFont implements Font { | |||
public final static String FONT_ARIAL = "Arial"; | |||
private FontRecord font; | |||
private short index; | |||
private FontRecord font; | |||
private int index; | |||
/** Creates a new instance of HSSFFont */ | |||
protected HSSFFont(short index, FontRecord rec) | |||
protected HSSFFont(int index, FontRecord rec) | |||
{ | |||
font = rec; | |||
this.index = index; | |||
@@ -85,7 +85,15 @@ public final class HSSFFont implements Font { | |||
* unless you're comparing which one is which) | |||
*/ | |||
public short getIndex() | |||
public short getIndex() { return (short)index; } | |||
/** | |||
* get the index within the HSSFWorkbook (sequence within the collection of Font objects) | |||
* @return unique index number of the underlying record this Font represents (probably you don't care | |||
* unless you're comparing which one is which) | |||
*/ | |||
public int getIndexAsInt() | |||
{ | |||
return index; | |||
} |
@@ -178,13 +178,13 @@ public final class HSSFWorkbook extends POIDocument implements org.apache.poi.ss | |||
* this holds the HSSFFont objects attached to this workbook. | |||
* We only create these from the low level records as required. | |||
*/ | |||
private Map<Short,HSSFFont> fonts; | |||
private Map<Integer,HSSFFont> fonts; | |||
/** | |||
* holds whether or not to preserve other nodes in the POIFS. Used | |||
* for macros and embedded objects. | |||
*/ | |||
private boolean preserveNodes; | |||
private boolean preserveNodes; | |||
/** | |||
* Used to keep track of the data formatter so that all | |||
@@ -1171,13 +1171,13 @@ public final class HSSFWorkbook extends POIDocument implements org.apache.poi.ss | |||
public HSSFFont createFont() | |||
{ | |||
/*FontRecord font =*/ workbook.createNewFont(); | |||
short fontindex = (short) (getNumberOfFonts() - 1); | |||
int fontindex = getNumberOfFontsAsInt() - 1; | |||
if (fontindex > 3) | |||
{ | |||
fontindex++; // THERE IS NO FOUR!! | |||
} | |||
if(fontindex == Short.MAX_VALUE){ | |||
if(fontindex >= Short.MAX_VALUE){ | |||
throw new IllegalArgumentException("Maximum number of fonts was exceeded"); | |||
} | |||
@@ -1194,8 +1194,8 @@ public final class HSSFWorkbook extends POIDocument implements org.apache.poi.ss | |||
String name, boolean italic, boolean strikeout, | |||
short typeOffset, byte underline) | |||
{ | |||
short numberOfFonts = getNumberOfFonts(); | |||
for (short i=0; i<=numberOfFonts; i++) { | |||
int numberOfFonts = getNumberOfFontsAsInt(); | |||
for (int i = 0; i <= numberOfFonts; i++) { | |||
// Remember - there is no 4! | |||
if(i == 4) { | |||
continue; | |||
@@ -1218,24 +1218,25 @@ public final class HSSFWorkbook extends POIDocument implements org.apache.poi.ss | |||
return null; | |||
} | |||
/** | |||
* get the number of fonts in the font table | |||
* @return number of fonts | |||
*/ | |||
@Override | |||
@Deprecated | |||
public short getNumberOfFonts() { | |||
return (short)getNumberOfFontsAsInt(); | |||
} | |||
@Override | |||
public short getNumberOfFonts() | |||
{ | |||
return (short) workbook.getNumberOfFontRecords(); | |||
public int getNumberOfFontsAsInt() { | |||
return workbook.getNumberOfFontRecords(); | |||
} | |||
/** | |||
* Get the font at the given index number | |||
* @param idx index number | |||
* @return HSSFFont at the index | |||
*/ | |||
@Override | |||
@Deprecated | |||
public HSSFFont getFontAt(short idx) { | |||
return getFontAt((int)idx); | |||
} | |||
@Override | |||
public HSSFFont getFontAt(int idx) { | |||
if(fonts == null) { | |||
fonts = new HashMap<>(); | |||
} | |||
@@ -1243,7 +1244,7 @@ public final class HSSFWorkbook extends POIDocument implements org.apache.poi.ss | |||
// So we don't confuse users, give them back | |||
// the same object every time, but create | |||
// them lazily | |||
Short sIdx = Short.valueOf(idx); | |||
Integer sIdx = Integer.valueOf(idx); | |||
if(fonts.containsKey(sIdx)) { | |||
return fonts.get(sIdx); | |||
} |
@@ -49,16 +49,25 @@ public interface CellStyle { | |||
* set the font for this style | |||
* @param font a font object created or retrieved from the Workbook object | |||
* @see Workbook#createFont() | |||
* @see Workbook#getFontAt(short) | |||
* @see Workbook#getFontAt(int) | |||
*/ | |||
void setFont(Font font); | |||
/** | |||
* gets the index of the font for this style | |||
* @see Workbook#getFontAt(short) | |||
* @deprecated use <code>getFontIntIndex()</code> instead | |||
*/ | |||
@Removal(version = "4.2") | |||
short getFontIndex(); | |||
/** | |||
* gets the index of the font for this style | |||
* @see Workbook#getFontAt(int) | |||
* @since 4.0.0 | |||
*/ | |||
int getFontIntIndex(); | |||
/** | |||
* set the cell's using this style to be hidden | |||
* @param hidden - whether the cell using this style should be hidden |
@@ -18,6 +18,8 @@ | |||
package org.apache.poi.ss.usermodel; | |||
import org.apache.poi.util.Removal; | |||
public interface Font { | |||
/** | |||
@@ -267,9 +269,20 @@ public interface Font { | |||
* | |||
* @return unique index number of the underlying record this Font represents (probably you don't care | |||
* unless you're comparing which one is which) | |||
* @deprecated use <code>getIndexAsInt()</code> instead | |||
*/ | |||
@Removal(version = "4.2") | |||
public short getIndex(); | |||
/** | |||
* get the index within the XSSFWorkbook (sequence within the collection of Font objects) | |||
* | |||
* @return unique index number of the underlying record this Font represents (probably you don't care | |||
* unless you're comparing which one is which) | |||
* @since 4.0.0 | |||
*/ | |||
public int getIndexAsInt(); | |||
public void setBold(boolean bold); | |||
public boolean getBold(); |
@@ -265,17 +265,38 @@ public interface Workbook extends Closeable, Iterable<Sheet> { | |||
* Get the number of fonts in the font table | |||
* | |||
* @return number of fonts | |||
* @deprecated use <code>getNumberOfFontsAsInt()</code> instead | |||
*/ | |||
@Removal(version = "4.2") | |||
short getNumberOfFonts(); | |||
/** | |||
* Get the number of fonts in the font table | |||
* | |||
* @return number of fonts | |||
* @since 4.0.0 | |||
*/ | |||
int getNumberOfFontsAsInt(); | |||
/** | |||
* Get the font at the given index number | |||
* | |||
* @param idx index number (0-based) | |||
* @return font at the index | |||
* @deprecated use <code>getFontAt(int)</code> | |||
*/ | |||
@Removal(version = "4.2") | |||
Font getFontAt(short idx); | |||
/** | |||
* Get the font at the given index number | |||
* | |||
* @param idx index number (0-based) | |||
* @return font at the index | |||
* @since 4.0.0 | |||
*/ | |||
Font getFontAt(int idx); | |||
/** | |||
* Create a new Cell style and add it to the workbook's style table | |||
* |
@@ -234,7 +234,7 @@ public final class CellUtil { | |||
public static void setFont(Cell cell, Font font) { | |||
// Check if font belongs to workbook | |||
Workbook wb = cell.getSheet().getWorkbook(); | |||
final short fontIndex = font.getIndex(); | |||
final int fontIndex = font.getIndexAsInt(); | |||
if (!wb.getFontAt(fontIndex).equals(font)) { | |||
throw new IllegalArgumentException("Font does not belong to this workbook"); | |||
} | |||
@@ -408,7 +408,7 @@ public final class CellUtil { | |||
style.setFillPattern(getFillPattern(properties, FILL_PATTERN)); | |||
style.setFillForegroundColor(getShort(properties, FILL_FOREGROUND_COLOR)); | |||
style.setFillBackgroundColor(getShort(properties, FILL_BACKGROUND_COLOR)); | |||
style.setFont(workbook.getFontAt(getShort(properties, FONT))); | |||
style.setFont(workbook.getFontAt(getInt(properties, FONT))); | |||
style.setHidden(getBoolean(properties, HIDDEN)); | |||
style.setIndention(getShort(properties, INDENTION)); | |||
style.setLeftBorderColor(getShort(properties, LEFT_BORDER_COLOR)); | |||
@@ -429,8 +429,24 @@ public final class CellUtil { | |||
*/ | |||
private static short getShort(Map<String, Object> properties, String name) { | |||
Object value = properties.get(name); | |||
if (value instanceof Short) { | |||
return ((Short) value).shortValue(); | |||
if (value instanceof Number) { | |||
return ((Number) value).shortValue(); | |||
} | |||
return 0; | |||
} | |||
/** | |||
* Utility method that returns the named int value form the given map. | |||
* | |||
* @param properties map of named properties (String -> Object) | |||
* @param name property name | |||
* @return zero if the property does not exist, or is not a {@link Integer} | |||
* otherwise the property value | |||
*/ | |||
private static int getInt(Map<String, Object> properties, String name) { | |||
Object value = properties.get(name); | |||
if (value instanceof Number) { | |||
return ((Number) value).intValue(); | |||
} | |||
return 0; | |||
} |
@@ -144,7 +144,7 @@ public class SheetUtil { | |||
if (cellType == CellType.FORMULA) | |||
cellType = cell.getCachedFormulaResultType(); | |||
Font font = wb.getFontAt(style.getFontIndex()); | |||
Font font = wb.getFontAt(style.getFontIntIndex()); | |||
double width = -1; | |||
if (cellType == CellType.STRING) { | |||
@@ -266,7 +266,7 @@ public class SheetUtil { | |||
*/ | |||
@Internal | |||
public static int getDefaultCharWidth(final Workbook wb) { | |||
Font defaultFont = wb.getFontAt((short) 0); | |||
Font defaultFont = wb.getFontAt( 0); | |||
AttributedString str = new AttributedString(String.valueOf(defaultChar)); | |||
copyAttributes(defaultFont, str, 0, 1); |
@@ -811,27 +811,28 @@ public class SXSSFWorkbook implements Workbook { | |||
{ | |||
return _wb.findFont(bold, color, fontHeight, name, italic, strikeout, typeOffset, underline); | |||
} | |||
/** | |||
* Get the number of fonts in the font table | |||
* | |||
* @return number of fonts | |||
*/ | |||
@Override | |||
public short getNumberOfFonts() | |||
@Deprecated | |||
public short getNumberOfFonts() { | |||
return (short)getNumberOfFontsAsInt(); | |||
} | |||
@Override | |||
public int getNumberOfFontsAsInt() | |||
{ | |||
return _wb.getNumberOfFonts(); | |||
return _wb.getNumberOfFontsAsInt(); | |||
} | |||
/** | |||
* Get the font at the given index number | |||
* | |||
* @param idx index number (0-based) | |||
* @return font at the index | |||
*/ | |||
@Override | |||
@Deprecated | |||
public Font getFontAt(short idx) | |||
{ | |||
return getFontAt((int)idx); | |||
} | |||
@Override | |||
public Font getFontAt(int idx) | |||
{ | |||
return _wb.getFontAt(idx); | |||
} |
@@ -469,10 +469,23 @@ public class XSSFCellStyle implements CellStyle { | |||
* @see org.apache.poi.xssf.usermodel.XSSFWorkbook#getFontAt(short) | |||
*/ | |||
@Override | |||
@Deprecated | |||
public short getFontIndex() { | |||
return (short) getFontId(); | |||
} | |||
/** | |||
* Gets the index of the font for this style | |||
* | |||
* @return short - font index | |||
* @see org.apache.poi.xssf.usermodel.XSSFWorkbook#getFontAt(int) | |||
* @since 4.0.0 | |||
*/ | |||
@Override | |||
public int getFontIntIndex() { | |||
return getFontId(); | |||
} | |||
/** | |||
* Get whether the cell's using this style are to be hidden | |||
* |
@@ -63,7 +63,7 @@ public class XSSFFont implements Font { | |||
private IndexedColorMap _indexedColorMap; | |||
private ThemesTable _themes; | |||
private CTFont _ctFont; | |||
private short _index; | |||
private int _index; | |||
/** | |||
* Create a new XSSFFont | |||
@@ -615,12 +615,14 @@ public class XSSFFont implements Font { | |||
setFamily(family.getValue()); | |||
} | |||
/** | |||
* get the index within the XSSFWorkbook (sequence within the collection of Font objects) | |||
* @return unique index number of the underlying record this Font represents (probably you don't care | |||
* unless you're comparing which one is which) | |||
*/ | |||
public short getIndex() | |||
@Override | |||
@Deprecated | |||
public short getIndex() { | |||
return (short)getIndexAsInt(); | |||
} | |||
@Override | |||
public int getIndexAsInt() | |||
{ | |||
return _index; | |||
} |
@@ -925,6 +925,8 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook { | |||
/** | |||
* Finds a font that matches the one with the supplied attributes | |||
* | |||
* @return the font with the matched attributes or <code>null</code> | |||
*/ | |||
@Override | |||
public XSSFFont findFont(boolean bold, short color, short fontHeight, String name, boolean italic, boolean strikeout, short typeOffset, byte underline) { | |||
@@ -972,17 +974,16 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook { | |||
return stylesSource.getStyleAt(idx); | |||
} | |||
/** | |||
* Get the font at the given index number | |||
* | |||
* @param idx index number | |||
* @return XSSFFont at the index | |||
*/ | |||
@Override | |||
public XSSFFont getFontAt(short idx) { | |||
return stylesSource.getFontAt(idx); | |||
} | |||
@Override | |||
public XSSFFont getFontAt(int idx) { | |||
return stylesSource.getFontAt(idx); | |||
} | |||
/** | |||
* Get the first named range with the given name. | |||
* | |||
@@ -1075,13 +1076,13 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook { | |||
return stylesSource.getNumCellStyles(); | |||
} | |||
/** | |||
* Get the number of fonts in the this workbook | |||
* | |||
* @return number of fonts | |||
*/ | |||
@Override | |||
public short getNumberOfFonts() { | |||
return (short)getNumberOfFontsAsInt(); | |||
} | |||
@Override | |||
public int getNumberOfFontsAsInt() { | |||
return (short)stylesSource.getFonts().size(); | |||
} | |||
@@ -1013,19 +1013,19 @@ public abstract class BaseTestBugzillaIssues { | |||
Workbook wb = _testDataProvider.createWorkbook(); | |||
int startingFonts = wb instanceof HSSFWorkbook ? 4 : 1; | |||
assertEquals(startingFonts, wb.getNumberOfFonts()); | |||
assertEquals(startingFonts, wb.getNumberOfFontsAsInt()); | |||
// Get a font, and slightly change it | |||
Font a = wb.createFont(); | |||
assertEquals(startingFonts+1, wb.getNumberOfFonts()); | |||
assertEquals(startingFonts+1, wb.getNumberOfFontsAsInt()); | |||
a.setFontHeightInPoints((short)23); | |||
assertEquals(startingFonts+1, wb.getNumberOfFonts()); | |||
assertEquals(startingFonts+1, wb.getNumberOfFontsAsInt()); | |||
// Get two more, unchanged | |||
/*Font b =*/ wb.createFont(); | |||
assertEquals(startingFonts+2, wb.getNumberOfFonts()); | |||
assertEquals(startingFonts+2, wb.getNumberOfFontsAsInt()); | |||
/*Font c =*/ wb.createFont(); | |||
assertEquals(startingFonts+3, wb.getNumberOfFonts()); | |||
assertEquals(startingFonts+3, wb.getNumberOfFontsAsInt()); | |||
wb.close(); | |||
} |
@@ -276,7 +276,7 @@ public abstract class BaseTestCell { | |||
cs = c.getCellStyle(); | |||
assertNotNull("Formula Cell Style", cs); | |||
assertEquals("Font Index Matches", f.getIndex(), cs.getFontIndex()); | |||
assertEquals("Font Index Matches", f.getIndexAsInt(), cs.getFontIndex()); | |||
assertEquals("Top Border", BorderStyle.THIN, cs.getBorderTop()); | |||
assertEquals("Left Border", BorderStyle.THIN, cs.getBorderLeft()); | |||
assertEquals("Right Border", BorderStyle.THIN, cs.getBorderRight()); |
@@ -58,7 +58,7 @@ public abstract class BaseTestFont { | |||
@Test | |||
public final void testGetNumberOfFonts() throws IOException { | |||
Workbook wb = _testDataProvider.createWorkbook(); | |||
int num0 = wb.getNumberOfFonts(); | |||
int num0 = wb.getNumberOfFontsAsInt(); | |||
Font f1=wb.createFont(); | |||
f1.setBold(true); |