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:
parent
3535576918
commit
5b4d5addc7
2 changed files with 26 additions and 19 deletions
|
@ -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 );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue