package jetbrains.mps.debug.api.breakpoints; /*Generated by MPS */ import com.intellij.openapi.project.Project; import java.util.List; import java.util.ArrayList; import org.jetbrains.annotations.NotNull; public abstract class AbstractBreakpoint implements IBreakpoint { protected final Project myProject; protected boolean myIsEnabled = true; protected long myCreationTime = -1; private final List<IBreakpointListener> myListeners = new ArrayList<IBreakpointListener>(); protected AbstractBreakpoint(Project project) { myProject = project; } @Override public boolean isEnabled() { return myIsEnabled; } public void toggleEnabled() { setEnabled(!(myIsEnabled)); } @Override public void setCreationTime(long time) { myCreationTime = time; } @Override public void addBreakpointListener(@NotNull IBreakpointListener listener) { myListeners.add(listener); } @Override public void removeBreakpointListener(IBreakpointListener listener) { myListeners.remove(listener); } @Override public long getCreationTime() { return myCreationTime; } @Override public void setEnabled(final boolean enabled) { boolean toggled = setEnabledInternal(enabled); if (toggled) { fireBreakpointEnabledStateToggled(enabled); } } private boolean setEnabledInternal(boolean enabled) { if (getKind().supportsDisable()) { if (myIsEnabled != enabled) { myIsEnabled = enabled; if (myIsEnabled) { enableInRunningSessions(); } else { disableInRunningSessions(); } return true; } } return false; } @Override public Project getProject() { return myProject; } protected void disableInRunningSessions() { removeFromRunningSessions(); } protected void enableInRunningSessions() { addToRunningSessions(); } protected void fireBreakpointEnabledStateToggled(boolean enabled) { // todo come up with better name for (IBreakpointListener listener : myListeners) { listener.breakpointEnabledStateToggled(this, enabled); } } @Override public boolean isValid() { return true; } }