package org.simantics.district.network.ui.techtype.table; import java.util.Set; import javax.inject.Named; import org.eclipse.e4.core.di.annotations.CanExecute; import org.eclipse.e4.core.di.annotations.Execute; import org.eclipse.e4.ui.services.IServiceConstants; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.swt.widgets.Shell; import org.simantics.db.Resource; import org.simantics.db.exception.DatabaseException; import org.simantics.district.network.techtype.TechTypeValidationUtils; import org.simantics.utils.ui.ExceptionUtils; public class ValidateTechTypeTableHandler { @CanExecute public boolean canExecute() { return TechTypeTableView.table != null && TechTypeTableView.table.getCurrentTable() != null && TechTypeTableView.table.getComponentType() != null; } @Execute public void execute(@Named(IServiceConstants.ACTIVE_SHELL) Shell s) { Resource table = TechTypeTableView.table.getCurrentTable(); if (table == null) return; Set result; try { result = TechTypeValidationUtils.validateTechTypeTable(table); } catch (DatabaseException e) { ExceptionUtils.logAndShowError("Tech type table validation failed", e); return; } TechTypeTableView.table.setValidationResult(result); MessageDialog.openInformation(s, "Validation result", result.isEmpty() ? "No invalid values found" : result.size() + " invalid values found"); } }