Bug 550835 - workaround for disappearing workspace symbols from the quick access list

Change-Id: I874253f5d409bb2b2c47a026d9df73a1d1e4a2c6
Signed-off-by: Martin Lippert <mlippert@gmail.com>
diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/WorkspaceSymbolQuickAccessElement.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/WorkspaceSymbolQuickAccessElement.java
index 477954e..faf2396 100644
--- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/WorkspaceSymbolQuickAccessElement.java
+++ b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/symbols/WorkspaceSymbolQuickAccessElement.java
@@ -11,6 +11,8 @@
  *******************************************************************************/
 package org.eclipse.lsp4e.operations.symbols;
 
+import java.util.Random;
+
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.lsp4e.LSPEclipseUtils;
 import org.eclipse.lsp4e.outline.SymbolsLabelProvider;
@@ -22,10 +24,19 @@
 public class WorkspaceSymbolQuickAccessElement extends QuickAccessElement {
 
 	private static final SymbolsLabelProvider LABEL_PROVIDER = new SymbolsLabelProvider(false, false);
+	private static final Random randomNumbers = new Random();
+
 	private final SymbolInformation symbol;
+	private final int idExtension;
 
 	public WorkspaceSymbolQuickAccessElement(SymbolInformation symbol) {
 		this.symbol = symbol;
+
+		// this random number id extension is a workaround for
+		// https://bugs.eclipse.org/bugs/show_bug.cgi?id=550835
+		//
+		// it avoids once selected symbols to disappear from the quick access list
+		this.idExtension = randomNumbers.nextInt();
 	}
 
 	@Override
@@ -41,7 +52,7 @@
 	@Override
 	public String getId() {
 		Range range = symbol.getLocation().getRange();
-		return symbol.getName() + '@' + symbol.getLocation().getUri() + '[' + range.getStart().getLine() + ',' + range.getStart().getCharacter() + ':' + range.getEnd().getLine() + ',' + range.getEnd().getCharacter() + ']';
+		return symbol.getName() + '@' + symbol.getLocation().getUri() + '[' + range.getStart().getLine() + ',' + range.getStart().getCharacter() + ':' + range.getEnd().getLine() + ',' + range.getEnd().getCharacter() + ']' + ',' + idExtension;
 	}
 
 	@Override