[jbosstools-issues] [JBoss JIRA] (JBIDE-14320) JSPMultiPageEditor.getDocumentProvider().getDocument(input) returns null

Victor Rubezhny (JIRA) jira-events at lists.jboss.org
Thu Apr 25 16:21:53 EDT 2013


    [ https://issues.jboss.org/browse/JBIDE-14320?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12770227#comment-12770227 ] 

Victor Rubezhny commented on JBIDE-14320:
-----------------------------------------

It's because JSPMultiPageEditor itself implements ITextEditor. So, 
editor.getAdapter(ITextEditor.class) returns the JSPMultiPageEditor instance instead of Source Editor.

We're always using JSPMultiPageEditor.getSourceEditor() method to get Source Editor from JSPMultiPageEditor object. So, your workaround is normal flow here.

doc = textEditor.getDocumentProvider().getDocument(input) cannot be used with JSPMultiPageEditor, because there is no document inside the editor that is associated with the given input because the editor input (which is set on the editor when the editor was opened) was replaced by another one (see: JSPMultiPageEditor.setInput(IEditorInput) method).

                
> JSPMultiPageEditor.getDocumentProvider().getDocument(input) returns null
> ------------------------------------------------------------------------
>
>                 Key: JBIDE-14320
>                 URL: https://issues.jboss.org/browse/JBIDE-14320
>             Project: Tools (JBoss Tools)
>          Issue Type: Bug
>          Components: browsersim, jsp/jsf/xml/html source editing
>    Affects Versions: 4.1.0.Beta1
>            Reporter: Yahor Radtsevich
>            Assignee: Victor Rubezhny
>             Fix For: 4.1.0.Beta1
>
>
> In BrowserSim we [use|https://github.com/jbosstools/jbosstools-vpe/blob/master/plugins/org.jboss.tools.vpe.browsersim.eclipse/src/org/jboss/tools/vpe/browsersim/eclipse/callbacks/ViewSourceCallback.java#L108] the following code to view the source code of currently opened page.
> This code opens a default html editor with given {{content}}.
> Everything is working fine, unless {{JSPMultiPageEditor}} is the default html editor.
> In the case with {{JSPMultiPageEditor}}, the method {{JSPMultiPageEditor.getDocumentProvider().getDocument(input)}} returns {{null}} and blanck editor is shown.
> {code}
> private void openInMemoryHtmlEditor(String content, String name, String toolTip) {
> 	IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
> 	IWorkbenchPage page = window != null ? window.getActivePage() : null;
> 	if (page != null) {
> 		try {
> 			IEditorDescriptor editorDescriptor = PlatformUI.getWorkbench()
> 					.getEditorRegistry().getDefaultEditor("view-source.html"); // get default editor for .html //$NON-NLS-1$
> 			String editorId;
> 			if (editorDescriptor != null && editorDescriptor.isInternal()) {
> 				editorId = editorDescriptor.getId();
> 			} else {
> 				editorId = "org.eclipse.ui.DefaultTextEditor"; //$NON-NLS-1$
> 			}
> 			IStorage storage = new StringStorage("", // see the long comment below to know why an empty storage is created //$NON-NLS-1$
> 					"view-source.html"); // .html extension is needed to enable code highlighting in the WTP HTML editor //$NON-NLS-1$
> 			IStorageEditorInput input = new StringInput(storage, name, toolTip);
> 			IEditorPart editor = page.openEditor(input, editorId);
> 			
> 			/* We change content of the editor AFTER the editor is created
> 			 * as a workaround for the following WTP bug.
> 			 * The essence of the bug is that if given HTML page contains a link
> 			 * to an external DTD, then WTP HTML editor tries to access this DTD before the editor
> 			 * is created and freezes UI.
> 			 * See http://www.eclipse.org/forums/index.php/m/639937/
> 			 */
> 			IDocument doc = null;
> 			ITextEditor textEditor = null;
> 			if (editor instanceof ITextEditor) {
> 				textEditor = (ITextEditor) editor;
> 			} else {
> 				textEditor = (ITextEditor) editor.getAdapter(ITextEditor.class);
> 			}
> 			
> 			if (textEditor != null) {
> 				doc = textEditor.getDocumentProvider().getDocument(input);// <<<<----- THE PROBLEM APPEARS HERE
> 			}
> 			if (doc != null) {
> 				doc.set(content);
> 				editor.doSave(null); // reset resource-changed marker
> 			}
> 		} catch (PartInitException e) {
> 			Activator.logError(e.getMessage(), e);
> 		}
> 	} else {
> 		Activator.logError("Cannot obtain workbench page", null);
> 	}
> }
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the jbosstools-issues mailing list