core/com.nokia.carbide.discovery.ui/src/com/nokia/carbide/discovery/ui/view/DiscoveryView.java
author dadubrow
Mon, 14 Jun 2010 12:55:27 -0500
changeset 1470 f3c18a46b6c5
parent 1452 52ab0fedbbff
child 1472 6eab8978b7d5
permissions -rw-r--r--
comment out test code
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
     1
package com.nokia.carbide.discovery.ui.view;
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
     2
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
     3
1363
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
     4
import java.io.File;
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
     5
import java.io.FileInputStream;
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
     6
import java.io.IOException;
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
     7
import java.io.InputStream;
1385
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
     8
import java.net.URI;
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
     9
import java.net.URISyntaxException;
1363
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
    10
import java.net.URL;
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
    11
import java.text.MessageFormat;
1385
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
    12
import java.util.Collection;
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
    13
import java.util.HashSet;
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    14
import java.util.List;
1363
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
    15
import java.util.Properties;
1385
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
    16
import java.util.Set;
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    17
1363
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
    18
import org.eclipse.core.runtime.IPath;
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
    19
import org.eclipse.core.runtime.Path;
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
    20
import org.eclipse.core.runtime.Platform;
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    21
import org.eclipse.equinox.internal.p2.discovery.Catalog;
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    22
import org.eclipse.equinox.internal.p2.discovery.DiscoveryCore;
1366
c61bb9dcfe74 fix potential NPE + add bundle discovery for testing
dadubrow
parents: 1363
diff changeset
    23
import org.eclipse.equinox.internal.p2.discovery.compatibility.BundleDiscoveryStrategy;
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    24
import org.eclipse.equinox.internal.p2.discovery.compatibility.RemoteBundleDiscoveryStrategy;
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    25
import org.eclipse.equinox.internal.p2.discovery.model.CatalogItem;
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    26
import org.eclipse.equinox.internal.p2.ui.discovery.DiscoveryUi;
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    27
import org.eclipse.equinox.internal.p2.ui.discovery.wizards.CatalogConfiguration;
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    28
import org.eclipse.equinox.internal.p2.ui.discovery.wizards.CatalogViewer;
1385
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
    29
import org.eclipse.equinox.p2.core.IProvisioningAgent;
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
    30
import org.eclipse.equinox.p2.operations.ProvisioningSession;
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
    31
import org.eclipse.equinox.p2.repository.artifact.IArtifactRepositoryManager;
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
    32
import org.eclipse.equinox.p2.repository.metadata.IMetadataRepositoryManager;
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
    33
import org.eclipse.equinox.p2.ui.ProvisioningUI;
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    34
import org.eclipse.jface.action.Action;
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    35
import org.eclipse.jface.action.IMenuManager;
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    36
import org.eclipse.jface.action.IToolBarManager;
1385
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
    37
import org.eclipse.jface.action.Separator;
1361
952666b15772 update discovery view
dadubrow
parents: 1360
diff changeset
    38
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    39
import org.eclipse.jface.layout.GridDataFactory;
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    40
import org.eclipse.jface.layout.GridLayoutFactory;
1374
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
    41
import org.eclipse.jface.viewers.ISelectionChangedListener;
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    42
import org.eclipse.jface.viewers.IStructuredSelection;
1374
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
    43
import org.eclipse.jface.viewers.SelectionChangedEvent;
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    44
import org.eclipse.jface.viewers.StructuredSelection;
1363
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
    45
import org.eclipse.osgi.service.datalocation.Location;
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    46
import org.eclipse.swt.SWT;
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    47
import org.eclipse.swt.widgets.Composite;
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    48
import org.eclipse.swt.widgets.Display;
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    49
import org.eclipse.ui.IActionBars;
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    50
import org.eclipse.ui.PlatformUI;
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    51
import org.eclipse.ui.actions.BaseSelectionListenerAction;
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    52
import org.eclipse.ui.part.ViewPart;
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    53
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    54
import com.nokia.carbide.discovery.ui.Activator;
1374
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
    55
import com.nokia.carbide.discovery.ui.Messages;
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    56
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    57
@SuppressWarnings("restriction")
1361
952666b15772 update discovery view
dadubrow
parents: 1360
diff changeset
    58
public class DiscoveryView extends ViewPart {
1363
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
    59
	
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
    60
	private static final String DIRECTORY_KEY = "com.nokia.carbide.discovery.directory"; //$NON-NLS-1$
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    61
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    62
	private CatalogViewer viewer;
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    63
	private Action refreshAction;
1374
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
    64
	private BaseSelectionListenerAction checkAllAction;
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
    65
	private BaseSelectionListenerAction checkNoneAction;
1361
952666b15772 update discovery view
dadubrow
parents: 1360
diff changeset
    66
	private BaseSelectionListenerAction installAction;
1385
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
    67
	private Action showInstallWizardAction;
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    68
1361
952666b15772 update discovery view
dadubrow
parents: 1360
diff changeset
    69
	private boolean initialized;
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    70
1374
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
    71
	private ISelectionChangedListener selectionListener;
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
    72
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    73
	public DiscoveryView() {
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    74
	}
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    75
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    76
	/**
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    77
	 * This is a callback that will allow us
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    78
	 * to create the viewer and initialize it.
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    79
	 */
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    80
	public void createPartControl(Composite parent) {
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    81
		Composite c = new Composite(parent, SWT.NONE);
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    82
		GridLayoutFactory.fillDefaults().applyTo(c);
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    83
		viewer = new CatalogViewer(getCatalog(), getSite(), getSite().getWorkbenchWindow(), getConfiguration());
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    84
		viewer.createControl(c);
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    85
		GridDataFactory.fillDefaults().grab(true, true).applyTo(viewer.getControl());
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    86
		
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    87
		// Create the help context id for the viewer's control
1374
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
    88
		PlatformUI.getWorkbench().getHelpSystem().setHelp(viewer.getControl(), 
1452
52ab0fedbbff change context id for frank
dadubrow
parents: 1427
diff changeset
    89
				"com.nokia.carbide.discovery.ui.view.DiscoveryView.catalogviewer"); //$NON-NLS-1$
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    90
		makeActions();
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    91
		contributeToActionBars();
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    92
	}
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    93
	
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    94
	private CatalogConfiguration getConfiguration() {
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    95
		CatalogConfiguration configuration = new CatalogConfiguration();
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    96
		configuration.setShowTagFilter(false);
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    97
		return configuration;
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    98
	}
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
    99
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   100
	private Catalog getCatalog() {
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   101
		Catalog catalog = new Catalog();
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   102
		catalog.setEnvironment(DiscoveryCore.createEnvironment());
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   103
		catalog.setVerifyUpdateSiteAvailability(false);
1366
c61bb9dcfe74 fix potential NPE + add bundle discovery for testing
dadubrow
parents: 1363
diff changeset
   104
		
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   105
		// look for remote descriptor
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   106
		RemoteBundleDiscoveryStrategy remoteDiscoveryStrategy = new RemoteBundleDiscoveryStrategy();
1363
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
   107
		String url = getFromServerProperties(DIRECTORY_KEY);
1366
c61bb9dcfe74 fix potential NPE + add bundle discovery for testing
dadubrow
parents: 1363
diff changeset
   108
		if (url != null) {
c61bb9dcfe74 fix potential NPE + add bundle discovery for testing
dadubrow
parents: 1363
diff changeset
   109
			remoteDiscoveryStrategy.setDirectoryUrl(url);
c61bb9dcfe74 fix potential NPE + add bundle discovery for testing
dadubrow
parents: 1363
diff changeset
   110
			catalog.getDiscoveryStrategies().add(remoteDiscoveryStrategy);
c61bb9dcfe74 fix potential NPE + add bundle discovery for testing
dadubrow
parents: 1363
diff changeset
   111
		}
c61bb9dcfe74 fix potential NPE + add bundle discovery for testing
dadubrow
parents: 1363
diff changeset
   112
		else // look for descriptors from installed bundles
c61bb9dcfe74 fix potential NPE + add bundle discovery for testing
dadubrow
parents: 1363
diff changeset
   113
			catalog.getDiscoveryStrategies().add(new BundleDiscoveryStrategy());
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   114
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   115
		return catalog;
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   116
	}
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   117
1363
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
   118
	public static String getFromServerProperties(String key) {
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
   119
		Location installLocation = Platform.getInstallLocation();
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
   120
		URL url = installLocation.getURL();
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
   121
		IPath path = new Path(url.getPath());
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
   122
		path = path.append("configuration/server.properties"); //$NON-NLS-1$
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
   123
		File file = path.toFile();
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
   124
		Properties properties = new Properties();
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
   125
		try {
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
   126
			InputStream is = new FileInputStream(file);
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
   127
			properties.load(is);
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
   128
			is.close();
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
   129
		} catch (IOException e) {
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
   130
			String message = 
1374
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   131
				MessageFormat.format(Messages.DiscoveryView_MissingDirectoryURLError, key);
1363
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
   132
			Activator.logError(message, e);
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
   133
		}
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
   134
		return (String) properties.get(key);
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
   135
	}
dfbd4576cd61 move url to server.properties
dadubrow
parents: 1361
diff changeset
   136
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   137
	private void contributeToActionBars() {
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   138
		IActionBars bars = getViewSite().getActionBars();
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   139
		fillLocalPullDown(bars.getMenuManager());
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   140
		fillLocalToolBar(bars.getToolBarManager());
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   141
	}
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   142
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   143
	private void fillLocalPullDown(IMenuManager manager) {
1374
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   144
		manager.add(checkAllAction);
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   145
		manager.add(checkNoneAction);
1385
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   146
		manager.add(new Separator());
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   147
		manager.add(showInstallWizardAction);
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   148
	}
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   149
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   150
	private void fillLocalToolBar(IToolBarManager manager) {
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   151
		manager.add(refreshAction);
1361
952666b15772 update discovery view
dadubrow
parents: 1360
diff changeset
   152
		manager.add(installAction);
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   153
	}
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   154
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   155
	private void makeActions() {
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   156
		refreshAction = new Action() {
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   157
			public void run() {
1374
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   158
				viewer.setSelection(StructuredSelection.EMPTY);
1426
6a454f350c2a fix refresh action so data is gotten prior to viewer refresh
dadubrow
parents: 1385
diff changeset
   159
				viewer.updateCatalog();
1374
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   160
				viewer.refresh();
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   161
			}
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   162
		};
1374
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   163
		refreshAction.setText(Messages.DiscoveryView_RefreshLabel);
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   164
		refreshAction.setImageDescriptor(Activator.getImageDescriptor("icons/refresh.gif")); //$NON-NLS-1$
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   165
		checkAllAction = new BaseSelectionListenerAction(Messages.DiscoveryView_CheckAllLabel) {
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   166
			public void run() {
1374
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   167
				viewer.setSelection(StructuredSelection.EMPTY);
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   168
				viewer.setSelection(getAllItemsSelection());
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   169
				viewer.refresh();
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   170
			}
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   171
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   172
			private IStructuredSelection getAllItemsSelection() {
1361
952666b15772 update discovery view
dadubrow
parents: 1360
diff changeset
   173
				List<CatalogItem> catalogItems = viewer.getCatalog().getItems();
952666b15772 update discovery view
dadubrow
parents: 1360
diff changeset
   174
				return new StructuredSelection(catalogItems);
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   175
			}
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   176
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   177
			protected boolean updateSelection(IStructuredSelection selection) {
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   178
				return !getAllItemsSelection().equals(selection);
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   179
			};
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   180
		};
1374
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   181
		checkNoneAction = new BaseSelectionListenerAction(Messages.DiscoveryView_UncheckAllLabel) {
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   182
			public void run() {
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   183
				viewer.setSelection(StructuredSelection.EMPTY);
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   184
				viewer.refresh();
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   185
			};
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   186
			
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   187
			protected boolean updateSelection(IStructuredSelection selection) {
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   188
				return !selection.isEmpty();
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   189
			};
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   190
		};
1374
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   191
		installAction = new BaseSelectionListenerAction(Messages.DiscoveryView_InstallLabel) {
1361
952666b15772 update discovery view
dadubrow
parents: 1360
diff changeset
   192
			public void run() {
952666b15772 update discovery view
dadubrow
parents: 1360
diff changeset
   193
				DiscoveryUi.install(viewer.getCheckedItems(), new ProgressMonitorDialog(DiscoveryView.this.getViewSite().getShell()));
952666b15772 update discovery view
dadubrow
parents: 1360
diff changeset
   194
			};
952666b15772 update discovery view
dadubrow
parents: 1360
diff changeset
   195
			
952666b15772 update discovery view
dadubrow
parents: 1360
diff changeset
   196
			protected boolean updateSelection(IStructuredSelection selection) {
952666b15772 update discovery view
dadubrow
parents: 1360
diff changeset
   197
				return !selection.isEmpty();
952666b15772 update discovery view
dadubrow
parents: 1360
diff changeset
   198
			};
952666b15772 update discovery view
dadubrow
parents: 1360
diff changeset
   199
		};
1374
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   200
		installAction.setImageDescriptor(Activator.getImageDescriptor("icons/icon-discovery.png")); //$NON-NLS-1$
1385
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   201
		showInstallWizardAction = new Action(Messages.DiscoveryView_AdvancedInstallLabel) {
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   202
			public void run() {
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   203
				showInstallWizard();
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   204
			}
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   205
		};
1374
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   206
		viewer.addSelectionChangedListener(checkAllAction);
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   207
		viewer.addSelectionChangedListener(checkNoneAction);
1361
952666b15772 update discovery view
dadubrow
parents: 1360
diff changeset
   208
		viewer.addSelectionChangedListener(installAction);
1374
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   209
		selectionListener = new ISelectionChangedListener() {
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   210
			@Override
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   211
			public void selectionChanged(SelectionChangedEvent event) {
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   212
				IStructuredSelection selection = (IStructuredSelection) event.getSelection();
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   213
				IActionBars bars = getViewSite().getActionBars();
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   214
				bars.getStatusLineManager().setMessage(
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   215
						selection.isEmpty() ? null : MessageFormat.format(
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   216
								Messages.DiscoveryView_StatusLineFmt, selection.size()));
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   217
			}
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   218
		};
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   219
		viewer.addSelectionChangedListener(selectionListener);
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   220
	}
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   221
	
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   222
	@Override
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   223
	public void dispose() {
1374
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   224
		viewer.removeSelectionChangedListener(checkAllAction);
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   225
		viewer.removeSelectionChangedListener(checkNoneAction);
1361
952666b15772 update discovery view
dadubrow
parents: 1360
diff changeset
   226
		viewer.removeSelectionChangedListener(installAction);
1374
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   227
		viewer.removeSelectionChangedListener(selectionListener);
1361
952666b15772 update discovery view
dadubrow
parents: 1360
diff changeset
   228
		
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   229
		super.dispose();
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   230
	}
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   231
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   232
	/**
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   233
	 * Passing the focus request to the viewer's control.
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   234
	 */
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   235
	public void setFocus() {
1361
952666b15772 update discovery view
dadubrow
parents: 1360
diff changeset
   236
		if (!initialized) {
952666b15772 update discovery view
dadubrow
parents: 1360
diff changeset
   237
			initialized = true;
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   238
			Display.getDefault().asyncExec(new Runnable() {
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   239
				@Override
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   240
				public void run() {
1374
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   241
					if (viewer.getViewer().getContentProvider() != null) {
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   242
						viewer.updateCatalog();
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   243
					}
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   244
				}
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   245
			});
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   246
		}
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   247
	}
1374
67b625db1866 fix bugs, externalize strings, change some labels, add status line
dadubrow
parents: 1366
diff changeset
   248
1385
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   249
	private void showInstallWizard() {
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   250
		ProvisioningUI defaultUI = ProvisioningUI.getDefaultUI();
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   251
		ProvisioningSession session = defaultUI.getSession();
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   252
		IProvisioningAgent agent = session.getProvisioningAgent();
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   253
		IMetadataRepositoryManager metadataManager = (IMetadataRepositoryManager) agent.getService(IMetadataRepositoryManager.SERVICE_NAME);
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   254
		IArtifactRepositoryManager artifactManager = (IArtifactRepositoryManager) agent.getService(IArtifactRepositoryManager.SERVICE_NAME);
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   255
		for (URI uri : getCatalogURIs()) {
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   256
			metadataManager.addRepository(uri);
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   257
			artifactManager.addRepository(uri);
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   258
		}
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   259
		defaultUI.openInstallWizard(null, null, null);
1452
52ab0fedbbff change context id for frank
dadubrow
parents: 1427
diff changeset
   260
		
1470
f3c18a46b6c5 comment out test code
dadubrow
parents: 1452
diff changeset
   261
//		String profileId = defaultUI.getProfileId();
f3c18a46b6c5 comment out test code
dadubrow
parents: 1452
diff changeset
   262
//		IProfileRegistry profileRegistry = (IProfileRegistry) agent.getService(IProfileRegistry.SERVICE_NAME);
f3c18a46b6c5 comment out test code
dadubrow
parents: 1452
diff changeset
   263
//		IProfile profile = profileRegistry.getProfile(profileId);
f3c18a46b6c5 comment out test code
dadubrow
parents: 1452
diff changeset
   264
//		IQueryResult<IInstallableUnit> queryResult = profile.query(QueryUtil.createIUGroupQuery(), null);
f3c18a46b6c5 comment out test code
dadubrow
parents: 1452
diff changeset
   265
//		List<String> list = new ArrayList<String>();
f3c18a46b6c5 comment out test code
dadubrow
parents: 1452
diff changeset
   266
//		for (Iterator<IInstallableUnit> iter = queryResult.iterator(); iter.hasNext();) {
f3c18a46b6c5 comment out test code
dadubrow
parents: 1452
diff changeset
   267
//			IInstallableUnit iu = iter.next();
f3c18a46b6c5 comment out test code
dadubrow
parents: 1452
diff changeset
   268
//			list.add(iu.getId() + "|" + iu.getVersion());
f3c18a46b6c5 comment out test code
dadubrow
parents: 1452
diff changeset
   269
//		}
f3c18a46b6c5 comment out test code
dadubrow
parents: 1452
diff changeset
   270
//		Collections.sort(list);
f3c18a46b6c5 comment out test code
dadubrow
parents: 1452
diff changeset
   271
//		for (String s : list) {
f3c18a46b6c5 comment out test code
dadubrow
parents: 1452
diff changeset
   272
//			System.out.println(s);
f3c18a46b6c5 comment out test code
dadubrow
parents: 1452
diff changeset
   273
//		}
1385
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   274
	}
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   275
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   276
	private Collection<URI> getCatalogURIs() {
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   277
		Set<URI> uris = new HashSet<URI>();
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   278
		for (CatalogItem catalogItem : viewer.getCatalog().getItems()) {
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   279
			try {
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   280
				uris.add(new URI(catalogItem.getSiteUrl()));
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   281
			} catch (URISyntaxException e) {
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   282
				// ignore bad URIs
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   283
			}
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   284
		}
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   285
		return uris;
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   286
	};
e626d1981906 Add advanced install menu action to discovery view
dadubrow
parents: 1374
diff changeset
   287
1360
b609311b7b1c initial commit
dadubrow
parents:
diff changeset
   288
}