diff --git a/utils/umc_dev/org.wesnoth.ui/src/org/wesnoth/ui/WMLUtil.java b/utils/umc_dev/org.wesnoth.ui/src/org/wesnoth/ui/WMLUtil.java index 3427fb047cc..d4edf90d336 100644 --- a/utils/umc_dev/org.wesnoth.ui/src/org/wesnoth/ui/WMLUtil.java +++ b/utils/umc_dev/org.wesnoth.ui/src/org/wesnoth/ui/WMLUtil.java @@ -14,10 +14,22 @@ import org.eclipse.xtext.nodemodel.ICompositeNode; import org.eclipse.xtext.nodemodel.ILeafNode; import org.eclipse.xtext.nodemodel.INode; import org.eclipse.xtext.nodemodel.util.NodeModelUtils; +import org.eclipse.xtext.resource.EObjectAtOffsetHelper; +import org.eclipse.xtext.ui.editor.XtextEditor; import org.eclipse.xtext.ui.editor.utils.EditorUtils; public class WMLUtil { + private static EObjectAtOffsetHelper eObjectAtOffsetHelper_; + + public static EObjectAtOffsetHelper EObjectUtils(){ + if ( eObjectAtOffsetHelper_ == null ) { + eObjectAtOffsetHelper_ = new EObjectAtOffsetHelper( ); + } + + return eObjectAtOffsetHelper_; + } + public static String debug(EObject root) { ICompositeNode node = NodeModelUtils.getNode(root); @@ -40,9 +52,13 @@ public class WMLUtil */ public static IFile getActiveEditorFile() { - if (EditorUtils.getActiveXtextEditor() == null) - return null; - return (IFile)EditorUtils.getActiveXtextEditor() - .getEditorInput().getAdapter(IFile.class); + return getEditorFile( EditorUtils.getActiveXtextEditor() ); + } + + public static IFile getEditorFile( XtextEditor editor ) + { + if ( editor == null ) + return null; + return ( IFile ) editor.getEditorInput( ).getAdapter( IFile.class ); } } diff --git a/utils/umc_dev/org.wesnoth.ui/src/org/wesnoth/ui/labeling/wmldoc/WMLDocHandler.java b/utils/umc_dev/org.wesnoth.ui/src/org/wesnoth/ui/labeling/wmldoc/WMLDocHandler.java index 9e2b49d008a..7d289c62968 100644 --- a/utils/umc_dev/org.wesnoth.ui/src/org/wesnoth/ui/labeling/wmldoc/WMLDocHandler.java +++ b/utils/umc_dev/org.wesnoth.ui/src/org/wesnoth/ui/labeling/wmldoc/WMLDocHandler.java @@ -11,10 +11,10 @@ package org.wesnoth.ui.labeling.wmldoc; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IFile; import org.eclipse.emf.ecore.EObject; import org.eclipse.jface.text.ITextSelection; import org.eclipse.swt.graphics.Point; -import org.eclipse.xtext.resource.EObjectAtOffsetHelper; import org.eclipse.xtext.resource.XtextResource; import org.eclipse.xtext.ui.editor.XtextEditor; import org.eclipse.xtext.ui.editor.utils.EditorUtils; @@ -32,20 +32,13 @@ import org.wesnoth.wml.WMLTag; */ public class WMLDocHandler extends AbstractHandler { - private EObjectAtOffsetHelper eObjectAtOffsetHelper; - - public WMLDocHandler() - { - eObjectAtOffsetHelper = new EObjectAtOffsetHelper( ); - } - public Object execute(ExecutionEvent event) throws ExecutionException { try { final XtextEditor editor = EditorUtils.getActiveXtextEditor(event); - final String installName = - WesnothInstallsUtils.getInstallNameForResource( WMLUtil.getActiveEditorFile( ) ); + final IFile editedFile = WMLUtil.getEditorFile( editor ); + final String installName = WesnothInstallsUtils.getInstallNameForResource( editedFile ); editor.getDocument().readOnly(new IUnitOfWork.Void() { @@ -58,7 +51,7 @@ public class WMLDocHandler extends AbstractHandler Point positionAbsolute = editor.getInternalSourceViewer().getTextWidget().toDisplay(positionRelative); positionAbsolute.y += 20; - EObject grammarElement = eObjectAtOffsetHelper.resolveElementAt( resource, selection.getOffset( ) ); + EObject grammarElement = WMLUtil.EObjectUtils( ).resolveElementAt( resource, selection.getOffset( ) ); if ( grammarElement == null ) return; @@ -66,15 +59,13 @@ public class WMLDocHandler extends AbstractHandler { WMLMacroCall macro = (WMLMacroCall) grammarElement; Define define = ProjectUtils.getCacheForProject( - WMLUtil.getActiveEditorFile().getProject()) - .getDefines().get(macro.getName()); + editedFile.getProject()).getDefines().get(macro.getName()); if (define != null) { if (presenter_ == null) { presenter_ = new WMLDocInformationPresenter( - editor.getSite().getShell(), - new WMLDocMacro(define), + editor.getSite().getShell(), new WMLDocMacro(define), positionAbsolute); presenter_.create(); }