blob: 6dc212b1bbbd4cffb531d85977ad23a1bd78413e [file] [log] [blame]
package org.eclipse.dltk.internal.debug.ui.variables;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.model.IValue;
import org.eclipse.debug.core.model.IVariable;
import org.eclipse.debug.internal.ui.model.elements.VariableLabelProvider;
import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext;
import org.eclipse.debug.ui.IDebugModelPresentation;
import org.eclipse.dltk.debug.ui.DLTKDebugUIPlugin;
import org.eclipse.dltk.debug.ui.ScriptDebugModelPresentation;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
public class ScriptVariableLabelProvider extends VariableLabelProvider
implements IPropertyChangeListener {
private IPreferenceStore store;
public ScriptVariableLabelProvider(IPreferenceStore store) {
this.store = store;
this.store.addPropertyChangeListener(this);
}
public void dispose() {
store.removePropertyChangeListener(this);
store = null;
}
@Override
protected IDebugModelPresentation getModelPresentation(
IPresentationContext context, String modelId) {
/*
* no longer here for 3.3 compatibility...
*
* we need to use the langugage specific implementation so we can get
* access to addtional presentation methods by downcasting to the
* ScriptDebugModelPresentation.
*
* the IDebugModelPresentation impl normally returned from a this method
* is an instance of LazyModelPresentation, which does not provide a way
* to obtain the underlying model presentation it is being lazy for.
*
* the jdt instanciates its IDebugModelPresentation implementation
* outright in its VariableLabelProvider implenentation, so this should
* be ok to do.
*/
return DLTKDebugUIPlugin.getDefault().getModelPresentation(modelId);
}
@Override
protected String getVariableName(IVariable variable,
IPresentationContext context) throws CoreException {
IDebugModelPresentation presentation = getModelPresentation(context,
variable.getModelIdentifier());
if (presentation != null) {
return ((ScriptDebugModelPresentation) presentation)
.getVariableName(variable);
}
return super.getVariableName(variable, context);
}
@Override
protected String getValueText(IVariable variable, IValue value,
IPresentationContext context) throws CoreException {
IDebugModelPresentation presentation = getModelPresentation(context,
value.getModelIdentifier());
if (presentation != null) {
return presentation.getText(value);
}
return super.getValueText(variable, value, context);
}
@Override
public void propertyChange(PropertyChangeEvent event) {
// TODO: support for fq name vs 'last segment'
}
}