use of org.eclipse.swt.graphics.Rectangle in project translationstudio8 by heartsome.
the class TBSearchCellRenderer method paint.
/**
* (non-Javadoc)
* @see org.eclipse.nebula.widgets.grid.IRenderer#paint(org.eclipse.swt.graphics.GC, java.lang.Object)
*/
public void paint(GC gc, Object value) {
GridItem item = (GridItem) value;
gc.setFont(item.getFont(getColumn()));
boolean drawAsSelected = isSelected();
boolean drawBackground = true;
if (isCellSelected()) {
// (!isCellFocus());
drawAsSelected = true;
}
if (drawAsSelected) {
gc.setBackground(getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION));
gc.setForeground(getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION_TEXT));
} else {
if (item.getParent().isEnabled()) {
Color back = item.getBackground(getColumn());
if (back != null) {
gc.setBackground(back);
} else {
drawBackground = false;
}
} else {
gc.setBackground(getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
}
gc.setForeground(item.getForeground(getColumn()));
}
if (drawBackground)
gc.fillRectangle(getBounds().x, getBounds().y, getBounds().width, getBounds().height);
int x = leftMargin;
if (isTree()) {
boolean renderBranches = item.getParent().getTreeLinesVisible();
if (renderBranches) {
branchRenderer.setBranches(getBranches(item));
branchRenderer.setIndent(treeIndent);
branchRenderer.setBounds(getBounds().x + x, getBounds().y, getToggleIndent(item), // Take into account border
getBounds().height + 1);
}
x += getToggleIndent(item);
toggleRenderer.setExpanded(item.isExpanded());
toggleRenderer.setHover(getHoverDetail().equals("toggle"));
toggleRenderer.setLocation(getBounds().x + x, (getBounds().height - toggleRenderer.getBounds().height) / 2 + getBounds().y);
if (item.hasChildren())
toggleRenderer.paint(gc, null);
if (renderBranches) {
branchRenderer.setToggleBounds(toggleRenderer.getBounds());
branchRenderer.paint(gc, null);
}
x += toggleRenderer.getBounds().width + insideMargin;
}
if (isCheck()) {
checkRenderer.setChecked(item.getChecked(getColumn()));
checkRenderer.setGrayed(item.getGrayed(getColumn()));
if (!item.getParent().isEnabled()) {
checkRenderer.setGrayed(true);
}
checkRenderer.setHover(getHoverDetail().equals("check"));
if (isCenteredCheckBoxOnly(item)) {
// Special logic if this column only has a checkbox and is centered
checkRenderer.setBounds(getBounds().x + ((getBounds().width - checkRenderer.getBounds().width) / 2), (getBounds().height - checkRenderer.getBounds().height) / 2 + getBounds().y, checkRenderer.getBounds().width, checkRenderer.getBounds().height);
} else {
checkRenderer.setBounds(getBounds().x + x, (getBounds().height - checkRenderer.getBounds().height) / 2 + getBounds().y, checkRenderer.getBounds().width, checkRenderer.getBounds().height);
x += checkRenderer.getBounds().width + insideMargin;
}
checkRenderer.paint(gc, null);
}
Image image = item.getImage(getColumn());
if (image != null) {
int y = getBounds().y;
y += (getBounds().height - image.getBounds().height) / 2;
gc.drawImage(image, getBounds().x + x, y);
x += image.getBounds().width + insideMargin;
}
if (drawAsSelected) {
gc.setForeground(getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION_TEXT));
} else {
gc.setForeground(item.getForeground(getColumn()));
}
int width = getBounds().width - x - rightMargin;
int height = getBounds().height - bottomMargin;
int y = getBounds().y + textTopMargin + topMargin;
if (textLayout == null) {
textLayout = new TextLayout(gc.getDevice());
item.getParent().addDisposeListener(new DisposeListener() {
public void widgetDisposed(DisposeEvent e) {
textLayout.dispose();
}
});
}
textLayout.setOrientation(item.getParent().getOrientation());
textLayout.setFont(gc.getFont());
String itemText = item.getText(getColumn());
textLayout.setText(item.getText(getColumn()));
textLayout.setAlignment(getAlignment());
textLayout.setWidth(width < 1 ? 1 : width);
if (styleColumn != -1 && getColumn() == styleColumn) {
if (style == null) {
final Font font = new Font(gc.getDevice(), gc.getFont().getFontData()[0].getName(), gc.getFont().getFontData()[0].getHeight(), SWT.BOLD);
style = new TextStyle(font, null, null);
item.getParent().addDisposeListener(new DisposeListener() {
public void widgetDisposed(DisposeEvent e) {
font.dispose();
}
});
}
if (strText != null) {
if (blnIsApplyRegular) {
Pattern pattern = null;
if (blnIsCaseSensitive) {
pattern = Pattern.compile(strText);
} else {
pattern = Pattern.compile(strText, Pattern.CASE_INSENSITIVE);
}
Matcher matcher = pattern.matcher(itemText);
while (matcher.find()) {
textLayout.setStyle(style, matcher.start(), matcher.end() - 1);
}
} else {
int index;
if (blnIsCaseSensitive) {
index = itemText.indexOf(strText);
} else {
index = itemText.toUpperCase().indexOf(strText.toUpperCase());
}
if (index != -1) {
textLayout.setStyle(null, 0, itemText.length() - 1);
for (int i = 1; i < strText.length(); i++) {
int j = TextUtil.indexOf(itemText, strText, i, blnIsCaseSensitive);
if (j != -1) {
textLayout.setStyle(style, j, j + strText.length() - 1);
} else {
break;
}
}
}
}
}
}
if (item.getParent().isAutoHeight()) {
int textHeight = topMargin + textTopMargin;
for (int cnt = 0; cnt < textLayout.getLineCount(); cnt++) textHeight += textLayout.getLineBounds(cnt).height;
textHeight += textBottomMargin + bottomMargin;
Object obj = item.getData("itemHeight");
if (getColumn() != item.getParent().getColumnCount() - 1) {
if (obj != null) {
int heigth = (Integer) obj;
textHeight = Math.max(textHeight, heigth);
}
item.setData("itemHeight", textHeight);
} else {
int heigth = (Integer) obj;
textHeight = Math.max(textHeight, heigth);
if (textHeight != item.getHeight()) {
item.setHeight(textHeight);
}
item.setData("itemHeight", null);
}
}
y += getVerticalAlignmentAdjustment(textLayout.getBounds().height, height);
textLayout.draw(gc, getBounds().x + x, y);
if (item.getParent().getLinesVisible()) {
if (isCellSelected()) {
gc.setForeground(getDisplay().getSystemColor(SWT.COLOR_WIDGET_DARK_SHADOW));
} else {
gc.setForeground(item.getParent().getLineColor());
}
gc.drawLine(getBounds().x, getBounds().y + getBounds().height, getBounds().x + getBounds().width - 1, getBounds().y + getBounds().height);
gc.drawLine(getBounds().x + getBounds().width - 1, getBounds().y, getBounds().x + getBounds().width - 1, getBounds().y + getBounds().height);
}
if (isCellFocus()) {
Rectangle focusRect = new Rectangle(getBounds().x, getBounds().y, getBounds().width - 1, getBounds().height);
gc.setForeground(getDisplay().getSystemColor(SWT.COLOR_LIST_FOREGROUND));
gc.drawRectangle(focusRect);
if (isFocus()) {
focusRect.x++;
focusRect.width -= 2;
focusRect.y++;
focusRect.height -= 2;
gc.drawRectangle(focusRect);
}
}
}
use of org.eclipse.swt.graphics.Rectangle in project translationstudio8 by heartsome.
the class TBSearchCellRenderer method getTextBounds.
/**
* {@inheritDoc}
*/
public Rectangle getTextBounds(GridItem item, boolean preferred) {
int x = leftMargin;
if (isTree()) {
x += getToggleIndent(item);
x += toggleRenderer.getBounds().width + insideMargin;
}
if (isCheck()) {
x += checkRenderer.getBounds().width + insideMargin;
}
Image image = item.getImage(getColumn());
if (image != null) {
x += image.getBounds().width + insideMargin;
}
Rectangle bounds = new Rectangle(x, topMargin + textTopMargin, 0, 0);
GC gc = new GC(item.getParent());
gc.setFont(item.getFont(getColumn()));
Point size = gc.stringExtent(item.getText(getColumn()));
bounds.height = size.y;
if (preferred) {
bounds.width = size.x - 1;
} else {
bounds.width = getBounds().width - x - rightMargin;
}
gc.dispose();
return bounds;
}
use of org.eclipse.swt.graphics.Rectangle in project translationstudio8 by heartsome.
the class TermDbManagerDialog method setShellSize.
/**
* Changes the shell size to the given size, ensuring that it is no larger than the display bounds.
* @param width
* the shell width
* @param height
* the shell height
*/
private void setShellSize(int width, int height) {
Rectangle preferred = getShell().getBounds();
preferred.width = width;
preferred.height = height;
getShell().setBounds(getConstrainedShellBounds(preferred));
}
use of org.eclipse.swt.graphics.Rectangle in project translationstudio8 by heartsome.
the class RiskCellEditor method checkClick.
private boolean checkClick(JaretTable table, IRow row, IColumn column, Rectangle rect, int x, int y) {
if (_forceSquare) {
int a = Math.min(rect.width, rect.height);
Rectangle nrect = new Rectangle(0, 0, a, a);
nrect.x = rect.x + (rect.width - a) / 2;
nrect.y = rect.y + (rect.height - a) / 2;
rect = nrect;
}
if (!rect.contains(x, y)) {
return false;
}
int width = rect.width;
int height = rect.height;
int sWidth = (width - RiskRenderer.AXISOFFSET) / 3;
int sHeight = (height - RiskRenderer.AXISOFFSET) / 3;
int xx = x - rect.x;
int yy = y - rect.y;
int prob = xx / sWidth;
int sev = yy / sHeight;
if (prob >= 0 && sev >= 0) {
sev = 2 - sev;
Risk risk = ((DummyRow) row).new Risk(prob + 1, sev + 1);
column.setValue(row, risk);
return true;
}
return false;
}
use of org.eclipse.swt.graphics.Rectangle in project translationstudio8 by heartsome.
the class RiskRenderer method draw.
public void draw(GC gc, JaretTable jaretTable, ICellStyle cellStyle, Rectangle drawingArea, IRow row, IColumn column, boolean drawFocus, boolean selected, boolean printing) {
drawBackground(gc, drawingArea, cellStyle, selected, printing);
Rectangle drect = drawBorder(gc, cellStyle, drawingArea, printing);
Rectangle rect = applyInsets(drect);
DummyRow.Risk risk = (Risk) column.getValue(row);
if (_forceSquare) {
int a = Math.min(rect.width, rect.height);
Rectangle nrect = new Rectangle(0, 0, a, a);
nrect.x = rect.x + (rect.width - a) / 2;
nrect.y = rect.y + (rect.height - a) / 2;
rect = nrect;
}
Color bg = gc.getBackground();
int width = rect.width;
int height = rect.height;
int sWidth = (width - AXISOFFSET) / 3;
int sHeight = (height - AXISOFFSET) / 3;
// y = severity
for (int x = 0; x < 3; x++) {
for (int y = 0; y < 3; y++) {
Color c = getColor(risk, x, y);
gc.setBackground(c);
int oX = AXISOFFSET + x * sWidth + rect.x;
int oY = rect.y + height - AXISOFFSET - (y + 1) * sHeight;
gc.fillRectangle(oX, oY, sWidth, sHeight);
gc.drawRectangle(oX, oY, sWidth, sHeight);
if (risk != null && risk.getRiskProb() - 1 == x && risk.getRiskSeverity() - 1 == y) {
gc.drawLine(oX, oY, oX + sWidth, oY + sHeight);
gc.drawLine(oX, oY + sHeight, oX + sWidth, oY);
}
}
}
// // axises
// // x
// gc.drawLine(rect.x + AXISOFFSET, rect.y + height - AXISOFFSET, rect.x + 3 * sWidth + AXISOFFSET, rect.y +
// height - AXISOFFSET);
// // y
// gc.drawLine(rect.x + AXISOFFSET, rect.y + height - AXISOFFSET, rect.x + AXISOFFSET, rect.y + height -
// AXISOFFSET - 3 * sHeight);
gc.setBackground(bg);
if (drawFocus) {
drawFocus(gc, drect);
}
drawSelection(gc, drawingArea, cellStyle, selected, printing);
}
Aggregations