package org.bndtools.core.ui.wizards.index;
import java.io.File;
import java.nio.file.Path;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.bndtools.core.jobs.GenerateIndexJob;
import org.eclipse.core.resources.IFolder;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.wizard.Wizard;
import org.eclipse.ui.INewWizard;
import org.eclipse.ui.IWorkbench;
import org.osgi.service.indexer.ResourceIndexer;
public class NewIndexWizard extends Wizard implements INewWizard {
private final IndexerWizardPage indexPage = new IndexerWizardPage();
@Override
public void init(IWorkbench workbench, IStructuredSelection selection) {
Object firstSelElem = selection.getFirstElement();
if (firstSelElem instanceof IFolder) {
File dir = ((IFolder) firstSelElem).getLocation().toFile();
indexPage.setBaseDir(dir);
}
}
@Override
public void addPages() {
addPage(indexPage);
}
@Override
public boolean performFinish() {
File baseDir = indexPage.getBaseDir();
Path basePath = baseDir.toPath();
List<Path> paths = indexPage.getInputPaths();
Set<File> inputFiles = new HashSet<>(paths.size());
for (Path path : paths)
inputFiles.add(basePath.resolve(path).toFile());
// Setup index config
Map<String,String> config = new HashMap<>();
Boolean pretty = Boolean.valueOf(indexPage.getOutputStyle() == IndexFormatStyle.PRETTY_UNCOMPRESSED);
Boolean compressed = Boolean.valueOf(indexPage.getOutputStyle() == IndexFormatStyle.COMPRESSED);
config.put(ResourceIndexer.PRETTY, pretty.toString());
config.put(ResourceIndexer.COMPRESSED, compressed.toString());
config.put(ResourceIndexer.ROOT_URL, baseDir.toURI().toASCIIString());
// Create the job
GenerateIndexJob job = new GenerateIndexJob(inputFiles, indexPage.getOutputFile(), config);
job.setUser(true);
job.schedule();
return true;
}
}