Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 284557 | Differences between
and this patch

Collapse All | Expand All

(-)core/org/eclipse/debug/internal/core/LaunchConfigurationType.java (+8 lines)
Lines 192-197 Link Here
192
	 * @see org.eclipse.debug.core.ILaunchConfigurationType#getPreferredDelegate(java.util.Set)
192
	 * @see org.eclipse.debug.core.ILaunchConfigurationType#getPreferredDelegate(java.util.Set)
193
	 */
193
	 */
194
	public ILaunchDelegate getPreferredDelegate(Set modes) {
194
	public ILaunchDelegate getPreferredDelegate(Set modes) {
195
		initializePreferredDelegates();
195
		return (ILaunchDelegate) fPreferredDelegates.get(modes);
196
		return (ILaunchDelegate) fPreferredDelegates.get(modes);
196
	}
197
	}
197
	
198
	
Lines 208-213 Link Here
208
	 * @since 3.3
209
	 * @since 3.3
209
	 */
210
	 */
210
	public Map getPreferredDelegates() {
211
	public Map getPreferredDelegates() {
212
		initializePreferredDelegates();
211
		return fPreferredDelegates;
213
		return fPreferredDelegates;
212
	}
214
	}
213
	
215
	
Lines 503-507 Link Here
503
		return fModeCombinations.contains(modes);
505
		return fModeCombinations.contains(modes);
504
	}
506
	}
505
507
508
	/** 
509
	 * Called on preference import to reset preferred delegates.
510
	 */
511
	void resetPreferredDelegates() {
512
		fPreferredDelegates = null;
513
	}
506
}
514
}
507
515
(-)core/org/eclipse/debug/internal/core/PreferredDelegateModifyListener.java (+55 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2010 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *******************************************************************************/
11
package org.eclipse.debug.internal.core;
12
13
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
14
import org.eclipse.core.runtime.preferences.IPreferenceNodeVisitor;
15
import org.eclipse.core.runtime.preferences.PreferenceModifyListener;
16
import org.eclipse.debug.core.DebugPlugin;
17
import org.eclipse.debug.core.ILaunchConfigurationType;
18
import org.eclipse.debug.core.ILaunchManager;
19
import org.osgi.service.prefs.BackingStoreException;
20
21
/**
22
 * Used to listen for preference imports that include changes to 
23
 * preferred launch delegates.
24
 * 
25
 * @since 3.6
26
 */
27
public class PreferredDelegateModifyListener extends PreferenceModifyListener {
28
	class Visitor implements IPreferenceNodeVisitor {
29
30
		public boolean visit(IEclipsePreferences node) throws BackingStoreException {
31
			if (node.name().equals(DebugPlugin.getUniqueIdentifier())) {
32
				// reset preferred delegates, so they are re-initialized from the preferences
33
				ILaunchManager manager = DebugPlugin.getDefault().getLaunchManager();
34
				ILaunchConfigurationType[] types = manager.getLaunchConfigurationTypes();
35
				for (int i = 0; i < types.length; i++) {
36
					((LaunchConfigurationType) types[i]).resetPreferredDelegates();
37
				}
38
				return false;
39
			}
40
			return true;
41
		}
42
		
43
	}
44
45
	public IEclipsePreferences preApply(IEclipsePreferences node) {
46
		try {
47
			// force VMs to be initialized before we import the new VMs
48
			node.accept(new Visitor());
49
		} catch (BackingStoreException e) {
50
            DebugPlugin.log(e);
51
		}
52
		return node;
53
	}
54
55
}
(-)plugin.xml (+3 lines)
Lines 234-239 Link Here
234
      <initializer
234
      <initializer
235
            class="org.eclipse.debug.internal.core.DebugPreferenceInitializer">
235
            class="org.eclipse.debug.internal.core.DebugPreferenceInitializer">
236
      </initializer>
236
      </initializer>
237
      <modifier
238
            class="org.eclipse.debug.internal.core.PreferredDelegateModifyListener">
239
      </modifier>
237
   </extension>
240
   </extension>
238
241
239
<!-- ===================================== -->
242
<!-- ===================================== -->

Return to bug 284557