package org.jboss.tools.cdi.reddeer.quickfix;
import java.util.ArrayList;
import java.util.List;
import org.jboss.reddeer.common.wait.WaitWhile;
import org.jboss.reddeer.core.condition.ShellWithTextIsActive;
import org.jboss.reddeer.swt.impl.button.PushButton;
import org.jboss.reddeer.swt.impl.shell.DefaultShell;
import org.jboss.reddeer.swt.impl.table.DefaultTable;
public class QuickFixWizard {
private List<String> availableFixes = null;
private List<String> resources = null;
public QuickFixWizard(){
new DefaultShell("Quick Fix");
availableFixes = new ArrayList<String>();
resources = new ArrayList<String>();
}
public void setFix(String fix) {
new DefaultTable().select(fix);
}
public List<String> getAvailableFixes() {
int tableItemsCount = new DefaultTable().rowCount();
for (int i = 0; i < tableItemsCount; i++) {
availableFixes.add(new DefaultTable().getItem(i).getText());
}
return availableFixes;
}
public void setResource(String resource) {
new DefaultTable(1).getItem(resource).setChecked(true);
}
public List<String> getResources() {
int tableItemsCount =new DefaultTable(1).rowCount();
for (int i = 0; i < tableItemsCount; i++) {
resources.add(new DefaultTable(1).getItem(i).getText());
}
return resources;
}
public String getDefaultCDIQuickFix() {
for (String fix : getAvailableFixes()) {
if (fix.contains("Configure")
|| fix.contains("Add @Suppress")) continue;
return fix;
}
throw new IllegalStateException("No default CDI quick fix is provided " +
"for validation problem");
}
public String getCDIQuickFix(String text) {
for (String fix : getAvailableFixes()) {
if (fix.contains(text)) return fix;
}
throw new IllegalStateException("No CDI quick fix contains " + text);
}
public void finish(){
String shellTitle = new DefaultShell().getText();
new PushButton("Finish").click();
new WaitWhile(new ShellWithTextIsActive(shellTitle));
}
}