@Override
  public void subPaint(Graphics2D graphics, Dimension dimensions) {
    mediumStroke =
        new BasicStroke(
            ((float) dimensions.width / TARGET_WINDOW_SIZE * 2.0F),
            BasicStroke.CAP_ROUND,
            BasicStroke.JOIN_BEVEL);
    majorStroke =
        new BasicStroke(
            ((float) dimensions.width / TARGET_WINDOW_SIZE * 4.0F),
            BasicStroke.CAP_ROUND,
            BasicStroke.JOIN_BEVEL);

    final float radius = (float) (dimensions.getWidth() * 0.485f);
    final float tickRadius =
        (float) (dimensions.getWidth() * 0.485f * this.ticksPositionScale.getValue());

    graphics.setFont(
        getFont().deriveFont((float) (this.getTextSizeScale().getValue() * dimensions.getWidth())));

    graphics.setColor(textColor);
    graphics.setStroke(mediumStroke);

    textPainter.paint(
        graphics, centerPoint, radius * textPositionScale.getValue(), 0.0, 30, arrayOfText);

    graphics.setColor(minorColor);
    graphics.setStroke(mediumStroke);
    ShapeUtils.drawRadialLines(
        graphics, centerPoint, tickRadius * 0.915, tickRadius * 0.95, 0.0, 6.0, 60);
    ShapeUtils.drawCircle(graphics, centerPoint.getX(), centerPoint.getY(), tickRadius * 0.915);
    ShapeUtils.drawCircle(graphics, centerPoint.getX(), centerPoint.getY(), tickRadius * 0.95);

    graphics.setColor(majorColor);
    graphics.setStroke(majorStroke);
    ShapeUtils.drawRadialLines(
        graphics, centerPoint, tickRadius * 0.915, tickRadius * 0.95, 0.0, 30.0, 12);
    graphics.dispose();
  }