📄 viewform.java
字号:
int minTopWidth = leftSize.x + centerSize.x + rightSize.x + 2*marginWidth + 2*highlight; int count = -1; if (leftSize.x > 0) count++; if (centerSize.x > 0) count++; if (rightSize.x > 0) count++; if (count > 0) minTopWidth += count * horizontalSpacing; int x = rect.x + rect.width - marginWidth - highlight; int y = rect.y + marginHeight + highlight; boolean top = false; if (separateTopCenter || minTopWidth > rect.width) { int topHeight = Math.max(rightSize.y, leftSize.y); if (topRight != null && !topRight.isDisposed()) { top = true; x -= rightSize.x; topRight.setBounds(x, y, rightSize.x, topHeight); x -= horizontalSpacing; } if (topLeft != null && !topLeft.isDisposed()) { top = true; leftSize = topLeft.computeSize(x - rect.x - marginWidth - highlight, SWT.DEFAULT); topLeft.setBounds(rect.x + marginWidth + highlight, y, leftSize.x, topHeight); } if (top) y += topHeight + verticalSpacing; if (topCenter != null && !topCenter.isDisposed()) { top = true; int w = rect.width - 2*marginWidth - 2*highlight; int trim = topCenter.computeSize(w, SWT.DEFAULT).x - w; centerSize = topCenter.computeSize(w - trim, SWT.DEFAULT); topCenter.setBounds(rect.x + rect.width - marginWidth - highlight - centerSize.x, y, centerSize.x, centerSize.y); y += centerSize.y + verticalSpacing; } } else { int topHeight = Math.max(rightSize.y, Math.max(centerSize.y, leftSize.y)); if (topRight != null && !topRight.isDisposed()) { top = true; x -= rightSize.x; topRight.setBounds(x, y, rightSize.x, topHeight); x -= horizontalSpacing; } if (topCenter != null && !topCenter.isDisposed()) { top = true; x -= centerSize.x; topCenter.setBounds(x, y, centerSize.x, topHeight); x -= horizontalSpacing; } if (topLeft != null && !topLeft.isDisposed()) { top = true; leftSize = topLeft.computeSize(x - rect.x - marginWidth - highlight, topHeight); topLeft.setBounds(rect.x + marginWidth + highlight, y, leftSize.x, topHeight); } if (top)y += topHeight + verticalSpacing; } int oldSeperator = separator; separator = -1; if (content != null && !content.isDisposed()) { if (topLeft != null || topRight!= null || topCenter != null){ separator = y; y++; } content.setBounds(rect.x + marginWidth + highlight, y, rect.width - 2 * marginWidth - 2*highlight, rect.y + rect.height - y - marginHeight - highlight); } if (oldSeperator != -1 && separator != -1) { int t = Math.min(separator, oldSeperator); int b = Math.max(separator, oldSeperator); redraw(borderLeft, t, getSize().x - borderLeft - borderRight, b - t, false); }}void onDispose() { topLeft = null; topCenter = null; topRight = null; content = null; oldArea = null; selectionBackground = null;}void onPaint(GC gc) { Color gcForeground = gc.getForeground(); Point size = getSize(); Color border = getDisplay().getSystemColor(BORDER1_COLOR); if (showBorder) { gc.setForeground(border); gc.drawRectangle(0, 0, size.x - 1, size.y - 1); if (highlight > 0) { int x1 = 1; int y1 = 1; int x2 = size.x - 1; int y2 = size.y - 1; int[] shape = new int[] {x1,y1, x2,y1, x2,y2, x1,y2, x1,y1+highlight, x1+highlight,y1+highlight, x1+highlight,y2-highlight, x2-highlight,y2-highlight, x2-highlight,y1+highlight, x1,y1+highlight}; Color highlightColor = getDisplay().getSystemColor(SWT.COLOR_LIST_SELECTION); gc.setBackground(highlightColor); gc.fillPolygon(shape); } } if (separator > -1) { gc.setForeground(border); gc.drawLine(borderLeft + highlight, separator, size.x - borderLeft - borderRight - highlight, separator); } gc.setForeground(gcForeground);}void onResize() { layout(); Rectangle area = super.getClientArea(); if (oldArea == null || oldArea.width == 0 || oldArea.height == 0) { redraw(); } else { int width = 0; if (oldArea.width < area.width) { width = area.width - oldArea.width + borderRight + highlight; } else if (oldArea.width > area.width) { width = borderRight + highlight; } redraw(area.x + area.width - width, area.y, width, area.height, false); int height = 0; if (oldArea.height < area.height) { height = area.height - oldArea.height + borderBottom + highlight; } if (oldArea.height > area.height) { height = borderBottom + highlight; } redraw(area.x, area.y + area.height - height, area.width, height, false); } oldArea = area;}/*** Sets the content.* Setting the content to null will remove it from * the pane - however, the creator of the content must dispose of the content.* * @param content the control to be displayed in the content area or null* * @exception SWTException <ul>* <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>* <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>* <li>ERROR_INVALID_ARGUMENT - if the control is not a child of this ViewForm</li>* </ul>*/public void setContent(Control content) { checkWidget(); if (content != null && content.getParent() != this) { SWT.error(SWT.ERROR_INVALID_ARGUMENT); } if (this.content != null && !this.content.isDisposed()) { this.content.setBounds(OFFSCREEN, OFFSCREEN, 0, 0); } this.content = content; layout();}public void setFont(Font f) { super.setFont(f); if (topLeft != null && !topLeft.isDisposed()) topLeft.setFont(f); if (topCenter != null && !topCenter.isDisposed()) topCenter.setFont(f); if (topRight != null && !topRight.isDisposed()) topRight.setFont(f); layout();}/** * Sets the layout which is associated with the receiver to be * the argument which may be null. * <p> * Note : ViewForm does not use a layout class to size and position its children. * </p> * * @param layout the receiver's new layout or null * * @exception SWTException <ul> * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> * </ul> */public void setLayout (Layout layout) { checkWidget(); return;}void setSelectionBackground (Color color) { checkWidget(); if (selectionBackground == color) return; if (color == null) color = getDisplay().getSystemColor(SELECTION_BACKGROUND); selectionBackground = color; redraw();}/*** Set the control that appears in the top center of the pane.* Typically this is a toolbar.* The topCenter is optional. Setting the topCenter to null will remove it from * the pane - however, the creator of the topCenter must dispose of the topCenter.* * @param topCenter the control to be displayed in the top center or null* * @exception SWTException <ul>* <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>* <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>* <li>ERROR_INVALID_ARGUMENT - if the control is not a child of this ViewForm</li>* </ul>*/public void setTopCenter(Control topCenter) { checkWidget(); if (topCenter != null && topCenter.getParent() != this) { SWT.error(SWT.ERROR_INVALID_ARGUMENT); } if (this.topCenter != null && !this.topCenter.isDisposed()) { Point size = this.topCenter.getSize(); this.topCenter.setLocation(OFFSCREEN - size.x, OFFSCREEN - size.y); } this.topCenter = topCenter; layout();}/*** Set the control that appears in the top left corner of the pane.* Typically this is a label such as CLabel.* The topLeft is optional. Setting the top left control to null will remove it from * the pane - however, the creator of the control must dispose of the control.* * @param c the control to be displayed in the top left corner or null* * @exception SWTException <ul>* <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>* <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>* <li>ERROR_INVALID_ARGUMENT - if the control is not a child of this ViewForm</li>* </ul>*/public void setTopLeft(Control c) { checkWidget(); if (c != null && c.getParent() != this) { SWT.error(SWT.ERROR_INVALID_ARGUMENT); } if (this.topLeft != null && !this.topLeft.isDisposed()) { Point size = this.topLeft.getSize(); this.topLeft.setLocation(OFFSCREEN - size.x, OFFSCREEN - size.y); } this.topLeft = c; layout();}/*** Set the control that appears in the top right corner of the pane.* Typically this is a Close button or a composite with a Menu and Close button.* The topRight is optional. Setting the top right control to null will remove it from * the pane - however, the creator of the control must dispose of the control.* * @param c the control to be displayed in the top right corner or null* * @exception SWTException <ul>* <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>* <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>* <li>ERROR_INVALID_ARGUMENT - if the control is not a child of this ViewForm</li>* </ul>*/public void setTopRight(Control c) { checkWidget(); if (c != null && c.getParent() != this) { SWT.error(SWT.ERROR_INVALID_ARGUMENT); } if (this.topRight != null && !this.topRight.isDisposed()) { Point size = this.topRight.getSize(); this.topRight.setLocation(OFFSCREEN - size.x, OFFSCREEN - size.y); } this.topRight = c; layout();}/*** Specify whether the border should be displayed or not.* * @param show true if the border should be displayed* * @exception SWTException <ul>* <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>* <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>* </ul>*/public void setBorderVisible(boolean show) { checkWidget(); if (showBorder == show) return; showBorder = show; if (showBorder) { borderLeft = borderTop = borderRight = borderBottom = 1; if ((getStyle() & SWT.FLAT)== 0) highlight = 2; } else { borderBottom = borderTop = borderLeft = borderRight = 0; highlight = 0; } layout(); redraw();}/*** If true, the topCenter will always appear on a separate line by itself, otherwise the * topCenter will appear in the top row if there is room and will be moved to the second row if* required.* * @param show true if the topCenter will always appear on a separate line by itself* * @exception SWTException <ul>* <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li>* <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li>* </ul>*/public void setTopCenterSeparate(boolean show) { checkWidget(); separateTopCenter = show; layout();}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -