if ((getGroup().getImagePosition() & SWT.TOP) != 0 && image != null)
{
yOffset = titleHeight - titleAreaHeight;
}
Region reg = new Region();
reg.add(0,yOffset + 0, 5, 1);
reg.add(0,yOffset + 1, 3, 1);
reg.add(0,yOffset + 2, 2, 1);
reg.add(0,yOffset + 3, 1, 1);
reg.add(0,yOffset + 4, 1, 1);
reg.add(getGroup().getSize().x - 5,yOffset + 0, 5, 1);
reg.add(getGroup().getSize().x - 3,yOffset + 1, 3, 1);
reg.add(getGroup().getSize().x - 2,yOffset + 2, 2, 1);
reg.add(getGroup().getSize().x - 1,yOffset + 3, 1, 1);
reg.add(getGroup().getSize().x - 1,yOffset + 4, 1, 1);
int height = getGroup().getSize().y;
reg.add(0, height - 1, 5, 1);
reg.add(0, height - 2, 3, 1);
reg.add(0, height - 3, 2, 1);
reg.add(0, height - 4, 1, 1);
reg.add(0, height - 5, 1, 1);
reg.add(getGroup().getSize().x - 5, height - 1, 5, 1);
reg.add(getGroup().getSize().x - 3, height - 2, 3, 1);
reg.add(getGroup().getSize().x - 2, height - 3, 2, 1);
reg.add(getGroup().getSize().x - 1, height - 4, 1, 1);
reg.add(getGroup().getSize().x - 1, height - 5, 1, 1);
if (yOffset != 0)
{
reg.add(0,0,getGroup().getSize().x,yOffset);
}
gc.setClipping(reg);
getGroup().drawBackground(gc, 0, 0, getGroup().getSize().x,getGroup().getSize().y);
gc.setClipping((Region)null);
reg.dispose();
}
// Paint rectangle
int toggleHeight = 0;
if (getGroup().getToggleRenderer() != null)
{
toggleHeight = getGroup().getToggleRenderer().getSize().y + (2 * vMargin);
}
Region reg = null;
if ((getGroup().getStyle() & SWT.SMOOTH) != 0)
{
reg = new Region(getGroup().getDisplay());
reg.add(0, 0, getGroup().getSize().x, titleHeight);
int yOffset = 0;
if ((getGroup().getImagePosition() & SWT.TOP) != 0 && image != null)
{
yOffset = titleHeight - titleAreaHeight;
}
reg.subtract(0, yOffset + 0, 5, 1);
reg.subtract(0, yOffset + 1, 3, 1);
reg.subtract(0, yOffset + 2, 2, 1);
reg.subtract(0, yOffset + 3, 1, 1);
reg.subtract(0, yOffset + 4, 1, 1);
reg.subtract(getGroup().getSize().x - 5, yOffset + 0, 5, 1);
reg.subtract(getGroup().getSize().x - 3, yOffset + 1, 3, 1);
reg.subtract(getGroup().getSize().x - 2, yOffset + 2, 2, 1);
reg.subtract(getGroup().getSize().x - 1, yOffset + 3, 1, 1);
reg.subtract(getGroup().getSize().x - 1, yOffset + 4, 1, 1);
if (!getGroup().getExpanded())
{
yOffset = titleHeight;
reg.subtract(0, yOffset - 1, 5, 1);
reg.subtract(0, yOffset - 2, 3, 1);
reg.subtract(0, yOffset - 3, 2, 1);
reg.subtract(0, yOffset - 4, 1, 1);
reg.subtract(0, yOffset - 5, 1, 1);
reg.subtract(getGroup().getSize().x - 5, yOffset - 1, 5, 1);
reg.subtract(getGroup().getSize().x - 3, yOffset - 2, 3, 1);
reg.subtract(getGroup().getSize().x - 2, yOffset - 3, 2, 1);
reg.subtract(getGroup().getSize().x - 1, yOffset - 4, 1, 1);
reg.subtract(getGroup().getSize().x - 1, yOffset - 5, 1, 1);
}
gc.setClipping(reg);
}
if ((getGroup().getImagePosition() & SWT.TOP) == 0 || image == null)
{
if (gradientColors != null)
{
GraphicUtils.fillGradientRectangle(gc, 0, 0, getGroup().getSize().x, Math
.max(titleHeight, toggleHeight), gradientColors, gradientPercents,
gradientVertical);
}
else
{
gc.fillRectangle(0, 0, getGroup().getSize().x, Math.max(titleHeight, toggleHeight));
GraphicUtils.fillRoundRectangle(gc, 0, 0, getGroup().getSize().x, Math
.max(titleHeight, toggleHeight), null, true, !getGroup().getExpanded());
}
if ((getGroup().getStyle() & SWT.SMOOTH) != 0)
{
GraphicUtils.drawRoundRectangle(gc, 0, 0, getGroup().getSize().x, Math
.max(titleHeight, toggleHeight), null, null, true, !getGroup().getExpanded());
}
}
else
{
// gc.setBackground(getGroup().getParent().getBackground());
// gc.fillRectangle(0,0,getGroup().getSize().x,getTitleHeight() -
// titleAreaHeight);
if (gradientColors != null)
{
GraphicUtils.fillGradientRectangle(gc, 0, titleHeight - titleAreaHeight, getGroup()
.getSize().x, Math.max(titleAreaHeight, toggleHeight), gradientColors,
gradientPercents, gradientVertical);
}
else
{
gc.setBackground(getGroup().getBackground());
gc.fillRectangle(0, titleHeight - titleAreaHeight, getGroup().getSize().x, Math
.max(titleAreaHeight, toggleHeight));
}
// if ((getGroup().getStyle() & SWT.SMOOTH) != 0){
// GraphicUtils.drawRoundRectangle(gc,0,getTitleHeight() -
// titleAreaHeight,getGroup().getSize().x
// -1,Math.max(titleAreaHeight,toggleHeight)
// ,getGroup().getParent().getBackground(),null,true,!getGroup().isExpanded());
// }
}
if ((getGroup().getStyle() & SWT.SMOOTH) != 0)
{
gc.setClipping((Region)null);
reg.dispose();
}
// Paint Image
if (image != null)
{
if ((getGroup().getImagePosition() & SWT.LEAD) != 0)
{
if (getGroup().getToggleRenderer() != null)
{
if (getGroup().getTogglePosition() == SWT.LEAD)
{
imagePoint.x = hMargin + getGroup().getToggleRenderer().getSize().x
+ betweenSpacing;
}
else
{
imagePoint.x = hMargin;
}
}
else
{
imagePoint.x = hMargin;
}
}
else
{
if (getGroup().getToggleRenderer() != null)
{
if ((getGroup().getTogglePosition() & SWT.LEAD) != 0)
{
imagePoint.x = getGroup().getSize().x - (hMargin + image.getBounds().width);
}
else
{
imagePoint.x = getGroup().getSize().x
- (hMargin + image.getBounds().width
+ getGroup().getToggleRenderer().getSize().x + betweenSpacing);
}
}
else
{
imagePoint.x = getGroup().getSize().x - (hMargin + image.getBounds().width);
}
}
if ((getGroup().getImagePosition() & SWT.TOP) == 0
&& image.getImageData().height > titleHeight)
{
imagePoint.y = (titleHeight - image.getImageData().height) / 2;
}
else
{
imagePoint.y = (titleHeight - image.getImageData().height) / 2;
}
gc.drawImage(image, imagePoint.x, imagePoint.y);
}
Rectangle textBounds = getTextBounds();
gc.setForeground(getGroup().getForeground());
gc.drawText(TextUtils.getShortString(gc, getGroup().getText(), textBounds.width),
textBounds.x, textBounds.y, true);
if (!getGroup().getExpanded())
{
gc.setBackground(getGroup().getParent().getBackground());
// gc.fillRectangle(0,getTitleHeight(),getGroup().getBounds().width,getGroup().getBounds().height);
}
else
{
Color _borderColor;
if (borderColor == null)
{
_borderColor = getGroup().getBackground();
}
else
{
_borderColor = borderColor;
}
if ((getGroup().getStyle() & SWT.SMOOTH) != 0)
{
gc.setBackground(getGroup().getBackground());
// gc.fillRectangle(0,getGroup().getSize().y -
// 5,getGroup().getSize().x -1,5);
gc.setForeground(_borderColor);
reg = new Region(getGroup().getDisplay());
reg.add(0, 0, getGroup().getSize().x, getGroup().getSize().y);
int yOffset = getGroup().getSize().y;
reg.subtract(0, yOffset - 1, 5, 1);
reg.subtract(0, yOffset - 2, 3, 1);
reg.subtract(0, yOffset - 3, 2, 1);
reg.subtract(0, yOffset - 4, 1, 1);
reg.subtract(0, yOffset - 5, 1, 1);
reg.subtract(getGroup().getSize().x - 5, yOffset - 1, 5, 1);
reg.subtract(getGroup().getSize().x - 3, yOffset - 2, 3, 1);
reg.subtract(getGroup().getSize().x - 2, yOffset - 3, 2, 1);
reg.subtract(getGroup().getSize().x - 1, yOffset - 4, 1, 1);
reg.subtract(getGroup().getSize().x - 1, yOffset - 5, 1, 1);
gc.setClipping(reg);
GraphicUtils.drawRoundRectangle(gc, 0, titleHeight, getGroup().getSize().x - 1,
getGroup().getSize().y - titleHeight, null, false,
true);
reg.dispose();
gc.setClipping((Region)null);
}
else
{
gc.setForeground(_borderColor);