From: Tuukka Lehtonen Date: Tue, 20 Nov 2018 09:02:32 +0000 (+0000) Subject: Merge "Fire selection change events on every selection change" X-Git-Tag: v1.43.0~136^2~260 X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=commitdiff_plain;h=9cfc6c61008c1b6b278bac6c8585df478dddf55f;hp=a8ee105b0825fcefc76b9aa967b275f418308df7 Merge "Fire selection change events on every selection change" --- diff --git a/bundles/org.simantics.modeling/src/org/simantics/modeling/SCLScenegraph.java b/bundles/org.simantics.modeling/src/org/simantics/modeling/SCLScenegraph.java index ef2fb5d66..d3fd1cca9 100644 --- a/bundles/org.simantics.modeling/src/org/simantics/modeling/SCLScenegraph.java +++ b/bundles/org.simantics.modeling/src/org/simantics/modeling/SCLScenegraph.java @@ -93,9 +93,16 @@ public class SCLScenegraph { private static final String MAIN_SECTION = "main"; private static final String SELECTION_SECTION = "selection"; private static final String SELECTION_MASK_SECTION = "selectionMask"; - + private static final String[] ALL_SECTIONS = { MAIN_SECTION, SELECTION_SECTION, SELECTION_MASK_SECTION }; + // Changed from 0.001 to 0.0001 to prevent creation of huge BufferedImage's when + // generating PDF from SVG. If SVG contains any transparency then Batik uses + // bitmap-rendering which remarkably slows things down + // See org.apache.batik.gvt.AbstractGraphicsNode.paint(Graphics2D) where decisions are made + // if AlphaComposite should be painted + private static final String OPACITY = "0.0001"; + @Deprecated public static ICanvasSceneGraphProvider getICanvasSceneGraphProvider(Resource model, Resource diagram, String diagramRVI) throws DatabaseException, InterruptedException { ICanvasSceneGraphProvider provider = DiagramNodeUtil.loadSceneGraphProvider(model, diagram, diagramRVI); @@ -793,7 +800,7 @@ public class SCLScenegraph { String key = getKey((ConnectionNode) node); parentBuilder.append(MAIN_SECTION, "\n"); parentBuilder.append(SELECTION_SECTION, "\n"); - parentBuilder.append(SELECTION_MASK_SECTION, "\n"); + parentBuilder.append(SELECTION_MASK_SECTION, "\n"); Element doc = renderSVGNode(svgGenerator, (IG2DNode)node); String svg = printSVGDocument(doc); @@ -841,7 +848,7 @@ public class SCLScenegraph { Rectangle2D rect = n.getRect(); // NaN if(rect.getHeight() == rect.getHeight() && rect.getWidth() == rect.getWidth()) { - parentBuilder2.append(SELECTION_MASK_SECTION,""); diff --git a/bundles/org.simantics.scl.runtime/src/org/simantics/scl/runtime/utils/AsyncUtils.java b/bundles/org.simantics.scl.runtime/src/org/simantics/scl/runtime/utils/AsyncUtils.java index fcab99c20..d771a821e 100644 --- a/bundles/org.simantics.scl.runtime/src/org/simantics/scl/runtime/utils/AsyncUtils.java +++ b/bundles/org.simantics.scl.runtime/src/org/simantics/scl/runtime/utils/AsyncUtils.java @@ -2,7 +2,6 @@ package org.simantics.scl.runtime.utils; import java.io.PrintWriter; import java.io.StringWriter; -import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.concurrent.Callable; @@ -55,7 +54,7 @@ public class AsyncUtils { @SuppressWarnings({ "rawtypes", "unchecked" }) public static List pmap(Function f, List l) { - return Arrays.asList(l.parallelStream().map(a -> f.apply(a)).toArray()); + return l.parallelStream().map(f::apply).collect(Collectors.toList()); } @SuppressWarnings({ "rawtypes", "unchecked" }) diff --git a/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetGraphUtils.java b/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetGraphUtils.java index 297ac9dc9..032acfcfc 100644 --- a/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetGraphUtils.java +++ b/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetGraphUtils.java @@ -38,7 +38,7 @@ import org.simantics.spreadsheet.Range; import org.simantics.spreadsheet.graph.synchronization.SpreadsheetSynchronizationEventHandler; import org.simantics.spreadsheet.resource.SpreadsheetResource; import org.simantics.spreadsheet.util.SpreadsheetUtils; -import org.simantics.structural.synchronization.Synchronizer; +import org.simantics.structural.synchronization.client.Synchronizer; import gnu.trove.iterator.TObjectIntIterator; import gnu.trove.map.hash.TObjectIntHashMap; diff --git a/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetSessionManager.java b/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetSessionManager.java index f50463ef0..ec8935f28 100644 --- a/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetSessionManager.java +++ b/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/SpreadsheetSessionManager.java @@ -23,7 +23,7 @@ import org.simantics.simulator.toolkit.db.StandardVariableSessionManager; import org.simantics.spreadsheet.graph.formula.SpreadsheetEvaluationEnvironment; import org.simantics.spreadsheet.graph.synchronization.SpreadsheetSynchronizationEventHandler; import org.simantics.spreadsheet.resource.SpreadsheetResource; -import org.simantics.structural.synchronization.Synchronizer; +import org.simantics.structural.synchronization.client.Synchronizer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/synchronization/LineUpdater.java b/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/synchronization/LineUpdater.java index baa0851b2..18f0bfbc5 100644 --- a/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/synchronization/LineUpdater.java +++ b/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/synchronization/LineUpdater.java @@ -10,7 +10,6 @@ import org.simantics.structural.synchronization.base.CommandBuilder; import org.simantics.structural.synchronization.base.ModuleUpdateContext; import org.simantics.structural.synchronization.base.ModuleUpdaterBase; import org.simantics.structural.synchronization.base.PropertyUpdateRule; -import org.simantics.structural.synchronization.utils.Solver; public class LineUpdater extends ModuleUpdaterBase { diff --git a/bundles/org.simantics.structural.synchronization.client/META-INF/MANIFEST.MF b/bundles/org.simantics.structural.synchronization.client/META-INF/MANIFEST.MF index 6fe0a79e0..ba77d3e37 100644 --- a/bundles/org.simantics.structural.synchronization.client/META-INF/MANIFEST.MF +++ b/bundles/org.simantics.structural.synchronization.client/META-INF/MANIFEST.MF @@ -13,6 +13,5 @@ Require-Bundle: org.simantics.databoard;bundle-version="0.6.5", org.simantics.datatypes.ontology;bundle-version="1.1.0", org.simantics.structural.synchronization;bundle-version="1.0.0";visibility:=reexport, org.slf4j.api -Export-Package: org.simantics.structural.synchronization, - org.simantics.structural.synchronization.base +Export-Package: org.simantics.structural.synchronization.client Automatic-Module-Name: org.simantics.structural.synchronization.client diff --git a/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/ContinuousSynchronizationJob.java b/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/client/ContinuousSynchronizationJob.java similarity index 97% rename from bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/ContinuousSynchronizationJob.java rename to bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/client/ContinuousSynchronizationJob.java index 4b4edd7c4..47e9fa004 100644 --- a/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/ContinuousSynchronizationJob.java +++ b/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/client/ContinuousSynchronizationJob.java @@ -1,4 +1,4 @@ -package org.simantics.structural.synchronization; +package org.simantics.structural.synchronization.client; import java.util.concurrent.ConcurrentMap; diff --git a/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/StructuralChangeFlattener.java b/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/client/StructuralChangeFlattener.java similarity index 99% rename from bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/StructuralChangeFlattener.java rename to bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/client/StructuralChangeFlattener.java index 2809c5836..4503a82ea 100644 --- a/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/StructuralChangeFlattener.java +++ b/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/client/StructuralChangeFlattener.java @@ -1,4 +1,4 @@ -package org.simantics.structural.synchronization; +package org.simantics.structural.synchronization.client; import gnu.trove.map.hash.THashMap; import gnu.trove.map.hash.TObjectIntHashMap; diff --git a/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/Synchronizer.java b/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/client/Synchronizer.java similarity index 99% rename from bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/Synchronizer.java rename to bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/client/Synchronizer.java index 9c7428416..b2b4ea2ec 100644 --- a/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/Synchronizer.java +++ b/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/client/Synchronizer.java @@ -1,4 +1,4 @@ -package org.simantics.structural.synchronization; +package org.simantics.structural.synchronization.client; import gnu.trove.map.hash.TObjectIntHashMap; import gnu.trove.set.hash.THashSet; diff --git a/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/UpdateComponentUids.java b/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/client/UpdateComponentUids.java similarity index 98% rename from bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/UpdateComponentUids.java rename to bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/client/UpdateComponentUids.java index df63ada05..7209a19d6 100644 --- a/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/UpdateComponentUids.java +++ b/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/client/UpdateComponentUids.java @@ -1,4 +1,4 @@ -package org.simantics.structural.synchronization.base; +package org.simantics.structural.synchronization.client; import org.eclipse.core.runtime.IProgressMonitor; import org.simantics.db.ReadGraph; diff --git a/bundles/org.simantics.structural.synchronization/META-INF/MANIFEST.MF b/bundles/org.simantics.structural.synchronization/META-INF/MANIFEST.MF index 63d4a6832..5cf82d1f1 100644 --- a/bundles/org.simantics.structural.synchronization/META-INF/MANIFEST.MF +++ b/bundles/org.simantics.structural.synchronization/META-INF/MANIFEST.MF @@ -4,7 +4,7 @@ Bundle-Name: Synchronization Bundle-SymbolicName: org.simantics.structural.synchronization;singleton:=true Bundle-Version: 1.0.0.qualifier Bundle-RequiredExecutionEnvironment: JavaSE-1.8 -Export-Package: org.simantics.structural.synchronization.base2, +Export-Package: org.simantics.structural.synchronization.base, org.simantics.structural.synchronization.protocol, org.simantics.structural.synchronization.utils Require-Bundle: org.simantics.databoard;bundle-version="0.6.5", diff --git a/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/CommandBuilder.java b/bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/CommandBuilder.java similarity index 100% rename from bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/CommandBuilder.java rename to bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/CommandBuilder.java diff --git a/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/ConnectionUpdateRule.java b/bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/ConnectionUpdateRule.java similarity index 100% rename from bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/ConnectionUpdateRule.java rename to bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/ConnectionUpdateRule.java diff --git a/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/ModuleCallback.java b/bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/ModuleCallback.java similarity index 100% rename from bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/ModuleCallback.java rename to bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/ModuleCallback.java diff --git a/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/ModuleUpdateContext.java b/bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/ModuleUpdateContext.java similarity index 100% rename from bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/ModuleUpdateContext.java rename to bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/ModuleUpdateContext.java index 854a22d23..a4dea1ab2 100644 --- a/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/ModuleUpdateContext.java +++ b/bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/ModuleUpdateContext.java @@ -1,13 +1,13 @@ package org.simantics.structural.synchronization.base; -import gnu.trove.map.hash.THashMap; - import java.util.ArrayList; import org.simantics.databoard.binding.mutable.Variant; import org.simantics.structural.synchronization.utils.ComponentBase; import org.simantics.structural.synchronization.utils.Solver; +import gnu.trove.map.hash.THashMap; + public class ModuleUpdateContext> { private ModuleUpdaterBase updater; diff --git a/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/ModuleUpdaterBase.java b/bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/ModuleUpdaterBase.java similarity index 100% rename from bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/ModuleUpdaterBase.java rename to bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/ModuleUpdaterBase.java index 45ea7400f..f7a20768f 100644 --- a/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/ModuleUpdaterBase.java +++ b/bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/ModuleUpdaterBase.java @@ -1,7 +1,5 @@ package org.simantics.structural.synchronization.base; -import gnu.trove.map.hash.THashMap; - import java.util.Collection; import java.util.Collections; import java.util.Map; @@ -11,6 +9,8 @@ import org.simantics.structural.synchronization.protocol.Connection; import org.simantics.structural.synchronization.protocol.SerializedVariable; import org.simantics.structural.synchronization.utils.ComponentBase; +import gnu.trove.map.hash.THashMap; + abstract public class ModuleUpdaterBase> { public String moduleType; diff --git a/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/ModuleUpdaterFactoryBase.java b/bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/ModuleUpdaterFactoryBase.java similarity index 78% rename from bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/ModuleUpdaterFactoryBase.java rename to bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/ModuleUpdaterFactoryBase.java index f30527e3d..e384e1a2d 100644 --- a/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/ModuleUpdaterFactoryBase.java +++ b/bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/ModuleUpdaterFactoryBase.java @@ -1,11 +1,9 @@ package org.simantics.structural.synchronization.base; -import org.simantics.db.exception.DatabaseException; import org.simantics.structural.synchronization.utils.ComponentBase; - public interface ModuleUpdaterFactoryBase> { - public ModuleUpdaterBase createUpdater(String id) throws DatabaseException; + public ModuleUpdaterBase createUpdater(String id) throws Exception; } diff --git a/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/PropertyUpdateRule.java b/bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/PropertyUpdateRule.java similarity index 100% rename from bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/PropertyUpdateRule.java rename to bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/PropertyUpdateRule.java diff --git a/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/ReferenceResolverBase.java b/bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/ReferenceResolverBase.java similarity index 100% rename from bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/ReferenceResolverBase.java rename to bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/ReferenceResolverBase.java index 33b5d9bdc..83ff7d72e 100644 --- a/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/ReferenceResolverBase.java +++ b/bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/ReferenceResolverBase.java @@ -1,8 +1,5 @@ package org.simantics.structural.synchronization.base; -import gnu.trove.map.hash.THashMap; -import gnu.trove.procedure.TObjectObjectProcedure; - import java.util.ArrayList; import java.util.Collections; @@ -12,6 +9,9 @@ import org.simantics.structural.synchronization.utils.ComponentBase; import org.simantics.structural.synchronization.utils.Solver; import org.slf4j.Logger; +import gnu.trove.map.hash.THashMap; +import gnu.trove.procedure.TObjectObjectProcedure; + abstract public class ReferenceResolverBase> { protected SynchronizationEventHandler eventHandler; diff --git a/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/SolverNameUtil.java b/bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/SolverNameUtil.java similarity index 100% rename from bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/SolverNameUtil.java rename to bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/SolverNameUtil.java diff --git a/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/SynchronizationEventHandlerBase.java b/bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/SynchronizationEventHandlerBase.java similarity index 99% rename from bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/SynchronizationEventHandlerBase.java rename to bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/SynchronizationEventHandlerBase.java index 7be353a02..a6efeefb2 100644 --- a/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/base/SynchronizationEventHandlerBase.java +++ b/bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base/SynchronizationEventHandlerBase.java @@ -8,7 +8,6 @@ import java.util.Queue; import org.simantics.databoard.Bindings; import org.simantics.databoard.adapter.AdaptException; -import org.simantics.db.exception.DatabaseException; import org.simantics.structural.synchronization.internal.Policy; import org.simantics.structural.synchronization.protocol.ChildInfo; import org.simantics.structural.synchronization.protocol.Connection; @@ -379,7 +378,7 @@ public abstract class SynchronizationEventHandlerBase ModuleUpdaterBase updater; try { updater = moduleUpdaterFactory.createUpdater(id); - } catch (DatabaseException e) { + } catch (Exception e) { throw new RuntimeException(e); } if(updater == null) diff --git a/bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/internal/Policy.java b/bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/internal/Policy.java similarity index 100% rename from bundles/org.simantics.structural.synchronization.client/src/org/simantics/structural/synchronization/internal/Policy.java rename to bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/internal/Policy.java diff --git a/bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base2/AbstractSynchronizationEventHandler.java b/bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/protocol/AbstractSynchronizationEventHandler.java similarity index 96% rename from bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base2/AbstractSynchronizationEventHandler.java rename to bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/protocol/AbstractSynchronizationEventHandler.java index 8dc051a7a..58bbbf0b3 100644 --- a/bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/base2/AbstractSynchronizationEventHandler.java +++ b/bundles/org.simantics.structural.synchronization/src/org/simantics/structural/synchronization/protocol/AbstractSynchronizationEventHandler.java @@ -1,4 +1,4 @@ -package org.simantics.structural.synchronization.base2; +package org.simantics.structural.synchronization.protocol; import gnu.trove.map.hash.THashMap; import gnu.trove.set.hash.THashSet; @@ -8,11 +8,6 @@ import java.util.Collection; import java.util.Map; import org.simantics.databoard.util.URIStringUtils; -import org.simantics.structural.synchronization.protocol.ChildInfo; -import org.simantics.structural.synchronization.protocol.Connection; -import org.simantics.structural.synchronization.protocol.SerializedVariable; -import org.simantics.structural.synchronization.protocol.SynchronizationEventHandler; -import org.simantics.structural.synchronization.protocol.SynchronizationException; /** *

A partial implementation of SynchronizationEventHandler that contains all generic