Lines 19-31
Link Here
|
19 |
import org.eclipse.core.runtime.IExtensionPoint; |
19 |
import org.eclipse.core.runtime.IExtensionPoint; |
20 |
import org.eclipse.core.runtime.IRegistryChangeEvent; |
20 |
import org.eclipse.core.runtime.IRegistryChangeEvent; |
21 |
import org.eclipse.core.runtime.IRegistryChangeListener; |
21 |
import org.eclipse.core.runtime.IRegistryChangeListener; |
|
|
22 |
import org.eclipse.core.runtime.IStatus; |
23 |
import org.eclipse.core.runtime.MultiStatus; |
22 |
import org.eclipse.core.runtime.Platform; |
24 |
import org.eclipse.core.runtime.Platform; |
|
|
25 |
import org.eclipse.core.runtime.Status; |
26 |
import org.eclipse.core.runtime.internal.adaptor.MessageHelper; |
23 |
import org.eclipse.jface.action.Action; |
27 |
import org.eclipse.jface.action.Action; |
24 |
import org.eclipse.jface.action.IMenuListener; |
28 |
import org.eclipse.jface.action.IMenuListener; |
25 |
import org.eclipse.jface.action.IMenuManager; |
29 |
import org.eclipse.jface.action.IMenuManager; |
26 |
import org.eclipse.jface.action.IToolBarManager; |
30 |
import org.eclipse.jface.action.IToolBarManager; |
27 |
import org.eclipse.jface.action.MenuManager; |
31 |
import org.eclipse.jface.action.MenuManager; |
28 |
import org.eclipse.jface.action.Separator; |
32 |
import org.eclipse.jface.action.Separator; |
|
|
33 |
import org.eclipse.jface.dialogs.Dialog; |
34 |
import org.eclipse.jface.dialogs.MessageDialog; |
29 |
import org.eclipse.jface.viewers.IStructuredSelection; |
35 |
import org.eclipse.jface.viewers.IStructuredSelection; |
30 |
import org.eclipse.jface.viewers.TreeViewer; |
36 |
import org.eclipse.jface.viewers.TreeViewer; |
31 |
import org.eclipse.jface.viewers.Viewer; |
37 |
import org.eclipse.jface.viewers.Viewer; |
Lines 34-40
Link Here
|
34 |
import org.eclipse.osgi.service.resolver.BundleDescription; |
40 |
import org.eclipse.osgi.service.resolver.BundleDescription; |
35 |
import org.eclipse.osgi.service.resolver.DisabledInfo; |
41 |
import org.eclipse.osgi.service.resolver.DisabledInfo; |
36 |
import org.eclipse.osgi.service.resolver.PlatformAdmin; |
42 |
import org.eclipse.osgi.service.resolver.PlatformAdmin; |
|
|
43 |
import org.eclipse.osgi.service.resolver.ResolverError; |
37 |
import org.eclipse.osgi.service.resolver.State; |
44 |
import org.eclipse.osgi.service.resolver.State; |
|
|
45 |
import org.eclipse.osgi.service.resolver.VersionConstraint; |
38 |
import org.eclipse.pde.internal.runtime.IHelpContextIds; |
46 |
import org.eclipse.pde.internal.runtime.IHelpContextIds; |
39 |
import org.eclipse.pde.internal.runtime.PDERuntimeMessages; |
47 |
import org.eclipse.pde.internal.runtime.PDERuntimeMessages; |
40 |
import org.eclipse.pde.internal.runtime.PDERuntimePlugin; |
48 |
import org.eclipse.pde.internal.runtime.PDERuntimePlugin; |
Lines 84-89
Link Here
|
84 |
private Action fStopAction; |
92 |
private Action fStopAction; |
85 |
private Action fEnableAction; |
93 |
private Action fEnableAction; |
86 |
private Action fDisableAction; |
94 |
private Action fDisableAction; |
|
|
95 |
private Action fDiagnoseAction; |
87 |
|
96 |
|
88 |
private DrillDownAdapter drillDownAdapter; |
97 |
private DrillDownAdapter drillDownAdapter; |
89 |
private ViewerFilter fActiveFilter = new ViewerFilter() { |
98 |
private ViewerFilter fActiveFilter = new ViewerFilter() { |
Lines 279-284
Link Here
|
279 |
if(selectedBundlesStarted()) |
288 |
if(selectedBundlesStarted()) |
280 |
manager.add(fStopAction); |
289 |
manager.add(fStopAction); |
281 |
|
290 |
|
|
|
291 |
manager.add(fDiagnoseAction); |
292 |
|
282 |
// security related actions |
293 |
// security related actions |
283 |
if(selectedBundlesDisabled()) |
294 |
if(selectedBundlesDisabled()) |
284 |
manager.add(fEnableAction); |
295 |
manager.add(fEnableAction); |
Lines 587-592
Link Here
|
587 |
} |
598 |
} |
588 |
}; |
599 |
}; |
589 |
|
600 |
|
|
|
601 |
fDiagnoseAction = new Action(PDERuntimeMessages.RegistryView_diagnoseAction_label) { |
602 |
public void run() { |
603 |
List bundles = getSelectedBundles(); |
604 |
State state = PDERuntimePlugin.getDefault().getState(); |
605 |
for (Iterator it = bundles.iterator(); it.hasNext();) { |
606 |
Bundle bundle = (Bundle) it.next(); |
607 |
BundleDescription desc = state.getBundle(bundle.getBundleId()); |
608 |
PlatformAdmin platformAdmin = PDERuntimePlugin.getDefault().getPlatformAdmin(); |
609 |
VersionConstraint[] unsatisfied = platformAdmin |
610 |
.getStateHelper().getUnsatisfiedConstraints(desc); |
611 |
ResolverError[] resolverErrors = platformAdmin.getState(false).getResolverErrors(desc); |
612 |
MultiStatus problems = new MultiStatus(PDERuntimePlugin.ID, |
613 |
IStatus.INFO, |
614 |
PDERuntimeMessages.RegistryView_found_problems, |
615 |
null); |
616 |
for (int i = 0; i < resolverErrors.length; i++) { |
617 |
if ((resolverErrors[i].getType() & (ResolverError.MISSING_FRAGMENT_HOST |
618 |
| ResolverError.MISSING_GENERIC_CAPABILITY |
619 |
| ResolverError.MISSING_IMPORT_PACKAGE | ResolverError.MISSING_REQUIRE_BUNDLE)) != 0) |
620 |
continue; |
621 |
IStatus status = new Status(IStatus.WARNING, |
622 |
PDERuntimePlugin.ID, resolverErrors[i] |
623 |
.toString()); |
624 |
problems.add(status); |
625 |
} |
626 |
|
627 |
for (int i = 0; i < unsatisfied.length; i++) { |
628 |
// XXX what should we do with the MessageHelper? Copy over? |
629 |
IStatus status = new Status( |
630 |
IStatus.WARNING, |
631 |
PDERuntimePlugin.ID, |
632 |
MessageHelper |
633 |
.getResolutionFailureMessage(unsatisfied[i])); |
634 |
problems.add(status); |
635 |
} |
636 |
Dialog dialog; |
637 |
if (unsatisfied.length != 0 || resolverErrors.length != 0) { |
638 |
dialog = new DiagnosticsDialog( |
639 |
getSite().getShell(), |
640 |
PDERuntimeMessages.RegistryView_diag_dialog_title, |
641 |
null, problems, IStatus.WARNING); |
642 |
dialog.open(); |
643 |
} else { |
644 |
MessageDialog |
645 |
.openInformation( |
646 |
getSite().getShell(), |
647 |
PDERuntimeMessages.RegistryView_diag_dialog_title, |
648 |
PDERuntimeMessages.RegistryView_no_unresolved_constraints); |
649 |
} |
650 |
|
651 |
} |
652 |
} |
653 |
}; |
654 |
|
590 |
fCollapseAllAction = new Action("collapseAll"){ //$NON-NLS-1$ |
655 |
fCollapseAllAction = new Action("collapseAll"){ //$NON-NLS-1$ |
591 |
public void run(){ |
656 |
public void run(){ |
592 |
fTreeViewer.collapseAll(); |
657 |
fTreeViewer.collapseAll(); |