package org.eclipse.dltk.python.internal.debug.ui;

import org.eclipse.dltk.debug.ui.AbstractDebugUILanguageToolkit;
import org.eclipse.dltk.python.internal.debug.PythonDebugConstants;
import org.eclipse.jface.preference.IPreferenceStore;

public class PythonDebugUILanguageToolkit extends
		AbstractDebugUILanguageToolkit {

	@Override
	public String getDebugModelId() {
		return PythonDebugConstants.DEBUG_MODEL_ID;
	}
	
	@Override
	public IPreferenceStore getPreferenceStore() {
		return PythonDebugUIPlugin.getDefault().getPreferenceStore();
	}

	@Override
	public String[] getVariablesViewPreferencePages() {
		return new String[] {"org.eclipse.dltk.python.preferences.debug.detailFormatters"};
	}
}
