aboutsummaryrefslogtreecommitdiffstats
path: root/src/examples
diff options
context:
space:
mode:
authorAndreas Beeker <kiwiwings@apache.org>2019-12-07 11:53:48 +0000
committerAndreas Beeker <kiwiwings@apache.org>2019-12-07 11:53:48 +0000
commitde2467e9aeb3727d3182479f1cf6d7664e757f08 (patch)
tree59263a86739e82814ec14c05554c21401bb622be /src/examples
parentb2a33515e9662e015b0e0d6b4aa0726245db3231 (diff)
downloadpoi-de2467e9aeb3727d3182479f1cf6d7664e757f08.tar.gz
poi-de2467e9aeb3727d3182479f1cf6d7664e757f08.zip
Reindent to 4 spaces - optimize imports
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1870977 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/examples')
-rw-r--r--src/examples/src/org/apache/poi/hssf/view/SVBorder.java870
-rw-r--r--src/examples/src/org/apache/poi/hssf/view/SVFractionalFormat.java369
-rw-r--r--src/examples/src/org/apache/poi/hssf/view/SVRowHeader.java136
-rw-r--r--src/examples/src/org/apache/poi/hssf/view/SVSheetTable.java358
-rw-r--r--src/examples/src/org/apache/poi/hssf/view/SVTableCellRenderer.java331
-rw-r--r--src/examples/src/org/apache/poi/hssf/view/SVTableModel.java115
-rw-r--r--src/examples/src/org/apache/poi/hssf/view/SVTableUtils.java92
-rw-r--r--src/examples/src/org/apache/poi/hssf/view/SViewerPanel.java476
8 files changed, 1401 insertions, 1346 deletions
diff --git a/src/examples/src/org/apache/poi/hssf/view/SVBorder.java b/src/examples/src/org/apache/poi/hssf/view/SVBorder.java
index 32793bc834..dd0fe35d73 100644
--- a/src/examples/src/org/apache/poi/hssf/view/SVBorder.java
+++ b/src/examples/src/org/apache/poi/hssf/view/SVBorder.java
@@ -15,10 +15,12 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
-
+
package org.apache.poi.hssf.view;
-import java.awt.*;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Graphics;
import javax.swing.border.AbstractBorder;
@@ -26,532 +28,532 @@ import org.apache.poi.ss.usermodel.BorderStyle;
/**
* This is an attempt to implement Excel style borders for the SheetViewer.
- * Mostly just overrides stuff so the javadoc won't appear here but will
+ * Mostly just overrides stuff so the javadoc won't appear here but will
* appear in the generated stuff.
- *
+ *
* @author Andrew C. Oliver (acoliver at apache dot org)
* @author Jason Height
*/
public class SVBorder extends AbstractBorder {
- private Color northColor;
- private Color eastColor;
- private Color southColor;
- private Color westColor;
- private BorderStyle northBorderType = BorderStyle.NONE;
- private BorderStyle eastBorderType = BorderStyle.NONE;
- private BorderStyle southBorderType = BorderStyle.NONE;
- private BorderStyle westBorderType = BorderStyle.NONE;
- private boolean northBorder;
- private boolean eastBorder;
- private boolean southBorder;
- private boolean westBorder;
- private boolean selected;
-
- public void setBorder(Color northColor, Color eastColor,
- Color southColor, Color westColor,
- BorderStyle northBorderType, BorderStyle eastBorderType,
- BorderStyle southBorderType, BorderStyle westBorderType,
- boolean selected) {
- this.eastColor = eastColor;
- this.southColor = southColor;
- this.westColor = westColor;
- this.northBorderType = northBorderType;
- this.eastBorderType = eastBorderType;
- this.southBorderType = southBorderType;
- this.westBorderType = westBorderType;
- this.northBorder=northBorderType != BorderStyle.NONE;
- this.eastBorder=eastBorderType != BorderStyle.NONE;
- this.southBorder=southBorderType != BorderStyle.NONE;
- this.westBorder=westBorderType != BorderStyle.NONE;
- this.selected = selected;
- }
-
- @Override
-public void paintBorder(Component c, Graphics g, int x, int y, int width,
- int height) {
- Color oldColor = g.getColor();
-
-
- paintSelectedBorder(g, x, y, width, height);
- paintNormalBorders(g, x, y, width, height);
- paintDottedBorders(g, x, y, width, height);
- paintDashedBorders(g, x, y, width, height);
- paintDoubleBorders(g, x, y, width, height);
- paintDashDotDotBorders(g, x, y, width, height);
-
-
- g.setColor(oldColor);
- }
-
- /**
- * Called by paintBorder to paint the border of a selected cell.
- * The paramaters are the Graphics object, location and dimensions of the
- * cell.
- */
- private void paintSelectedBorder(Graphics g, int x, int y, int width,
- int height) {
- if (selected) {
- //Need to setup thickness of 2
- g.setColor(Color.black);
- //paint the border
- g.drawRect(x,y,width-1,height-1);
-
- //paint the filled rectangle at the bottom left hand position
- g.fillRect(x+width-5, y+height-5, 5, 5);
- }
- }
-
-
- /**
- * Called by paintBorder to paint the various versions of normal line
- * borders for a cell.
- */
- private void paintNormalBorders(Graphics g, int x, int y, int width,
- int height) {
-
- if (northBorder &&
- ((northBorderType == BorderStyle.THIN) ||
- (northBorderType == BorderStyle.MEDIUM) ||
- (northBorderType == BorderStyle.THICK)
- )
- ) {
-
- int thickness = getThickness(northBorderType);
-
- g.setColor(northColor);
-
- for (int k=0; k < thickness; k++) {
- g.drawLine(x,y+k,width,y+k);
+ private Color northColor;
+ private Color eastColor;
+ private Color southColor;
+ private Color westColor;
+ private BorderStyle northBorderType = BorderStyle.NONE;
+ private BorderStyle eastBorderType = BorderStyle.NONE;
+ private BorderStyle southBorderType = BorderStyle.NONE;
+ private BorderStyle westBorderType = BorderStyle.NONE;
+ private boolean northBorder;
+ private boolean eastBorder;
+ private boolean southBorder;
+ private boolean westBorder;
+ private boolean selected;
+
+ public void setBorder(Color northColor, Color eastColor,
+ Color southColor, Color westColor,
+ BorderStyle northBorderType, BorderStyle eastBorderType,
+ BorderStyle southBorderType, BorderStyle westBorderType,
+ boolean selected) {
+ this.eastColor = eastColor;
+ this.southColor = southColor;
+ this.westColor = westColor;
+ this.northBorderType = northBorderType;
+ this.eastBorderType = eastBorderType;
+ this.southBorderType = southBorderType;
+ this.westBorderType = westBorderType;
+ this.northBorder = northBorderType != BorderStyle.NONE;
+ this.eastBorder = eastBorderType != BorderStyle.NONE;
+ this.southBorder = southBorderType != BorderStyle.NONE;
+ this.westBorder = westBorderType != BorderStyle.NONE;
+ this.selected = selected;
+ }
+
+ @Override
+ public void paintBorder(Component c, Graphics g, int x, int y, int width,
+ int height) {
+ Color oldColor = g.getColor();
+
+
+ paintSelectedBorder(g, x, y, width, height);
+ paintNormalBorders(g, x, y, width, height);
+ paintDottedBorders(g, x, y, width, height);
+ paintDashedBorders(g, x, y, width, height);
+ paintDoubleBorders(g, x, y, width, height);
+ paintDashDotDotBorders(g, x, y, width, height);
+
+
+ g.setColor(oldColor);
+ }
+
+ /**
+ * Called by paintBorder to paint the border of a selected cell.
+ * The paramaters are the Graphics object, location and dimensions of the
+ * cell.
+ */
+ private void paintSelectedBorder(Graphics g, int x, int y, int width,
+ int height) {
+ if (selected) {
+ //Need to setup thickness of 2
+ g.setColor(Color.black);
+ //paint the border
+ g.drawRect(x, y, width - 1, height - 1);
+
+ //paint the filled rectangle at the bottom left hand position
+ g.fillRect(x + width - 5, y + height - 5, 5, 5);
}
- }
+ }
+
+
+ /**
+ * Called by paintBorder to paint the various versions of normal line
+ * borders for a cell.
+ */
+ private void paintNormalBorders(Graphics g, int x, int y, int width,
+ int height) {
- if (eastBorder &&
- ((eastBorderType == BorderStyle.THIN) ||
- (eastBorderType == BorderStyle.MEDIUM) ||
- (eastBorderType == BorderStyle.THICK)
- )
- ) {
+ if (northBorder &&
+ ((northBorderType == BorderStyle.THIN) ||
+ (northBorderType == BorderStyle.MEDIUM) ||
+ (northBorderType == BorderStyle.THICK)
+ )
+ ) {
- int thickness = getThickness(eastBorderType);
+ int thickness = getThickness(northBorderType);
- g.setColor(eastColor);
+ g.setColor(northColor);
- for (int k=0; k < thickness; k++) {
- g.drawLine(width-k,y,width-k,height);
+ for (int k = 0; k < thickness; k++) {
+ g.drawLine(x, y + k, width, y + k);
+ }
}
- }
- if (southBorder &&
- ((southBorderType == BorderStyle.THIN) ||
- (southBorderType == BorderStyle.MEDIUM) ||
- (southBorderType == BorderStyle.THICK)
- )
- ) {
+ if (eastBorder &&
+ ((eastBorderType == BorderStyle.THIN) ||
+ (eastBorderType == BorderStyle.MEDIUM) ||
+ (eastBorderType == BorderStyle.THICK)
+ )
+ ) {
- int thickness = getThickness(southBorderType);
+ int thickness = getThickness(eastBorderType);
- g.setColor(southColor);
- for (int k=0; k < thickness; k++) {
- g.drawLine(x,height - k,width,height - k);
+ g.setColor(eastColor);
+
+ for (int k = 0; k < thickness; k++) {
+ g.drawLine(width - k, y, width - k, height);
+ }
}
- }
- if (westBorder &&
- ((westBorderType == BorderStyle.THIN) ||
- (westBorderType == BorderStyle.MEDIUM) ||
- (westBorderType == BorderStyle.THICK)
- )
- ) {
+ if (southBorder &&
+ ((southBorderType == BorderStyle.THIN) ||
+ (southBorderType == BorderStyle.MEDIUM) ||
+ (southBorderType == BorderStyle.THICK)
+ )
+ ) {
+
+ int thickness = getThickness(southBorderType);
- int thickness = getThickness(westBorderType);
+ g.setColor(southColor);
+ for (int k = 0; k < thickness; k++) {
+ g.drawLine(x, height - k, width, height - k);
+ }
+ }
- g.setColor(westColor);
+ if (westBorder &&
+ ((westBorderType == BorderStyle.THIN) ||
+ (westBorderType == BorderStyle.MEDIUM) ||
+ (westBorderType == BorderStyle.THICK)
+ )
+ ) {
- for (int k=0; k < thickness; k++) {
- g.drawLine(x+k,y,x+k,height);
+ int thickness = getThickness(westBorderType);
+
+ g.setColor(westColor);
+
+ for (int k = 0; k < thickness; k++) {
+ g.drawLine(x + k, y, x + k, height);
+ }
}
- }
- }
-
- /**
- * Called by paintBorder to paint the dotted line
- * borders for a cell.
- */
- private void paintDottedBorders(Graphics g, int x, int y, int width,
- int height) {
- if (northBorder &&
- northBorderType == BorderStyle.DOTTED) {
- int thickness = getThickness(northBorderType);
-
- g.setColor(northColor);
-
- for (int k=0; k < thickness; k++) {
- for (int xc = x; xc < width; xc=xc+2) {
- g.drawLine(xc,y+k,xc,y+k);
- }
+ }
+
+ /**
+ * Called by paintBorder to paint the dotted line
+ * borders for a cell.
+ */
+ private void paintDottedBorders(Graphics g, int x, int y, int width,
+ int height) {
+ if (northBorder &&
+ northBorderType == BorderStyle.DOTTED) {
+ int thickness = getThickness(northBorderType);
+
+ g.setColor(northColor);
+
+ for (int k = 0; k < thickness; k++) {
+ for (int xc = x; xc < width; xc = xc + 2) {
+ g.drawLine(xc, y + k, xc, y + k);
+ }
+ }
}
- }
- if (eastBorder &&
- eastBorderType == BorderStyle.DOTTED
- ) {
+ if (eastBorder &&
+ eastBorderType == BorderStyle.DOTTED
+ ) {
- int thickness = getThickness(eastBorderType);
- thickness++; //need for dotted borders to show up east
+ int thickness = getThickness(eastBorderType);
+ thickness++; //need for dotted borders to show up east
- g.setColor(eastColor);
+ g.setColor(eastColor);
- for (int k=0; k < thickness; k++) {
- for (int yc=y;yc < height; yc=yc+2) {
- g.drawLine(width-k,yc,width-k,yc);
- }
+ for (int k = 0; k < thickness; k++) {
+ for (int yc = y; yc < height; yc = yc + 2) {
+ g.drawLine(width - k, yc, width - k, yc);
+ }
+ }
}
- }
-
- if (southBorder &&
- southBorderType == BorderStyle.DOTTED
- ) {
-
- int thickness = getThickness(southBorderType);
- thickness++;
- g.setColor(southColor);
- for (int k=0; k < thickness; k++) {
- for (int xc = x; xc < width; xc=xc+2) {
- g.drawLine(xc,height-k,xc,height-k);
- }
+
+ if (southBorder &&
+ southBorderType == BorderStyle.DOTTED
+ ) {
+
+ int thickness = getThickness(southBorderType);
+ thickness++;
+ g.setColor(southColor);
+ for (int k = 0; k < thickness; k++) {
+ for (int xc = x; xc < width; xc = xc + 2) {
+ g.drawLine(xc, height - k, xc, height - k);
+ }
+ }
}
- }
- if (westBorder &&
- westBorderType == BorderStyle.DOTTED
- ) {
+ if (westBorder &&
+ westBorderType == BorderStyle.DOTTED
+ ) {
- int thickness = getThickness(westBorderType);
+ int thickness = getThickness(westBorderType);
// thickness++;
- g.setColor(westColor);
+ g.setColor(westColor);
- for (int k=0; k < thickness; k++) {
- for (int yc=y;yc < height; yc=yc+2) {
- g.drawLine(x+k,yc,x+k,yc);
- }
+ for (int k = 0; k < thickness; k++) {
+ for (int yc = y; yc < height; yc = yc + 2) {
+ g.drawLine(x + k, yc, x + k, yc);
+ }
+ }
}
- }
- }
-
- /**
- * Called by paintBorder to paint the various versions of dotted line
- * borders for a cell.
- */
- private void paintDashedBorders(Graphics g, int x, int y, int width,
- int height) {
- if (northBorder &&
- ((northBorderType == BorderStyle.DASHED) ||
- (northBorderType == BorderStyle.HAIR))
- ) {
- int thickness = getThickness(northBorderType);
-
- int dashlength = 1;
-
- if (northBorderType == BorderStyle.DASHED)
- dashlength = 2;
-
- g.setColor(northColor);
-
- for (int k=0; k < thickness; k++) {
- for (int xc = x; xc < width; xc=xc+5) {
- g.drawLine(xc,y+k,xc+dashlength,y+k);
- }
+ }
+
+ /**
+ * Called by paintBorder to paint the various versions of dotted line
+ * borders for a cell.
+ */
+ private void paintDashedBorders(Graphics g, int x, int y, int width,
+ int height) {
+ if (northBorder &&
+ ((northBorderType == BorderStyle.DASHED) ||
+ (northBorderType == BorderStyle.HAIR))
+ ) {
+ int thickness = getThickness(northBorderType);
+
+ int dashlength = 1;
+
+ if (northBorderType == BorderStyle.DASHED)
+ dashlength = 2;
+
+ g.setColor(northColor);
+
+ for (int k = 0; k < thickness; k++) {
+ for (int xc = x; xc < width; xc = xc + 5) {
+ g.drawLine(xc, y + k, xc + dashlength, y + k);
+ }
+ }
}
- }
- if (eastBorder &&
- ((eastBorderType == BorderStyle.DASHED) ||
- (eastBorderType == BorderStyle.HAIR))
- ) {
+ if (eastBorder &&
+ ((eastBorderType == BorderStyle.DASHED) ||
+ (eastBorderType == BorderStyle.HAIR))
+ ) {
- int thickness = getThickness(eastBorderType);
- thickness++; //need for dotted borders to show up east
+ int thickness = getThickness(eastBorderType);
+ thickness++; //need for dotted borders to show up east
- int dashlength = 1;
+ int dashlength = 1;
- if (eastBorderType == BorderStyle.DASHED)
- dashlength = 2;
+ if (eastBorderType == BorderStyle.DASHED)
+ dashlength = 2;
- g.setColor(eastColor);
+ g.setColor(eastColor);
- for (int k=0; k < thickness; k++) {
- for (int yc=y;yc < height; yc=yc+5) {
- g.drawLine(width-k,yc,width-k,yc+dashlength);
- }
+ for (int k = 0; k < thickness; k++) {
+ for (int yc = y; yc < height; yc = yc + 5) {
+ g.drawLine(width - k, yc, width - k, yc + dashlength);
+ }
+ }
}
- }
- if (southBorder &&
- ((southBorderType == BorderStyle.DASHED) ||
- (southBorderType == BorderStyle.HAIR))
- ) {
+ if (southBorder &&
+ ((southBorderType == BorderStyle.DASHED) ||
+ (southBorderType == BorderStyle.HAIR))
+ ) {
- int thickness = getThickness(southBorderType);
- thickness++;
+ int thickness = getThickness(southBorderType);
+ thickness++;
- int dashlength = 1;
+ int dashlength = 1;
- if (southBorderType == BorderStyle.DASHED)
- dashlength = 2;
+ if (southBorderType == BorderStyle.DASHED)
+ dashlength = 2;
- g.setColor(southColor);
- for (int k=0; k < thickness; k++) {
- for (int xc = x; xc < width; xc=xc+5) {
- g.drawLine(xc,height-k,xc+dashlength,height-k);
- }
+ g.setColor(southColor);
+ for (int k = 0; k < thickness; k++) {
+ for (int xc = x; xc < width; xc = xc + 5) {
+ g.drawLine(xc, height - k, xc + dashlength, height - k);
+ }
+ }
}
- }
- if (westBorder &&
- ((westBorderType == BorderStyle.DASHED) ||
- (westBorderType == BorderStyle.HAIR))
- ) {
+ if (westBorder &&
+ ((westBorderType == BorderStyle.DASHED) ||
+ (westBorderType == BorderStyle.HAIR))
+ ) {
- int thickness = getThickness(westBorderType);
+ int thickness = getThickness(westBorderType);
// thickness++;
- int dashlength = 1;
+ int dashlength = 1;
- if (westBorderType == BorderStyle.DASHED)
- dashlength = 2;
+ if (westBorderType == BorderStyle.DASHED)
+ dashlength = 2;
- g.setColor(westColor);
+ g.setColor(westColor);
- for (int k=0; k < thickness; k++) {
- for (int yc=y;yc < height; yc=yc+5) {
- g.drawLine(x+k,yc,x+k,yc+dashlength);
- }
+ for (int k = 0; k < thickness; k++) {
+ for (int yc = y; yc < height; yc = yc + 5) {
+ g.drawLine(x + k, yc, x + k, yc + dashlength);
+ }
+ }
}
- }
- }
-
- /**
- * Called by paintBorder to paint the double line
- * borders for a cell.
- */
- private void paintDoubleBorders(Graphics g, int x, int y, int width,
- int height) {
- if (northBorder &&
- northBorderType == BorderStyle.DOUBLE) {
-
- g.setColor(northColor);
-
- int leftx=x;
- int rightx=width;
-
- // if there are borders on the west or east then
- // the second line shouldn't cross them
- if (westBorder) {
- leftx = x + 3;
+ }
+
+ /**
+ * Called by paintBorder to paint the double line
+ * borders for a cell.
+ */
+ private void paintDoubleBorders(Graphics g, int x, int y, int width,
+ int height) {
+ if (northBorder &&
+ northBorderType == BorderStyle.DOUBLE) {
+
+ g.setColor(northColor);
+
+ int leftx = x;
+ int rightx = width;
+
+ // if there are borders on the west or east then
+ // the second line shouldn't cross them
+ if (westBorder) {
+ leftx = x + 3;
+ }
+
+ if (eastBorder) {
+ rightx = width - 3;
+ }
+
+ g.drawLine(x, y, width, y);
+ g.drawLine(leftx, y + 2, rightx, y + 2);
}
- if (eastBorder) {
- rightx = width - 3;
- }
+ if (eastBorder &&
+ eastBorderType == BorderStyle.DOUBLE
+ ) {
- g.drawLine(x,y,width,y);
- g.drawLine(leftx,y+2,rightx,y+2);
- }
+ int thickness = getThickness(eastBorderType);
+ thickness++; //need for dotted borders to show up east
- if (eastBorder &&
- eastBorderType == BorderStyle.DOUBLE
- ) {
+ g.setColor(eastColor);
- int thickness = getThickness(eastBorderType);
- thickness++; //need for dotted borders to show up east
+ int topy = y;
+ int bottomy = height;
- g.setColor(eastColor);
+ if (northBorder) {
+ topy = y + 3;
+ }
- int topy=y;
- int bottomy=height;
+ if (southBorder) {
+ bottomy = height - 3;
+ }
- if (northBorder) {
- topy = y + 3;
+ g.drawLine(width - 1, y, width - 1, height);
+ g.drawLine(width - 3, topy, width - 3, bottomy);
}
- if (southBorder) {
- bottomy = height - 3;
- }
+ if (southBorder &&
+ southBorderType == BorderStyle.DOUBLE
+ ) {
- g.drawLine(width-1,y,width-1,height);
- g.drawLine(width-3,topy,width-3,bottomy);
- }
+ g.setColor(southColor);
- if (southBorder &&
- southBorderType == BorderStyle.DOUBLE
- ) {
+ int leftx = y;
+ int rightx = width;
- g.setColor(southColor);
+ if (westBorder)
+ leftx = x + 3;
- int leftx=y;
- int rightx=width;
+ if (eastBorder)
+ rightx = width - 3;
- if (westBorder)
- leftx=x+3;
- if (eastBorder)
- rightx=width-3;
+ g.drawLine(x, height - 1, width, height - 1);
+ g.drawLine(leftx, height - 3, rightx, height - 3);
+ }
+ if (westBorder &&
+ westBorderType == BorderStyle.DOUBLE
+ ) {
- g.drawLine(x,height - 1,width,height - 1);
- g.drawLine(leftx,height - 3,rightx,height - 3);
- }
+ int thickness = getThickness(westBorderType);
+// thickness++;
- if (westBorder &&
- westBorderType == BorderStyle.DOUBLE
- ) {
+ g.setColor(westColor);
- int thickness = getThickness(westBorderType);
-// thickness++;
+ int topy = y;
+ int bottomy = height - 3;
+
+ if (northBorder)
+ topy = y + 2;
+
+ if (southBorder)
+ bottomy = height - 3;
- g.setColor(westColor);
-
- int topy=y;
- int bottomy=height-3;
-
- if (northBorder)
- topy=y+2;
-
- if (southBorder)
- bottomy=height-3;
-
- g.drawLine(x,y,x,height);
- g.drawLine(x+2,topy,x+2,bottomy);
- }
- }
-
- /**
- * Called by paintBorder to paint the various versions of dash dot dot line
- * borders for a cell.
- */
- private void paintDashDotDotBorders(Graphics g, int x, int y, int width,
- int height) {
- if (northBorder &&
- ((northBorderType == BorderStyle.DASH_DOT_DOT) ||
- (northBorderType == BorderStyle.MEDIUM_DASH_DOT_DOT))
- ) {
- int thickness = getThickness(northBorderType);
-
- g.setColor(northColor);
- for (int l=x; l < width;) {
- l=l+drawDashDotDot(g, l, y, thickness, true, true);
+ g.drawLine(x, y, x, height);
+ g.drawLine(x + 2, topy, x + 2, bottomy);
}
+ }
+
+ /**
+ * Called by paintBorder to paint the various versions of dash dot dot line
+ * borders for a cell.
+ */
+ private void paintDashDotDotBorders(Graphics g, int x, int y, int width,
+ int height) {
+ if (northBorder &&
+ ((northBorderType == BorderStyle.DASH_DOT_DOT) ||
+ (northBorderType == BorderStyle.MEDIUM_DASH_DOT_DOT))
+ ) {
+ int thickness = getThickness(northBorderType);
+
+ g.setColor(northColor);
+ for (int l = x; l < width; ) {
+ l = l + drawDashDotDot(g, l, y, thickness, true, true);
+ }
- }
+ }
- if (eastBorder &&
- ((eastBorderType == BorderStyle.DASH_DOT_DOT) ||
- (eastBorderType == BorderStyle.MEDIUM_DASH_DOT_DOT))
- ) {
+ if (eastBorder &&
+ ((eastBorderType == BorderStyle.DASH_DOT_DOT) ||
+ (eastBorderType == BorderStyle.MEDIUM_DASH_DOT_DOT))
+ ) {
- int thickness = getThickness(eastBorderType);
+ int thickness = getThickness(eastBorderType);
- g.setColor(eastColor);
+ g.setColor(eastColor);
- for (int l=y;l < height;) {
- //System.err.println("drawing east");
- l=l+drawDashDotDot(g,width-1,l,thickness,false,false);
+ for (int l = y; l < height; ) {
+ //System.err.println("drawing east");
+ l = l + drawDashDotDot(g, width - 1, l, thickness, false, false);
+ }
}
- }
- if (southBorder &&
- ((southBorderType == BorderStyle.DASH_DOT_DOT) ||
- (southBorderType == BorderStyle.MEDIUM_DASH_DOT_DOT))
- ) {
+ if (southBorder &&
+ ((southBorderType == BorderStyle.DASH_DOT_DOT) ||
+ (southBorderType == BorderStyle.MEDIUM_DASH_DOT_DOT))
+ ) {
- int thickness = getThickness(southBorderType);
+ int thickness = getThickness(southBorderType);
- g.setColor(southColor);
+ g.setColor(southColor);
- for (int l=x; l < width;) {
- //System.err.println("drawing south");
- l=l+drawDashDotDot(g, l, height-1, thickness, true, false);
+ for (int l = x; l < width; ) {
+ //System.err.println("drawing south");
+ l = l + drawDashDotDot(g, l, height - 1, thickness, true, false);
+ }
}
- }
- if (westBorder &&
- ((westBorderType == BorderStyle.DASH_DOT_DOT) ||
- (westBorderType == BorderStyle.MEDIUM_DASH_DOT_DOT))
- ) {
+ if (westBorder &&
+ ((westBorderType == BorderStyle.DASH_DOT_DOT) ||
+ (westBorderType == BorderStyle.MEDIUM_DASH_DOT_DOT))
+ ) {
- int thickness = getThickness(westBorderType);
+ int thickness = getThickness(westBorderType);
- g.setColor(westColor);
+ g.setColor(westColor);
- for (int l=y;l < height;) {
- //System.err.println("drawing west");
- l=l+drawDashDotDot(g,x,l,thickness,false,true);
- }
+ for (int l = y; l < height; ) {
+ //System.err.println("drawing west");
+ l = l + drawDashDotDot(g, x, l, thickness, false, true);
+ }
- }
- }
-
- /**
- * Draws one dash dot dot horizontally or vertically with thickness drawn
- * incrementally to either the right or left.
- *
- * @param g graphics object for drawing with
- * @param x the x origin of the line
- * @param y the y origin of the line
- * @param thickness the thickness of the line
- * @param horizontal or vertical (true for horizontal)
- * @param rightBottom or left/top thickness (true for right or top),
- * if true then the x or y origin will be incremented to provide
- * thickness, if false, they'll be decremented. For vertical
- * borders, x is incremented or decremented, for horizontal its y.
- * Just set to true for north and west, and false for east and
- * south.
- * @return length - returns the length of the line.
- */
- private int drawDashDotDot(Graphics g,int x, int y, int thickness,
- boolean horizontal,
- boolean rightBottom) {
-
- for (int t=0; t < thickness; t++) {
- if (!rightBottom) {
- t = 0 - t; //add negative thickness so we go the other way
- //then we'll decrement instead of increment.
- }
- if (horizontal) {
- g.drawLine(x,y+t,x+5,y+t);
- g.drawLine(x+8,y+t,x+10,y+t);
- g.drawLine(x+13,y+t,x+15,y+t);
- } else {
- g.drawLine(x+t,y,x+t,y+5);
- g.drawLine(x+t,y+8,x+t,y+10);
- g.drawLine(x+t,y+13,x+t,y+15);
- }
- }
- return 18;
- }
-
- /**
- * @return the line thickness for a border based on border type
- */
- private int getThickness(BorderStyle thickness) {
- switch (thickness) {
- case DASH_DOT_DOT:
- case DASHED:
- case HAIR:
- return 1;
- case THIN:
- return 2;
- case MEDIUM:
- case MEDIUM_DASH_DOT_DOT:
- return 3;
- case THICK:
- return 4;
- default:
- return 1;
- }
- }
+ }
+ }
+
+ /**
+ * Draws one dash dot dot horizontally or vertically with thickness drawn
+ * incrementally to either the right or left.
+ *
+ * @param g graphics object for drawing with
+ * @param x the x origin of the line
+ * @param y the y origin of the line
+ * @param thickness the thickness of the line
+ * @param horizontal or vertical (true for horizontal)
+ * @param rightBottom or left/top thickness (true for right or top),
+ * if true then the x or y origin will be incremented to provide
+ * thickness, if false, they'll be decremented. For vertical
+ * borders, x is incremented or decremented, for horizontal its y.
+ * Just set to true for north and west, and false for east and
+ * south.
+ * @return length - returns the length of the line.
+ */
+ private int drawDashDotDot(Graphics g, int x, int y, int thickness,
+ boolean horizontal,
+ boolean rightBottom) {
+
+ for (int t = 0; t < thickness; t++) {
+ if (!rightBottom) {
+ t = 0 - t; //add negative thickness so we go the other way
+ //then we'll decrement instead of increment.
+ }
+ if (horizontal) {
+ g.drawLine(x, y + t, x + 5, y + t);
+ g.drawLine(x + 8, y + t, x + 10, y + t);
+ g.drawLine(x + 13, y + t, x + 15, y + t);
+ } else {
+ g.drawLine(x + t, y, x + t, y + 5);
+ g.drawLine(x + t, y + 8, x + t, y + 10);
+ g.drawLine(x + t, y + 13, x + t, y + 15);
+ }
+ }
+ return 18;
+ }
+
+ /**
+ * @return the line thickness for a border based on border type
+ */
+ private int getThickness(BorderStyle thickness) {
+ switch (thickness) {
+ case DASH_DOT_DOT:
+ case DASHED:
+ case HAIR:
+ return 1;
+ case THIN:
+ return 2;
+ case MEDIUM:
+ case MEDIUM_DASH_DOT_DOT:
+ return 3;
+ case THICK:
+ return 4;
+ default:
+ return 1;
+ }
+ }
}
diff --git a/src/examples/src/org/apache/poi/hssf/view/SVFractionalFormat.java b/src/examples/src/org/apache/poi/hssf/view/SVFractionalFormat.java
index 35cedd0ce9..9f2d1a2b52 100644
--- a/src/examples/src/org/apache/poi/hssf/view/SVFractionalFormat.java
+++ b/src/examples/src/org/apache/poi/hssf/view/SVFractionalFormat.java
@@ -19,206 +19,211 @@
package org.apache.poi.hssf.view;
-import java.text.*;
+import java.text.FieldPosition;
+import java.text.Format;
+import java.text.ParseException;
+import java.text.ParsePosition;
/**
* This class is used to format cells into their fractional format.
- *
+ * <p>
* I cant be 100% sure that the same fractional value will be displayed as in
* excel but then again it is a lossy formating mode anyway
*
- * @author Jason Height
- * @since 15 July 2002
+ * @author Jason Height
+ * @since 15 July 2002
*/
public class SVFractionalFormat extends Format {
- private short ONE_DIGIT = 1;
- private short TWO_DIGIT = 2;
- private short THREE_DIGIT = 3;
- private short UNITS = 4;
- private int units = 1;
- private short mode = -1;
-
- /** Constructs a new FractionalFormatter
- *
- * The formatStr defines how the number will be formatted
- * # ?/? Up to one digit
- * # ??/?? Up to two digits
- * # ???/??? Up to three digits
- * # ?/2 In halves
- * # ?/4 In quarters
- * # ?/8 In eighths
- * # ?/16 In sixteenths
- * # ?/10 In tenths
- * # ?/100 In hundredths
- */
- public SVFractionalFormat(String formatStr) {
- if ("# ?/?".equals(formatStr))
- mode = ONE_DIGIT;
- else if ("# ??/??".equals(formatStr))
- mode = TWO_DIGIT;
- else if ("# ???/???".equals(formatStr))
- mode = THREE_DIGIT;
- else if ("# ?/2".equals(formatStr)) {
- mode = UNITS;
- units = 2;
- } else if ("# ?/4".equals(formatStr)) {
- mode = UNITS;
- units = 4;
- } else if ("# ?/8".equals(formatStr)) {
- mode = UNITS;
- units = 8;
- } else if ("# ?/16".equals(formatStr)) {
- mode = UNITS;
- units = 16;
- } else if ("# ?/10".equals(formatStr)) {
- mode = UNITS;
- units = 10;
- } else if ("# ?/100".equals(formatStr)) {
- mode = UNITS;
- units = 100;
- }
- }
-
- /**
- * Returns a fractional string representation of a double to a maximum denominator size
- *
- * This code has been translated to java from the following web page.
- * http://www.codeproject.com/cpp/fraction.asp
- * Originally coded in c++ By Dean Wyant dwyant@mindspring.com
- * The code on the web page is freely available.
- *
- * @param f Description of the Parameter
- * @param MaxDen Description of the Parameter
- * @return Description of the Return Value
- */
- private String format(final double f, final int MaxDen) {
- long Whole = (long)f;
- int sign = 1;
- if (f < 0) {
- sign = -1;
+ private short ONE_DIGIT = 1;
+ private short TWO_DIGIT = 2;
+ private short THREE_DIGIT = 3;
+ private short UNITS = 4;
+ private int units = 1;
+ private short mode = -1;
+
+ /**
+ * Constructs a new FractionalFormatter
+ * <p>
+ * The formatStr defines how the number will be formatted
+ * # ?/? Up to one digit
+ * # ??/?? Up to two digits
+ * # ???/??? Up to three digits
+ * # ?/2 In halves
+ * # ?/4 In quarters
+ * # ?/8 In eighths
+ * # ?/16 In sixteenths
+ * # ?/10 In tenths
+ * # ?/100 In hundredths
+ */
+ public SVFractionalFormat(String formatStr) {
+ if ("# ?/?".equals(formatStr))
+ mode = ONE_DIGIT;
+ else if ("# ??/??".equals(formatStr))
+ mode = TWO_DIGIT;
+ else if ("# ???/???".equals(formatStr))
+ mode = THREE_DIGIT;
+ else if ("# ?/2".equals(formatStr)) {
+ mode = UNITS;
+ units = 2;
+ } else if ("# ?/4".equals(formatStr)) {
+ mode = UNITS;
+ units = 4;
+ } else if ("# ?/8".equals(formatStr)) {
+ mode = UNITS;
+ units = 8;
+ } else if ("# ?/16".equals(formatStr)) {
+ mode = UNITS;
+ units = 16;
+ } else if ("# ?/10".equals(formatStr)) {
+ mode = UNITS;
+ units = 10;
+ } else if ("# ?/100".equals(formatStr)) {
+ mode = UNITS;
+ units = 100;
+ }
}
- double Precision = 0.00001;
- double AllowedError = Precision;
- double d = Math.abs(f);
- d -= Whole;
- double Frac = d;
- double Diff = Frac;
- long Num = 1;
- long Den = 0;
- long A = 0;
- long B = 0;
- long i = 0;
- if (Frac > Precision) {
- while (true) {
- d = 1.0 / d;
- i = (long) (d + Precision);
- d -= i;
- if (A > 0) {
- Num = i * Num + B;
+
+ /**
+ * Returns a fractional string representation of a double to a maximum denominator size
+ * <p>
+ * This code has been translated to java from the following web page.
+ * http://www.codeproject.com/cpp/fraction.asp
+ * Originally coded in c++ By Dean Wyant dwyant@mindspring.com
+ * The code on the web page is freely available.
+ *
+ * @param f Description of the Parameter
+ * @param MaxDen Description of the Parameter
+ * @return Description of the Return Value
+ */
+ private String format(final double f, final int MaxDen) {
+ long Whole = (long) f;
+ int sign = 1;
+ if (f < 0) {
+ sign = -1;
}
- Den = (long) (Num / Frac + 0.5);
- Diff = Math.abs((double) Num / Den - Frac);
- if (Den > MaxDen) {
- if (A > 0) {
- Num = A;
- Den = (long) (Num / Frac + 0.5);
- Diff = Math.abs((double) Num / Den - Frac);
- } else {
- Den = MaxDen;
- Num = 1;
- Diff = Math.abs((double) Num / Den - Frac);
- if (Diff > Frac) {
- Num = 0;
- Den = 1;
- // Keeps final check below from adding 1 and keeps Den from being 0
- Diff = Frac;
+ double Precision = 0.00001;
+ double AllowedError = Precision;
+ double d = Math.abs(f);
+ d -= Whole;
+ double Frac = d;
+ double Diff = Frac;
+ long Num = 1;
+ long Den = 0;
+ long A = 0;
+ long B = 0;
+ long i = 0;
+ if (Frac > Precision) {
+ while (true) {
+ d = 1.0 / d;
+ i = (long) (d + Precision);
+ d -= i;
+ if (A > 0) {
+ Num = i * Num + B;
+ }
+ Den = (long) (Num / Frac + 0.5);
+ Diff = Math.abs((double) Num / Den - Frac);
+ if (Den > MaxDen) {
+ if (A > 0) {
+ Num = A;
+ Den = (long) (Num / Frac + 0.5);
+ Diff = Math.abs((double) Num / Den - Frac);
+ } else {
+ Den = MaxDen;
+ Num = 1;
+ Diff = Math.abs((double) Num / Den - Frac);
+ if (Diff > Frac) {
+ Num = 0;
+ Den = 1;
+ // Keeps final check below from adding 1 and keeps Den from being 0
+ Diff = Frac;
+ }
+ }
+ break;
+ }
+ if ((Diff <= AllowedError) || (d < Precision)) {
+ break;
+ }
+ Precision = AllowedError / Diff;
+ // This calculation of Precision does not always provide results within
+ // Allowed Error. It compensates for loss of significant digits that occurs.
+ // It helps to round the imprecise reciprocal values to i.
+ B = A;
+ A = Num;
}
- }
- break;
}
- if ((Diff <= AllowedError) || (d < Precision)) {
- break;
+ if (Num == Den) {
+ Whole++;
+ Num = 0;
+ Den = 0;
+ } else if (Den == 0) {
+ Num = 0;
+ }
+ if (sign < 0) {
+ if (Whole == 0) {
+ Num = -Num;
+ } else {
+ Whole = -Whole;
+ }
+ }
+ return new StringBuilder().append(Whole).append(" ").append(Num).append("/").append(Den).toString();
+ }
+
+ /**
+ * This method formats the double in the units specified.
+ * The usints could be any number but in this current implementation it is
+ * halves (2), quaters (4), eigths (8) etc
+ */
+ private String formatUnit(double f, int units) {
+ long Whole = (long) f;
+ f -= Whole;
+ long Num = Math.round(f * units);
+
+ return new StringBuilder().append(Whole).append(" ").append(Num).append("/").append(units).toString();
+ }
+
+ public final String format(double val) {
+ if (mode == ONE_DIGIT) {
+ return format(val, 9);
+ } else if (mode == TWO_DIGIT) {
+ return format(val, 99);
+ } else if (mode == THREE_DIGIT) {
+ return format(val, 999);
+ } else if (mode == UNITS) {
+ return formatUnit(val, units);
}
- Precision = AllowedError / Diff;
- // This calculation of Precision does not always provide results within
- // Allowed Error. It compensates for loss of significant digits that occurs.
- // It helps to round the imprecise reciprocal values to i.
- B = A;
- A = Num;
- }
+ throw new RuntimeException("Unexpected Case");
}
- if (Num == Den) {
- Whole++;
- Num = 0;
- Den = 0;
- } else if (Den == 0) {
- Num = 0;
+
+ @Override
+ public StringBuffer format(Object obj,
+ StringBuffer toAppendTo,
+ FieldPosition pos) {
+ if (obj instanceof Number) {
+ toAppendTo.append(format(((Number) obj).doubleValue()));
+ return toAppendTo;
+ }
+ throw new IllegalArgumentException("Can only handle Numbers");
}
- if (sign < 0) {
- if (Whole == 0) {
- Num = -Num;
- } else {
- Whole = -Whole;
- }
+
+ @Override
+ public Object parseObject(String source,
+ ParsePosition status) {
+ //JMH TBD
+ return null;
}
- return new StringBuilder().append(Whole).append(" ").append(Num).append("/").append(Den).toString();
- }
-
- /** This method formats the double in the units specified.
- * The usints could be any number but in this current implementation it is
- * halves (2), quaters (4), eigths (8) etc
- */
- private String formatUnit(double f, int units) {
- long Whole = (long)f;
- f -= Whole;
- long Num = Math.round(f * units);
-
- return new StringBuilder().append(Whole).append(" ").append(Num).append("/").append(units).toString();
- }
-
- public final String format(double val) {
- if (mode == ONE_DIGIT) {
- return format(val, 9);
- } else if (mode == TWO_DIGIT) {
- return format(val, 99);
- } else if (mode == THREE_DIGIT) {
- return format(val, 999);
- } else if (mode == UNITS) {
- return formatUnit(val , units);
+
+ @Override
+ public Object parseObject(String source)
+ throws ParseException {
+ //JMH TBD
+ return null;
}
- throw new RuntimeException("Unexpected Case");
- }
-
- @Override
-public StringBuffer format(Object obj,
- StringBuffer toAppendTo,
- FieldPosition pos) {
- if (obj instanceof Number) {
- toAppendTo.append(format(((Number)obj).doubleValue()));
- return toAppendTo;
+
+ @Override
+ public Object clone() {
+ //JMH TBD
+ return null;
}
- throw new IllegalArgumentException("Can only handle Numbers");
- }
-
- @Override
-public Object parseObject(String source,
- ParsePosition status) {
- //JMH TBD
- return null;
- }
-
- @Override
-public Object parseObject(String source)
- throws ParseException {
- //JMH TBD
- return null;
- }
-
- @Override
-public Object clone() {
- //JMH TBD
- return null;
- }
}
diff --git a/src/examples/src/org/apache/poi/hssf/view/SVRowHeader.java b/src/examples/src/org/apache/poi/hssf/view/SVRowHeader.java
index 484fc5b447..834d0a0068 100644
--- a/src/examples/src/org/apache/poi/hssf/view/SVRowHeader.java
+++ b/src/examples/src/org/apache/poi/hssf/view/SVRowHeader.java
@@ -15,85 +15,95 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
-
package org.apache.poi.hssf.view;
-import java.awt.*;
-import javax.swing.*;
-import javax.swing.table.*;
+import java.awt.Component;
+import java.awt.Dimension;
-import org.apache.poi.hssf.usermodel.*;
+import javax.swing.AbstractListModel;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JTable;
+import javax.swing.ListCellRenderer;
+import javax.swing.ListModel;
+import javax.swing.UIManager;
+import javax.swing.table.JTableHeader;
+
+import org.apache.poi.hssf.usermodel.HSSFRow;
+import org.apache.poi.hssf.usermodel.HSSFSheet;
/**
* This class presents the row header to the table.
*
- *
* @author Jason Height
*/
public class SVRowHeader extends JList<Object> {
- /** This model simply returns an integer number up to the number of rows
- * that are present in the sheet.
- *
- */
- private class SVRowHeaderModel extends AbstractListModel<Object> {
- private HSSFSheet sheet;
-
- public SVRowHeaderModel(HSSFSheet sheet) {
- this.sheet = sheet;
- }
+ /**
+ * This model simply returns an integer number up to the number of rows
+ * that are present in the sheet.
+ */
+ private class SVRowHeaderModel extends AbstractListModel<Object> {
+ private HSSFSheet sheet;
- @Override
- public int getSize() {
- return sheet.getLastRowNum() + 1;
- }
- @Override
- public Object getElementAt(int index) {
- return Integer.toString(index+1);
- }
- }
-
- /** Renderes the row number*/
- private class RowHeaderRenderer extends JLabel implements ListCellRenderer<Object> {
- private HSSFSheet sheet;
- private int extraHeight;
-
- RowHeaderRenderer(HSSFSheet sheet, JTable table, int extraHeight) {
- this.sheet = sheet;
- this.extraHeight = extraHeight;
- JTableHeader header = table.getTableHeader();
- setOpaque(true);
- setBorder(UIManager.getBorder("TableHeader.cellBorder"));
- setHorizontalAlignment(CENTER);
- setForeground(header.getForeground());
- setBackground(header.getBackground());
- setFont(header.getFont());
+ public SVRowHeaderModel(HSSFSheet sheet) {
+ this.sheet = sheet;
+ }
+
+ @Override
+ public int getSize() {
+ return sheet.getLastRowNum() + 1;
+ }
+
+ @Override
+ public Object getElementAt(int index) {
+ return Integer.toString(index + 1);
+ }
}
- @Override
- public Component getListCellRendererComponent( JList list,
- Object value, int index, boolean isSelected, boolean cellHasFocus) {
- Dimension d = getPreferredSize();
- HSSFRow row = sheet.getRow(index);
- int rowHeight;
- if(row == null) {
- rowHeight = (int)sheet.getDefaultRowHeightInPoints();
- } else {
- rowHeight = (int)row.getHeightInPoints();
- }
- d.height = rowHeight+extraHeight;
- setPreferredSize(d);
- setText((value == null) ? "" : value.toString());
- return this;
+ /**
+ * Renderes the row number
+ */
+ private class RowHeaderRenderer extends JLabel implements ListCellRenderer<Object> {
+ private HSSFSheet sheet;
+ private int extraHeight;
+
+ RowHeaderRenderer(HSSFSheet sheet, JTable table, int extraHeight) {
+ this.sheet = sheet;
+ this.extraHeight = extraHeight;
+ JTableHeader header = table.getTableHeader();
+ setOpaque(true);
+ setBorder(UIManager.getBorder("TableHeader.cellBorder"));
+ setHorizontalAlignment(CENTER);
+ setForeground(header.getForeground());
+ setBackground(header.getBackground());
+ setFont(header.getFont());
+ }
+
+ @Override
+ public Component getListCellRendererComponent(JList list,
+ Object value, int index, boolean isSelected, boolean cellHasFocus) {
+ Dimension d = getPreferredSize();
+ HSSFRow row = sheet.getRow(index);
+ int rowHeight;
+ if (row == null) {
+ rowHeight = (int) sheet.getDefaultRowHeightInPoints();
+ } else {
+ rowHeight = (int) row.getHeightInPoints();
+ }
+ d.height = rowHeight + extraHeight;
+ setPreferredSize(d);
+ setText((value == null) ? "" : value.toString());
+ return this;
+ }
}
- }
- public SVRowHeader(HSSFSheet sheet, JTable table, int extraHeight) {
- ListModel<Object> lm = new SVRowHeaderModel(sheet);
- this.setModel(lm);
+ public SVRowHeader(HSSFSheet sheet, JTable table, int extraHeight) {
+ ListModel<Object> lm = new SVRowHeaderModel(sheet);
+ this.setModel(lm);
- setFixedCellWidth(50);
- setCellRenderer(new RowHeaderRenderer(sheet, table, extraHeight));
- }
+ setFixedCellWidth(50);
+ setCellRenderer(new RowHeaderRenderer(sheet, table, extraHeight));
+ }
}
diff --git a/src/examples/src/org/apache/poi/hssf/view/SVSheetTable.java b/src/examples/src/org/apache/poi/hssf/view/SVSheetTable.java
index ebfb3922ea..7c41cad868 100644
--- a/src/examples/src/org/apache/poi/hssf/view/SVSheetTable.java
+++ b/src/examples/src/org/apache/poi/hssf/view/SVSheetTable.java
@@ -54,208 +54,208 @@ import org.apache.poi.ss.usermodel.Row;
* @author Ken Arnold, Industrious Media LLC
*/
public class SVSheetTable extends JTable {
- private final HSSFSheet sheet;
- private final PendingPaintings pendingPaintings;
- private FormulaDisplayListener formulaListener;
- private JScrollPane scroll;
-
- private static final Color HEADER_BACKGROUND = new Color(235, 235, 235);
-
- /**
- * This field is the magic number to convert from a Character width to a java
- * pixel width.
- * <p>
- * When the "normal" font size in a workbook changes, this effects all of the
- * heights and widths. Unfortunately there is no way to retrieve this
- * information, hence the MAGIC number.
- * <p>
- * This number may only work for the normal style font size of Arial size 10.
- */
- private static final int magicCharFactor = 7;
-
- private class HeaderCell extends JLabel {
- private final int row;
-
- public HeaderCell(Object value, int row) {
- super(value.toString(), CENTER);
- this.row = row;
- setBackground(HEADER_BACKGROUND);
- setOpaque(true);
- setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY));
- setRowSelectionAllowed(false);
- }
+ private final HSSFSheet sheet;
+ private final PendingPaintings pendingPaintings;
+ private FormulaDisplayListener formulaListener;
+ private JScrollPane scroll;
+
+ private static final Color HEADER_BACKGROUND = new Color(235, 235, 235);
+
+ /**
+ * This field is the magic number to convert from a Character width to a java
+ * pixel width.
+ * <p>
+ * When the "normal" font size in a workbook changes, this effects all of the
+ * heights and widths. Unfortunately there is no way to retrieve this
+ * information, hence the MAGIC number.
+ * <p>
+ * This number may only work for the normal style font size of Arial size 10.
+ */
+ private static final int magicCharFactor = 7;
+
+ private class HeaderCell extends JLabel {
+ private final int row;
+
+ public HeaderCell(Object value, int row) {
+ super(value.toString(), CENTER);
+ this.row = row;
+ setBackground(HEADER_BACKGROUND);
+ setOpaque(true);
+ setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY));
+ setRowSelectionAllowed(false);
+ }
- @Override
- public Dimension getPreferredSize() {
- Dimension d = super.getPreferredSize();
- if (row >= 0) {
- d.height = getRowHeight(row);
- }
- return d;
- }
+ @Override
+ public Dimension getPreferredSize() {
+ Dimension d = super.getPreferredSize();
+ if (row >= 0) {
+ d.height = getRowHeight(row);
+ }
+ return d;
+ }
- @Override
- public Dimension getMaximumSize() {
- Dimension d = super.getMaximumSize();
- if (row >= 0) {
- d.height = getRowHeight(row);
- }
- return d;
- }
+ @Override
+ public Dimension getMaximumSize() {
+ Dimension d = super.getMaximumSize();
+ if (row >= 0) {
+ d.height = getRowHeight(row);
+ }
+ return d;
+ }
- @Override
- public Dimension getMinimumSize() {
- Dimension d = super.getMinimumSize();
- if (row >= 0) {
- d.height = getRowHeight(row);
- }
- return d;
+ @Override
+ public Dimension getMinimumSize() {
+ Dimension d = super.getMinimumSize();
+ if (row >= 0) {
+ d.height = getRowHeight(row);
+ }
+ return d;
+ }
}
- }
- private class HeaderCellRenderer implements TableCellRenderer {
- @Override
- public Component getTableCellRendererComponent(JTable table, Object value,
- boolean isSelected, boolean hasFocus, int row, int column) {
+ private class HeaderCellRenderer implements TableCellRenderer {
+ @Override
+ public Component getTableCellRendererComponent(JTable table, Object value,
+ boolean isSelected, boolean hasFocus, int row, int column) {
- return new HeaderCell(value, row);
+ return new HeaderCell(value, row);
+ }
}
- }
- private class FormulaDisplayListener implements ListSelectionListener {
- private final JTextComponent formulaDisplay;
+ private class FormulaDisplayListener implements ListSelectionListener {
+ private final JTextComponent formulaDisplay;
- public FormulaDisplayListener(JTextComponent formulaDisplay) {
- this.formulaDisplay = formulaDisplay;
- }
+ public FormulaDisplayListener(JTextComponent formulaDisplay) {
+ this.formulaDisplay = formulaDisplay;
+ }
- @Override
- public void valueChanged(ListSelectionEvent e) {
- int row = getSelectedRow();
- int col = getSelectedColumn();
- if (row < 0 || col < 0) {
- return;
- }
-
- if (e.getValueIsAdjusting()) {
- return;
- }
-
- HSSFCell cell = (HSSFCell) getValueAt(row, col);
- String formula = "";
- if (cell != null) {
- if (cell.getCellType() == CellType.FORMULA) {
- formula = cell.getCellFormula();
- } else {
- formula = cell.toString();
+ @Override
+ public void valueChanged(ListSelectionEvent e) {
+ int row = getSelectedRow();
+ int col = getSelectedColumn();
+ if (row < 0 || col < 0) {
+ return;
+ }
+
+ if (e.getValueIsAdjusting()) {
+ return;
+ }
+
+ HSSFCell cell = (HSSFCell) getValueAt(row, col);
+ String formula = "";
+ if (cell != null) {
+ if (cell.getCellType() == CellType.FORMULA) {
+ formula = cell.getCellFormula();
+ } else {
+ formula = cell.toString();
+ }
+ if (formula == null)
+ formula = "";
+ }
+ formulaDisplay.setText(formula);
}
- if (formula == null)
- formula = "";
- }
- formulaDisplay.setText(formula);
- }
- }
-
- public SVSheetTable(HSSFSheet sheet) {
- super(new SVTableModel(sheet));
- this.sheet = sheet;
-
- setIntercellSpacing(new Dimension(0, 0));
- setAutoResizeMode(AUTO_RESIZE_OFF);
- JTableHeader header = getTableHeader();
- header.setDefaultRenderer(new HeaderCellRenderer());
- pendingPaintings = new PendingPaintings(this);
-
- //Set the columns the correct size
- TableColumnModel columns = getColumnModel();
- for (int i = 0; i < columns.getColumnCount(); i++) {
- TableColumn column = columns.getColumn(i);
- int width = sheet.getColumnWidth(i);
- //256 is because the width is in 256ths of a character
- column.setPreferredWidth(width / 256 * magicCharFactor);
}
- Toolkit t = getToolkit();
- int res = t.getScreenResolution();
- TableModel model = getModel();
- for (int i = 0; i < model.getRowCount(); i++) {
- Row row = sheet.getRow(i - sheet.getFirstRowNum());
- if (row != null) {
- short h = row.getHeight();
- int height = Math.toIntExact(Math.round(Math.max(1., h / (res / 70. * 20.) + 3.)));
- System.out.printf("%d: %d (%d @ %d)%n", i, height, h, res);
- setRowHeight(i, height);
- }
- }
+ public SVSheetTable(HSSFSheet sheet) {
+ super(new SVTableModel(sheet));
+ this.sheet = sheet;
+
+ setIntercellSpacing(new Dimension(0, 0));
+ setAutoResizeMode(AUTO_RESIZE_OFF);
+ JTableHeader header = getTableHeader();
+ header.setDefaultRenderer(new HeaderCellRenderer());
+ pendingPaintings = new PendingPaintings(this);
+
+ //Set the columns the correct size
+ TableColumnModel columns = getColumnModel();
+ for (int i = 0; i < columns.getColumnCount(); i++) {
+ TableColumn column = columns.getColumn(i);
+ int width = sheet.getColumnWidth(i);
+ //256 is because the width is in 256ths of a character
+ column.setPreferredWidth(width / 256 * magicCharFactor);
+ }
- addHierarchyListener(new HierarchyListener() {
- @Override
- public void hierarchyChanged(HierarchyEvent e) {
- if ((e.getChangeFlags() & HierarchyEvent.PARENT_CHANGED) != 0) {
- Container changedParent = e.getChangedParent();
- if (changedParent instanceof JViewport) {
- Container grandparent = changedParent.getParent();
- if (grandparent instanceof JScrollPane) {
- JScrollPane jScrollPane = (JScrollPane) grandparent;
- setupScroll(jScrollPane);
+ Toolkit t = getToolkit();
+ int res = t.getScreenResolution();
+ TableModel model = getModel();
+ for (int i = 0; i < model.getRowCount(); i++) {
+ Row row = sheet.getRow(i - sheet.getFirstRowNum());
+ if (row != null) {
+ short h = row.getHeight();
+ int height = Math.toIntExact(Math.round(Math.max(1., h / (res / 70. * 20.) + 3.)));
+ System.out.printf("%d: %d (%d @ %d)%n", i, height, h, res);
+ setRowHeight(i, height);
}
- }
}
- }
- });
- }
-
- public void setupScroll(JScrollPane scroll) {
- if (scroll == this.scroll)
- return;
-
- this.scroll = scroll;
- if (scroll == null)
- return;
-
- SVRowHeader rowHeader = new SVRowHeader(sheet, this, 0);
- scroll.setRowHeaderView(rowHeader);
- scroll.setCorner(JScrollPane.UPPER_LEADING_CORNER, headerCell("?"));
- }
-
- public void setFormulaDisplay(JTextComponent formulaDisplay) {
- ListSelectionModel rowSelMod = getSelectionModel();
- ListSelectionModel colSelMod = getColumnModel().getSelectionModel();
-
- if (formulaDisplay == null) {
- rowSelMod.removeListSelectionListener(formulaListener);
- colSelMod.removeListSelectionListener(formulaListener);
- formulaListener = null;
+
+ addHierarchyListener(new HierarchyListener() {
+ @Override
+ public void hierarchyChanged(HierarchyEvent e) {
+ if ((e.getChangeFlags() & HierarchyEvent.PARENT_CHANGED) != 0) {
+ Container changedParent = e.getChangedParent();
+ if (changedParent instanceof JViewport) {
+ Container grandparent = changedParent.getParent();
+ if (grandparent instanceof JScrollPane) {
+ JScrollPane jScrollPane = (JScrollPane) grandparent;
+ setupScroll(jScrollPane);
+ }
+ }
+ }
+ }
+ });
+ }
+
+ public void setupScroll(JScrollPane scroll) {
+ if (scroll == this.scroll)
+ return;
+
+ this.scroll = scroll;
+ if (scroll == null)
+ return;
+
+ SVRowHeader rowHeader = new SVRowHeader(sheet, this, 0);
+ scroll.setRowHeaderView(rowHeader);
+ scroll.setCorner(JScrollPane.UPPER_LEADING_CORNER, headerCell("?"));
}
- if (formulaDisplay != null) {
- formulaListener = new FormulaDisplayListener(formulaDisplay);
- rowSelMod.addListSelectionListener(formulaListener);
- colSelMod.addListSelectionListener(formulaListener);
+ public void setFormulaDisplay(JTextComponent formulaDisplay) {
+ ListSelectionModel rowSelMod = getSelectionModel();
+ ListSelectionModel colSelMod = getColumnModel().getSelectionModel();
+
+ if (formulaDisplay == null) {
+ rowSelMod.removeListSelectionListener(formulaListener);
+ colSelMod.removeListSelectionListener(formulaListener);
+ formulaListener = null;
+ }
+
+ if (formulaDisplay != null) {
+ formulaListener = new FormulaDisplayListener(formulaDisplay);
+ rowSelMod.addListSelectionListener(formulaListener);
+ colSelMod.addListSelectionListener(formulaListener);
+ }
}
- }
- public JTextComponent getFormulaDisplay() {
- if (formulaListener == null)
- return null;
- else
- return formulaListener.formulaDisplay;
- }
+ public JTextComponent getFormulaDisplay() {
+ if (formulaListener == null)
+ return null;
+ else
+ return formulaListener.formulaDisplay;
+ }
- public Component headerCell(String text) {
- return new HeaderCell(text, -1);
- }
+ public Component headerCell(String text) {
+ return new HeaderCell(text, -1);
+ }
- @Override
- public void paintComponent(Graphics g1) {
- Graphics2D g = (Graphics2D) g1;
+ @Override
+ public void paintComponent(Graphics g1) {
+ Graphics2D g = (Graphics2D) g1;
- pendingPaintings.clear();
+ pendingPaintings.clear();
- g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
- RenderingHints.VALUE_ANTIALIAS_ON);
- super.paintComponent(g);
+ g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
+ RenderingHints.VALUE_ANTIALIAS_ON);
+ super.paintComponent(g);
- pendingPaintings.paint(g);
- }
+ pendingPaintings.paint(g);
+ }
} \ No newline at end of file
diff --git a/src/examples/src/org/apache/poi/hssf/view/SVTableCellRenderer.java b/src/examples/src/org/apache/poi/hssf/view/SVTableCellRenderer.java
index b2bc4a6484..04351e35f8 100644
--- a/src/examples/src/org/apache/poi/hssf/view/SVTableCellRenderer.java
+++ b/src/examples/src/org/apache/poi/hssf/view/SVTableCellRenderer.java
@@ -15,7 +15,7 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
-
+
package org.apache.poi.hssf.view;
@@ -50,234 +50,237 @@ import org.apache.poi.ss.usermodel.FillPatternType;
* @author Andrew C. Oliver
*/
public class SVTableCellRenderer extends JLabel
- implements TableCellRenderer, Serializable
-{
+ implements TableCellRenderer, Serializable {
protected static final Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);
protected SVBorder cellBorder = new SVBorder();
-
private HSSFWorkbook wb;
- /** This class holds the references to the predefined cell formats.
+ /**
+ * This class holds the references to the predefined cell formats.
*/
private class CellFormatter {
- private Format[] textFormatter;
-
- private DecimalFormat generalNumberFormat = new DecimalFormat("0");
-
- public CellFormatter() {
- textFormatter = new Format[0x31];
-
- textFormatter[0x01] = new DecimalFormat("0");
- textFormatter[0x02] = new DecimalFormat("0.00");
- textFormatter[0x03] = new DecimalFormat("#,##0");
- textFormatter[0x04] = new DecimalFormat("#,##0.00");
- textFormatter[0x05] = new DecimalFormat("$#,##0;$#,##0");
- textFormatter[0x06] = new DecimalFormat("$#,##0;$#,##0");
- textFormatter[0x07] = new DecimalFormat("$#,##0.00;$#,##0.00");
- textFormatter[0x08] = new DecimalFormat("$#,##0.00;$#,##0.00");
- textFormatter[0x09] = new DecimalFormat("0%");
- textFormatter[0x0A] = new DecimalFormat("0.00%");
- textFormatter[0x0B] = new DecimalFormat("0.00E0");
- textFormatter[0x0C] = new SVFractionalFormat("# ?/?");
- textFormatter[0x0D] = new SVFractionalFormat("# ??/??");
- textFormatter[0x0E] = new SimpleDateFormat("M/d/yy");
- textFormatter[0x0F] = new SimpleDateFormat("d-MMM-yy");
- textFormatter[0x10] = new SimpleDateFormat("d-MMM");
- textFormatter[0x11] = new SimpleDateFormat("MMM-yy");
- textFormatter[0x12] = new SimpleDateFormat("h:mm a");
- textFormatter[0x13] = new SimpleDateFormat("h:mm:ss a");
- textFormatter[0x14] = new SimpleDateFormat("h:mm");
- textFormatter[0x15] = new SimpleDateFormat("h:mm:ss");
- textFormatter[0x16] = new SimpleDateFormat("M/d/yy h:mm");
- // 0x17 - 0x24 reserved for international and undocumented 0x25, "(#,##0_);(#,##0)"
- //start at 0x26
- //jmh need to do colour
- //"(#,##0_);[Red](#,##0)"
- textFormatter[0x26] = new DecimalFormat("#,##0;#,##0");
- //jmh need to do colour
- //(#,##0.00_);(#,##0.00)
- textFormatter[0x27] = new DecimalFormat("#,##0.00;#,##0.00");
- textFormatter[0x28] = new DecimalFormat("#,##0.00;#,##0.00");
+ private Format[] textFormatter;
+
+ private DecimalFormat generalNumberFormat = new DecimalFormat("0");
+
+ public CellFormatter() {
+ textFormatter = new Format[0x31];
+
+ textFormatter[0x01] = new DecimalFormat("0");
+ textFormatter[0x02] = new DecimalFormat("0.00");
+ textFormatter[0x03] = new DecimalFormat("#,##0");
+ textFormatter[0x04] = new DecimalFormat("#,##0.00");
+ textFormatter[0x05] = new DecimalFormat("$#,##0;$#,##0");
+ textFormatter[0x06] = new DecimalFormat("$#,##0;$#,##0");
+ textFormatter[0x07] = new DecimalFormat("$#,##0.00;$#,##0.00");
+ textFormatter[0x08] = new DecimalFormat("$#,##0.00;$#,##0.00");
+ textFormatter[0x09] = new DecimalFormat("0%");
+ textFormatter[0x0A] = new DecimalFormat("0.00%");
+ textFormatter[0x0B] = new DecimalFormat("0.00E0");
+ textFormatter[0x0C] = new SVFractionalFormat("# ?/?");
+ textFormatter[0x0D] = new SVFractionalFormat("# ??/??");
+ textFormatter[0x0E] = new SimpleDateFormat("M/d/yy");
+ textFormatter[0x0F] = new SimpleDateFormat("d-MMM-yy");
+ textFormatter[0x10] = new SimpleDateFormat("d-MMM");
+ textFormatter[0x11] = new SimpleDateFormat("MMM-yy");
+ textFormatter[0x12] = new SimpleDateFormat("h:mm a");
+ textFormatter[0x13] = new SimpleDateFormat("h:mm:ss a");
+ textFormatter[0x14] = new SimpleDateFormat("h:mm");
+ textFormatter[0x15] = new SimpleDateFormat("h:mm:ss");
+ textFormatter[0x16] = new SimpleDateFormat("M/d/yy h:mm");
+ // 0x17 - 0x24 reserved for international and undocumented 0x25, "(#,##0_);(#,##0)"
+ //start at 0x26
+ //jmh need to do colour
+ //"(#,##0_);[Red](#,##0)"
+ textFormatter[0x26] = new DecimalFormat("#,##0;#,##0");
+ //jmh need to do colour
+ //(#,##0.00_);(#,##0.00)
+ textFormatter[0x27] = new DecimalFormat("#,##0.00;#,##0.00");
+ textFormatter[0x28] = new DecimalFormat("#,##0.00;#,##0.00");
//?? textFormatter[0x29] = new DecimalFormat("_(*#,##0_);_(*(#,##0);_(* \"-\"_);_(@_)");
//?? textFormatter[0x2A] = new DecimalFormat("_($*#,##0_);_($*(#,##0);_($* \"-\"_);_(@_)");
//?? textFormatter[0x2B] = new DecimalFormat("_(*#,##0.00_);_(*(#,##0.00);_(*\"-\"??_);_(@_)");
//?? textFormatter[0x2C] = new DecimalFormat("_($*#,##0.00_);_($*(#,##0.00);_($*\"-\"??_);_(@_)");
- textFormatter[0x2D] = new SimpleDateFormat("mm:ss");
+ textFormatter[0x2D] = new SimpleDateFormat("mm:ss");
//?? textFormatter[0x2E] = new SimpleDateFormat("[h]:mm:ss");
- textFormatter[0x2F] = new SimpleDateFormat("mm:ss.0");
- textFormatter[0x30] = new DecimalFormat("##0.0E0");
- }
-
- public String format(short index, double value) {
- if ( index <= 0 )
- return generalNumberFormat.format(value);
- if (textFormatter[index] == null)
- throw new RuntimeException("Sorry. I cant handle the format code :"+Integer.toHexString(index));
- if (textFormatter[index] instanceof DecimalFormat) {
- return ((DecimalFormat)textFormatter[index]).format(value);
+ textFormatter[0x2F] = new SimpleDateFormat("mm:ss.0");
+ textFormatter[0x30] = new DecimalFormat("##0.0E0");
}
- if (textFormatter[index] instanceof SVFractionalFormat) {
- return ((SVFractionalFormat)textFormatter[index]).format(value);
+
+ public String format(short index, double value) {
+ if (index <= 0)
+ return generalNumberFormat.format(value);
+ if (textFormatter[index] == null)
+ throw new RuntimeException("Sorry. I cant handle the format code :" + Integer.toHexString(index));
+ if (textFormatter[index] instanceof DecimalFormat) {
+ return ((DecimalFormat) textFormatter[index]).format(value);
+ }
+ if (textFormatter[index] instanceof SVFractionalFormat) {
+ return ((SVFractionalFormat) textFormatter[index]).format(value);
+ }
+ throw new RuntimeException("Sorry. I cant handle a non decimal formatter for a decimal value :" + Integer.toHexString(index));
}
- throw new RuntimeException("Sorry. I cant handle a non decimal formatter for a decimal value :"+Integer.toHexString(index));
- }
- public boolean useRedColor(short index, double value) {
- return (((index == 0x06)||(index == 0x08)||(index == 0x26) || (index == 0x27)) && (value < 0));
- }
+ public boolean useRedColor(short index, double value) {
+ return (((index == 0x06) || (index == 0x08) || (index == 0x26) || (index == 0x27)) && (value < 0));
+ }
}
private final CellFormatter cellFormatter = new CellFormatter();
public SVTableCellRenderer(HSSFWorkbook wb) {
- super();
- setOpaque(true);
+ super();
+ setOpaque(true);
setBorder(noFocusBorder);
this.wb = wb;
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
- boolean isSelected, boolean hasFocus, int row, int column) {
- boolean isBorderSet = false;
+ boolean isSelected, boolean hasFocus, int row, int column) {
+ 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
- HSSFCell c = (HSSFCell)value;
+ HSSFCell c = (HSSFCell) value;
if (c != null) {
- HSSFCellStyle s = c.getCellStyle();
- HSSFFont f = wb.getFontAt(s.getFontIndexAsInt());
- setFont(SVTableUtils.makeFont(f));
-
- if (s.getFillPattern() == FillPatternType.SOLID_FOREGROUND) {
- setBackground(SVTableUtils.getAWTColor(s.getFillForegroundColor(), SVTableUtils.white));
- } else setBackground(SVTableUtils.white);
-
- setForeground(SVTableUtils.getAWTColor(f.getColor(), SVTableUtils.black));
-
- cellBorder.setBorder(SVTableUtils.getAWTColor(s.getTopBorderColor(), SVTableUtils.black),
- SVTableUtils.getAWTColor(s.getRightBorderColor(), SVTableUtils.black),
- SVTableUtils.getAWTColor(s.getBottomBorderColor(), SVTableUtils.black),
- SVTableUtils.getAWTColor(s.getLeftBorderColor(), SVTableUtils.black),
- s.getBorderTop(), s.getBorderRight(),
- s.getBorderBottom(), s.getBorderLeft(),
- hasFocus);
+ HSSFCellStyle s = c.getCellStyle();
+ HSSFFont f = wb.getFontAt(s.getFontIndexAsInt());
+ setFont(SVTableUtils.makeFont(f));
+
+ if (s.getFillPattern() == FillPatternType.SOLID_FOREGROUND) {
+ setBackground(SVTableUtils.getAWTColor(s.getFillForegroundColor(), SVTableUtils.white));
+ } else setBackground(SVTableUtils.white);
+
+ setForeground(SVTableUtils.getAWTColor(f.getColor(), SVTableUtils.black));
+
+ cellBorder.setBorder(SVTableUtils.getAWTColor(s.getTopBorderColor(), SVTableUtils.black),
+ SVTableUtils.getAWTColor(s.getRightBorderColor(), SVTableUtils.black),
+ SVTableUtils.getAWTColor(s.getBottomBorderColor(), SVTableUtils.black),
+ SVTableUtils.getAWTColor(s.getLeftBorderColor(), SVTableUtils.black),
+ s.getBorderTop(), s.getBorderRight(),
+ s.getBorderBottom(), s.getBorderLeft(),
+ hasFocus);
setBorder(cellBorder);
- isBorderSet=true;
+ isBorderSet = true;
//Set the value that is rendered for the cell
switch (c.getCellType()) {
- case BLANK:
- setValue("");
- break;
- case BOOLEAN:
- if (c.getBooleanCellValue()) {
- setValue("true");
- } else {
- setValue("false");
- }
- break;
- case NUMERIC:
- short format = s.getDataFormat();
- double numericValue = c.getNumericCellValue();
- if (cellFormatter.useRedColor(format, numericValue))
- setForeground(Color.red);
- else setForeground(null);
- setValue(cellFormatter.format(format, c.getNumericCellValue()));
- break;
- case STRING:
- setValue(c.getRichStringCellValue().getString());
- break;
- case FORMULA:
- default:
- setValue("?");
+ case BLANK:
+ setValue("");
+ break;
+ case BOOLEAN:
+ if (c.getBooleanCellValue()) {
+ setValue("true");
+ } else {
+ setValue("false");
+ }
+ break;
+ case NUMERIC:
+ short format = s.getDataFormat();
+ double numericValue = c.getNumericCellValue();
+ if (cellFormatter.useRedColor(format, numericValue))
+ setForeground(Color.red);
+ else setForeground(null);
+ setValue(cellFormatter.format(format, c.getNumericCellValue()));
+ break;
+ case STRING:
+ setValue(c.getRichStringCellValue().getString());
+ break;
+ case FORMULA:
+ default:
+ setValue("?");
}
//Set the text alignment of the cell
switch (s.getAlignment()) {
- case LEFT:
- case JUSTIFY:
- case FILL:
- setHorizontalAlignment(SwingConstants.LEFT);
- break;
- case CENTER:
- case CENTER_SELECTION:
- setHorizontalAlignment(SwingConstants.CENTER);
- break;
- case GENERAL:
- case RIGHT:
- setHorizontalAlignment(SwingConstants.RIGHT);
- break;
- default:
- setHorizontalAlignment(SwingConstants.LEFT);
- break;
+ case LEFT:
+ case JUSTIFY:
+ case FILL:
+ setHorizontalAlignment(SwingConstants.LEFT);
+ break;
+ case CENTER:
+ case CENTER_SELECTION:
+ setHorizontalAlignment(SwingConstants.CENTER);
+ break;
+ case GENERAL:
+ case RIGHT:
+ setHorizontalAlignment(SwingConstants.RIGHT);
+ break;
+ default:
+ setHorizontalAlignment(SwingConstants.LEFT);
+ break;
}
} else {
- setValue("");
- setBackground(SVTableUtils.white);
+ setValue("");
+ setBackground(SVTableUtils.white);
}
- if (hasFocus) {
+ if (hasFocus) {
if (!isBorderSet) {
- //This is the border to paint when there is no border
- //and the cell has focus
- cellBorder.setBorder(SVTableUtils.black,
- SVTableUtils.black,
- SVTableUtils.black,
- SVTableUtils.black,
- BorderStyle.NONE,
- BorderStyle.NONE,
- BorderStyle.NONE,
- BorderStyle.NONE,
- isSelected);
- setBorder(cellBorder);
+ //This is the border to paint when there is no border
+ //and the cell has focus
+ cellBorder.setBorder(SVTableUtils.black,
+ SVTableUtils.black,
+ SVTableUtils.black,
+ SVTableUtils.black,
+ BorderStyle.NONE,
+ BorderStyle.NONE,
+ BorderStyle.NONE,
+ BorderStyle.NONE,
+ isSelected);
+ setBorder(cellBorder);
+ }
+ if (table.isCellEditable(row, column)) {
+ setForeground(UIManager.getColor("Table.focusCellForeground"));
+ setBackground(UIManager.getColor("Table.focusCellBackground"));
}
- if (table.isCellEditable(row, column)) {
- setForeground( UIManager.getColor("Table.focusCellForeground") );
- setBackground( UIManager.getColor("Table.focusCellBackground") );
- }
- } else if (!isBorderSet) {
- setBorder(noFocusBorder);
- }
-
- // ---- begin optimization to avoid painting background ----
- Color back = getBackground();
- boolean colorMatch = (back != null) && ( back.equals(table.getBackground()) ) && table.isOpaque();
+ } else if (!isBorderSet) {
+ setBorder(noFocusBorder);
+ }
+
+ // ---- begin optimization to avoid painting background ----
+ Color back = getBackground();
+ boolean colorMatch = (back != null) && (back.equals(table.getBackground())) && table.isOpaque();
setOpaque(!colorMatch);
- // ---- end optimization to aviod painting background ----
- return this;
+ // ---- end optimization to aviod painting background ----
+ return this;
}
@Override
- public void validate() {}
+ public void validate() {
+ }
@Override
- public void revalidate() {}
+ public void revalidate() {
+ }
@Override
- public void repaint(long tm, int x, int y, int width, int height) {}
+ public void repaint(long tm, int x, int y, int width, int height) {
+ }
@Override
- public void repaint(Rectangle r) { }
+ public void repaint(Rectangle r) {
+ }
@Override
protected void firePropertyChange(String propertyName, Object oldValue, Object newValue) {
- // Strings get interned...
- if (propertyName=="text") {
- super.firePropertyChange(propertyName, oldValue, newValue);
- }
+ // Strings get interned...
+ if (propertyName == "text") {
+ super.firePropertyChange(propertyName, oldValue, newValue);
+ }
}
@Override
- public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue) { }
+ public void firePropertyChange(String propertyName, boolean oldValue, boolean newValue) {
+ }
/**
* Sets the string to either the value or "" if the value is null.
- *
*/
protected void setValue(Object value) {
- setText((value == null) ? "" : value.toString());
+ setText((value == null) ? "" : value.toString());
}
}
diff --git a/src/examples/src/org/apache/poi/hssf/view/SVTableModel.java b/src/examples/src/org/apache/poi/hssf/view/SVTableModel.java
index 7c741aac79..14c06a70bd 100644
--- a/src/examples/src/org/apache/poi/hssf/view/SVTableModel.java
+++ b/src/examples/src/org/apache/poi/hssf/view/SVTableModel.java
@@ -15,80 +15,83 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
-
package org.apache.poi.hssf.view;
import java.util.Iterator;
-import javax.swing.table.*;
+import javax.swing.table.AbstractTableModel;
+
+import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.ss.usermodel.Row;
-import org.apache.poi.hssf.usermodel.HSSFCell;
/**
* Sheet Viewer Table Model - The model for the Sheet Viewer just overrides things.
+ *
* @author Andrew C. Oliver
*/
public class SVTableModel extends AbstractTableModel {
- private HSSFSheet st;
- int maxcol;
-
- public SVTableModel(HSSFSheet st, int maxcol) {
- this.st = st;
- this.maxcol=maxcol;
- }
-
- public SVTableModel(HSSFSheet st) {
- this.st = st;
- Iterator<Row> i = st.rowIterator();
-
- while (i.hasNext()) {
- HSSFRow row = (HSSFRow)i.next();
- if (maxcol < (row.getLastCellNum()+1)) {
- this.maxcol = row.getLastCellNum();
- }
+ private HSSFSheet st;
+ int maxcol;
+
+ public SVTableModel(HSSFSheet st, int maxcol) {
+ this.st = st;
+ this.maxcol = maxcol;
+ }
+
+ public SVTableModel(HSSFSheet st) {
+ this.st = st;
+ Iterator<Row> i = st.rowIterator();
+
+ while (i.hasNext()) {
+ HSSFRow row = (HSSFRow) i.next();
+ if (maxcol < (row.getLastCellNum() + 1)) {
+ this.maxcol = row.getLastCellNum();
+ }
+ }
+ }
+
+
+ @Override
+ public int getColumnCount() {
+ return this.maxcol + 1;
}
- }
-
-
- @Override
-public int getColumnCount() {
- return this.maxcol+1;
- }
- @Override
-public Object getValueAt(int row, int col) {
- HSSFRow r = st.getRow(row);
- HSSFCell c = null;
- if (r != null) {
- c = r.getCell(col);
+
+ @Override
+ public Object getValueAt(int row, int col) {
+ HSSFRow r = st.getRow(row);
+ HSSFCell c = null;
+ if (r != null) {
+ c = r.getCell(col);
+ }
+ return c;
+ }
+
+ @Override
+ public int getRowCount() {
+ return st.getLastRowNum() + 1;
+ }
+
+ @Override
+ public Class<?> getColumnClass(int c) {
+ return HSSFCell.class;
+ }
+
+ @Override
+ public boolean isCellEditable(int rowIndex, int columnIndex) {
+ return true;
+ }
+
+ @Override
+ public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
+ if (aValue != null)
+ System.out.println("SVTableModel.setValueAt. value type = " + aValue.getClass().getName());
+ else System.out.println("SVTableModel.setValueAt. value type = null");
}
- return c;
- }
- @Override
-public int getRowCount() {
- return st.getLastRowNum() + 1;
- }
-
- @Override
-public Class<?> getColumnClass(int c) {
- return HSSFCell.class;
- }
-
- @Override
-public boolean isCellEditable(int rowIndex, int columnIndex) {
- return true;
- }
-
- @Override
-public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
- if (aValue != null)
- System.out.println("SVTableModel.setValueAt. value type = "+aValue.getClass().getName());
- else System.out.println("SVTableModel.setValueAt. value type = null");
- }
}
diff --git a/src/examples/src/org/apache/poi/hssf/view/SVTableUtils.java b/src/examples/src/org/apache/poi/hssf/view/SVTableUtils.java
index 6a7d2fa343..57ba3956fe 100644
--- a/src/examples/src/org/apache/poi/hssf/view/SVTableUtils.java
+++ b/src/examples/src/org/apache/poi/hssf/view/SVTableUtils.java
@@ -32,55 +32,63 @@ import org.apache.poi.hssf.util.HSSFColor.HSSFColorPredefined;
/**
* SVTableCell Editor and Renderer helper functions.
*
- * @author Jason Height
+ * @author Jason Height
*/
public class SVTableUtils {
- private final static Map<Integer,HSSFColor> colors = HSSFColor.getIndexHash();
- /** Description of the Field */
- public final static Color black = getAWTColor(HSSFColorPredefined.BLACK);
- /** Description of the Field */
- public final static Color white = getAWTColor(HSSFColorPredefined.WHITE);
- /** Description of the Field */
- public static final Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);
+ private final static Map<Integer, HSSFColor> colors = HSSFColor.getIndexHash();
+ /**
+ * Description of the Field
+ */
+ public final static Color black = getAWTColor(HSSFColorPredefined.BLACK);
+ /**
+ * Description of the Field
+ */
+ public final static Color white = getAWTColor(HSSFColorPredefined.WHITE);
+ /**
+ * Description of the Field
+ */
+ public static final Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);
- /**
- * Creates a new font for a specific cell style
- */
- public static Font makeFont(HSSFFont font) {
- boolean isbold = font.getBold();
- boolean isitalics = font.getItalic();
- int fontstyle = Font.PLAIN;
- if (isbold) {
- fontstyle = Font.BOLD;
- }
- if (isitalics) {
- fontstyle = fontstyle | Font.ITALIC;
- }
+ /**
+ * Creates a new font for a specific cell style
+ */
+ public static Font makeFont(HSSFFont font) {
+ boolean isbold = font.getBold();
+ boolean isitalics = font.getItalic();
+ int fontstyle = Font.PLAIN;
+ if (isbold) {
+ fontstyle = Font.BOLD;
+ }
+ if (isitalics) {
+ fontstyle = fontstyle | Font.ITALIC;
+ }
- int fontheight = font.getFontHeightInPoints();
- if (fontheight == 9) {
- //fix for stupid ol Windows
- fontheight = 10;
- }
+ int fontheight = font.getFontHeightInPoints();
+ if (fontheight == 9) {
+ //fix for stupid ol Windows
+ fontheight = 10;
+ }
- return new Font(font.getFontName(), fontstyle, fontheight);
- }
+ return new Font(font.getFontName(), fontstyle, fontheight);
+ }
- /** This method retrieves the AWT Color representation from the colour hash table
- *
- */
- /* package */ static Color getAWTColor(int index, Color deflt) {
- HSSFColor clr = colors.get(index);
- if (clr == null) {
- return deflt;
+ /**
+ * This method retrieves the AWT Color representation from the colour hash table
+ */
+ /* package */
+ static Color getAWTColor(int index, Color deflt) {
+ HSSFColor clr = colors.get(index);
+ if (clr == null) {
+ return deflt;
+ }
+ short[] rgb = clr.getTriplet();
+ return new Color(rgb[0], rgb[1], rgb[2]);
}
- short[] rgb = clr.getTriplet();
- return new Color(rgb[0],rgb[1],rgb[2]);
- }
- /* package */ static Color getAWTColor(HSSFColorPredefined clr) {
- short[] rgb = clr.getTriplet();
- return new Color(rgb[0],rgb[1],rgb[2]);
- }
+ /* package */
+ static Color getAWTColor(HSSFColorPredefined clr) {
+ short[] rgb = clr.getTriplet();
+ return new Color(rgb[0], rgb[1], rgb[2]);
+ }
}
diff --git a/src/examples/src/org/apache/poi/hssf/view/SViewerPanel.java b/src/examples/src/org/apache/poi/hssf/view/SViewerPanel.java
index 1bd8223c1b..09332b13f8 100644
--- a/src/examples/src/org/apache/poi/hssf/view/SViewerPanel.java
+++ b/src/examples/src/org/apache/poi/hssf/view/SViewerPanel.java
@@ -53,267 +53,291 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook;
* This class presents the sheets to the user.
*/
public class SViewerPanel extends JPanel {
- /** This field is the magic number to convert from a Character width to a
- * java pixel width.
- *
- * When the "normal" font size in a workbook changes, this effects all
- * of the heights and widths. Unfortunately there is no way to retrieve this
- * information, hence the MAGIC number.
- *
- * This number may only work for the normal style font size of Arial size 10.
- *
- */
- private static final int magicCharFactor = 7;
- /** Reference to the wookbook that is being displayed*/
- /* package */ HSSFWorkbook wb;
- /** Reference to the tabs component*/
- /* package */ JTabbedPane sheetPane;
- /** Reference to the cell renderer that is used to render all cells*/
- private SVTableCellRenderer cellRenderer;
- /** Reference to the cell editor that is used to edit all cells.
- * Only constructed if editing is allowed
- */
- private SVTableCellEditor cellEditor;
- /** Flag indicating if editing is allowed. Otherwise the viewer is in
- * view only mode.
- */
- private boolean allowEdits;
-
- /**Construct the representation of the workbook*/
- public SViewerPanel(HSSFWorkbook wb, boolean allowEdits) {
- this.wb = wb;
- this.allowEdits = allowEdits;
-
- initialiseGui();
- }
-
- private void initialiseGui() {
- cellRenderer = new SVTableCellRenderer(this.wb);
- if (allowEdits)
- cellEditor = new SVTableCellEditor(this.wb);
-
- //Initialise the Panel
- sheetPane = new JTabbedPane(JTabbedPane.BOTTOM);
-
- if (allowEdits)
- sheetPane.addMouseListener(createTabListener());
- int sheetCount = wb.getNumberOfSheets();
- for (int i=0; i<sheetCount;i++) {
- String sheetName = wb.getSheetName(i);
- //Add the new sheet to the tabbed pane
- sheetPane.addTab(sheetName, makeSheetView(wb.getSheetAt(i)));
- }
- setLayout(new BorderLayout());
- add(sheetPane, BorderLayout.CENTER);
- }
-
- protected JComponent makeSheetView(HSSFSheet sheet) {
- JTable sheetView = new JTable(new SVTableModel(sheet));
- sheetView.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
- sheetView.setDefaultRenderer(HSSFCell.class, cellRenderer);
- if (allowEdits)
- sheetView.setDefaultEditor(HSSFCell.class, cellEditor);
- JTableHeader header = sheetView.getTableHeader();
- //Dont allow column reordering
- header.setReorderingAllowed(false);
- //Only allow column resizing if editing is allowed
- header.setResizingAllowed(allowEdits);
-
- //Set the columns the correct size
- TableColumnModel columns = sheetView.getColumnModel();
- for (int i=0; i< columns.getColumnCount(); i++) {
- TableColumn column = columns.getColumn(i);
- int width = sheet.getColumnWidth(i);
- //256 is because the width is in 256ths of a character
- column.setPreferredWidth(width/256*magicCharFactor);
- }
+ /**
+ * This field is the magic number to convert from a Character width to a
+ * java pixel width.
+ * <p>
+ * When the "normal" font size in a workbook changes, this effects all
+ * of the heights and widths. Unfortunately there is no way to retrieve this
+ * information, hence the MAGIC number.
+ * <p>
+ * This number may only work for the normal style font size of Arial size 10.
+ */
+ private static final int magicCharFactor = 7;
+ /**
+ * Reference to the wookbook that is being displayed
+ */
+ /* package */ HSSFWorkbook wb;
+ /**
+ * Reference to the tabs component
+ */
+ /* package */ JTabbedPane sheetPane;
+ /**
+ * Reference to the cell renderer that is used to render all cells
+ */
+ private SVTableCellRenderer cellRenderer;
+ /**
+ * Reference to the cell editor that is used to edit all cells.
+ * Only constructed if editing is allowed
+ */
+ private SVTableCellEditor cellEditor;
+ /**
+ * Flag indicating if editing is allowed. Otherwise the viewer is in
+ * view only mode.
+ */
+ private boolean allowEdits;
- //Set the rows to the correct size
- int rows = sheet.getPhysicalNumberOfRows();
- Insets insets = cellRenderer.getInsets();
- //Need to include the insets in the calculation of the row height to use.
- int extraHeight = insets.bottom+insets.top;
- for (int i=0; i< rows; i++) {
- HSSFRow row = sheet.getRow(i);
- if (row == null) {
- sheetView.setRowHeight(i, (int)sheet.getDefaultRowHeightInPoints()+extraHeight);
- } else {
- sheetView.setRowHeight(i, (int)row.getHeightInPoints()+extraHeight);
- }
- }
+ /**
+ * Construct the representation of the workbook
+ */
+ public SViewerPanel(HSSFWorkbook wb, boolean allowEdits) {
+ this.wb = wb;
+ this.allowEdits = allowEdits;
- //Add the row header to the sheet
- SVRowHeader rowHeader = new SVRowHeader(sheet, sheetView, extraHeight);
- JScrollPane scroll = new JScrollPane( sheetView );
- scroll.setRowHeaderView(rowHeader);
- return scroll;
- }
-
- @Override
-public void paint(Graphics g) {
- //JMH I am only overriding this to get a picture of the time taken to paint
- long start = System.currentTimeMillis();
- super.paint(g);
- long elapsed = System.currentTimeMillis()-start;
- System.out.println("Paint time = "+elapsed);
- }
-
- protected MouseListener createTabListener() {
- return new TabListener();
- }
-
- /** This class defines the default MouseListener that listens to
- * mouse events in the tabbed pane
- *
- * The default is to popup a menu when the event occurs over a tab
- */
- private class TabListener implements MouseListener {
- private final JPopupMenu popup;
- public TabListener() {
- popup = new JPopupMenu("Sheet");
- popup.add(createInsertSheetAction());
- popup.add(createDeleteSheetAction());
- popup.add(createRenameSheetAction());
+ initialiseGui();
}
- protected Action createInsertSheetAction() {
- return new InsertSheetAction();
+ private void initialiseGui() {
+ cellRenderer = new SVTableCellRenderer(this.wb);
+ if (allowEdits)
+ cellEditor = new SVTableCellEditor(this.wb);
+
+ //Initialise the Panel
+ sheetPane = new JTabbedPane(JTabbedPane.BOTTOM);
+
+ if (allowEdits)
+ sheetPane.addMouseListener(createTabListener());
+ int sheetCount = wb.getNumberOfSheets();
+ for (int i = 0; i < sheetCount; i++) {
+ String sheetName = wb.getSheetName(i);
+ //Add the new sheet to the tabbed pane
+ sheetPane.addTab(sheetName, makeSheetView(wb.getSheetAt(i)));
+ }
+ setLayout(new BorderLayout());
+ add(sheetPane, BorderLayout.CENTER);
}
- protected Action createDeleteSheetAction() {
- return new DeleteSheetAction();
+ protected JComponent makeSheetView(HSSFSheet sheet) {
+ JTable sheetView = new JTable(new SVTableModel(sheet));
+ sheetView.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
+ sheetView.setDefaultRenderer(HSSFCell.class, cellRenderer);
+ if (allowEdits)
+ sheetView.setDefaultEditor(HSSFCell.class, cellEditor);
+ JTableHeader header = sheetView.getTableHeader();
+ //Dont allow column reordering
+ header.setReorderingAllowed(false);
+ //Only allow column resizing if editing is allowed
+ header.setResizingAllowed(allowEdits);
+
+ //Set the columns the correct size
+ TableColumnModel columns = sheetView.getColumnModel();
+ for (int i = 0; i < columns.getColumnCount(); i++) {
+ TableColumn column = columns.getColumn(i);
+ int width = sheet.getColumnWidth(i);
+ //256 is because the width is in 256ths of a character
+ column.setPreferredWidth(width / 256 * magicCharFactor);
+ }
+
+ //Set the rows to the correct size
+ int rows = sheet.getPhysicalNumberOfRows();
+ Insets insets = cellRenderer.getInsets();
+ //Need to include the insets in the calculation of the row height to use.
+ int extraHeight = insets.bottom + insets.top;
+ for (int i = 0; i < rows; i++) {
+ HSSFRow row = sheet.getRow(i);
+ if (row == null) {
+ sheetView.setRowHeight(i, (int) sheet.getDefaultRowHeightInPoints() + extraHeight);
+ } else {
+ sheetView.setRowHeight(i, (int) row.getHeightInPoints() + extraHeight);
+ }
+ }
+
+ //Add the row header to the sheet
+ SVRowHeader rowHeader = new SVRowHeader(sheet, sheetView, extraHeight);
+ JScrollPane scroll = new JScrollPane(sheetView);
+ scroll.setRowHeaderView(rowHeader);
+ return scroll;
}
- protected Action createRenameSheetAction() {
- return new RenameSheetAction();
+ @Override
+ public void paint(Graphics g) {
+ //JMH I am only overriding this to get a picture of the time taken to paint
+ long start = System.currentTimeMillis();
+ super.paint(g);
+ long elapsed = System.currentTimeMillis() - start;
+ System.out.println("Paint time = " + elapsed);
}
+ protected MouseListener createTabListener() {
+ return new TabListener();
+ }
- /** This method will display the popup if the mouseevent is a popup event
- * and the event occurred over a tab
+ /**
+ * This class defines the default MouseListener that listens to
+ * mouse events in the tabbed pane
+ * <p>
+ * The default is to popup a menu when the event occurs over a tab
*/
- protected void checkPopup(MouseEvent e) {
- if (e.isPopupTrigger()) {
- int tab = sheetPane.getUI().tabForCoordinate(sheetPane, e.getX(), e.getY());
- if (tab != -1) {
- popup.show(sheetPane, e.getX(), e.getY());
+ private class TabListener implements MouseListener {
+ private final JPopupMenu popup;
+
+ public TabListener() {
+ popup = new JPopupMenu("Sheet");
+ popup.add(createInsertSheetAction());
+ popup.add(createDeleteSheetAction());
+ popup.add(createRenameSheetAction());
}
- }
- }
- @Override
- public void mouseClicked(MouseEvent e) {
- checkPopup(e);
- }
+ protected Action createInsertSheetAction() {
+ return new InsertSheetAction();
+ }
- @Override
- public void mousePressed(MouseEvent e) {
- checkPopup(e);
- }
+ protected Action createDeleteSheetAction() {
+ return new DeleteSheetAction();
+ }
- @Override
- public void mouseReleased(MouseEvent e) {
- checkPopup(e);
- }
+ protected Action createRenameSheetAction() {
+ return new RenameSheetAction();
+ }
- @Override
- public void mouseEntered(MouseEvent e) {}
- @Override
- public void mouseExited(MouseEvent e) {}
- }
- /** This class defines the action that is performed when the sheet is renamed*/
- private class RenameSheetAction extends AbstractAction {
- public RenameSheetAction() {
- super("Rename");
- }
+ /**
+ * This method will display the popup if the mouseevent is a popup event
+ * and the event occurred over a tab
+ */
+ protected void checkPopup(MouseEvent e) {
+ if (e.isPopupTrigger()) {
+ int tab = sheetPane.getUI().tabForCoordinate(sheetPane, e.getX(), e.getY());
+ if (tab != -1) {
+ popup.show(sheetPane, e.getX(), e.getY());
+ }
+ }
+ }
- @Override
- public void actionPerformed(ActionEvent e) {
- int tabIndex = sheetPane.getSelectedIndex();
- if (tabIndex != -1) {
- String newSheetName = JOptionPane.showInputDialog(sheetPane, "Enter a new Sheetname", "Rename Sheet", JOptionPane.QUESTION_MESSAGE);
- if (newSheetName != null) {
- wb.setSheetName(tabIndex, newSheetName);
- sheetPane.setTitleAt(tabIndex, newSheetName);
+ @Override
+ public void mouseClicked(MouseEvent e) {
+ checkPopup(e);
}
- }
- }
- }
- /** This class defines the action that is performed when a sheet is inserted*/
- private class InsertSheetAction extends AbstractAction {
- public InsertSheetAction() {
- super("Insert");
- }
+ @Override
+ public void mousePressed(MouseEvent e) {
+ checkPopup(e);
+ }
- @Override
- public void actionPerformed(ActionEvent e) {
- //Create a new sheet then search for the sheet and make sure that the
- //sheetPane shows it.
- HSSFSheet newSheet = wb.createSheet();
- for (int i=0; i<wb.getNumberOfSheets();i++) {
- HSSFSheet sheet = wb.getSheetAt(i);
- if (newSheet == sheet) {
- sheetPane.insertTab(wb.getSheetName(i), null, makeSheetView(sheet), null, i);
+ @Override
+ public void mouseReleased(MouseEvent e) {
+ checkPopup(e);
}
- }
- }
- }
- /** This class defines the action that is performed when the sheet is deleted*/
- private class DeleteSheetAction extends AbstractAction {
- public DeleteSheetAction() {
- super("Delete");
- }
+ @Override
+ public void mouseEntered(MouseEvent e) {
+ }
- @Override
- public void actionPerformed(ActionEvent e) {
- int tabIndex = sheetPane.getSelectedIndex();
- if (tabIndex != -1) {
- if (JOptionPane.showConfirmDialog(sheetPane, "Are you sure that you want to delete the selected sheet", "Delete Sheet?", JOptionPane.OK_CANCEL_OPTION) == JOptionPane.OK_OPTION) {
- wb.removeSheetAt(tabIndex);
- sheetPane.remove(tabIndex);
+ @Override
+ public void mouseExited(MouseEvent e) {
}
- }
}
- }
- public boolean isEditable() {
- return allowEdits;
- }
+ /**
+ * This class defines the action that is performed when the sheet is renamed
+ */
+ private class RenameSheetAction extends AbstractAction {
+ public RenameSheetAction() {
+ super("Rename");
+ }
- /**Main method*/
- public static void main(String[] args) throws IOException {
- if (args.length < 1) {
- throw new IllegalArgumentException("A filename to view must be supplied as the first argument, but none was given");
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ int tabIndex = sheetPane.getSelectedIndex();
+ if (tabIndex != -1) {
+ String newSheetName = JOptionPane.showInputDialog(sheetPane, "Enter a new Sheetname", "Rename Sheet", JOptionPane.QUESTION_MESSAGE);
+ if (newSheetName != null) {
+ wb.setSheetName(tabIndex, newSheetName);
+ sheetPane.setTitleAt(tabIndex, newSheetName);
+ }
+ }
+ }
}
- try (FileInputStream in = new FileInputStream(args[0]);
- HSSFWorkbook wb = new HSSFWorkbook(in)) {
- SViewerPanel p = new SViewerPanel(wb, true);
- JFrame frame;
- frame = new JFrame() {
+ /**
+ * This class defines the action that is performed when a sheet is inserted
+ */
+ private class InsertSheetAction extends AbstractAction {
+ public InsertSheetAction() {
+ super("Insert");
+ }
+
@Override
- protected void processWindowEvent(WindowEvent e) {
- super.processWindowEvent(e);
- if (e.getID() == WindowEvent.WINDOW_CLOSING) {
- System.exit(0);
- }
+ public void actionPerformed(ActionEvent e) {
+ //Create a new sheet then search for the sheet and make sure that the
+ //sheetPane shows it.
+ HSSFSheet newSheet = wb.createSheet();
+ for (int i = 0; i < wb.getNumberOfSheets(); i++) {
+ HSSFSheet sheet = wb.getSheetAt(i);
+ if (newSheet == sheet) {
+ sheetPane.insertTab(wb.getSheetName(i), null, makeSheetView(sheet), null, i);
+ }
+ }
+ }
+ }
+
+ /**
+ * This class defines the action that is performed when the sheet is deleted
+ */
+ private class DeleteSheetAction extends AbstractAction {
+ public DeleteSheetAction() {
+ super("Delete");
}
@Override
- public synchronized void setTitle(String title) {
- super.setTitle(title);
- enableEvents(AWTEvent.WINDOW_EVENT_MASK);
+ public void actionPerformed(ActionEvent e) {
+ int tabIndex = sheetPane.getSelectedIndex();
+ if (tabIndex != -1) {
+ if (JOptionPane.showConfirmDialog(sheetPane, "Are you sure that you want to delete the selected sheet", "Delete Sheet?", JOptionPane.OK_CANCEL_OPTION) == JOptionPane.OK_OPTION) {
+ wb.removeSheetAt(tabIndex);
+ sheetPane.remove(tabIndex);
+ }
+ }
+ }
+ }
+
+ public boolean isEditable() {
+ return allowEdits;
+ }
+
+ /**
+ * Main method
+ */
+ public static void main(String[] args) throws IOException {
+ if (args.length < 1) {
+ throw new IllegalArgumentException("A filename to view must be supplied as the first argument, but none was given");
+ }
+
+ try (FileInputStream in = new FileInputStream(args[0]);
+ HSSFWorkbook wb = new HSSFWorkbook(in)) {
+ SViewerPanel p = new SViewerPanel(wb, true);
+ JFrame frame;
+ frame = new JFrame() {
+ @Override
+ protected void processWindowEvent(WindowEvent e) {
+ super.processWindowEvent(e);
+ if (e.getID() == WindowEvent.WINDOW_CLOSING) {
+ System.exit(0);
+ }
+ }
+
+ @Override
+ public synchronized void setTitle(String title) {
+ super.setTitle(title);
+ enableEvents(AWTEvent.WINDOW_EVENT_MASK);
+ }
+ };
+ frame.setTitle("Viewer Frame");
+ frame.getContentPane().add(p, BorderLayout.CENTER);
+ frame.setSize(800, 640);
+ Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
+ frame.setLocation((d.width - frame.getSize().width) / 2, (d.height - frame.getSize().height) / 2);
+ frame.setVisible(true);
}
- };
- frame.setTitle("Viewer Frame");
- frame.getContentPane().add(p, BorderLayout.CENTER);
- frame.setSize(800, 640);
- Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
- frame.setLocation((d.width - frame.getSize().width) / 2, (d.height - frame.getSize().height) / 2);
- frame.setVisible(true);
}
- }
}