blob: 96e2e063fb9863f308e1d2a6d1e315c796431898 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2018 Red Hat and others. All rights reserved.
* The contents of this file are made available under the terms
* of the GNU Lesser General Public License (LGPL) Version 2.1 that
* accompanies this distribution (lgpl-v21.txt). The LGPL is also
* available at http://www.gnu.org/licenses/lgpl.html. If the version
* of the LGPL at http://www.gnu.org is different to the version of
* the LGPL accompanying this distribution and there is any conflict
* between the two license versions, the terms of the LGPL accompanying
* this distribution shall govern.
*
* Contributors:
* Red Hat - initial API and implementation
*******************************************************************************/
package org.eclipse.swt.tests.gtk.snippets;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
/*
* Title: Bug 530969: [GTK3] Control.print() doesn't seem to work
* How to run: launch snippet and observe the TreeItems
* Bug description: all TreeItems have a white box as their icon
* Expected results: all TreeItems should have a checkbox image (in some state) set as the icon
* GTK Version(s): GTK3
*/
public class Bug530969_ControlPrint {
private static void createButton(Composite parent, Color bgColor,
boolean checked, boolean enabled) {
Button button = new Button(parent, SWT.CHECK);
button.setSelection(checked);
button.setEnabled(enabled);
button.setBackground(bgColor);
Point bSize = button.computeSize(SWT.DEFAULT, SWT.DEFAULT);
button.setSize(bSize);
}
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display, SWT.NO_TRIM);
Color gray = new Color (display, 222, 223, 224);
Composite composite = new Composite(shell, SWT.NONE);
RowLayout layout = new RowLayout();
layout.marginTop = 0;
layout.marginLeft = 0;
layout.marginBottom = 0;
layout.marginRight = 0;
layout.spacing = 0;
composite.setLayout(layout);
createButton(composite, gray, true, true);
createButton(composite, gray, false, true);
createButton(composite, gray, true, false);
createButton(composite, gray, false, false);
Point cSize = composite.computeSize(SWT.DEFAULT, SWT.DEFAULT);
composite.setSize(cSize);
shell.setBackground(gray);
shell.setLocation(0, 0);
shell.setSize(cSize);
shell.open();
Image canvas = new Image(display, cSize.x, cSize.y);
GC gc = new GC(canvas);
composite.print(gc);
int buttonX = cSize.x / 4;
Image[] images = new Image[4];
for (int i = 0; i < 4; i++) {
Image image = new Image(display, buttonX, cSize.y);
gc.copyArea(image, buttonX * i, 0);
images[i] = image;
}
shell.close();
Shell properShell = new Shell (display);
properShell.setLayout(new FillLayout());
Image firstImage = images[0];
final Tree tree = new Tree(properShell, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
TreeItem lastItem = new TreeItem(tree, SWT.NONE);
lastItem.setImage(firstImage);
lastItem.setText("root item with first image");
for (int i = 0; i < 3; i++) {
TreeItem newItem = new TreeItem(lastItem, SWT.NONE);
newItem.setText("descendant item with image " + i);
newItem.setImage(images[i+1]);
}
lastItem.setExpanded(true);
properShell.setSize(400, 400);
properShell.open();
while (!properShell.isDisposed()) {
if (!display.readAndDispatch()) display.sleep();
}
display.dispose();
canvas.dispose();
gc.dispose();
firstImage.dispose();
}
}