import org.simantics.db.exception.ValidationException;
import org.simantics.db.layer0.SelectionHints;
import org.simantics.db.procedure.Procedure;
+import org.simantics.db.request.Read;
import org.simantics.district.network.ontology.DistrictNetworkResource;
import org.simantics.district.network.ui.function.Functions;
import org.simantics.district.network.ui.internal.Activator;
@CanExecute
public boolean canExecute(@Named(IServiceConstants.ACTIVE_SELECTION) ISelection selection) {
-// List<Resource> elements = ISelectionUtils.getPossibleKeys(selection, SelectionHints.KEY_MAIN, Resource.class);
-// if (elements.size() < 1)
-// return false;
-// try {
-// return Simantics.getSession().syncRequest(new Read<Boolean>() {
-//
-// @Override
-// public Boolean perform(ReadGraph graph) throws DatabaseException {
-// Layer0 L0 = Layer0.getInstance(graph);
-// Resource instanceOf = null;
-// for (Resource element : elements) {
-// if (instanceOf == null) {
-// instanceOf = graph.getSingleObject(element, L0.InstanceOf);
-// } else {
-// Resource currentInstanceOf = graph.getSingleObject(element, L0.InstanceOf);
-// if (!currentInstanceOf.equals(instanceOf)) {
-// return false;
-// }
-// }
-// }
-// return true;
-// }
-// });
-// } catch (DatabaseException e) {
-// e.printStackTrace();
-// return false;
-// }
- return true;
+ List<Resource> elements = ISelectionUtils.getPossibleKeys(selection, SelectionHints.KEY_MAIN, Resource.class);
+ if (elements.size() < 1)
+ return false;
+ try {
+ return Simantics.getSession().syncRequest(new Read<Boolean>() {
+
+ @Override
+ public Boolean perform(ReadGraph graph) throws DatabaseException {
+ DistrictNetworkResource DN = DistrictNetworkResource.getInstance(graph);
+ for (Resource selection : elements) {
+ if (!graph.isInstanceOf(selection, DN.Element)) {
+ return false;
+ }
+ }
+ return true;
+ }
+ });
+ } catch (DatabaseException e) {
+ LOGGER.error("Could not evaluate if mapping can be changed for selection {}", elements, e);
+ return false;
+ }
}
-
+
@Execute
public void execute(@Named(IServiceConstants.ACTIVE_SELECTION) Object selection) {
final List<Resource> elements = ISelectionUtils.getPossibleKeys(selection, SelectionHints.KEY_MAIN, Resource.class);