From 5b4d5addc758805c8a7d12ddd397652c901a0109 Mon Sep 17 00:00:00 2001 From: Timotei Dolean Date: Sat, 16 Jul 2011 20:57:34 +0000 Subject: [PATCH] eclipse plugin: Make an EObjectAtOffsetHelper instance... ...singleton so it can be accessed from all places without the need to instantiate. Also refactor the getActiveFile method to let it get the editor as parameter. --- .../src/org/wesnoth/ui/WMLUtil.java | 24 +++++++++++++++---- .../ui/labeling/wmldoc/WMLDocHandler.java | 21 +++++----------- 2 files changed, 26 insertions(+), 19 deletions(-) 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(); }