package org.freeplane.plugin.script.proxy;
import org.freeplane.features.mode.Controller;
import org.freeplane.features.mode.mindmapmode.MModeController;
import org.freeplane.plugin.script.ScriptContext;
public abstract class AbstractProxy<T> {
private final T delegate;
private final ScriptContext scriptContext;
AbstractProxy(final T delegate, final ScriptContext scriptContext) {
this.delegate = delegate;
this.scriptContext = scriptContext;
}
@SuppressWarnings("rawtypes")
@Override
public boolean equals(final Object obj) {
if (!getClass().equals(obj.getClass())) {
return false;
}
return delegate.equals(((AbstractProxy) obj).getDelegate());
}
public T getDelegate() {
return delegate;
}
public ScriptContext getScriptContext() {
return scriptContext;
}
public MModeController getModeController() {
return (MModeController) Controller.getCurrentModeController();
}
@Override
public int hashCode() {
return delegate.hashCode() * 31 + getClass().hashCode();
}
@Override
public String toString() {
return getClass() + ":" + delegate.toString();
}
}