/**
   * for drawing the Record with its Cell Title and Values
   *
   * @param graphics
   * @param b
   */
  private void drawRecord(Graphics graphics, boolean haveFocus) {
    // graphics.setColor(Color.BLACK);
    // graphics.fillRoundRect(10, 2, Display.getWidth() - 10, height + 5,
    // 10,
    // 10);
    // graphics.drawRoundRect(10, 2, Display.getWidth() - 10, height + 5,
    // 10,
    // 10);

    int color = Color.BLACK;
    int[] colors = drawFousLostColors;
    int[] X_PTS = {getWidth(), getWidth(), getPreferredWidth(), getPreferredWidth()};

    int[] Y_PTS = {height, getPreferredHeight(), getPreferredHeight(), height};
    if (haveFocus) {
      colors = drawFousGainColors;
      color = Color.WHITE;
    }
    graphics.drawShadedFilledPath(X_PTS, Y_PTS, null, colors, null);
    graphics.setColor(color);

    // for placing the arrow icon
    int image_height = (height / 2) - 8;
    int img_x_position = total_Width - 18;
    graphics.drawBitmap(
        img_x_position,
        image_height,
        arrowBitmap.getHeight(),
        arrowBitmap.getWidth(),
        arrowBitmap,
        0,
        0);

    int halfWidth = (getWidth() / 2) - RIGHT_MARGIN;

    int yPosition = 0;
    // Draw each cell

    for (int i = 0; i < record.getCells().size(); i++) {
      Cell cell = (Cell) record.getCells().elementAt(i);

      // Draw the title of the cell
      String text = cell.getTitle().trim();

      // take the value of the cell to draw
      String value = cell.getValue().trim();

      int numberOfRowsForTitle = drawText(text, value, graphics, 0, yPosition);

      int numberOfRowsForValue = drawText(value, value, graphics, halfWidth, yPosition);

      if (numberOfRowsForTitle == 1 && numberOfRowsForValue == 1) {
        yPosition += CELL_HEIGHT - MULTIPLE_CELLS;
      } else {
        yPosition += CELL_HEIGHT - MULTIPLE_CELLS;
        yPosition += SECOND_CELL_HEIGHT;
      }
    }
  }
  /**
   * For calculating the Height of the field based on no.of cells and their text length
   *
   * @return
   */
  private int calculateHeight() {
    Font font = Font.getDefault();
    int height = 0;
    int width = total_Width;
    int halfWidth = (width / 2) - RIGHT_MARGIN;
    boolean hasMultipleCells = false;
    if (record.getCells().size() > 1) {
      hasMultipleCells = true;
      MULTIPLE_CELLS = 10;
    }
    for (int i = 0; i < record.getCells().size(); i++) {
      Cell cell = (Cell) record.getCells().elementAt(i);
      String title = cell.getTitle().trim();
      String value = cell.getValue().trim();

      if (value == null || value.trim().length() == 0) {

        boolean titleFitsInHalfWidth = font.getAdvance(title) <= total_Width - RIGHT_MARGIN;
        // for checking if value did not contain any value
        if (titleFitsInHalfWidth) {
          height += CELL_HEIGHT - MULTIPLE_CELLS;
        } else {
          // We need height for two rows
          height += CELL_HEIGHT - MULTIPLE_CELLS;
          height += SECOND_CELL_HEIGHT;
          // We will ignore anything that does not fit in two rows...
        }

      } else {
        // for checking for both title and value
        // Check if title fits in half width

        boolean titleFitsInHalfWidth = font.getAdvance(title) <= halfWidth;
        boolean valueFitsInHalfWidth = font.getAdvance(value) <= halfWidth;
        if (titleFitsInHalfWidth && valueFitsInHalfWidth) {
          height += CELL_HEIGHT - MULTIPLE_CELLS;
        } else {
          // We need height for two rows
          height += CELL_HEIGHT - MULTIPLE_CELLS;
          height += SECOND_CELL_HEIGHT;
          // We will ignore anything that does not fit in two rows...
        }
      }
    }
    return height;
  }