Search in sources :

Example 21 with Rectangle

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);
        }
    }
}
Also used : DisposeListener(org.eclipse.swt.events.DisposeListener) Pattern(java.util.regex.Pattern) Matcher(java.util.regex.Matcher) Color(org.eclipse.swt.graphics.Color) Rectangle(org.eclipse.swt.graphics.Rectangle) Image(org.eclipse.swt.graphics.Image) DisposeEvent(org.eclipse.swt.events.DisposeEvent) Point(org.eclipse.swt.graphics.Point) Font(org.eclipse.swt.graphics.Font) TextLayout(org.eclipse.swt.graphics.TextLayout) GridItem(org.eclipse.nebula.widgets.grid.GridItem) TextStyle(org.eclipse.swt.graphics.TextStyle)

Example 22 with Rectangle

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;
}
Also used : Rectangle(org.eclipse.swt.graphics.Rectangle) Point(org.eclipse.swt.graphics.Point) Image(org.eclipse.swt.graphics.Image) GC(org.eclipse.swt.graphics.GC) Point(org.eclipse.swt.graphics.Point)

Example 23 with Rectangle

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));
}
Also used : Rectangle(org.eclipse.swt.graphics.Rectangle)

Example 24 with Rectangle

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;
}
Also used : DummyRow(de.jaret.examples.table.DummyRow) Rectangle(org.eclipse.swt.graphics.Rectangle) Risk(de.jaret.examples.table.DummyRow.Risk)

Example 25 with Rectangle

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);
}
Also used : DummyRow(de.jaret.examples.table.DummyRow) Risk(de.jaret.examples.table.DummyRow.Risk) Color(org.eclipse.swt.graphics.Color) Rectangle(org.eclipse.swt.graphics.Rectangle) Risk(de.jaret.examples.table.DummyRow.Risk)

Aggregations

Rectangle (org.eclipse.swt.graphics.Rectangle)651 Point (org.eclipse.swt.graphics.Point)370 Image (org.eclipse.swt.graphics.Image)114 GC (org.eclipse.swt.graphics.GC)104 Test (org.junit.Test)80 Color (org.eclipse.swt.graphics.Color)61 Shell (org.eclipse.swt.widgets.Shell)54 Composite (org.eclipse.swt.widgets.Composite)53 SelectionEvent (org.eclipse.swt.events.SelectionEvent)51 TableItem (org.eclipse.swt.widgets.TableItem)47 GridLayout (org.eclipse.swt.layout.GridLayout)44 Display (org.eclipse.swt.widgets.Display)44 Button (org.eclipse.swt.widgets.Button)42 Menu (org.eclipse.swt.widgets.Menu)40 GridData (org.eclipse.swt.layout.GridData)38 Label (org.eclipse.swt.widgets.Label)37 SWT (org.eclipse.swt.SWT)34 Event (org.eclipse.swt.widgets.Event)34 Font (org.eclipse.swt.graphics.Font)30 Listener (org.eclipse.swt.widgets.Listener)29