private IFeatureModel generateFeatureModelOfVariants() { final IFeatureProject featureProject = CorePlugin.getFeatureProject(newProject); final IFeatureModel featureModel = featureProject.getFeatureModel(); featureModel.reset(); featureModel .getStructure() .setRoot( FMFactoryManager.getFactory(featureModel) .createFeature(featureModel, "Base") .getStructure()); featureModel.getStructure().getRoot().changeToAlternative(); featureModel.getStructure().getRoot().setAbstract(true); for (IProject project : projects) featureModel .getStructure() .getRoot() .addChild( FMFactoryManager.getFactory(featureModel) .createFeature(featureModel, project.getName()) .getStructure()); return featureModel; }
private void initComboFeature() { container = sourceFolder != null ? sourceFolder.getFolder(comboFeature.getText()) : null; if (featureProject == null) { return; } comboFeature.removeAll(); for (String s : featureProject.getFeatureModel().getConcreteFeatureNames()) comboFeature.add(s); if (feature != null) { comboFeature.setText(feature); } else { if (comboFeature.getItemCount() > 0) comboFeature.select(0); } Object obj = selection.getFirstElement(); if (obj instanceof IResource) { IResource resource = (IResource) obj; boolean found = false; while (found == false && resource.getParent() != null) { if (resource.getParent().equals(sourceFolder)) { for (int i = 0; i < comboFeature.getItemCount(); i++) if (comboFeature.getItem(i).equals(resource.getName())) { comboFeature.select(i); found = true; break; } } resource = resource.getParent(); } } if (comboFeature.getItemCount() == 1 || !featureProject.getComposer().createFolderForFeatures()) { comboFeature.setEnabled(false); } else { comboFeature.setEnabled(true); } }
@Override protected void endAction() { for (IFeatureProject project : projectList) { final Path path = Paths.get(project.getProject().getFile("model.fg").getLocationURI()); final IRunner<IFeatureGraph> runner = LongRunningWrapper.getRunner( new FGBuilder(AdvancedNodeCreator.createSatInstance(project.getFeatureModel()))); runner.addJobFinishedListener( new JobFinishListener<IFeatureGraph>() { @Override public void jobFinished(IJob<IFeatureGraph> finishedJob) { FileHandler.save(path, finishedJob.getResults(), new FeatureGraphFormat()); } }); runner.schedule(); } projectList.clear(); }