core/com.nokia.carbide.discovery.ui/src/com/nokia/carbide/internal/discovery/ui/extension/AbstractDiscoveryPortalPageLayer.java
author dadubrow
Mon, 16 Aug 2010 09:03:23 -0500
changeset 1831 3319dd953212
parent 1824 7e34f628583a
permissions -rw-r--r--
UI tweaks
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1734
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
     1
/*
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
     3
* All rights reserved.
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
     4
* This component and the accompanying materials are made available
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
     5
* under the terms of the License "Eclipse Public License v1.0"
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
     6
* which accompanies this distribution, and is available
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
     8
*
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
     9
* Initial Contributors:
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    11
*
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    12
* Contributors:
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    13
*
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    14
* Description: 
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    15
*
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    16
*/
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    17
package com.nokia.carbide.internal.discovery.ui.extension;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    18
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    19
import java.net.URI;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    20
import java.net.URISyntaxException;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    21
import java.text.MessageFormat;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    22
import java.util.ArrayList;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    23
import java.util.Collection;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    24
import java.util.HashSet;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    25
import java.util.List;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    26
import java.util.Set;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    27
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    28
import org.eclipse.equinox.internal.p2.discovery.Catalog;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    29
import org.eclipse.equinox.internal.p2.discovery.DiscoveryCore;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    30
import org.eclipse.equinox.internal.p2.discovery.compatibility.BundleDiscoveryStrategy;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    31
import org.eclipse.equinox.internal.p2.discovery.compatibility.RemoteBundleDiscoveryStrategy;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    32
import org.eclipse.equinox.internal.p2.discovery.model.CatalogItem;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    33
import org.eclipse.equinox.internal.p2.ui.discovery.DiscoveryUi;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    34
import org.eclipse.equinox.internal.p2.ui.discovery.wizards.CatalogConfiguration;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    35
import org.eclipse.equinox.internal.p2.ui.discovery.wizards.CatalogViewer;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    36
import org.eclipse.equinox.p2.core.IProvisioningAgent;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    37
import org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    38
import org.eclipse.equinox.p2.repository.metadata.IMetadataRepositoryManager;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    39
import org.eclipse.equinox.p2.ui.ProvisioningUI;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    40
import org.eclipse.jface.action.Action;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    41
import org.eclipse.jface.action.IAction;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    42
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    43
import org.eclipse.jface.layout.GridDataFactory;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    44
import org.eclipse.jface.layout.GridLayoutFactory;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    45
import org.eclipse.jface.viewers.ISelectionChangedListener;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    46
import org.eclipse.jface.viewers.IStructuredSelection;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    47
import org.eclipse.jface.viewers.SelectionChangedEvent;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    48
import org.eclipse.jface.viewers.StructuredSelection;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    49
import org.eclipse.swt.SWT;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    50
import org.eclipse.swt.widgets.Composite;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    51
import org.eclipse.swt.widgets.Control;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    52
import org.eclipse.swt.widgets.Display;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    53
import org.eclipse.swt.widgets.Shell;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    54
import org.eclipse.ui.IActionBars;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    55
import org.eclipse.ui.IEditorPart;
1810
2ccd3660a736 feature config exporter + non-functional importer
dadubrow
parents: 1793
diff changeset
    56
import org.eclipse.ui.PlatformUI;
1734
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    57
import org.eclipse.ui.actions.BaseSelectionListenerAction;
1810
2ccd3660a736 feature config exporter + non-functional importer
dadubrow
parents: 1793
diff changeset
    58
import org.eclipse.ui.handlers.IHandlerService;
1734
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    59
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    60
import com.nokia.carbide.discovery.ui.Activator;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    61
import com.nokia.carbide.discovery.ui.Messages;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    62
import com.nokia.cpp.internal.api.utils.ui.WorkbenchUtils;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    63
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    64
@SuppressWarnings("restriction")
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    65
public abstract class AbstractDiscoveryPortalPageLayer implements IPortalPageLayer {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    66
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    67
	private class RunnableContextDialog extends ProgressMonitorDialog {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    68
		private final String title;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    69
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    70
		private RunnableContextDialog(Shell parent, String title) {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    71
			super(parent);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    72
			this.title = title;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    73
		}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    74
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    75
		@Override
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    76
		protected void configureShell(Shell shell) {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    77
			super.configureShell(shell);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    78
			shell.setText(title);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    79
		}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    80
		
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    81
	}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    82
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    83
	protected class ActionBar implements IActionBar {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    84
		private IAction[] actions;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    85
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    86
		public ActionBar(IEditorPart part) {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    87
			actions = makeActions(part);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    88
		}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    89
		
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    90
		@Override
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    91
		public String getTitle() {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    92
			return Messages.AbstractDiscoveryPortalPageLayer_Title;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    93
		}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    94
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    95
		@Override
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    96
		public IAction[] getActions() {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    97
			return actions;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    98
		}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
    99
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   100
		@Override
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   101
		public String[] getHighlightedActionIds() {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   102
			return new String[] {INSTALL_ACTION_ID};
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   103
		}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   104
	}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   105
	
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   106
	protected static final String INSTALL_ACTION_ID = 
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   107
		AbstractDiscoveryPortalPageLayer.class.getName() + ".install"; //$NON-NLS-1$
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   108
	protected static final String UNCHECK_ALL_ACTION_ID = 
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   109
		AbstractDiscoveryPortalPageLayer.class.getName() + ".uncheckAll"; //$NON-NLS-1$
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   110
	protected static final String CHECK_ALL_ACTION_ID = 
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   111
		AbstractDiscoveryPortalPageLayer.class.getName() + ".checkAll"; //$NON-NLS-1$
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   112
	protected static final String ADV_INSTALL_ACTION_ID = 
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   113
		AbstractDiscoveryPortalPageLayer.class.getName() + ".advancedInstall"; //$NON-NLS-1$
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   114
	protected static final String REFRESH_ACTION_ID = 
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   115
		AbstractDiscoveryPortalPageLayer.class.getName() + ".refresh"; //$NON-NLS-1$
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   116
1810
2ccd3660a736 feature config exporter + non-functional importer
dadubrow
parents: 1793
diff changeset
   117
	protected IEditorPart part;
1734
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   118
	private CatalogViewer viewer;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   119
	private List<ISelectionChangedListener> selectionListeners;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   120
	private IActionUIUpdater updater;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   121
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   122
	@Override
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   123
	public Control createControl(Composite parent, IEditorPart part) {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   124
		Composite c = new Composite(parent, SWT.NONE);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   125
		GridLayoutFactory.swtDefaults().applyTo(c);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   126
		viewer = new CatalogViewer(getCatalog(), part.getEditorSite(), 
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   127
				new RunnableContextDialog(part.getEditorSite().getShell(), 
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   128
						Messages.AbstractDiscoveryPortalPageLayer_GatheringExtensionsDesc), 
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   129
				getConfiguration());
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   130
		viewer.createControl(c);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   131
		GridDataFactory.fillDefaults().grab(true, true).applyTo(viewer.getControl());
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   132
		
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   133
		return c;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   134
	}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   135
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   136
	@Override
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   137
	public void init() {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   138
		if (!WorkbenchUtils.isJUnitRunning()) { // do not initialize the catalog if JUnit is running
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   139
			Display.getDefault().asyncExec(new Runnable() {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   140
				@Override
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   141
				public void run() {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   142
					for (ISelectionChangedListener listener : selectionListeners) {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   143
						viewer.addSelectionChangedListener(listener);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   144
					}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   145
					viewer.updateCatalog();
1822
8fdfd1446ad7 set the focus to layer control
dadubrow
parents: 1810
diff changeset
   146
					viewer.getControl().setFocus();
1734
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   147
				}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   148
			});
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   149
		}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   150
	}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   151
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   152
	@Override
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   153
	public IActionBar[] createCommandBars(IEditorPart part, IActionUIUpdater updater) {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   154
		this.updater = updater;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   155
		return new IActionBar[] { new ActionBar(part) };
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   156
	}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   157
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   158
	protected CatalogConfiguration getConfiguration() {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   159
		CatalogConfiguration configuration = new CatalogConfiguration();
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   160
		configuration.setShowTagFilter(false);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   161
		return configuration;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   162
	}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   163
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   164
	protected Catalog getCatalog() {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   165
		Catalog catalog = new Catalog();
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   166
		catalog.setEnvironment(DiscoveryCore.createEnvironment());
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   167
		catalog.setVerifyUpdateSiteAvailability(false);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   168
		
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   169
		// look for remote descriptor
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   170
		RemoteBundleDiscoveryStrategy remoteDiscoveryStrategy = new RemoteBundleDiscoveryStrategy();
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   171
		String url = getDirectoryURL();
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   172
		if (url != null) {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   173
			remoteDiscoveryStrategy.setDirectoryUrl(url);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   174
			catalog.getDiscoveryStrategies().add(remoteDiscoveryStrategy);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   175
		}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   176
		else // look for descriptors from installed bundles
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   177
			catalog.getDiscoveryStrategies().add(new BundleDiscoveryStrategy());
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   178
	
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   179
		return catalog;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   180
	}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   181
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   182
	protected String getDirectoryURL() {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   183
		return Activator.getFromServerProperties(getClass().getName());
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   184
	}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   185
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   186
	protected IAction[] makeActions(final IEditorPart part) {
1793
b3fa776e81bd make discovery layer more amenable to customization
dadubrow
parents: 1734
diff changeset
   187
		this.part = part;
1734
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   188
		selectionListeners = new ArrayList<ISelectionChangedListener>();
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   189
		List<IAction> actions = new ArrayList<IAction>();
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   190
		IAction action;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   191
		
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   192
		// install
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   193
		action = new BaseSelectionListenerAction(Messages.AbstractDiscoveryPortalPageLayer_InstallActionLabel) {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   194
			public void run() {
1793
b3fa776e81bd make discovery layer more amenable to customization
dadubrow
parents: 1734
diff changeset
   195
				installCatalogItems(viewer.getCheckedItems());
1734
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   196
			};
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   197
			
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   198
			protected boolean updateSelection(IStructuredSelection selection) {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   199
				scheduleUpdateAllActionUIs();
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   200
				return !selection.isEmpty();
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   201
			};
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   202
		};
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   203
		action.setToolTipText(Messages.AbstractDiscoveryPortalPageLayer_InstallActionTooltip);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   204
		action.setId(INSTALL_ACTION_ID);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   205
		selectionListeners.add((ISelectionChangedListener) action);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   206
		actions.add(action);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   207
		
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   208
		// refresh
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   209
		action = new Action(Messages.AbstractDiscoveryPortalPageLayer_RefreshActionLabel) {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   210
			public void run() {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   211
				viewer.setSelection(StructuredSelection.EMPTY);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   212
				viewer.updateCatalog();
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   213
				viewer.refresh();
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   214
			}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   215
		};
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   216
		action.setId(REFRESH_ACTION_ID);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   217
		actions.add(action);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   218
		
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   219
		// check all
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   220
		action = new BaseSelectionListenerAction(Messages.AbstractDiscoveryPortalPageLayer_CheckAllActionLabel) {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   221
			public void run() {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   222
				viewer.setSelection(StructuredSelection.EMPTY);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   223
				viewer.setSelection(getAllItemsSelection());
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   224
				viewer.refresh();
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   225
			}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   226
	
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   227
			private IStructuredSelection getAllItemsSelection() {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   228
				List<CatalogItem> catalogItems = new ArrayList<CatalogItem>();
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   229
				for (CatalogItem catalogItem : viewer.getCatalog().getItems()) {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   230
					if (!catalogItem.isInstalled())
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   231
						catalogItems.add(catalogItem);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   232
				}	
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   233
				return new StructuredSelection(catalogItems);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   234
			}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   235
	
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   236
			protected boolean updateSelection(IStructuredSelection selection) {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   237
				scheduleUpdateAllActionUIs();
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   238
				return !getAllItemsSelection().equals(selection);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   239
			}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   240
		};
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   241
		action.setId(CHECK_ALL_ACTION_ID);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   242
		selectionListeners.add((ISelectionChangedListener) action);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   243
		actions.add(action);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   244
		
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   245
		// uncheck all
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   246
		action = new BaseSelectionListenerAction(Messages.AbstractDiscoveryPortalPageLayer_UncheckAllActionLabel) {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   247
			public void run() {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   248
				viewer.setSelection(StructuredSelection.EMPTY);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   249
				viewer.refresh();
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   250
			};
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   251
			
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   252
			protected boolean updateSelection(IStructuredSelection selection) {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   253
				scheduleUpdateAllActionUIs();
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   254
				return !selection.isEmpty();
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   255
			};
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   256
		};
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   257
		action.setId(UNCHECK_ALL_ACTION_ID);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   258
		selectionListeners.add((ISelectionChangedListener) action);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   259
		actions.add(action);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   260
		
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   261
		// advanced install
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   262
		action = new Action(Messages.AbstractDiscoveryPortalPageLayer_AdvancedInstallActionLabel) {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   263
			public void run() {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   264
				showInstallWizard();
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   265
			}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   266
		};
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   267
		action.setId(ADV_INSTALL_ACTION_ID);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   268
		actions.add(action);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   269
		
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   270
		ISelectionChangedListener selectionListener = new ISelectionChangedListener() {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   271
			@Override
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   272
			public void selectionChanged(SelectionChangedEvent event) {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   273
				IStructuredSelection selection = (IStructuredSelection) event.getSelection();
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   274
				IActionBars bars = part.getEditorSite().getActionBars();
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   275
				bars.getStatusLineManager().setMessage(
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   276
						selection.isEmpty() ? null : MessageFormat.format(
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   277
								Messages.AbstractDiscoveryPortalPageLayer_CheckedItemsStatusMessage, selection.size()));
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   278
			}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   279
		};
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   280
		selectionListeners.add(selectionListener);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   281
		
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   282
		return (IAction[]) actions.toArray(new IAction[actions.size()]);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   283
	}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   284
1793
b3fa776e81bd make discovery layer more amenable to customization
dadubrow
parents: 1734
diff changeset
   285
	protected void installCatalogItems(List<CatalogItem> items) {
b3fa776e81bd make discovery layer more amenable to customization
dadubrow
parents: 1734
diff changeset
   286
		DiscoveryUi.install(items, 
b3fa776e81bd make discovery layer more amenable to customization
dadubrow
parents: 1734
diff changeset
   287
				new RunnableContextDialog(part.getEditorSite().getShell(), 
b3fa776e81bd make discovery layer more amenable to customization
dadubrow
parents: 1734
diff changeset
   288
						Messages.AbstractDiscoveryPortalPageLayer_GatheringInstallInfoDesc));
b3fa776e81bd make discovery layer more amenable to customization
dadubrow
parents: 1734
diff changeset
   289
	}
b3fa776e81bd make discovery layer more amenable to customization
dadubrow
parents: 1734
diff changeset
   290
1734
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   291
	@Override
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   292
	public void dispose() {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   293
		for (ISelectionChangedListener listener : selectionListeners) {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   294
			viewer.removeSelectionChangedListener(listener);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   295
		}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   296
	}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   297
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   298
	protected void showInstallWizard() {
1810
2ccd3660a736 feature config exporter + non-functional importer
dadubrow
parents: 1793
diff changeset
   299
		IProvisioningAgent agent = ProvisioningUI.getDefaultUI().getSession().getProvisioningAgent();
1734
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   300
		IMetadataRepositoryManager metadataManager = (IMetadataRepositoryManager) agent.getService(IMetadataRepositoryManager.SERVICE_NAME);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   301
		IArtifactRepositoryManager artifactManager = (IArtifactRepositoryManager) agent.getService(IArtifactRepositoryManager.SERVICE_NAME);
1793
b3fa776e81bd make discovery layer more amenable to customization
dadubrow
parents: 1734
diff changeset
   302
		for (URI uri : getSiteURIs(viewer.getCatalog().getItems())) {
1734
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   303
			metadataManager.addRepository(uri);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   304
			artifactManager.addRepository(uri);
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   305
		}
1810
2ccd3660a736 feature config exporter + non-functional importer
dadubrow
parents: 1793
diff changeset
   306
		IHandlerService handlerService = 
2ccd3660a736 feature config exporter + non-functional importer
dadubrow
parents: 1793
diff changeset
   307
			(IHandlerService) PlatformUI.getWorkbench().getService(IHandlerService.class);
2ccd3660a736 feature config exporter + non-functional importer
dadubrow
parents: 1793
diff changeset
   308
        try {
1824
7e34f628583a update import wizard and operation
dadubrow
parents: 1822
diff changeset
   309
			handlerService.executeCommand("org.eclipse.equinox.p2.ui.sdk.install", null); //$NON-NLS-1$
1810
2ccd3660a736 feature config exporter + non-functional importer
dadubrow
parents: 1793
diff changeset
   310
		} catch (Exception e) {
1824
7e34f628583a update import wizard and operation
dadubrow
parents: 1822
diff changeset
   311
			Activator.logError(Messages.AbstractDiscoveryPortalPageLayer_P2InstallWizardOpenError, e);
1810
2ccd3660a736 feature config exporter + non-functional importer
dadubrow
parents: 1793
diff changeset
   312
		}
1734
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   313
	}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   314
1793
b3fa776e81bd make discovery layer more amenable to customization
dadubrow
parents: 1734
diff changeset
   315
	protected static Collection<URI> getSiteURIs(List<CatalogItem> catalogItems) {
1734
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   316
		Set<URI> uris = new HashSet<URI>();
1793
b3fa776e81bd make discovery layer more amenable to customization
dadubrow
parents: 1734
diff changeset
   317
		for (CatalogItem catalogItem : catalogItems) {
1734
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   318
			try {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   319
				uris.add(new URI(catalogItem.getSiteUrl()));
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   320
			} catch (URISyntaxException e) {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   321
				// ignore bad URIs
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   322
			}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   323
		}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   324
		return uris;
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   325
	}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   326
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   327
	protected void scheduleUpdateAllActionUIs() {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   328
		Display.getDefault().asyncExec(new Runnable() {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   329
			@Override
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   330
			public void run() {
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   331
				updater.updateAll();
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   332
			}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   333
		});
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   334
	}
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   335
bf670d38123a More portal framework changes:
dadubrow
parents:
diff changeset
   336
}