protected void paintContentBorderBottomEdge(Graphics g,int tabPlacement,int selectedIndex,int x,int y,int w,int h){
  boolean leftToRight=CompiereUtils.isLeftToRight(tabPane);
  int bottom=y + h - 1;
  int right=x + w - 1;
  Rectangle selRect=selectedIndex < 0 ? null : getTabBounds(selectedIndex,calcRect);
  g.setColor(shadow);
  if (tabPlacement != BOTTOM || selectedIndex < 0 || (selRect.x < x || selRect.x > x + w)) {
    g.setColor(darkShadow);
    g.drawLine(x,y + h - 1,x + w - 1,y + h - 1);
  }
 else {
    boolean lastInRun=isLastInRun(selectedIndex);
    g.setColor(darkShadow);
    if (leftToRight || lastInRun)     g.drawLine(x,bottom,selRect.x,bottom);
 else     g.drawLine(x,bottom,selRect.x - 1,bottom);
    if (selRect.x + selRect.width < x + w - 2) {
      if (leftToRight && !lastInRun)       g.drawLine(selRect.x + selRect.width,bottom,right,bottom);
 else       g.drawLine(selRect.x + selRect.width - 1,bottom,right,bottom);
    }
  }
}

protected void paintContentBorderBottomEdge ( Graphics g , int tabPlacement , int selectedIndex , int x , int y , int w , int h ) { boolean leftToRight = CompiereUtils . isLeftToRight ( tabPane ) ; int bottom = y + h - 1 ; int right = x + w - 1 ; Rectangle selRect = selectedIndex < 0 ? null : getTabBounds ( selectedIndex , calcRect ) ; g . setColor ( shadow ) ; if ( tabPlacement != BOTTOM || selectedIndex < 0 || ( selRect . x < x || selRect . x > x + w ) ) { g . setColor ( darkShadow ) ; g . drawLine ( x , y + h - 1 , x + w - 1 , y + h - 1 ) ; } else { boolean lastInRun = isLastInRun ( selectedIndex ) ; g . setColor ( darkShadow ) ; if ( leftToRight || lastInRun ) g . drawLine ( x , bottom , selRect . x , bottom ) ; else g . drawLine ( x , bottom , selRect . x - 1 , bottom ) ; if ( selRect . x + selRect . width < x + w - 2 ) { if ( leftToRight && ! lastInRun ) g . drawLine ( selRect . x + selRect . width , bottom , right , bottom ) ; else g . drawLine ( selRect . x + selRect . width - 1 , bottom , right , bottom ) ; } } }
paint bottom content area edge
