/******************************************************************************
* Copyright (C) 2011-2012 Hussain Bohra 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:
* Hussain Bohra <hussain.bohra@tavant.com> - initial API and implementation
* Fabio Zadrozny <fabiofz@gmail.com> - ongoing maintenance
******************************************************************************/
package org.python.pydev.debug.model;
import org.python.pydev.debug.core.ConfigureExceptionsFileUtils;
import org.python.pydev.shared_core.callbacks.ListenerList;
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);
}
}