private void drawGridLines(Graphics2D g2d) {//{{{
        g2d.setColor(Color.BLACK);
        g2d.setStroke(new BasicStroke(5)); //line width
        int rowBorder = MAX_GRID_WIDTH_INDEX * SQ_W;
        int colBorder = MAX_GRID_HEIGHT_INDEX * SQ_H;
        
        //drawing columns
        for(int x = MIN_GRID_WIDTH_INDEX + 1; x <= MAX_GRID_WIDTH_INDEX + 1; x++)
        	g2d.draw(new Line2D.Float(x*SQ_W, MIN_GRID_HEIGHT_INDEX+SQ_H, x*SQ_W, colBorder+SQ_H));
        
        //drawing rows
        for(int y = MIN_GRID_WIDTH_INDEX + 1; y <= MAX_GRID_HEIGHT_INDEX + 1; y++)
        	g2d.draw(new Line2D.Float(MIN_GRID_WIDTH_INDEX+SQ_W, y*SQ_H, rowBorder+SQ_W, y*SQ_H));	
   
        g2d.setStroke(new BasicStroke(3)); //line width
    	for(int x = MIN_GRID_WIDTH_INDEX + 1; x <= MAX_GRID_WIDTH_INDEX + 1; x++) {
    		for(int y = MIN_GRID_HEIGHT_INDEX + 1; y <= MAX_GRID_HEIGHT_INDEX + 1; y++) {
    			if((x - y) % 2 == 0) {
    				if((x < MAX_GRID_WIDTH_INDEX + 1) && (y < MAX_GRID_HEIGHT_INDEX + 1))
    					g2d.draw(new Line2D.Float(x*SQ_W, y*SQ_H, (x+1)*SQ_W, (y+1)*SQ_H));
    				if((x < MAX_GRID_WIDTH_INDEX + 1) && (y > MIN_GRID_HEIGHT_INDEX + 1))
    					g2d.draw(new Line2D.Float(x*SQ_W, y*SQ_H, (x+1)*SQ_W, (y-1)*SQ_H));
    			}
    		}
    	}
    }//}}}