org.symbian.tools.wrttools.debug.core/src/org/symbian/tools/wrttools/debug/internal/HtmlBreakpointProvider.java
author Eugene Ostroukhov <eugeneo@symbian.org>
Tue, 09 Feb 2010 10:49:18 -0800
changeset 116 c60cb2ffbdc1
child 121 9e91633d1ef9
permissions -rw-r--r--
Bug 1665 (HTML Files Cannot be Debugged) was fixed
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
116
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     1
package org.symbian.tools.wrttools.debug.internal;
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     2
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     3
import org.chromium.debug.core.model.ChromiumLineBreakpoint;
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     4
import org.eclipse.core.resources.IResource;
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     5
import org.eclipse.core.runtime.CoreException;
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     6
import org.eclipse.core.runtime.IStatus;
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     7
import org.eclipse.core.runtime.Status;
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     8
import org.eclipse.debug.core.DebugPlugin;
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
     9
import org.eclipse.jface.text.BadLocationException;
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    10
import org.eclipse.jface.text.IDocument;
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    11
import org.eclipse.jface.text.ITypedRegion;
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    12
import org.eclipse.ui.IEditorInput;
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    13
import org.eclipse.wst.html.core.text.IHTMLPartitions;
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    14
import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocument;
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    15
import org.eclipse.wst.sse.ui.internal.provisional.extensions.ISourceEditingTextTools;
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    16
import org.eclipse.wst.sse.ui.internal.provisional.extensions.breakpoint.IBreakpointProvider;
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    17
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    18
@SuppressWarnings("restriction")
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    19
public class HtmlBreakpointProvider implements IBreakpointProvider {
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    20
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    21
	public IStatus addBreakpoint(IDocument document, IEditorInput input,
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    22
			int lineNumber, int offset) throws CoreException {
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    23
		boolean hasScript = hasJavaScript(document, lineNumber);
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    24
		
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    25
		System.out.println(hasScript);
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    26
		ChromiumLineBreakpoint breakpoint = new ChromiumLineBreakpoint(getResource(input), lineNumber);
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    27
		DebugPlugin.getDefault().getBreakpointManager().addBreakpoint(breakpoint);
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    28
		return Status.OK_STATUS;
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    29
	}
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    30
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    31
	private boolean hasJavaScript(IDocument document, int lineNumber) {
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    32
		try {
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    33
			if (document instanceof IStructuredDocument) {
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    34
				IStructuredDocument doc = (IStructuredDocument) document;
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    35
				int lineOffset = doc.getLineOffset(lineNumber - 1);
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    36
				int lineLength = doc.getLineLength(lineNumber - 1);
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    37
				ITypedRegion[] computePartitioning = doc.computePartitioning(lineOffset, lineLength);
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    38
				for (ITypedRegion region : computePartitioning) {
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    39
					if (IHTMLPartitions.SCRIPT.equals(region.getType()) || IHTMLPartitions.SCRIPT_EVENTHANDLER.equals(region.getType())) {
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    40
						return true;
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    41
					}
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    42
				}
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    43
			}
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    44
		} catch (BadLocationException e) {
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    45
			Activator.log(e);
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    46
		}
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    47
		return false;
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    48
	}
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    49
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    50
	public IResource getResource(IEditorInput input) {
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    51
		return (IResource) input.getAdapter(IResource.class);
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    52
	}
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    53
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    54
	public void setSourceEditingTextTools(ISourceEditingTextTools tools) {
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    55
		// Do nothing
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    56
	}
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    57
c60cb2ffbdc1 Bug 1665 (HTML Files Cannot be Debugged) was fixed
Eugene Ostroukhov <eugeneo@symbian.org>
parents:
diff changeset
    58
}