Bug 567966 - CDT code clean up: type safety warnings

Generalize the type of elements and resolve type safety warnings

Change-Id: I5cb8d06a80207a7df8240f499936cdc49d49964c
Signed-off-by: Alexander Fedorov <alexander.fedorov@arsysop.ru>
diff --git a/debug/org.eclipse.cdt.debug.ui/META-INF/MANIFEST.MF b/debug/org.eclipse.cdt.debug.ui/META-INF/MANIFEST.MF
index a03c3b1..323d4e8 100644
--- a/debug/org.eclipse.cdt.debug.ui/META-INF/MANIFEST.MF
+++ b/debug/org.eclipse.cdt.debug.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.cdt.debug.ui; singleton:=true
-Bundle-Version: 8.4.0.qualifier
+Bundle-Version: 8.4.100.qualifier
 Bundle-Activator: org.eclipse.cdt.debug.ui.CDebugUIPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/dialogfields/ListDialogField.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/dialogfields/ListDialogField.java
index af950d4..4a68ee7 100644
--- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/dialogfields/ListDialogField.java
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/dialogfields/ListDialogField.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2005, 2018 IBM Corporation and others.
+ * Copyright (c) 2005, 2020 IBM Corporation and others.
  *
  * This program and the accompanying materials
  * are made available under the terms of the Eclipse Public License 2.0
@@ -10,6 +10,7 @@
  *
  * Contributors:
  *     IBM Corporation - initial API and implementation
+ *     Alexander Fedorov (ArSysOp) - Bug 567966
  *******************************************************************************/
 package org.eclipse.cdt.debug.internal.ui.dialogfields;
 
@@ -45,15 +46,16 @@
 /**
  * A list with a button bar.
  * Typical buttons are 'Add', 'Remove', 'Up' and 'Down'.
- * List model is independend of widget creation.
+ * List model is independent of widget creation.
  * DialogFields controls are: Label, List and Composite containing buttons.
  */
-public class ListDialogField extends DialogField {
+//FIXME: Mostly duplicates org.eclipse.cdt.internal.ui.wizards.dialogfields.ListDialogField
+public class ListDialogField<T> extends DialogField {
 
 	protected TableViewer fTable;
 	protected ILabelProvider fLabelProvider;
 	protected ListViewerAdapter fListViewerAdapter;
-	protected List fElements;
+	protected List<T> fElements;
 	protected ViewerComparator fViewerComparator;
 
 	protected String[] fButtonLabels;
@@ -90,7 +92,7 @@
 		fListViewerAdapter = new ListViewerAdapter();
 		fParentElement = this;
 
-		fElements = new ArrayList(10);
+		fElements = new ArrayList<>(10);
 
 		fButtonLabels = buttonLabels;
 		if (fButtonLabels != null) {
@@ -442,8 +444,8 @@
 	/**
 	 * Sets the elements shown in the list.
 	 */
-	public void setElements(List elements) {
-		fElements = new ArrayList(elements);
+	public void setElements(List<? extends T> elements) {
+		fElements = new ArrayList<>(elements);
 		if (fTable != null) {
 			fTable.refresh();
 		}
@@ -454,8 +456,8 @@
 	 * Gets the elements shown in the list.
 	 * The list returned is a copy, so it can be modified by the user.
 	 */
-	public List getElements() {
-		return new ArrayList(fElements);
+	public List<? extends Object> getElements() {
+		return new ArrayList<>(fElements);
 	}
 
 	/**
@@ -468,7 +470,7 @@
 	/**
 	 * Replace an element.
 	 */
-	public void replaceElement(Object oldElement, Object newElement) throws IllegalArgumentException {
+	public void replaceElement(T oldElement, T newElement) throws IllegalArgumentException {
 		int idx = fElements.indexOf(oldElement);
 		if (idx != -1) {
 			if (oldElement.equals(newElement) || fElements.contains(newElement)) {
@@ -476,7 +478,7 @@
 			}
 			fElements.set(idx, newElement);
 			if (fTable != null) {
-				List selected = getSelectedElements();
+				List<T> selected = getSelectedElements();
 				if (selected.remove(oldElement)) {
 					selected.add(newElement);
 				}
@@ -492,7 +494,7 @@
 	/**
 	 * Adds an element at the end of the list.
 	 */
-	public void addElement(Object element) {
+	public void addElement(T element) {
 		if (fElements.contains(element)) {
 			return;
 		}
@@ -506,15 +508,15 @@
 	/**
 	 * Adds elements at the end of the list.
 	 */
-	public void addElements(List elements) {
+	public void addElements(List<? extends T> elements) {
 		int nElements = elements.size();
 
 		if (nElements > 0) {
 			// filter duplicated
-			ArrayList elementsToAdd = new ArrayList(nElements);
+			ArrayList<T> elementsToAdd = new ArrayList<>(nElements);
 
 			for (int i = 0; i < nElements; i++) {
-				Object elem = elements.get(i);
+				T elem = elements.get(i);
 				if (!fElements.contains(elem)) {
 					elementsToAdd.add(elem);
 				}
@@ -530,7 +532,7 @@
 	/**
 	 * Adds an element at a position.
 	 */
-	public void insertElementAt(Object element, int index) {
+	public void insertElementAt(T element, int index) {
 		if (fElements.contains(element)) {
 			return;
 		}
@@ -572,7 +574,7 @@
 	/**
 	 * Removes elements from the list.
 	 */
-	public void removeElements(List elements) {
+	public void removeElements(List<? extends Object> elements) {
 		if (elements.size() > 0) {
 			fElements.removeAll(elements);
 			if (fTable != null) {
@@ -634,12 +636,12 @@
 
 	// ------- list maintenance
 
-	private List moveUp(List elements, List move) {
+	private List<T> moveUp(List<? extends T> elements, List<? extends T> move) {
 		int nElements = elements.size();
-		List res = new ArrayList(nElements);
-		Object floating = null;
+		List<T> res = new ArrayList<>(nElements);
+		T floating = null;
 		for (int i = 0; i < nElements; i++) {
-			Object curr = elements.get(i);
+			T curr = elements.get(i);
 			if (move.contains(curr)) {
 				res.add(curr);
 			} else {
@@ -655,22 +657,22 @@
 		return res;
 	}
 
-	private void moveUp(List toMoveUp) {
+	private void moveUp(List<? extends T> toMoveUp) {
 		if (toMoveUp.size() > 0) {
 			setElements(moveUp(fElements, toMoveUp));
 			fTable.reveal(toMoveUp.get(0));
 		}
 	}
 
-	private void moveDown(List toMoveDown) {
+	private void moveDown(List<? extends T> toMoveDown) {
 		if (toMoveDown.size() > 0) {
 			setElements(reverse(moveUp(reverse(fElements), toMoveDown)));
 			fTable.reveal(toMoveDown.get(toMoveDown.size() - 1));
 		}
 	}
 
-	private List reverse(List p) {
-		List reverse = new ArrayList(p.size());
+	private List<T> reverse(List<? extends T> p) {
+		List<T> reverse = new ArrayList<>(p.size());
 		for (int i = p.size() - 1; i >= 0; i--) {
 			reverse.add(p.get(i));
 		}
@@ -717,15 +719,14 @@
 	/**
 	 * Returns the selected elements.
 	 */
-	public List getSelectedElements() {
-		List result = new ArrayList();
+	public List<T> getSelectedElements() {
+		List<T> result = new ArrayList<>();
 		if (fTable != null) {
-			ISelection selection = fTable.getSelection();
-			if (selection instanceof IStructuredSelection) {
-				Iterator iter = ((IStructuredSelection) selection).iterator();
-				while (iter.hasNext()) {
-					result.add(iter.next());
-				}
+			IStructuredSelection selection = fTable.getStructuredSelection();
+			@SuppressWarnings("unchecked")
+			Iterator<T> iter = selection.iterator();
+			while (iter.hasNext()) {
+				result.add(iter.next());
 			}
 		}
 		return result;