/******************************************************************************* * Copyright (c) 2009, 2013 Tasktop Technologies 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: * 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.mylyn.internal.discovery.ui.wizards; import java.util.List; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.window.IShellProvider; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.mylyn.internal.discovery.core.DiscoveryCore; import org.eclipse.mylyn.internal.discovery.core.model.ConnectorDescriptor; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; /** * The main wizard page that allows users to select connectors that they wish to install. * * @author David Green */ public class ConnectorDiscoveryWizardMainPage extends WizardPage implements IShellProvider { private static final int MINIMUM_HEIGHT = 480; private DiscoveryViewer viewer; public ConnectorDiscoveryWizardMainPage() { super(ConnectorDiscoveryWizardMainPage.class.getSimpleName()); setTitle(org.eclipse.mylyn.internal.discovery.ui.wizards.Messages.ConnectorDiscoveryWizardMainPage_connectorDiscovery); // setImageDescriptor(image); setDescription(org.eclipse.mylyn.internal.discovery.ui.wizards.Messages.ConnectorDiscoveryWizardMainPage_pageDescription); setPageComplete(false); } public void createControl(Composite parent) { viewer = new DiscoveryViewer(this, getContainer()); viewer.setShowConnectorDescriptorKindFilter(getWizard().isShowConnectorDescriptorKindFilter()); viewer.setShowConnectorDescriptorTextFilter(getWizard().isShowConnectorDescriptorTextFilter()); viewer.setVerifyUpdateSiteAvailability(true); viewer.setShowInstalledFilterEnabled(true); viewer.setMinimumHeight(MINIMUM_HEIGHT); viewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { setPageComplete(!viewer.getInstallableConnectors().isEmpty()); } }); viewer.createControl(parent); String url = DiscoveryCore.getDiscoveryUrl(); if (url.length() > 0) { viewer.setDirectoryUrl(url); } viewer.setEnvironment(getWizard().getEnvironment()); setControl(viewer.getControl()); } @Override public ConnectorDiscoveryWizard getWizard() { return (ConnectorDiscoveryWizard) super.getWizard(); } public List<ConnectorDescriptor> getInstallableConnectors() { return viewer.getInstallableConnectors(); } private void maybeUpdateDiscovery() { if (!getControl().isDisposed() && isCurrentPage() && viewer.getDiscovery() == null) { viewer.updateDiscovery(); } } @Override public void setVisible(boolean visible) { super.setVisible(visible); if (visible && viewer.getDiscovery() == null) { Display.getCurrent().asyncExec(new Runnable() { public void run() { maybeUpdateDiscovery(); } }); } } }