blob: 1c8ebfcdecfbfb403227db4eb04143ffd0f7b2cb [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2018 Red Hat and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Red Hat - initial API and implementation
*******************************************************************************/
package org.eclipse.swt.tests.gtk.snippets;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
public class Bug496302_GroupComputeSizeGTK2 {
private static Group group;
private static Group groupSmall;
private static Composite composite;
private static Text textGroup;
private static Text textGroupSmall;
private static Text textComposite;
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setSize(400, 400);
final GridLayout gridLayout = new GridLayout(1, false);
gridLayout.marginWidth = 5;
gridLayout.marginHeight = 5;
gridLayout.verticalSpacing = 0;
gridLayout.horizontalSpacing = 0;
shell.setLayout(gridLayout);
createComposite(shell);
createGroup(shell);
createGroupSmall(shell);
createButton(shell);
// widget.shell.pack();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
private static void createGroup(final Composite parent) {
group = new Group(parent, SWT.NONE);
group.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
group.setLayout(new GridLayout(3, false));
group.setText("A Group"); //$NON-NLS-1$
final Label label = new Label(group, SWT.RIGHT);
label.setLayoutData(new GridData(SWT.END, SWT.CENTER, false, false));
label.setText("A Label"); //$NON-NLS-1$
textGroup = new Text(group, SWT.SINGLE | SWT.LEAD | SWT.BORDER);
textGroup.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
final Combo combo = new Combo(group, SWT.DROP_DOWN | SWT.READ_ONLY);
combo.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
combo.setItems(new String[] { "A", "B", "C" }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
combo.select(0);
}
private static void createGroupSmall(final Composite parent) {
groupSmall = new Group(parent, SWT.NONE);
groupSmall.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
groupSmall.setLayout(new GridLayout(1, false));
groupSmall.setText("A Group with a very very long title"); //$NON-NLS-1$
textGroupSmall = new Text(groupSmall, SWT.SINGLE | SWT.LEAD | SWT.BORDER);
textGroupSmall.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
}
private static void createComposite(final Composite parent) {
composite = new Composite(parent, SWT.BORDER);
composite.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
composite.setLayout(new GridLayout(3, false));
final Label label = new Label(composite, SWT.RIGHT);
label.setLayoutData(new GridData(SWT.END, SWT.CENTER, false, false));
label.setText("A Label"); //$NON-NLS-1$
textComposite = new Text(composite, SWT.SINGLE | SWT.LEAD | SWT.BORDER);
textComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
final Combo combo = new Combo(composite, SWT.DROP_DOWN | SWT.READ_ONLY);
combo.setLayoutData(new GridData(SWT.BEGINNING, SWT.CENTER, false, false));
combo.setItems(new String[] { "A", "B", "C" }); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
combo.select(0);
}
private static void createButton(final Composite parent) {
final Button button = new Button(parent, SWT.PUSH);
button.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 3, 1));
button.setText("Compute Size"); //$NON-NLS-1$
button.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(final SelectionEvent e) {
textComposite.setText("" + composite.computeSize(SWT.DEFAULT, SWT.DEFAULT)); //$NON-NLS-1$
textGroup.setText("" + group.computeSize(SWT.DEFAULT, SWT.DEFAULT)); //$NON-NLS-1$
textGroupSmall.setText("" + groupSmall.computeSize(SWT.DEFAULT, SWT.DEFAULT)); //$NON-NLS-1$
composite.pack();
group.pack();
groupSmall.pack();
}
});
}
}