summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPascal Rapicault (Ericsson)2012-11-27 15:33:43 (EST)
committerPascal Rapicault2012-11-27 15:42:18 (EST)
commit80b65a35e35a12d7855e767a4bfa45e7d6d538fe (patch)
tree1d6e07e5581aa5c647c72728c9d5830024551ec7
parentd56c5194fc496bd46beb7ae30215d4f8c5c3155f (diff)
downloadrt.equinox.p2-80b65a35e35a12d7855e767a4bfa45e7d6d538fe.zip
rt.equinox.p2-80b65a35e35a12d7855e767a4bfa45e7d6d538fe.tar.gz
rt.equinox.p2-80b65a35e35a12d7855e767a4bfa45e7d6d538fe.tar.bz2
Bug 395210 - [import/export] NPE when browsing content from existing installv20121127-204218
-rw-r--r--bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/AbstractImportPage.java248
1 files changed, 125 insertions, 123 deletions
diff --git a/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/AbstractImportPage.java b/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/AbstractImportPage.java
index 81936b0..8a17c97 100644
--- a/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/AbstractImportPage.java
+++ b/bundles/org.eclipse.equinox.p2.ui.importexport/src/org/eclipse/equinox/internal/p2/importexport/internal/wizard/AbstractImportPage.java
@@ -1,124 +1,126 @@
-/*******************************************************************************
- * Copyright (c) 2011 WindRiver Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * WindRiver Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.equinox.internal.p2.importexport.internal.wizard;
-
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.equinox.internal.p2.importexport.internal.Messages;
-import org.eclipse.equinox.internal.p2.ui.ProvUI;
-import org.eclipse.equinox.internal.p2.ui.dialogs.ProvisioningOperationWizard;
-import org.eclipse.equinox.p2.engine.IProfile;
-import org.eclipse.equinox.p2.metadata.IInstallableUnit;
-import org.eclipse.equinox.p2.metadata.VersionRange;
-import org.eclipse.equinox.p2.query.IQueryResult;
-import org.eclipse.equinox.p2.query.QueryUtil;
-import org.eclipse.equinox.p2.ui.ProvisioningUI;
-import org.eclipse.jface.viewers.ICheckStateProvider;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.*;
-
-public abstract class AbstractImportPage extends AbstractPage {
-
- IProfile profile = null;
- private final ProvisioningOperationWizard wizard;
- private final ProvisioningUI ui;
-
- public AbstractImportPage(String pageName, ProvisioningUI ui, ProvisioningOperationWizard wizard) {
- super(pageName);
- this.wizard = wizard;
- this.ui = ui;
- profile = getSelfProfile();
- }
-
- protected ProvisioningOperationWizard getProvisioningWizard() {
- return wizard;
- }
-
- protected ProvisioningUI getProvisioningUI() {
- return ui;
- }
-
- @Override
- protected void createInstallationTable(Composite parent) {
- super.createInstallationTable(parent);
- viewer.getTree().addListener(SWT.Selection, new Listener() {
-
- public void handleEvent(Event event) {
- if (event.detail == SWT.CHECK) {
- if (hasInstalled(ProvUI.getAdapter(event.item.getData(), IInstallableUnit.class))) {
- viewer.getTree().setRedraw(false);
- ((TreeItem) event.item).setChecked(false);
- viewer.getTree().setRedraw(true);
- }
- }
- updatePageCompletion();
- }
- });
- }
-
- public boolean hasInstalled(IInstallableUnit iu) {
- IQueryResult<IInstallableUnit> results = profile.query(QueryUtil.createIUQuery(iu.getId(), new VersionRange(iu.getVersion(), true, null, false)), null);
- return !results.isEmpty();
- }
-
- public String getIUNameWithDetail(IInstallableUnit iu) {
- IQueryResult<IInstallableUnit> results = profile.query(QueryUtil.createIUQuery(iu.getId(), new VersionRange(iu.getVersion(), true, null, false)), null);
- final String text = iu.getProperty(IProfile.PROP_NAME, null);
- if (!results.isEmpty()) {
- boolean hasHigherVersion = false;
- boolean hasEqualVersion = false;
- for (IInstallableUnit installedIU : results.toSet()) {
- int compareValue = installedIU.getVersion().compareTo(iu.getVersion());
- if (compareValue > 0) {
- hasHigherVersion = true;
- break;
- } else if (compareValue == 0)
- hasEqualVersion = true;
- }
- if (hasHigherVersion)
- return NLS.bind(Messages.AbstractImportPage_HigherVersionInstalled, text);
- else if (hasEqualVersion)
- return NLS.bind(Messages.AbstractImportPage_SameVersionInstalled, text);
- }
- return text;
- }
-
- @Override
- protected ICheckStateProvider getViewerDefaultState() {
- return new ICheckStateProvider() {
-
- public boolean isGrayed(Object element) {
- return false;
- }
-
- public boolean isChecked(Object element) {
- if (profile != null) {
- IInstallableUnit iu = ProvUI.getAdapter(element, IInstallableUnit.class);
- IQueryResult<IInstallableUnit> collector = profile.query(QueryUtil.createIUQuery(iu.getId(), new VersionRange(iu.getVersion(), true, null, false)), new NullProgressMonitor());
- if (collector.isEmpty()) {
- return true;
- }
- }
- return false;
- }
- };
- }
-
- @Override
- protected void doFinish() throws Exception {
- // do nothing
- }
-
- @Override
- public boolean canFlipToNextPage() {
- return isPageComplete();
- }
+/*******************************************************************************
+ * Copyright (c) 2011 WindRiver Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * WindRiver Corporation - initial API and implementation
+ * Ericsson AB (Pascal Rapicault) - Bug 395210
+ *******************************************************************************/
+package org.eclipse.equinox.internal.p2.importexport.internal.wizard;
+
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.equinox.internal.p2.importexport.internal.Messages;
+import org.eclipse.equinox.internal.p2.ui.ProvUI;
+import org.eclipse.equinox.internal.p2.ui.dialogs.ProvisioningOperationWizard;
+import org.eclipse.equinox.p2.engine.IProfile;
+import org.eclipse.equinox.p2.metadata.IInstallableUnit;
+import org.eclipse.equinox.p2.metadata.VersionRange;
+import org.eclipse.equinox.p2.query.IQueryResult;
+import org.eclipse.equinox.p2.query.QueryUtil;
+import org.eclipse.equinox.p2.ui.ProvisioningUI;
+import org.eclipse.jface.viewers.ICheckStateProvider;
+import org.eclipse.osgi.util.NLS;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.*;
+
+public abstract class AbstractImportPage extends AbstractPage {
+
+ IProfile profile = null;
+ private final ProvisioningOperationWizard wizard;
+ private final ProvisioningUI ui;
+
+ public AbstractImportPage(String pageName, ProvisioningUI ui, ProvisioningOperationWizard wizard) {
+ super(pageName);
+ this.wizard = wizard;
+ this.ui = ui;
+ profile = getSelfProfile();
+ }
+
+ protected ProvisioningOperationWizard getProvisioningWizard() {
+ return wizard;
+ }
+
+ protected ProvisioningUI getProvisioningUI() {
+ return ui;
+ }
+
+ @Override
+ protected void createInstallationTable(Composite parent) {
+ super.createInstallationTable(parent);
+ viewer.getTree().addListener(SWT.Selection, new Listener() {
+
+ public void handleEvent(Event event) {
+ if (event.detail == SWT.CHECK) {
+ if (hasInstalled(ProvUI.getAdapter(event.item.getData(), IInstallableUnit.class))) {
+ viewer.getTree().setRedraw(false);
+ ((TreeItem) event.item).setChecked(false);
+ viewer.getTree().setRedraw(true);
+ }
+ }
+ updatePageCompletion();
+ }
+ });
+ }
+
+ public boolean hasInstalled(IInstallableUnit iu) {
+ IQueryResult<IInstallableUnit> results = profile.query(QueryUtil.createIUQuery(iu.getId(), new VersionRange(iu.getVersion(), true, null, false)), null);
+ return !results.isEmpty();
+ }
+
+ public String getIUNameWithDetail(IInstallableUnit iu) {
+ IQueryResult<IInstallableUnit> results = profile.query(QueryUtil.createIUQuery(iu.getId(), new VersionRange(iu.getVersion(), true, null, false)), null);
+ String text = iu.getProperty(IProfile.PROP_NAME, null);
+ text = (text != null) ? text : iu.getId();
+ if (!results.isEmpty()) {
+ boolean hasHigherVersion = false;
+ boolean hasEqualVersion = false;
+ for (IInstallableUnit installedIU : results.toSet()) {
+ int compareValue = installedIU.getVersion().compareTo(iu.getVersion());
+ if (compareValue > 0) {
+ hasHigherVersion = true;
+ break;
+ } else if (compareValue == 0)
+ hasEqualVersion = true;
+ }
+ if (hasHigherVersion)
+ return NLS.bind(Messages.AbstractImportPage_HigherVersionInstalled, text);
+ else if (hasEqualVersion)
+ return NLS.bind(Messages.AbstractImportPage_SameVersionInstalled, text);
+ }
+ return text;
+ }
+
+ @Override
+ protected ICheckStateProvider getViewerDefaultState() {
+ return new ICheckStateProvider() {
+
+ public boolean isGrayed(Object element) {
+ return false;
+ }
+
+ public boolean isChecked(Object element) {
+ if (profile != null) {
+ IInstallableUnit iu = ProvUI.getAdapter(element, IInstallableUnit.class);
+ IQueryResult<IInstallableUnit> collector = profile.query(QueryUtil.createIUQuery(iu.getId(), new VersionRange(iu.getVersion(), true, null, false)), new NullProgressMonitor());
+ if (collector.isEmpty()) {
+ return true;
+ }
+ }
+ return false;
+ }
+ };
+ }
+
+ @Override
+ protected void doFinish() throws Exception {
+ // do nothing
+ }
+
+ @Override
+ public boolean canFlipToNextPage() {
+ return isPageComplete();
+ }
} \ No newline at end of file