diff -r 231c47d08fe4 -r 085da1889c59 core/com.nokia.carbide.discovery.ui/src/com/nokia/carbide/discovery/ui/view/DiscoveryView.java --- a/core/com.nokia.carbide.discovery.ui/src/com/nokia/carbide/discovery/ui/view/DiscoveryView.java Mon Jul 12 10:32:59 2010 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,307 +0,0 @@ -package com.nokia.carbide.discovery.ui.view; - - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.net.URI; -import java.net.URISyntaxException; -import java.net.URL; -import java.text.MessageFormat; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashSet; -import java.util.List; -import java.util.Properties; -import java.util.Set; - -import org.eclipse.core.runtime.IPath; -import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.Platform; -import org.eclipse.equinox.internal.p2.discovery.Catalog; -import org.eclipse.equinox.internal.p2.discovery.DiscoveryCore; -import org.eclipse.equinox.internal.p2.discovery.compatibility.BundleDiscoveryStrategy; -import org.eclipse.equinox.internal.p2.discovery.compatibility.RemoteBundleDiscoveryStrategy; -import org.eclipse.equinox.internal.p2.discovery.model.CatalogItem; -import org.eclipse.equinox.internal.p2.ui.discovery.DiscoveryUi; -import org.eclipse.equinox.internal.p2.ui.discovery.wizards.CatalogConfiguration; -import org.eclipse.equinox.internal.p2.ui.discovery.wizards.CatalogViewer; -import org.eclipse.equinox.p2.core.IProvisioningAgent; -import org.eclipse.equinox.p2.operations.ProvisioningSession; -import org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager; -import org.eclipse.equinox.p2.repository.metadata.IMetadataRepositoryManager; -import org.eclipse.equinox.p2.ui.ProvisioningUI; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.action.IMenuManager; -import org.eclipse.jface.action.IToolBarManager; -import org.eclipse.jface.action.Separator; -import org.eclipse.jface.dialogs.ProgressMonitorDialog; -import org.eclipse.jface.layout.GridDataFactory; -import org.eclipse.jface.layout.GridLayoutFactory; -import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.SelectionChangedEvent; -import org.eclipse.jface.viewers.StructuredSelection; -import org.eclipse.osgi.service.datalocation.Location; -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.IActionBars; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.actions.BaseSelectionListenerAction; -import org.eclipse.ui.part.ViewPart; - -import com.nokia.carbide.discovery.ui.Activator; -import com.nokia.carbide.discovery.ui.Messages; -import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils; - -@SuppressWarnings("restriction") -public class DiscoveryView extends ViewPart { - - private final class RunnableContextDialog extends ProgressMonitorDialog { - private final String title; - - private RunnableContextDialog(Shell parent, String title) { - super(parent); - this.title = title; - } - - @Override - protected void configureShell(Shell shell) { - super.configureShell(shell); - shell.setText(title); - } - - } - - private static final String DIRECTORY_KEY = "com.nokia.carbide.discovery.directory"; //$NON-NLS-1$ - - private CatalogViewer viewer; - private Action refreshAction; - private BaseSelectionListenerAction checkAllAction; - private BaseSelectionListenerAction checkNoneAction; - private BaseSelectionListenerAction installAction; - private Action showInstallWizardAction; - private ISelectionChangedListener selectionListener; - - /** - * This is a callback that will allow us - * to create the viewer and initialize it. - */ - public void createPartControl(Composite parent) { - Composite c = new Composite(parent, SWT.NONE); - GridLayoutFactory.fillDefaults().applyTo(c); - viewer = new CatalogViewer(getCatalog(), getSite(), - new RunnableContextDialog(DiscoveryView.this.getViewSite().getShell(), - Messages.DiscoveryView_GatherExtensionsTitle), - getConfiguration()); - viewer.createControl(c); - GridDataFactory.fillDefaults().grab(true, true).applyTo(viewer.getControl()); - - // Create the help context id for the viewer's control - PlatformUI.getWorkbench().getHelpSystem().setHelp(viewer.getControl(), - "com.nokia.carbide.discovery.ui.view.DiscoveryView.catalogviewer"); //$NON-NLS-1$ - makeActions(); - contributeToActionBars(); - if (!WorkbenchUtils.isJUnitRunning()) { // do not initialize the catalog if JUnit is running - getSite().getShell().getDisplay().asyncExec(new Runnable() { - @Override - public void run() { - viewer.updateCatalog(); - } - }); - } - } - - private CatalogConfiguration getConfiguration() { - CatalogConfiguration configuration = new CatalogConfiguration(); - configuration.setShowTagFilter(false); - return configuration; - } - - private Catalog getCatalog() { - Catalog catalog = new Catalog(); - catalog.setEnvironment(DiscoveryCore.createEnvironment()); - catalog.setVerifyUpdateSiteAvailability(false); - - // look for remote descriptor - RemoteBundleDiscoveryStrategy remoteDiscoveryStrategy = new RemoteBundleDiscoveryStrategy(); - String url = getFromServerProperties(DIRECTORY_KEY); - if (url != null) { - remoteDiscoveryStrategy.setDirectoryUrl(url); - catalog.getDiscoveryStrategies().add(remoteDiscoveryStrategy); - } - else // look for descriptors from installed bundles - catalog.getDiscoveryStrategies().add(new BundleDiscoveryStrategy()); - - return catalog; - } - - public static String getFromServerProperties(String key) { - Location installLocation = Platform.getInstallLocation(); - URL url = installLocation.getURL(); - IPath path = new Path(url.getPath()); - path = path.append("configuration/server.properties"); //$NON-NLS-1$ - File file = path.toFile(); - Properties properties = new Properties(); - try { - InputStream is = new FileInputStream(file); - properties.load(is); - is.close(); - } catch (IOException e) { - String message = - MessageFormat.format(Messages.DiscoveryView_MissingDirectoryURLError, key); - Activator.logError(message, e); - } - return (String) properties.get(key); - } - - private void contributeToActionBars() { - IActionBars bars = getViewSite().getActionBars(); - fillLocalPullDown(bars.getMenuManager()); - fillLocalToolBar(bars.getToolBarManager()); - } - - private void fillLocalPullDown(IMenuManager manager) { - manager.add(checkAllAction); - manager.add(checkNoneAction); - manager.add(new Separator()); - manager.add(installAction); - manager.add(showInstallWizardAction); - } - - private void fillLocalToolBar(IToolBarManager manager) { - manager.add(refreshAction); - manager.add(installAction); - } - - private void makeActions() { - refreshAction = new Action() { - public void run() { - viewer.setSelection(StructuredSelection.EMPTY); - viewer.updateCatalog(); - viewer.refresh(); - } - }; - refreshAction.setText(Messages.DiscoveryView_RefreshLabel); - refreshAction.setImageDescriptor(Activator.getImageDescriptor("icons/refresh.gif")); //$NON-NLS-1$ - checkAllAction = new BaseSelectionListenerAction(Messages.DiscoveryView_CheckAllLabel) { - public void run() { - viewer.setSelection(StructuredSelection.EMPTY); - viewer.setSelection(getAllItemsSelection()); - viewer.refresh(); - } - - private IStructuredSelection getAllItemsSelection() { - List catalogItems = new ArrayList(); - for (CatalogItem catalogItem : viewer.getCatalog().getItems()) { - if (!catalogItem.isInstalled()) - catalogItems.add(catalogItem); - } - return new StructuredSelection(catalogItems); - } - - protected boolean updateSelection(IStructuredSelection selection) { - return !getAllItemsSelection().equals(selection); - }; - }; - checkNoneAction = new BaseSelectionListenerAction(Messages.DiscoveryView_UncheckAllLabel) { - public void run() { - viewer.setSelection(StructuredSelection.EMPTY); - viewer.refresh(); - }; - - protected boolean updateSelection(IStructuredSelection selection) { - return !selection.isEmpty(); - }; - }; - installAction = new BaseSelectionListenerAction(Messages.DiscoveryView_InstallLabel) { - public void run() { - DiscoveryUi.install(viewer.getCheckedItems(), - new RunnableContextDialog(DiscoveryView.this.getViewSite().getShell(), - Messages.DiscoveryView_GatheringInstallInfoTitle)); - }; - - protected boolean updateSelection(IStructuredSelection selection) { - return !selection.isEmpty(); - }; - }; - installAction.setImageDescriptor(Activator.getImageDescriptor("icons/icon-discovery.png")); //$NON-NLS-1$ - showInstallWizardAction = new Action(Messages.DiscoveryView_AdvancedInstallLabel) { - public void run() { - showInstallWizard(); - } - }; - viewer.addSelectionChangedListener(checkAllAction); - viewer.addSelectionChangedListener(checkNoneAction); - viewer.addSelectionChangedListener(installAction); - selectionListener = new ISelectionChangedListener() { - @Override - public void selectionChanged(SelectionChangedEvent event) { - IStructuredSelection selection = (IStructuredSelection) event.getSelection(); - IActionBars bars = getViewSite().getActionBars(); - bars.getStatusLineManager().setMessage( - selection.isEmpty() ? null : MessageFormat.format( - Messages.DiscoveryView_StatusLineFmt, selection.size())); - } - }; - viewer.addSelectionChangedListener(selectionListener); - } - - @Override - public void dispose() { - viewer.removeSelectionChangedListener(checkAllAction); - viewer.removeSelectionChangedListener(checkNoneAction); - viewer.removeSelectionChangedListener(installAction); - viewer.removeSelectionChangedListener(selectionListener); - - super.dispose(); - } - - /** - * Passing the focus request to the viewer's control. - */ - public void setFocus() { - } - - private void showInstallWizard() { - ProvisioningUI defaultUI = ProvisioningUI.getDefaultUI(); - ProvisioningSession session = defaultUI.getSession(); - IProvisioningAgent agent = session.getProvisioningAgent(); - IMetadataRepositoryManager metadataManager = (IMetadataRepositoryManager) agent.getService(IMetadataRepositoryManager.SERVICE_NAME); - IArtifactRepositoryManager artifactManager = (IArtifactRepositoryManager) agent.getService(IArtifactRepositoryManager.SERVICE_NAME); - for (URI uri : getCatalogURIs()) { - metadataManager.addRepository(uri); - artifactManager.addRepository(uri); - } - defaultUI.openInstallWizard(null, null, null); - -// String profileId = defaultUI.getProfileId(); -// IProfileRegistry profileRegistry = (IProfileRegistry) agent.getService(IProfileRegistry.SERVICE_NAME); -// IProfile profile = profileRegistry.getProfile(profileId); -// IQueryResult queryResult = profile.query(QueryUtil.createIUGroupQuery(), null); -// List list = new ArrayList(); -// for (Iterator iter = queryResult.iterator(); iter.hasNext();) { -// IInstallableUnit iu = iter.next(); -// list.add(iu.getId() + "|" + iu.getVersion()); -// } -// Collections.sort(list); -// for (String s : list) { -// System.out.println(s); -// } - } - - private Collection getCatalogURIs() { - Set uris = new HashSet(); - for (CatalogItem catalogItem : viewer.getCatalog().getItems()) { - try { - uris.add(new URI(catalogItem.getSiteUrl())); - } catch (URISyntaxException e) { - // ignore bad URIs - } - } - return uris; - }; - -} \ No newline at end of file