public void selectRenderables(DrawContext dc, Sector vs) {
      // Select our renderables
      if (this.gridElements == null) createRenderables();

      int gridStep = (int) this.size / 10;
      boolean drawMetricLabels = getSizeInPixels(dc) > MIN_CELL_SIZE_PIXELS * 4 * 1.7;
      String graticuleType = getTypeFor(gridStep);

      for (GridElement ge : this.gridElements) {
        if (ge.isInView(dc, vs)) {
          if (drawMetricLabels)
            metricScaleSupport.computeMetricScaleExtremes(
                this.UTMZone, this.hemisphere, ge, this.size);

          addRenderable(ge.renderable, graticuleType);
        }
      }

      if (getSizeInPixels(dc) <= MIN_CELL_SIZE_PIXELS * 4 * 2) return;

      // Select sub grids renderables
      if (this.subGrids == null) createSubGrids();
      for (SquareGrid sg : this.subGrids) {
        if (sg.isInView(dc)) {
          sg.selectRenderables(dc, vs);
        } else sg.clearRenderables();
      }
    }
 public void clearRenderables() {
   if (this.gridElements != null) {
     this.gridElements.clear();
     this.gridElements = null;
   }
   if (this.subGrids != null) {
     for (SquareGrid sg : this.subGrids) {
       sg.clearRenderables();
     }
     this.subGrids.clear();
     this.subGrids = null;
   }
 }
 public void createSubGrids() {
   this.subGrids = new ArrayList<SquareGrid>();
   double gridStep = this.size / 10;
   for (int i = 0; i < 10; i++) {
     double easting = this.SWEasting + gridStep * i;
     for (int j = 0; j < 10; j++) {
       double northing = this.SWNorthing + gridStep * j;
       SquareGrid sg =
           new SquareGrid(
               this.UTMZone, this.hemisphere, this.UTMZoneSector, easting, northing, gridStep);
       if (!sg.isOutsideGridZone()) this.subGrids.add(sg);
     }
   }
 }