/*******************************************************************************
* Copyright (c) 2012-2017 Codenvy, S.A.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.plugin.testing.junit.ide.action;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.che.ide.api.action.ActionEvent;
import org.eclipse.che.ide.api.app.AppContext;
import org.eclipse.che.ide.api.editor.EditorAgent;
import org.eclipse.che.ide.api.editor.EditorPartPresenter;
import org.eclipse.che.ide.api.filetypes.FileTypeRegistry;
import org.eclipse.che.ide.api.notification.NotificationManager;
import org.eclipse.che.ide.api.resources.VirtualFile;
import org.eclipse.che.ide.ext.java.client.action.JavaEditorAction;
import org.eclipse.che.ide.ext.java.client.util.JavaUtil;
import org.eclipse.che.plugin.testing.ide.TestServiceClient;
import org.eclipse.che.plugin.testing.ide.action.RunTestActionDelegate;
import org.eclipse.che.plugin.testing.ide.view.TestResultPresenter;
import org.eclipse.che.plugin.testing.junit.ide.JUnitTestLocalizationConstant;
import org.eclipse.che.plugin.testing.junit.ide.JUnitTestResources;
import com.google.inject.Inject;
/**
* @author Mirage Abeysekara
* @author David Festal
*/
public class RunClassTestAction extends JavaEditorAction
implements RunTestActionDelegate.Source {
private final NotificationManager notificationManager;
private final EditorAgent editorAgent;
private final TestResultPresenter presenter;
private final TestServiceClient service;
private final RunTestActionDelegate delegate;
@Inject
public RunClassTestAction(JUnitTestResources resources,
NotificationManager notificationManager,
EditorAgent editorAgent,
FileTypeRegistry fileTypeRegistry,
TestResultPresenter presenter,
TestServiceClient service,
JUnitTestLocalizationConstant localization) {
super(localization.actionRunClassTitle(), localization.actionRunClassDescription(), resources.testIcon(),
editorAgent, fileTypeRegistry);
this.notificationManager = notificationManager;
this.editorAgent = editorAgent;
this.presenter = presenter;
this.service = service;
this.delegate = new RunTestActionDelegate(this);
}
@Override
public void actionPerformed(ActionEvent e) {
EditorPartPresenter editorPart = editorAgent.getActiveEditor();
final VirtualFile file = editorPart.getEditorInput().getFile();
String fqn = JavaUtil.resolveFQN(file);
Map<String, String> parameters = new HashMap<>();
parameters.put("fqn", fqn);
parameters.put("runClass", "true");
delegate.doRunTests(e, parameters);
}
@Override
protected void updateProjectAction(ActionEvent e) {
super.updateProjectAction(e);
e.getPresentation().setVisible(true);
}
@Override
public NotificationManager getNotificationManager() {
return notificationManager;
}
@Override
public AppContext getAppContext() {
return appContext;
}
@Override
public TestServiceClient getService() {
return service;
}
@Override
public TestResultPresenter getPresenter() {
return presenter;
}
@Override
public String getTestingFramework() {
return "junit";
}
}