Bug 578270 - Run Configurations slow/ Restore Defaults

Change-Id: I99740c9a62b2ef147d8f0088c3a0e351a4a99316
Signed-off-by: Vikas Chandra <Vikas.Chandra@in.ibm.com>
Reviewed-on: https://git.eclipse.org/r/c/pde/eclipse.pde.ui/+/189818
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/AbstractPluginBlock.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/AbstractPluginBlock.java
index 6153934..061c62c 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/AbstractPluginBlock.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/AbstractPluginBlock.java
@@ -713,14 +713,24 @@
 		IWorkingSetSelectionDialog dialog = workingSetManager.createWorkingSetSelectionDialog(getShell(), true);
 		if (dialog.open() == Window.OK) {
 			String[] ids = getPluginIDs(dialog.getSelection());
+			ArrayList<IPluginModelBase> newCheckedModels = new ArrayList<>();
+			ArrayList<Object> allCheckedModels = new ArrayList<>();
 			for (String id : ids) {
 				IPluginModelBase model = PluginRegistry.findModel(id);
 				if (model != null) {
 					if (!fPluginTreeViewer.getChecked(model)) {
-						setChecked(model, true);
+						newCheckedModels.add(model);
 					}
 				}
 			}
+			Object[] checkedElements = fPluginTreeViewer.getCheckedElements();
+			allCheckedModels.addAll(Arrays.asList(checkedElements));// previous
+			allCheckedModels.addAll(newCheckedModels);// newly selected
+			fPluginTreeViewer.setCheckedElements(allCheckedModels.toArray());
+			// reset text on newly selected models
+			for (IPluginModelBase iPluginModelBase : newCheckedModels) {
+				resetText(iPluginModelBase);
+			}
 			countSelectedModels();
 		}
 	}
@@ -897,10 +907,10 @@
 
 	protected void handleRestoreDefaults() {
 		TreeSet<String> wtable = new TreeSet<>();
-
+		ArrayList<IPluginModelBase> checkedModels = new ArrayList<>();
 		for (int i = 0; i < getWorkspaceModels().length; i++) {
 			IPluginModelBase model = getWorkspaceModels()[i];
-			fPluginTreeViewer.setChecked(model, true);
+			checkedModels.add(model);
 			String id = model.getPluginBase().getId();
 			if (id != null) {
 				wtable.add(model.getPluginBase().getId());
@@ -911,9 +921,10 @@
 		for (IPluginModelBase model : externalModels) {
 			boolean masked = wtable.contains(model.getPluginBase().getId());
 			if (!masked && model.isEnabled()) {
-				fPluginTreeViewer.setChecked(model, true);
+				checkedModels.add(model);
 			}
 		}
+		fPluginTreeViewer.setCheckedElements(checkedModels.toArray());
 		countSelectedModels();
 
 		Object[] selected = fPluginTreeViewer.getCheckedElements();