package com.mobilesorcery.sdk.ui.internal.properties;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Shell;
import com.mobilesorcery.sdk.core.MoSyncProject;
import com.mobilesorcery.sdk.core.build.CommandLineBuildStep;
import com.mobilesorcery.sdk.core.build.CopyBuildResultBuildStep;
import com.mobilesorcery.sdk.core.build.IBuildStepFactory;
import com.mobilesorcery.sdk.ui.IBuildStepEditor;
import com.mobilesorcery.sdk.ui.MosyncUIPlugin;
import com.mobilesorcery.sdk.ui.SimpleListEditor;
final class BuildStepListEditor extends
SimpleListEditor<IBuildStepFactory> {
private MoSyncProject project;
BuildStepListEditor(Composite parent, int style) {
super(parent, style);
setEditAfterAdd(true);
getList().setLabelProvider(new LabelProvider() {
@Override
public String getText(Object element) {
return ((IBuildStepFactory) element).getName();
}
});
}
public void setProject(MoSyncProject project) {
this.project = project;
}
@Override
protected IBuildStepFactory createObject() {
return new CommandLineBuildStep.Factory();
}
@Override
protected boolean edit(Object selection, boolean add) {
IBuildStepEditor editor = MosyncUIPlugin.getDefault().createBuildStepEditor(project, (IBuildStepFactory) selection);
if (editor != null) {
boolean doAdd = IBuildStepEditor.OK == editor.edit();
return doAdd;
}
return false;
}
@Override
protected boolean canEdit(Object element) {
IBuildStepFactory factory = (IBuildStepFactory) element;
IBuildStepEditor editor = MosyncUIPlugin.getDefault().createBuildStepEditor(project, factory);
if (editor != null && editor.canEdit()) {
return true;
}
return CopyBuildResultBuildStep.ID.equals(factory.getId()) || isRearrangable(element);
}
@Override
protected boolean canRemove(Object element) {
return isRearrangable(element);
}
@Override
protected boolean canMoveUp(Object element) {
return isRearrangable(element);
}
@Override
protected boolean canMoveDown(Object element) {
return isRearrangable(element);
}
private boolean isRearrangable(Object element) {
return CommandLineBuildStep.ID.equals(((IBuildStepFactory) element).getId());
}
}