/*******************************************************************************
* Copyright (c) 2016 xored software, Inc. and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* xored software, Inc. - initial API and implementation
*******************************************************************************/
package org.eclipse.dltk.tcl.internal.debug.ui.preferences;
import org.eclipse.core.resources.IProject;
import org.eclipse.dltk.debug.core.DLTKDebugPreferenceConstants;
import org.eclipse.dltk.debug.ui.preferences.AbstractDebuggingOptionsBlock;
import org.eclipse.dltk.tcl.core.TclNature;
import org.eclipse.dltk.tcl.internal.debug.TclDebugConstants;
import org.eclipse.dltk.tcl.internal.debug.TclDebugPlugin;
import org.eclipse.dltk.ui.PreferencesAdapter;
import org.eclipse.dltk.ui.preferences.AbstractConfigurationBlockPropertyAndPreferencePage;
import org.eclipse.dltk.ui.preferences.AbstractOptionsBlock;
import org.eclipse.dltk.ui.preferences.PreferenceKey;
import org.eclipse.dltk.ui.util.IStatusChangeListener;
import org.eclipse.dltk.ui.util.SWTFactory;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Group;
import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
/**
* Tcl debug preference page
*/
public class TclDebugPreferencePage extends AbstractConfigurationBlockPropertyAndPreferencePage {
private static final PreferenceKey BREAK_ON_FIRST_LINE = new PreferenceKey(TclDebugPlugin.PLUGIN_ID,
DLTKDebugPreferenceConstants.PREF_DBGP_BREAK_ON_FIRST_LINE);
private static final PreferenceKey ENABLE_DBGP_LOGGING = new PreferenceKey(TclDebugPlugin.PLUGIN_ID,
DLTKDebugPreferenceConstants.PREF_DBGP_ENABLE_LOGGING);
private static final PreferenceKey STREAM_FILTER_COMMAND_RENAME_WARNING = new PreferenceKey(
TclDebugPlugin.PLUGIN_ID, TclDebugConstants.DEBUG_STREAM_FILTER_COMMAND_RENAME_WARNING);
private static final String PREFERENCE_PAGE_ID = "org.eclipse.dltk.tcl.preferences.debug"; //$NON-NLS-1$
private static final String PROPERTY_PAGE_ID = "org.eclipse.dltk.tcl.propertyPage.debug"; //$NON-NLS-1$
@Override
protected AbstractOptionsBlock createOptionsBlock(IStatusChangeListener newStatusChangedListener, IProject project,
IWorkbenchPreferenceContainer container) {
return new AbstractDebuggingOptionsBlock(newStatusChangedListener, project, getKeys(), container) {
@Override
protected PreferenceKey getBreakOnFirstLineKey() {
return BREAK_ON_FIRST_LINE;
}
@Override
protected PreferenceKey getDbgpLoggingEnabledKey() {
return ENABLE_DBGP_LOGGING;
}
/*
* @see AbstractDebuggingOptionsBlock #createSettingsGroup(Group)
*/
@Override
protected void createSettingsGroup(Group group) {
super.createSettingsGroup(group);
final Button ignoreRename = SWTFactory.createCheckButton(group,
TclDebugPreferencesMessages.TclDebugPreferencePage_StreamFilterCommandRename, null, false, 1);
bindControl(ignoreRename, STREAM_FILTER_COMMAND_RENAME_WARNING, null);
}
};
}
@Override
protected String getNatureId() {
return TclNature.NATURE_ID;
}
protected PreferenceKey[] getKeys() {
return new PreferenceKey[] { BREAK_ON_FIRST_LINE, ENABLE_DBGP_LOGGING, STREAM_FILTER_COMMAND_RENAME_WARNING };
}
@Override
protected String getHelpId() {
return null;
}
@Override
protected String getPreferencePageId() {
return PREFERENCE_PAGE_ID;
}
@Override
protected String getProjectHelpId() {
return null;
}
@Override
protected String getPropertyPageId() {
return PROPERTY_PAGE_ID;
}
@Override
protected void setDescription() {
setDescription(TclDebugPreferencesMessages.TclDebugPreferencePage_description);
}
@Override
protected void setPreferenceStore() {
setPreferenceStore(new PreferencesAdapter(TclDebugPlugin.getDefault().getPluginPreferences()));
}
}