Copyright (c) 2014-2016 Igor Fedorenko This program and the accompanying materials are made available under the terms of the Eclipse Public License 2.0 which accompanies this distribution, and is available at https://www.eclipse.org/legal/epl-2.0/ SPDX-License-Identifier: EPL-2.0 Contributors: Igor Fedorenko - initial API and implementation
/******************************************************************************* * Copyright (c) 2014-2016 Igor Fedorenko * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution, and is available at * https://www.eclipse.org/legal/epl-2.0/ * * SPDX-License-Identifier: EPL-2.0 * * Contributors: * Igor Fedorenko - initial API and implementation *******************************************************************************/
package org.eclipse.jdt.internal.launching.sourcelookup.advanced; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; import org.eclipse.debug.core.ILaunchManager; import org.eclipse.debug.core.sourcelookup.ISourceLookupParticipant; import org.eclipse.jdt.internal.launching.JavaSourceLookupDirector; import org.eclipse.jdt.launching.sourcelookup.advanced.AdvancedSourceLookupParticipant; import org.eclipse.jdt.launching.sourcelookup.containers.JavaSourceLookupParticipant; public class AdvancedSourceLookupDirector extends JavaSourceLookupDirector { // Note to self: JavaSourceLookupDirector parent class is useful because it allows custom source lookup path in the launch configuration. public static final String ID = "org.eclipse.jdt.launching.sourceLocator.JavaAdvancedSourceLookupDirector"; //$NON-NLS-1$ private final String mode; public AdvancedSourceLookupDirector() { this(null); } public AdvancedSourceLookupDirector(String mode) { this.mode = mode; } @Override public void initializeParticipants() { final List<ISourceLookupParticipant> participants = new ArrayList<>(); if (mode == null || ILaunchManager.DEBUG_MODE.equals(mode)) { participants.addAll(getSourceLookupParticipants()); } // fall-back to default JDT behaviour if we can't find matching sources // in most cases this means scanning workspace for any source or binary with matching name participants.add(new JavaSourceLookupParticipant()); addParticipants(participants.toArray(new ISourceLookupParticipant[participants.size()])); } protected Collection<ISourceLookupParticipant> getSourceLookupParticipants() { return Collections.singleton(new AdvancedSourceLookupParticipant()); } }