package fr.opensagres.mongodb.ide.ui.actions.database;
import org.eclipse.jface.viewers.ISelectionProvider;
import fr.opensagres.mongodb.ide.core.extensions.IShellRunnerType;
import fr.opensagres.mongodb.ide.core.model.Database;
import fr.opensagres.mongodb.ide.ui.actions.server.TreeNodeActionAdapter;
import fr.opensagres.mongodb.ide.ui.internal.ImageResources;
public class ShellRunnerAction extends TreeNodeActionAdapter {
private final IShellRunnerType shellRunnerType;
private final boolean start;
public ShellRunnerAction(IShellRunnerType shellRunnerType, boolean start,
ISelectionProvider selectionProvider) {
super(selectionProvider, start ? shellRunnerType.getStartName()
: shellRunnerType.getStopName());
this.start = start;
this.shellRunnerType = shellRunnerType;
if (start) {
setImageDescriptor(ImageResources
.getImageDescriptor(ImageResources.IMG_ELCL_START_SHELL));
setHoverImageDescriptor(ImageResources
.getImageDescriptor(ImageResources.IMG_CLCL_START_SHELL));
setDisabledImageDescriptor(ImageResources
.getImageDescriptor(ImageResources.IMG_DLCL_START_SHELL));
} else {
setImageDescriptor(ImageResources
.getImageDescriptor(ImageResources.IMG_ELCL_STOP_SHELL));
setHoverImageDescriptor(ImageResources
.getImageDescriptor(ImageResources.IMG_CLCL_STOP_SHELL));
setDisabledImageDescriptor(ImageResources
.getImageDescriptor(ImageResources.IMG_DLCL_STOP_SHELL));
}
}
@Override
public boolean accept(Database database) {
return shellRunnerType.getRunner().canSupport(database);
}
@Override
public void perform(Database database) {
if (start) {
try {
shellRunnerType.getRunner().startShell(database);
} catch (Exception e1) {
e1.printStackTrace();
}
} else {
try {
shellRunnerType.getRunner().stopShell(database);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}