package edu.ualberta.med.biobank.handlers; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.runtime.Assert; import com.google.inject.Inject; import com.google.web.bindery.event.shared.EventBus; import edu.ualberta.med.biobank.SessionManager; import edu.ualberta.med.biobank.common.permission.site.SiteCreatePermission; import edu.ualberta.med.biobank.gui.common.BgcLogger; import edu.ualberta.med.biobank.gui.common.BgcPlugin; import edu.ualberta.med.biobank.gui.common.handlers.LogoutSensitiveHandler; import edu.ualberta.med.biobank.treeview.admin.SessionAdapter; import gov.nih.nci.system.applicationservice.ApplicationException; public class SiteAddHandler extends LogoutSensitiveHandler { @SuppressWarnings("unused") private static BgcLogger LOGGER = BgcLogger.getLogger(SiteAddHandler.class .getName()); // private EventBus eventBus; @SuppressWarnings("unused") @Inject public void setEventBus(EventBus eventBus) { // this.eventBus = eventBus; } @Override public Object execute(ExecutionEvent event) throws ExecutionException { // MVP code // TODO: this class should be injected, not inject itself. Worst case, // have some Handler super-class with an EventBus that injects itself // upon instantiation? // Injector injector = BiobankPlugin.getInjector(); // injector.injectMembers(this); // eventBus.fireEvent(new SiteCreateEvent()); SessionAdapter sessionAdapter = SessionManager.getInstance() .getSession(); Assert.isNotNull(sessionAdapter); sessionAdapter.addSite(); return null; } @Override public boolean isEnabled() { try { if (allowed == null) allowed = SessionManager.getAppService().isAllowed( new SiteCreatePermission()); return allowed && SessionManager.getInstance().getSession() != null; } catch (ApplicationException e) { BgcPlugin.openAsyncError("Error", "Unable to retrieve permissions"); return false; } } }