All Downloads are FREE. Search and download functionalities are using the official Maven repository.

bndtools.internal.pkgselection.PackageSelectionDialog Maven / Gradle / Ivy

The newest version!
package bndtools.internal.pkgselection;

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.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.dialogs.ElementListSelectionDialog;

public class PackageSelectionDialog extends ElementListSelectionDialog {

	private final IPackageLister	packageLister;
	private final IPackageFilter	filter;

	private boolean					sourceOnly	= true;

	public PackageSelectionDialog(Shell parentShell, IPackageLister packageLister, IPackageFilter filter,
		String message) {
		super(parentShell, new PackageNameLabelProvider());
		this.packageLister = packageLister;
		this.filter = filter;
		setTitle("Select Packages");
		setMessage(message);
		setMultipleSelection(true);

	}

	public boolean isSourceOnly() {
		return sourceOnly;
	}

	public void setSourceOnly(boolean sourceOnly) {
		this.sourceOnly = sourceOnly;
	}

	@Override
	public int open() {
		try {
			setElements(packageLister.getPackages(!sourceOnly, filter));
			return super.open();
		} catch (PackageListException e) {
			return CANCEL;
		}
	}

	@Override
	protected Control createDialogArea(Composite parent) {
		Composite contents = (Composite) super.createDialogArea(parent);

		createSourceOnlyCheckbox(contents);

		return contents;
	}

	protected void createSourceOnlyCheckbox(Composite contents) {
		final Button btnSourceOnly = new Button(contents, SWT.CHECK);
		btnSourceOnly.setText("Show source packages only");
		btnSourceOnly.setSelection(sourceOnly);

		btnSourceOnly.addSelectionListener(new SelectionAdapter() {
			@Override
			public void widgetSelected(SelectionEvent e) {
				sourceOnly = btnSourceOnly.getSelection();
				try {
					setListElements(packageLister.getPackages(!sourceOnly, filter));
				} catch (PackageListException e1) {
					setListElements(new Object[0]);
				}
				updateOkState();
			}
		});

		GridData gd = new GridData(GridData.FILL_HORIZONTAL);
		btnSourceOnly.setLayoutData(gd);
	}

	@Override
	protected void handleEmptyList() {
		// Replace super implemenentation; don't disable the fields when the
		// initial list is empty
		updateOkState();
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy