blob: dbe9779129f42d27ea014ef55db456adcb3695a3 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2017 Tasktop Technologies and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Tasktop Technologies - initial API and implementation
* David Green
* Shawn Minto bug 275513
* Steffen Pingel bug 276012 code review, bug 277191 gradient canvas
*******************************************************************************/
package org.eclipse.equinox.internal.p2.ui.discovery.wizards;
import java.util.List;
import org.eclipse.equinox.internal.p2.discovery.Catalog;
import org.eclipse.equinox.internal.p2.discovery.model.CatalogItem;
import org.eclipse.jface.window.IShellProvider;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
/**
* A wizard page that allows users to select connectors that they wish to install.
*
* @see DiscoveryWizard
* @author David Green
* @author Steffen Pingel
*/
public class CatalogPage extends WizardPage implements IShellProvider {
protected static final int MINIMUM_HEIGHT = 480;
private final Catalog catalog;
private boolean updated;
private CatalogViewer viewer;
public CatalogPage(Catalog catalog) {
super(CatalogPage.class.getSimpleName());
this.catalog = catalog;
setPageComplete(false);
setTitle(Messages.ConnectorDiscoveryWizardMainPage_connectorDiscovery);
setDescription(Messages.ConnectorDiscoveryWizardMainPage_pageDescription);
}
@Override
public void createControl(Composite parent) {
viewer = doCreateViewer(parent);
viewer.addSelectionChangedListener(event -> setPageComplete(!viewer.getCheckedItems().isEmpty()));
setControl(viewer.getControl());
}
protected CatalogViewer doCreateViewer(Composite parent) {
CatalogViewer viewer = new CatalogViewer(getCatalog(), this, getContainer(), getWizard().getConfiguration());
viewer.setMinimumHeight(MINIMUM_HEIGHT);
viewer.createControl(parent);
return viewer;
}
protected CatalogViewer getViewer() {
return viewer;
}
protected void doUpdateCatalog() {
if (!updated) {
updated = true;
Display.getCurrent().asyncExec(() -> {
if (!getControl().isDisposed() && isCurrentPage()) {
viewer.updateCatalog();
}
});
}
}
public Catalog getCatalog() {
return catalog;
}
public List<CatalogItem> getInstallableConnectors() {
return viewer.getCheckedItems();
}
@Override
public DiscoveryWizard getWizard() {
return (DiscoveryWizard) super.getWizard();
}
@Override
public void setVisible(boolean visible) {
super.setVisible(visible);
if (visible) {
doUpdateCatalog();
}
}
}