package org.python.pydev.debug.model;
import org.python.pydev.core.ListenerList;
import org.python.pydev.debug.core.ConfigureExceptionsFileUtils;
public class PyPropertyTraceManager {
// Static variables
public static final String PROPERTY_TRACE_STATE = "property_trace_state.prefs";
private static PyPropertyTraceManager pyPropertyTraceManager;
// For instance
private ListenerList<IPropertyTraceListener> listeners = new ListenerList<IPropertyTraceListener>(
IPropertyTraceListener.class);
/**
* Singleton: private constructor.
*/
private PyPropertyTraceManager() {
}
public static synchronized PyPropertyTraceManager getInstance() {
if (pyPropertyTraceManager == null) {
pyPropertyTraceManager = new PyPropertyTraceManager();
}
return pyPropertyTraceManager;
}
// Getters
public String getPyPropertyTraceState() {
return ConfigureExceptionsFileUtils.readFromMetadataFile(PROPERTY_TRACE_STATE);
}
public void setPyPropertyTraceState(boolean replaceProperty, boolean disableGetterTrace,
boolean disableSetterTrace, boolean disableDelterTrace) {
String propertyTrace = Boolean.toString(replaceProperty) + ConfigureExceptionsFileUtils.DELIMITER
+ Boolean.toString(disableGetterTrace) + ConfigureExceptionsFileUtils.DELIMITER
+ Boolean.toString(disableSetterTrace) + ConfigureExceptionsFileUtils.DELIMITER
+ Boolean.toString(disableDelterTrace);
ConfigureExceptionsFileUtils.writeToFile(PyPropertyTraceManager.PROPERTY_TRACE_STATE, propertyTrace, false);
for (IPropertyTraceListener listener : this.listeners.getListeners()) {
listener.onSetPropertyTraceConfiguration();
}
}
// Listeners
public void addListener(IPropertyTraceListener listener) {
this.listeners.add(listener);
}
public void removeListener(IPropertyTraceListener listener) {
this.listeners.remove(listener);
}
}