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