Selector selector;
Condition condition;
+ private float[] color;
+
static Logger LOG = LoggerFactory.getLogger(ElementSelector.class);
static ElementSelectionResource ES;
try {
this.name = graph.getRelatedValue(resource, L0.HasLabel);
this.expression = getExpression(graph, resource);
+
+ float[] color = graph.getPossibleRelatedValue(resource, ES.Selection_HasHighlightColor);
+ this.color = color;
} catch (DatabaseException e) {
LOG.error("Error reading element selector", e);
throw e;
public Condition getCondition() {
return condition;
}
+
+ /**
+ * Get the selection highlight color as a four element BGRA array.
+ */
+ public float[] getColor() {
+ return color;
+ }
/**
*
return Simantics.getSession().syncRequest(new Read<Map<Resource, String>>() {
@Override
public Map<Resource, String> perform(ReadGraph graph) throws DatabaseException {
+ Layer0 L0 = Layer0.getInstance(graph);
+ StructuralResource2 STR = StructuralResource2.getInstance(graph);
+ DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph);
+ ModelingResources MOD = ModelingResources.getInstance(graph);
+
Map<Resource, String> result = new HashMap<>();
Resource model = graph.syncRequest(new PossibleActiveModel(Simantics.getProjectResource()));
- List<Resource> composites = QueryIndexUtils.searchByType(graph, model, StructuralResource2.getInstance(graph).Composite);
+ List<Resource> composites = QueryIndexUtils.searchByType(graph, model, STR.Composite);
for (Resource r : composites) {
// Get diagram
- Resource diagram = graph.getPossibleObject(r, ModelingResources.getInstance(graph).CompositeToDiagram);
- if (diagram == null) continue;
+ Resource diagram = graph.getPossibleObject(r, MOD.CompositeToDiagram);
+ if (diagram == null || !graph.isInstanceOf(diagram, DN.Diagram))
+ continue;
// Filter out user component diagrams
- Resource parent = graph.getPossibleObject(r, Layer0.getInstance(graph).PartOf);
- if (parent == null || graph.isInheritedFrom(parent, StructuralResource2.getInstance(graph).Component))
+ Resource parent = graph.getPossibleObject(r, L0.PartOf);
+ if (parent == null || graph.isInheritedFrom(parent, STR.Component))
continue;
- result.put(r, graph.getRelatedValue(r, Layer0.getInstance(graph).HasName));
+ result.put(r, graph.getRelatedValue(r, L0.HasName));
}
return result;
// Select sorting direction
Comparator<Pair<Resource, Double>> comparator = smallest ?
(p1, p2) -> Double.compare(p1.second, p2.second) :
- (p1, p2) -> Double.compare(p1.second, p2.second);
+ (p1, p2) -> Double.compare(p2.second, p1.second);
// Get association list to property values
List<Pair<Resource, Double>> result2 = elements.stream()
Condition(ReadGraph graph, Resource r) throws DatabaseException {
this(r);
+ ElementSelectionResource ES = ElementSelectionResource.getInstance(graph);
isInverse = graph.hasStatement(r, ES.Condition_IsInverse, r);
}
public abstract boolean match(ReadGraph graph, Resource r) throws DatabaseException;
public Resource update(WriteGraph graph) throws DatabaseException {
+ ElementSelectionResource ES = ElementSelectionResource.getInstance(graph);
+
assert(resource != null);
if (isInverse)
graph.claim(resource, ES.Condition_IsInverse, resource);
public PropertyCondition(ReadGraph graph, Resource r) throws DatabaseException {
super(graph, r);
+ ElementSelectionResource ES = ElementSelectionResource.getInstance(graph);
this.propertyName = graph.getRelatedValue(resource, ES.PropertyCondition_HasPropertyName);
this.lowerLimit = graph.getPossibleRelatedValue(resource, ES.PropertyCondition_HasLowerLimit);
this.upperLimit = graph.getPossibleRelatedValue(resource, ES.PropertyCondition_HasUpperLimit);
public RegionCondition(ReadGraph graph, Resource r) throws DatabaseException {
super(graph, r);
+ ElementSelectionResource ES = ElementSelectionResource.getInstance(graph);
DiagramRegionsResource DR = DiagramRegionsResource.getInstance(graph);
this.regionResource = graph.getPossibleObject(resource, ES.RegionCondition_HasRegion);
this.region = regionResource != null ? graph.getRelatedValue(regionResource, DR.Region_area) : null;
@Override
public Resource update(WriteGraph graph) throws DatabaseException {
- ElementSelectionResource ES = ElementSelectionResource.getInstance(graph);
Layer0 L0 = Layer0.getInstance(graph);
+ ElementSelectionResource ES = ElementSelectionResource.getInstance(graph);
+ DiagramRegionsResource DR = DiagramRegionsResource.getInstance(graph);
if (resource == null) {
resource = graph.newResource();
graph.claim(resource, ES.RegionCondition_HasRegion, regionResource);
// Re-read region data to match DB
- DiagramRegionsResource DR = DiagramRegionsResource.getInstance(graph);
this.region = regionResource != null ? graph.getRelatedValue(regionResource, DR.Region_area, Bindings.DOUBLE_ARRAY) : null;
this.path = createPathForRegion(region);
@Override
public Resource update(WriteGraph graph) throws DatabaseException {
- ElementSelectionResource ES = ElementSelectionResource.getInstance(graph);
Layer0 L0 = Layer0.getInstance(graph);
+ ElementSelectionResource ES = ElementSelectionResource.getInstance(graph);
if (resource == null) {
resource = graph.newResource();