|
|
@@ -0,0 +1,153 @@ |
|
|
package org.python.pydev.debug.ui; |
|
|
|
|
|
import java.util.List; |
|
|
|
|
|
import org.eclipse.swt.SWT; |
|
|
import org.eclipse.swt.events.SelectionEvent; |
|
|
import org.eclipse.swt.events.SelectionListener; |
|
|
import org.eclipse.swt.layout.GridData; |
|
|
import org.eclipse.swt.widgets.Button; |
|
|
import org.eclipse.swt.widgets.Composite; |
|
|
import org.eclipse.swt.widgets.Control; |
|
|
import org.eclipse.swt.widgets.Shell; |
|
|
import org.eclipse.ui.dialogs.SelectionDialog; |
|
|
import org.python.pydev.debug.core.ConfigureExceptionsFileUtils; |
|
|
import org.python.pydev.debug.model.PyPropertyTraceManager; |
|
|
|
|
|
public class PyPropertyTraceDialog extends SelectionDialog { |
|
|
|
|
|
// checkboxes to enable/disable stepping into properties |
|
|
private Button disableStepIntoPropertiesCheck; |
|
|
private Button disableStepIntoGetterCheck; |
|
|
private Button disableStepIntoSetterCheck; |
|
|
private Button disableStepIntoDeleterCheck; |
|
|
|
|
|
// By default user can step into properties |
|
|
private boolean disableStepIntoProperties = false; |
|
|
private boolean disableStepIntoGetter = false; |
|
|
private boolean disableStepIntoSetter = false; |
|
|
private boolean disableStepIntoDeleter = false; |
|
|
|
|
|
public PyPropertyTraceDialog(Shell parentShell) { |
|
|
super(parentShell); |
|
|
} |
|
|
|
|
|
/** |
|
|
* Adds the checkboxes to the dialog |
|
|
* |
|
|
* @param composite |
|
|
*/ |
|
|
private void createStepIntoOptions(Composite composite) { |
|
|
|
|
|
List<String> pyPropertyTraceStatesList = ConfigureExceptionsFileUtils |
|
|
.getConfiguredExceptions(PyPropertyTraceManager.PROPERTY_TRACE_STATE); |
|
|
|
|
|
if (pyPropertyTraceStatesList.size() == 4) { |
|
|
disableStepIntoProperties = Boolean |
|
|
.parseBoolean(pyPropertyTraceStatesList.get(0)); |
|
|
disableStepIntoGetter = Boolean |
|
|
.parseBoolean(pyPropertyTraceStatesList.get(1)); |
|
|
disableStepIntoSetter = Boolean |
|
|
.parseBoolean(pyPropertyTraceStatesList.get(2)); |
|
|
disableStepIntoDeleter = Boolean |
|
|
.parseBoolean(pyPropertyTraceStatesList.get(3)); |
|
|
} |
|
|
|
|
|
disableStepIntoPropertiesCheck = new Button(composite, SWT.CHECK); |
|
|
disableStepIntoPropertiesCheck.setText("Disable step into properties"); |
|
|
disableStepIntoPropertiesCheck.setSelection(disableStepIntoProperties); |
|
|
createSelectionListener(); |
|
|
|
|
|
GridData gridData = new GridData(); |
|
|
gridData.horizontalIndent = 25; |
|
|
disableStepIntoGetterCheck = new Button(composite, SWT.CHECK); |
|
|
disableStepIntoGetterCheck |
|
|
.setText("Disable step into property getters"); |
|
|
disableStepIntoGetterCheck.setSelection(disableStepIntoGetter); |
|
|
disableStepIntoGetterCheck.setEnabled(disableStepIntoPropertiesCheck |
|
|
.getSelection()); |
|
|
disableStepIntoGetterCheck.setLayoutData(gridData); |
|
|
|
|
|
gridData = new GridData(); |
|
|
gridData.horizontalIndent = 25; |
|
|
disableStepIntoSetterCheck = new Button(composite, SWT.CHECK); |
|
|
disableStepIntoSetterCheck |
|
|
.setText("Disable step into property setters"); |
|
|
disableStepIntoSetterCheck.setSelection(disableStepIntoSetter); |
|
|
disableStepIntoSetterCheck.setEnabled(disableStepIntoPropertiesCheck |
|
|
.getSelection()); |
|
|
disableStepIntoSetterCheck.setLayoutData(gridData); |
|
|
|
|
|
gridData = new GridData(); |
|
|
gridData.horizontalIndent = 25; |
|
|
disableStepIntoDeleterCheck = new Button(composite, SWT.CHECK); |
|
|
disableStepIntoDeleterCheck |
|
|
.setText("Disable step into property deleters"); |
|
|
disableStepIntoDeleterCheck.setSelection(disableStepIntoDeleter); |
|
|
disableStepIntoDeleterCheck.setEnabled(disableStepIntoPropertiesCheck |
|
|
.getSelection()); |
|
|
disableStepIntoDeleterCheck.setLayoutData(gridData); |
|
|
} |
|
|
|
|
|
/** |
|
|
* Creates a selection listener for disableStepIntoPropertiesCheck |
|
|
*/ |
|
|
private void createSelectionListener() { |
|
|
disableStepIntoPropertiesCheck |
|
|
.addSelectionListener(new SelectionListener() { |
|
|
public void widgetSelected(SelectionEvent arg0) { |
|
|
disableStepIntoGetterCheck.setSelection(false); |
|
|
disableStepIntoGetterCheck |
|
|
.setEnabled(disableStepIntoPropertiesCheck |
|
|
.getSelection()); |
|
|
disableStepIntoSetterCheck.setSelection(false); |
|
|
disableStepIntoSetterCheck |
|
|
.setEnabled(disableStepIntoPropertiesCheck |
|
|
.getSelection()); |
|
|
disableStepIntoDeleterCheck.setSelection(false); |
|
|
disableStepIntoDeleterCheck |
|
|
.setEnabled(disableStepIntoPropertiesCheck |
|
|
.getSelection()); |
|
|
} |
|
|
|
|
|
public void widgetDefaultSelected(SelectionEvent arg0) { |
|
|
} |
|
|
}); |
|
|
} |
|
|
|
|
|
@Override |
|
|
protected Control createDialogArea(Composite parent) { |
|
|
Composite composite = (Composite) super.createDialogArea(parent); |
|
|
createStepIntoOptions(composite); |
|
|
return composite; |
|
|
} |
|
|
|
|
|
@Override |
|
|
protected void okPressed() { |
|
|
this.disableStepIntoProperties = disableStepIntoPropertiesCheck |
|
|
.getSelection(); |
|
|
this.disableStepIntoGetter = disableStepIntoGetterCheck.getSelection(); |
|
|
this.disableStepIntoSetter = disableStepIntoSetterCheck.getSelection(); |
|
|
this.disableStepIntoDeleter = disableStepIntoDeleterCheck |
|
|
.getSelection(); |
|
|
super.okPressed(); |
|
|
} |
|
|
|
|
|
// Getters |
|
|
|
|
|
public boolean isDisableStepIntoProperties() { |
|
|
return disableStepIntoProperties; |
|
|
} |
|
|
|
|
|
public boolean isDisableStepIntoGetter() { |
|
|
return disableStepIntoGetter; |
|
|
} |
|
|
|
|
|
public boolean isDisableStepIntoSetter() { |
|
|
return disableStepIntoSetter; |
|
|
} |
|
|
|
|
|
public boolean isDisableStepIntoDeleter() { |
|
|
return disableStepIntoDeleter; |
|
|
} |
|
|
} |