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.
This commit is contained in:
Timotei Dolean 2011-07-16 20:57:34 +00:00
parent 3535576918
commit 5b4d5addc7
2 changed files with 26 additions and 19 deletions

View file

@ -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 );
}
}

View file

@ -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<XtextResource>()
{
@ -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();
}