package eu.cloudwave.wp5.feedback.eclipse.costs.ui.views;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.resources.IProject;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.handlers.HandlerUtil;
import com.google.common.base.Optional;
import eu.cloudwave.wp5.feedback.eclipse.base.core.handlers.HandlerToolkit;
import eu.cloudwave.wp5.feedback.eclipse.base.resources.core.FeedbackProject;
import eu.cloudwave.wp5.feedback.eclipse.base.resources.core.FeedbackResourceFactory;
import eu.cloudwave.wp5.feedback.eclipse.costs.core.CostPluginActivator;
public class FeedbackHandlerWebClientHandler extends AbstractHandler {
private static final String FEEDBACK_HANDLER_WEB_CLIENT_ID = "eu.cloudwave.wp5.feedback.eclipse.costs.ui.views.FeedbackHandlerWebClient";
private FeedbackResourceFactory feedbackResourceFactory;
public FeedbackHandlerWebClientHandler() {
super();
feedbackResourceFactory = CostPluginActivator.instance(FeedbackResourceFactory.class);
}
/**
* {@inheritDoc}
*/
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
try {
FeedbackHandlerWebClient view = (FeedbackHandlerWebClient) HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().showView(FEEDBACK_HANDLER_WEB_CLIENT_ID);
String accessToken;
String applicationId;
for (final IProject project : HandlerToolkit.getSelectedProjects(event)) {
Optional<? extends FeedbackProject> decoratedProject;
try {
decoratedProject = feedbackResourceFactory.create(project);
applicationId = decoratedProject.get().getApplicationId();
accessToken = decoratedProject.get().getAccessToken();
if (applicationId != null && accessToken != null) {
// set application in order to be able to login
view.setApplication(applicationId, accessToken);
// one project is enough to login
break;
}
else {
continue;
}
}
catch (Exception e) {
// lets try with the next project
continue;
}
}
}
catch (PartInitException e) {
e.printStackTrace();
}
return null;
}
}