Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorspingel2009-05-18 05:30:06 +0000
committerspingel2009-05-18 05:30:06 +0000
commit26aef6cb40fe08c1b61700a543f526c82664f5d6 (patch)
tree16209fcc55e429805758d9009d8c904d45310f1b /org.eclipse.mylyn.tasks.bugs
parent03ce35c8bebd545e9f1eac7f4c39904922537e6e (diff)
downloadorg.eclipse.mylyn.tasks-26aef6cb40fe08c1b61700a543f526c82664f5d6.tar.gz
org.eclipse.mylyn.tasks-26aef6cb40fe08c1b61700a543f526c82664f5d6.tar.xz
org.eclipse.mylyn.tasks-26aef6cb40fe08c1b61700a543f526c82664f5d6.zip
NEW - bug 183606: automate product and component selection for integrated bug reporting
https://bugs.eclipse.org/bugs/show_bug.cgi?id=183606
Diffstat (limited to 'org.eclipse.mylyn.tasks.bugs')
-rw-r--r--org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/DefaultTaskContributor.java50
-rw-r--r--org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/SupportProvider.java25
-rw-r--r--org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/SupportProviderManager.java1
-rw-r--r--org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/SupportRequest.java47
-rw-r--r--org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/TaskErrorReporter.java21
-rw-r--r--org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/FeatureStatus.java14
-rw-r--r--org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/ReportBugOrEnhancementWizard.java41
-rw-r--r--org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/ReportErrorWizard.java2
-rw-r--r--org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/SelectSupportElementPage.java43
9 files changed, 165 insertions, 79 deletions
diff --git a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/DefaultTaskContributor.java b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/DefaultTaskContributor.java
index d046a6234..3109b639f 100644
--- a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/DefaultTaskContributor.java
+++ b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/DefaultTaskContributor.java
@@ -36,7 +36,10 @@ public class DefaultTaskContributor extends AbstractTaskContributor {
@Override
public void process(ITaskContribution contribution) {
- contribution.appendToDescription(getDescription(contribution.getStatus()));
+ String description = getDescription(contribution.getStatus());
+ if (description != null) {
+ contribution.appendToDescription(description);
+ }
}
public void appendErrorDetails(StringBuilder sb, IStatus status, Date date) {
@@ -72,32 +75,34 @@ public class DefaultTaskContributor extends AbstractTaskContributor {
public String getDescription(IStatus status) {
if (status instanceof FeatureStatus) {
- StringBuilder sb = new StringBuilder();
- sb.append("\n\n\n"); //$NON-NLS-1$
- sb.append(Messages.DefaultTaskContributor_INSTALLED_FEATURES_AND_PLUGINS);
- IBundleGroup[] bundleGroups = ((FeatureStatus) status).getBundleGroup();
- for (IBundleGroup bundleGroup : bundleGroups) {
- sb.append(bundleGroup.getIdentifier());
- sb.append(" "); //$NON-NLS-1$
- sb.append(bundleGroup.getVersion());
- sb.append("\n"); //$NON-NLS-1$
+ SupportProduct product = (SupportProduct) ((FeatureStatus) status).getProduct();
+ if (product.getBundleGroup() != null) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("\n\n\n"); //$NON-NLS-1$
+ sb.append(Messages.DefaultTaskContributor_INSTALLED_FEATURES_AND_PLUGINS);
+ for (IBundleGroup bundleGroup : new IBundleGroup[] { product.getBundleGroup() }) {
+ sb.append(bundleGroup.getIdentifier());
+ sb.append(" "); //$NON-NLS-1$
+ sb.append(bundleGroup.getVersion());
+ sb.append("\n"); //$NON-NLS-1$
- Bundle[] bundles = bundleGroup.getBundles();
- if (bundles != null) {
- for (Bundle bundle : bundles) {
- sb.append(" "); //$NON-NLS-1$
- sb.append(bundle.getSymbolicName());
- String version = (String) bundle.getHeaders().get(
- Messages.DefaultTaskContributor_Bundle_Version);
- if (version != null) {
- sb.append(" "); //$NON-NLS-1$
- sb.append(version);
+ Bundle[] bundles = bundleGroup.getBundles();
+ if (bundles != null) {
+ for (Bundle bundle : bundles) {
+ sb.append(" "); //$NON-NLS-1$
+ sb.append(bundle.getSymbolicName());
+ String version = (String) bundle.getHeaders().get(
+ Messages.DefaultTaskContributor_Bundle_Version);
+ if (version != null) {
+ sb.append(" "); //$NON-NLS-1$
+ sb.append(version);
+ }
+ sb.append("\n"); //$NON-NLS-1$
}
- sb.append("\n"); //$NON-NLS-1$
}
}
+ return sb.toString();
}
- return sb.toString();
} else if (status instanceof ErrorLogStatus) {
ErrorLogStatus errorLogStatus = (ErrorLogStatus) status;
StringBuilder sb = new StringBuilder();
@@ -122,6 +127,7 @@ public class DefaultTaskContributor extends AbstractTaskContributor {
}
return sb.toString();
}
+ return null;
}
private String getSeverityText(int severity) {
diff --git a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/SupportProvider.java b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/SupportProvider.java
index d38c4bff8..c78130c3c 100644
--- a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/SupportProvider.java
+++ b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/SupportProvider.java
@@ -11,6 +11,10 @@
package org.eclipse.mylyn.internal.tasks.bugs;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.mylyn.internal.provisional.tasks.bugs.IProduct;
import org.eclipse.mylyn.internal.provisional.tasks.bugs.IProvider;
/**
@@ -18,7 +22,9 @@ import org.eclipse.mylyn.internal.provisional.tasks.bugs.IProvider;
*/
public class SupportProvider extends AbstractSupportElement implements IProvider {
- SupportCategory category;
+ private SupportCategory category;
+
+ private List<IProduct> products;
public SupportProvider() {
}
@@ -31,4 +37,21 @@ public class SupportProvider extends AbstractSupportElement implements IProvider
this.category = category;
}
+ public void add(IProduct provider) {
+ if (products == null) {
+ products = new ArrayList<IProduct>();
+ }
+ products.add(provider);
+ }
+
+ public void remove(IProduct provider) {
+ if (products != null) {
+ products.remove(provider);
+ }
+ }
+
+ public List<IProduct> getProducts() {
+ return new ArrayList<IProduct>(products);
+ }
+
}
diff --git a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/SupportProviderManager.java b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/SupportProviderManager.java
index 4e578fd44..651904603 100644
--- a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/SupportProviderManager.java
+++ b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/SupportProviderManager.java
@@ -346,6 +346,7 @@ public class SupportProviderManager {
element.getNamespaceIdentifier(), id)));
return null;
}
+ ((SupportProvider) provider).add(product);
productById.put(id, product);
return product;
}
diff --git a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/SupportRequest.java b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/SupportRequest.java
index 13093849f..8d6cc52e1 100644
--- a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/SupportRequest.java
+++ b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/SupportRequest.java
@@ -22,6 +22,9 @@ import org.eclipse.mylyn.internal.provisional.tasks.bugs.IProduct;
import org.eclipse.mylyn.internal.provisional.tasks.bugs.ISupportRequest;
import org.eclipse.mylyn.internal.provisional.tasks.bugs.ITaskContribution;
+/**
+ * @author Steffen Pingel
+ */
public class SupportRequest implements ISupportRequest {
private final Map<String, ITaskContribution> contributionByProductId;
@@ -32,11 +35,23 @@ public class SupportRequest implements ISupportRequest {
private AttributeTaskMapper defaultContribution;
- public SupportRequest(SupportProviderManager providerManager, IStatus status) {
+ private final IProduct product;
+
+ public SupportRequest(SupportProviderManager providerManager, IStatus status, IProduct product) {
this.providerManager = providerManager;
this.status = status;
this.contributionByProductId = new HashMap<String, ITaskContribution>();
- process();
+ if (product != null) {
+ this.product = product;
+ this.defaultContribution = process(getNamespace(), (SupportProduct) product);
+ } else {
+ this.product = null;
+ process();
+ }
+ }
+
+ public SupportRequest(SupportProviderManager providerManager, IStatus status) {
+ this(providerManager, status, null);
}
public ITaskContribution getOrCreateContribution(IProduct product) {
@@ -69,6 +84,10 @@ public class SupportRequest implements ISupportRequest {
return defaultContribution;
}
+ public IProduct getProduct() {
+ return product;
+ }
+
public IStatus getStatus() {
return status;
}
@@ -77,16 +96,22 @@ public class SupportRequest implements ISupportRequest {
String namespace = getNamespace();
Collection<SupportProduct> products = providerManager.getProducts();
for (SupportProduct product : products) {
- Map<String, String> productAttributes = product.getAllAttributes(namespace);
- if (!productAttributes.isEmpty()) {
- // merge global and more specific product attributes
- Map<String, String> attributes = providerManager.getDefaultProduct().getAllAttributes(namespace);
- attributes.putAll(productAttributes);
-
- AttributeTaskMapper contribution = (AttributeTaskMapper) getOrCreateContribution(product);
- contribution.getAttributes().putAll(attributes);
- }
+ process(namespace, product);
+ }
+ }
+
+ private AttributeTaskMapper process(String namespace, SupportProduct product) {
+ Map<String, String> productAttributes = product.getAllAttributes(namespace);
+ if (!productAttributes.isEmpty()) {
+ // merge global and more specific product attributes
+ Map<String, String> attributes = providerManager.getDefaultProduct().getAllAttributes(namespace);
+ attributes.putAll(productAttributes);
+
+ AttributeTaskMapper contribution = (AttributeTaskMapper) getOrCreateContribution(product);
+ contribution.getAttributes().putAll(attributes);
+ return contribution;
}
+ return null;
}
private String getNamespace() {
diff --git a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/TaskErrorReporter.java b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/TaskErrorReporter.java
index cd39a6772..ca22de5f3 100644
--- a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/TaskErrorReporter.java
+++ b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/TaskErrorReporter.java
@@ -19,6 +19,8 @@ import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.mylyn.commons.core.AbstractErrorReporter;
import org.eclipse.mylyn.commons.core.StatusHandler;
import org.eclipse.mylyn.internal.provisional.commons.ui.WorkbenchUtil;
+import org.eclipse.mylyn.internal.provisional.tasks.bugs.IProduct;
+import org.eclipse.mylyn.internal.tasks.bugs.wizards.FeatureStatus;
import org.eclipse.mylyn.internal.tasks.bugs.wizards.ReportErrorWizard;
import org.eclipse.mylyn.internal.tasks.ui.util.TasksUiInternal;
import org.eclipse.mylyn.tasks.core.data.TaskData;
@@ -65,10 +67,10 @@ public class TaskErrorReporter {
// postProcess(mapper);
// }
- public SupportRequest preProcess(IStatus status) {
+ public SupportRequest preProcess(IStatus status, IProduct product) {
Assert.isNotNull(status);
//Map<String, String> attributes = mappingManager.getAllAttributes(namespace);
- SupportRequest request = new SupportRequest(providerManager, status);
+ SupportRequest request = new SupportRequest(providerManager, status, product);
contributorManager.preProcess(request);
return request;
}
@@ -88,11 +90,16 @@ public class TaskErrorReporter {
}
public void handle(final IStatus status) {
- ReportErrorWizard wizard = new ReportErrorWizard(TaskErrorReporter.this, status);
- WizardDialog dialog = new WizardDialog(WorkbenchUtil.getShell(), wizard);
- dialog.setBlockOnOpen(false);
- dialog.setPageSize(500, 200);
- dialog.open();
+ if (status instanceof FeatureStatus) {
+ SupportRequest request = preProcess(status, ((FeatureStatus) status).getProduct());
+ postProcess((AttributeTaskMapper) request.getDefaultContribution());
+ } else {
+ ReportErrorWizard wizard = new ReportErrorWizard(TaskErrorReporter.this, status);
+ WizardDialog dialog = new WizardDialog(WorkbenchUtil.getShell(), wizard);
+ dialog.setBlockOnOpen(false);
+ dialog.setPageSize(500, 200);
+ dialog.open();
+ }
}
public SupportProviderManager getProviderManager() {
diff --git a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/FeatureStatus.java b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/FeatureStatus.java
index 68fcd3ef9..401461783 100644
--- a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/FeatureStatus.java
+++ b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/FeatureStatus.java
@@ -11,24 +11,24 @@
package org.eclipse.mylyn.internal.tasks.bugs.wizards;
-import org.eclipse.core.runtime.IBundleGroup;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
+import org.eclipse.mylyn.internal.provisional.tasks.bugs.IProduct;
/**
* @author Steffen Pingel
*/
public class FeatureStatus extends Status {
- private final IBundleGroup[] bundleGroups;
+ private final IProduct product;
- public FeatureStatus(String id, IBundleGroup[] bundleGroups) {
- super(IStatus.INFO, id, ""); //$NON-NLS-1$
- this.bundleGroups = bundleGroups;
+ public FeatureStatus(IProduct product) {
+ super(IStatus.INFO, product.getId(), ""); //$NON-NLS-1$
+ this.product = product;
}
- public IBundleGroup[] getBundleGroup() {
- return bundleGroups;
+ public IProduct getProduct() {
+ return product;
}
}
diff --git a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/ReportBugOrEnhancementWizard.java b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/ReportBugOrEnhancementWizard.java
index dc62fe21a..40dfefe34 100644
--- a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/ReportBugOrEnhancementWizard.java
+++ b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/ReportBugOrEnhancementWizard.java
@@ -15,12 +15,11 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import org.eclipse.core.runtime.Assert;
-import org.eclipse.core.runtime.IBundleGroup;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.wizard.IWizardPage;
import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.mylyn.internal.provisional.tasks.bugs.IProduct;
import org.eclipse.mylyn.internal.tasks.bugs.AbstractSupportElement;
import org.eclipse.mylyn.internal.tasks.bugs.SupportProduct;
import org.eclipse.mylyn.internal.tasks.bugs.SupportProvider;
@@ -41,14 +40,7 @@ public class ReportBugOrEnhancementWizard extends Wizard {
public Object[] getElements(Object inputElement) {
if (inputElement instanceof SupportProvider) {
- Collection<SupportProduct> products = providerManager.getProducts();
- SupportProvider provider = (SupportProvider) inputElement;
- List<SupportProduct> providerProducts = new ArrayList<SupportProduct>();
- for (SupportProduct product : products) {
- if (provider.equals(product.getProvider()) && product.isInstalled()) {
- providerProducts.add(product);
- }
- }
+ List<SupportProduct> providerProducts = getProdcuts(inputElement);
return providerProducts.toArray();
} else if (input == inputElement) {
List<AbstractSupportElement> elements = new ArrayList<AbstractSupportElement>();
@@ -60,6 +52,18 @@ public class ReportBugOrEnhancementWizard extends Wizard {
}
}
+ private List<SupportProduct> getProdcuts(Object inputElement) {
+ Collection<SupportProduct> products = providerManager.getProducts();
+ SupportProvider provider = (SupportProvider) inputElement;
+ List<SupportProduct> providerProducts = new ArrayList<SupportProduct>();
+ for (SupportProduct product : products) {
+ if (provider.equals(product.getProvider()) && product.isInstalled()) {
+ providerProducts.add(product);
+ }
+ }
+ return providerProducts;
+ }
+
public void dispose() {
// ignore
}
@@ -87,23 +91,28 @@ public class ReportBugOrEnhancementWizard extends Wizard {
@Override
public boolean canFinish() {
- return getSelectedElement() != null;
+ return getSelectedElement() instanceof SupportProduct;
}
public AbstractSupportElement getSelectedElement() {
- IWizardPage page = getPages()[getPageCount() - 1];
- return ((SelectSupportElementPage) page).getSelectedElement();
+ IWizardPage page = getContainer().getCurrentPage();
+ if (page != null) {
+ return ((SelectSupportElementPage) page).getSelectedElement();
+ }
+ return null;
}
@Override
public boolean performFinish() {
- final AbstractSupportElement bundles = getSelectedElement();
- Assert.isNotNull(bundles);
+ final AbstractSupportElement product = getSelectedElement();
+ if (!(product instanceof SupportProduct)) {
+ return false;
+ }
// delay run this until after the dialog has been closed
getShell().getDisplay().asyncExec(new Runnable() {
public void run() {
- TasksBugsPlugin.getTaskErrorReporter().handle(new FeatureStatus(bundles.getId(), new IBundleGroup[0]));
+ TasksBugsPlugin.getTaskErrorReporter().handle(new FeatureStatus((IProduct) product));
}
});
diff --git a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/ReportErrorWizard.java b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/ReportErrorWizard.java
index 1778b63a9..b55713496 100644
--- a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/ReportErrorWizard.java
+++ b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/ReportErrorWizard.java
@@ -38,7 +38,7 @@ public class ReportErrorWizard extends Wizard {
public ReportErrorWizard(TaskErrorReporter taskErrorReporter, IStatus status) {
this.taskErrorReporter = taskErrorReporter;
this.status = status;
- this.request = taskErrorReporter.preProcess(status);
+ this.request = taskErrorReporter.preProcess(status, null);
setWindowTitle(Messages.ReportErrorWizard_Report_as_Bug);
}
diff --git a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/SelectSupportElementPage.java b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/SelectSupportElementPage.java
index c38ec9ca6..083609964 100644
--- a/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/SelectSupportElementPage.java
+++ b/org.eclipse.mylyn.tasks.bugs/src/org/eclipse/mylyn/internal/tasks/bugs/wizards/SelectSupportElementPage.java
@@ -35,8 +35,10 @@ import org.eclipse.mylyn.internal.provisional.commons.ui.CommonFonts;
import org.eclipse.mylyn.internal.provisional.commons.ui.CommonImages;
import org.eclipse.mylyn.internal.provisional.commons.ui.GradientCanvas;
import org.eclipse.mylyn.internal.provisional.commons.ui.WorkbenchUtil;
+import org.eclipse.mylyn.internal.provisional.tasks.bugs.IProvider;
import org.eclipse.mylyn.internal.tasks.bugs.AbstractSupportElement;
import org.eclipse.mylyn.internal.tasks.bugs.SupportCategory;
+import org.eclipse.mylyn.internal.tasks.bugs.SupportProduct;
import org.eclipse.mylyn.internal.tasks.bugs.SupportProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
@@ -241,8 +243,6 @@ public class SelectSupportElementPage extends WizardPage {
public SelectSupportElementPage(String pageName, IStructuredContentProvider contentProvider) {
super(pageName);
this.contentProvider = contentProvider;
- setTitle(Messages.SelectFeaturePage_SELECT_FEATURE);
- setMessage("Select a provider or product from the list.");
}
public Image getImage(AbstractSupportElement data) {
@@ -259,6 +259,14 @@ public class SelectSupportElementPage extends WizardPage {
public void setInput(Object input) {
this.input = input;
+
+ if (input instanceof IProvider) {
+ setTitle("Support Provider");
+ setMessage("Select a support provider from the list.");
+ } else {
+ setTitle("Supported Product");
+ setMessage("Select a supported product from the list.");
+ }
}
public void createControl(Composite parent) {
@@ -272,12 +280,13 @@ public class SelectSupportElementPage extends WizardPage {
viewer.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
IStructuredSelection selection = (IStructuredSelection) event.getSelection();
- if (!selection.isEmpty() && selection.getFirstElement() instanceof AbstractSupportElement) {
- selectedElement = (AbstractSupportElement) selection.getFirstElement();
+ Object object = selection.getFirstElement();
+ if (object instanceof AbstractSupportElement) {
+ selectedElement = (AbstractSupportElement) object;
} else {
selectedElement = null;
}
- setPageComplete(selectedElement != null);
+ updatePageStatus();
}
});
viewer.addOpenListener(new IOpenListener() {
@@ -315,14 +324,11 @@ public class SelectSupportElementPage extends WizardPage {
});
viewer.setInput(input);
+ setPageComplete(false);
setControl(container);
Dialog.applyDialogFont(container);
}
- private boolean requiresSelection(AbstractSupportElement selectedElement) {
- return contentProvider.getElements(selectedElement).length > 0;
- }
-
@Override
public void dispose() {
if (imageRegistry != null) {
@@ -335,14 +341,24 @@ public class SelectSupportElementPage extends WizardPage {
return selectedElement;
}
- @Override
- public boolean canFlipToNextPage() {
- return selectedElement != null && requiresSelection(selectedElement);
+ private void updatePageStatus() {
+ if (selectedElement instanceof SupportProvider) {
+ if (contentProvider.getElements(selectedElement).length > 0) {
+ setErrorMessage(null);
+ setPageComplete(true);
+ } else {
+ setErrorMessage("The selected provider does not specify supported products.");
+ setPageComplete(false);
+ }
+ } else if (selectedElement instanceof SupportProduct) {
+ setErrorMessage(null);
+ setPageComplete(true);
+ }
}
@Override
public IWizardPage getNextPage() {
- if (canFlipToNextPage()) {
+ if (selectedElement instanceof SupportProvider) {
SelectSupportElementPage page = new SelectSupportElementPage(selectedElement.getId(), contentProvider);
page.setInput(selectedElement);
page.setWizard(getWizard());
@@ -350,5 +366,4 @@ public class SelectSupportElementPage extends WizardPage {
}
return null;
}
-
} \ No newline at end of file

Back to the top