package org.eclipse.imp.actions;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.debug.core.model.IBreakpoint;
import org.eclipse.debug.ui.actions.RulerBreakpointAction;
import org.eclipse.jface.dialogs.ErrorDialog;
import org.eclipse.jface.text.source.IVerticalRulerInfo;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.MouseListener;
import org.eclipse.swt.widgets.Control;
import org.eclipse.ui.texteditor.ITextEditor;
import org.eclipse.ui.texteditor.IUpdate;
public class RulerEnableDisableBreakpointAction extends RulerBreakpointAction implements IUpdate, MouseListener {
private IBreakpoint fBreakpoint;
public RulerEnableDisableBreakpointAction(ITextEditor editor, IVerticalRulerInfo info) {
super(editor, info);
setText(ActionMessages.RulerEnableDisableBreakpointAction_2);
update();
Control control= info.getControl();
if (control != null && !control.isDisposed())
control.addMouseListener(this);
}
/* (non-Javadoc)
* @see org.eclipse.jface.action.Action#run()
*/
public void run() {
if (fBreakpoint != null) {
try {
fBreakpoint.setEnabled(!fBreakpoint.isEnabled());
} catch (CoreException e) {
ErrorDialog.openError(getEditor().getSite().getShell(), ActionMessages.RulerEnableDisableBreakpointAction_0, ActionMessages.RulerEnableDisableBreakpointAction_1, e.getStatus());
}
}
}
/* (non-Javadoc)
* @see org.eclipse.ui.texteditor.IUpdate#update()
*/
public void update() {
fBreakpoint = getBreakpoint();
setEnabled(fBreakpoint != null);
if (fBreakpoint != null) {
try {
if (fBreakpoint.isEnabled()) {
setText(ActionMessages.RulerEnableDisableBreakpointAction_2);
} else {
setText(ActionMessages.RulerEnableDisableBreakpointAction_3);
}
} catch (CoreException e) {
}
} else {
setText(ActionMessages.RulerEnableDisableBreakpointAction_2);
}
}
public void mouseDoubleClick(MouseEvent e) { }
public void mouseDown(MouseEvent e) {
update();
}
public void mouseUp(MouseEvent e) { }
}