]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network.ui/src/org/simantics/district/network/ui/techtype/table/TechTypeTableView.java
Add enable/disable feature for tech type tables
[simantics/district.git] / org.simantics.district.network.ui / src / org / simantics / district / network / ui / techtype / table / TechTypeTableView.java
index cdb502c3c5a870ddc887f240a8c6c185173d055d..d66c9a8caa05be2a1d4630fedb24d9a68525e1e9 100644 (file)
@@ -1,6 +1,8 @@
 package org.simantics.district.network.ui.techtype.table;
 
 
+import java.util.List;
+
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
 import javax.inject.Inject;
@@ -11,11 +13,22 @@ import org.eclipse.e4.ui.model.application.ui.basic.MPart;
 import org.eclipse.e4.ui.model.application.ui.menu.MHandledToolItem;
 import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
 import org.eclipse.e4.ui.model.application.ui.menu.MToolBar;
+import org.eclipse.e4.ui.model.application.ui.menu.MToolBarElement;
 import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
 import org.eclipse.swt.widgets.Composite;
+import org.simantics.db.Resource;
+import org.simantics.db.common.NamedResource;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.district.network.DistrictNetworkUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class TechTypeTableView {
 
+       private final static Logger LOGGER = LoggerFactory.getLogger(TechTypeTableView.class);
+
+       public static final String ID = "org.simantics.district.network.ui.techtype.table.techtypeTableView";
+
        @Inject ESelectionService selectionService;
 
        public static TechTypeTable table;
@@ -25,9 +38,21 @@ public class TechTypeTableView {
                MToolBar toolBar = MMenuFactory.INSTANCE.createToolBar();
                toolBar.setToBeRendered(true);
                toolBar.getChildren().add(createImportCSVDataToolItem(app));
+               toolBar.getChildren().add(createValidateTableToolItem(app));
+               toolBar.getChildren().add(createResetComponentsItem(app));
                part.setToolbar(toolBar);
        }
 
+       private MHandledToolItem createValidateTableToolItem(MApplication app) {
+               MHandledToolItem createHandledToolItem = MMenuFactory.INSTANCE.createHandledToolItem();
+               // Command is contributed via fragment
+               MCommand command = app.getCommand("org.simantics.district.network.ui.command.validatetechtypetable");
+               createHandledToolItem.setCommand(command); //$NON-NLS-1$
+               createHandledToolItem.setLabel("Validate Tech Type Table");
+               createHandledToolItem.setIconURI("platform:/plugin/com.famfamfam.silk/icons/accept.png"); //$NON-NLS-1$
+               return createHandledToolItem;
+       }
+
        private MHandledToolItem createImportCSVDataToolItem(MApplication app) {
                MHandledToolItem createHandledToolItem = MMenuFactory.INSTANCE.createHandledToolItem();
                // Command is contributed via fragment
@@ -38,12 +63,35 @@ public class TechTypeTableView {
                return createHandledToolItem;
        }
 
+       private MToolBarElement createResetComponentsItem(MApplication app) {
+               MHandledToolItem createHandledToolItem = MMenuFactory.INSTANCE.createHandledToolItem();
+               // Command is contributed via fragment
+               MCommand command = app.getCommand("org.simantics.district.network.ui.command.resetcomponentproperties");
+               createHandledToolItem.setCommand(command); //$NON-NLS-1$
+               createHandledToolItem.setLabel("Reset Component Properties");
+               createHandledToolItem.setIconURI("platform:/plugin/com.famfamfam.silk/icons/database_go.png"); //$NON-NLS-1$
+               return createHandledToolItem;
+       }
+
        @PostConstruct
        public void postConstruct(Composite parent) {
-               table = new TechTypeTable(parent, 0);
-               
+               Resource pipe = null;
+               try {
+                       List<NamedResource> componentTypes = DistrictNetworkUtil.getDistrictComponents();
+
+                       pipe = componentTypes.stream()
+                                       .filter(r -> r.getName().toLowerCase().contains("pipe"))
+                                       .map(r -> r.getResource())
+                                       .findFirst().orElse(null);
+               } catch (DatabaseException e) {
+                       LOGGER.error("Failed to read district component types for active model", e);
+               }
+
+               LOGGER.debug("Pipe component type is {}", pipe);
+
+               table = new TechTypeTable(parent, 0, pipe);
        }
-       
+
        @PreDestroy
        public void dispose() {
                table.dispose();