package ru.naumen.gintonic.command; import org.eclipse.core.commands.ExecutionEvent; import ru.naumen.gintonic.guice.GuiceIndex; import ru.naumen.gintonic.guice.injection.IInjectionPoint; import ru.naumen.gintonic.guice.injection.InjectionPointDao; import ru.naumen.gintonic.project.navigate.selection.ICompilationUnitSelection; import ru.naumen.gintonic.project.source.references.SourceCodeReference; import ru.naumen.gintonic.utils.ICompilationUnitSelectionUtils; /** * Base handler for binding commands * * @author Sergey Tselovalnikov * @since Jan 27, 2014 */ public abstract class BaseBindingHandler extends BaseHandler { protected InjectionPointDao injectionPointDao; protected GuiceIndex guiceIndex; @Override protected void handleEvent(ExecutionEvent event) { if (this.guiceIndex == null) { this.guiceIndex = GuiceIndex.get(); } if (this.injectionPointDao == null) { injectionPointDao = new InjectionPointDao(); } SourceCodeReference currentCodeLocation = SourceCodeReference.createCurrent(); ICompilationUnitSelection compilationUnitSelection = ICompilationUnitSelectionUtils .getCompilationUnitSelection(); if (currentCodeLocation == null || compilationUnitSelection == null) { return; } IInjectionPoint injectionPoint = injectionPointDao.findInjectionPointByTextSelection( compilationUnitSelection.getICompilationUnit(), compilationUnitSelection.getITextSelection()); if (injectionPoint != null) { makeCommand(compilationUnitSelection, currentCodeLocation, injectionPoint); } } protected abstract void makeCommand(ICompilationUnitSelection compilationUnitSelection, SourceCodeReference currentCodeLocation, IInjectionPoint injectionPoint); }