package org.codemap.resources; import java.util.Collection; import java.util.List; import org.codemap.CodemapCore; import org.codemap.Configuration; import org.codemap.DigitalElevationModel; import org.codemap.HillShading; import org.codemap.Labeling; import org.codemap.MapInstance; import org.codemap.MapSelection; import org.codemap.tasks.ComputeBackgroundTask; import org.codemap.tasks.ComputeConfigurationTask; import org.codemap.tasks.ComputeEclipseIndexTask; import org.codemap.tasks.ComputeElementsTask; import org.codemap.tasks.ComputeElevationModelTask; import org.codemap.tasks.ComputeHillShadingTask; import org.codemap.tasks.ComputeLabelingTask; import org.codemap.tasks.ComputeMapInstanceTask; import org.codemap.tasks.MapSelectionsValue; import org.codemap.util.MColor; import org.codemap.util.MapScheme; import org.eclipse.swt.graphics.Image; import ch.akuhn.hapax.index.LatentSemanticIndex; import ch.akuhn.values.CollectionValue; import ch.akuhn.values.IntegerValue; import ch.akuhn.values.ReferenceValue; import ch.akuhn.values.Value; import ch.akuhn.values.Values; public class MapValueBuilder { private Configuration initialConfiguration; private Value<Collection<String>> projects; private Value<Collection<String>> fileExtensions; private String name; public Value<Collection<String>> projectsValue() { if (projects == null) projects = Values.of(null); return projects; } /** * represents the file extensions that will be processed. */ public Value<Collection<String>> extensionsValue() { if (fileExtensions == null) fileExtensions = Values.of(null); return fileExtensions; } public MapValueBuilder setInitialConfiguration(Configuration initialConfiguration) { this.initialConfiguration = initialConfiguration; return this; } public IntegerValue mapSizeValue() { return new IntegerValue(512); } public Value<Image> backgroundValue(Value<MapInstance> mapInstance, Value<DigitalElevationModel> elevationModel, Value<HillShading> shading, Value<MapScheme<MColor>> colors) { return new ComputeBackgroundTask(mapInstance, elevationModel, shading, colors); } public Value<Collection<String>> elementsValue() { return new ComputeElementsTask(projectsValue(), extensionsValue()); } public Value<MapScheme<Boolean>> hillsValue() { return new ReferenceValue<MapScheme<Boolean>>(); } public Value<MapScheme<MColor>> colorsValue() { ReferenceValue<MapScheme<MColor>> colorsValue = new ReferenceValue<MapScheme<MColor>>(); return colorsValue; } public Value<MapScheme<String>> labelsValue() { ReferenceValue<MapScheme<String>> labelsValue = new ReferenceValue<MapScheme<String>>(); return labelsValue; } public Value<LatentSemanticIndex> indexValue(Value<Collection<String>> elements) { return new ComputeEclipseIndexTask(elements); } public Value<Configuration> configurationValue(Value<LatentSemanticIndex> index) { return new ComputeConfigurationTask(index).initialConfiguration(initialConfiguration); } public Value<MapInstance> mapInstanceValue(Value<Integer> mapSize, Value<LatentSemanticIndex> index, Value<Configuration> configuration) { return new ComputeMapInstanceTask(mapSize, index, configuration); } public Value<DigitalElevationModel> elevationModelValue(Value<MapInstance> mapInstance, Value<MapScheme<Boolean>> hills) { return new ComputeElevationModelTask(mapInstance, hills); } public Value<HillShading> hillShadingValue(Value<MapInstance> mapInstance, Value<DigitalElevationModel> elevationModel) { return new ComputeHillShadingTask(mapInstance, elevationModel); } public Value<Labeling> labelingValue(Value<MapInstance> mapInstance, Value<MapScheme<String>> labels) { return new ComputeLabelingTask(mapInstance, labels); } public MapSelection currentSelectionValue() { // TODO remove dependents when disposing a MapValues instance! return CodemapCore.getPlugin().getCurrentSelection(); } public MapSelection openFilesSelectionValue() { // TODO remove dependents when disposing a MapValues instance! return CodemapCore.getPlugin().getOpenFilesSelection(); } public MapSelection youAreHereSelection() { // TODO remove dependents when disposing a MapValues instance! return CodemapCore.getPlugin().getYouAreHereSelection(); } public MapValueBuilder setName(String string) { this.name = string; return this; } public String getName() { return name; } public MapValueBuilder setProjects(Collection<String> projects) { projectsValue().setValue(projects); return this; } public CollectionValue<MapSelection> selectionsValue(MapSelection... selections) { MapSelectionsValue value = new MapSelectionsValue(); for(MapSelection each: selections) { value.add(each); } return value; } public MapValueBuilder setFileExtensions(List<String> extensions) { extensionsValue().setValue(extensions); return this; } }