+ // scalewidth will normally be screenwidth,\r
+ public void drawScale(Graphics g, int startx, int endx, int width,\r
+ int height)\r
+ {\r
+ Graphics2D gg = (Graphics2D) g;\r
+ gg.setFont(av.getFont());\r
+\r
+ if(av.antiAlias)\r
+ gg.setRenderingHint(RenderingHints.KEY_ANTIALIASING,\r
+ RenderingHints.VALUE_ANTIALIAS_ON);\r
+\r
+ //Fill in the background\r
+ gg.setColor(Color.white);\r
+ gg.fillRect(0, 0, width, height);\r
+ gg.setColor(Color.black);\r
+\r
+ //Fill the selected columns\r
+ ColumnSelection cs = av.getColumnSelection();\r
+ gg.setColor(new Color(220, 0, 0));\r
+\r
+ for (int i = 0; i < cs.size(); i++)\r
+ {\r
+ int sel = cs.columnAt(i);\r
+ if(av.hasHiddenColumns)\r
+ sel = av.getColumnSelection().findColumnPosition(sel);\r
+\r
+ if ((sel >= startx) && (sel <= endx))\r
+ {\r
+ gg.fillRect((sel - startx) * av.charWidth, 0, av.charWidth,\r
+ getHeight());\r
+ }\r
+ }\r
+\r
+ // Draw the scale numbers\r
+ gg.setColor(Color.black);\r
+\r
+ int scalestartx = (startx / 10) * 10;\r
+\r
+ FontMetrics fm = gg.getFontMetrics(av.getFont());\r
+ int y = av.charHeight - fm.getDescent();\r
+\r
+ if ((scalestartx % 10) == 0)\r
+ {\r
+ scalestartx += 5;\r
+ }\r
+\r
+ String string;\r
+ int maxX=0;\r
+\r
+ for (int i = scalestartx; i < endx; i += 5)\r
+ {\r
+ if ((i % 10) == 0)\r
+ {\r
+ string = String.valueOf(av.getColumnSelection().adjustForHiddenColumns(i));\r
+ if ( (i - startx - 1) * av.charWidth > maxX)\r
+ {\r
+ gg.drawString(string,\r
+ (i - startx - 1) * av.charWidth, y);\r
+ maxX = (i - startx + 1) * av.charWidth + fm.stringWidth(string);\r
+ }\r
+\r
+ gg.drawLine( (int) ( ( (i - startx - 1) * av.charWidth) +\r
+ (av.charWidth / 2)), y + 2,\r
+ (int) ( ( (i - startx - 1) * av.charWidth) +\r
+ (av.charWidth / 2)),\r
+ y + (fm.getDescent() * 2));\r
+\r
+ }\r
+ else\r
+ {\r
+ gg.drawLine((int) (((i - startx - 1) * av.charWidth) +\r
+ (av.charWidth / 2)), y + fm.getDescent(),\r
+ (int) (((i - startx - 1) * av.charWidth) +\r
+ (av.charWidth / 2)), y + (fm.getDescent() * 2));\r
+ }\r
+ }\r
+\r
+ if (av.hasHiddenColumns)\r
+ {\r
+ gg.setColor(Color.blue);\r
+ int res;\r
+ if(av.getShowHiddenMarkers())\r
+ {\r
+ for (int i = 0; i < av.getColumnSelection().getHiddenColumns().size();\r
+ i++)\r
+ {\r
+\r
+ res = av.getColumnSelection().findHiddenRegionPosition(i) -\r
+ startx;\r
+\r
+ if(res < 0 || res > endx-scalestartx)\r
+ continue;\r
+\r
+ gg.fillPolygon(new int[]\r
+ {res * av.charWidth - av.charHeight / 4,\r
+ res * av.charWidth + av.charHeight / 4,\r
+ res * av.charWidth},\r
+ new int[]\r
+ {\r
+ y - av.charHeight / 2, y - av.charHeight / 2,\r
+ y + 8\r
+ }, 3);\r
+\r
+ }\r
+ }\r
+\r
+ if (reveal != null && reveal[0] > startx && reveal[0] < endx)\r
+ {\r
+ gg.drawString("Reveal Columns", reveal[0] * av.charWidth, 0);\r
+ }\r
+ }\r