@Override
    public Object execute(ExecutionEvent event) throws ExecutionException {
        String objectType = event.getParameter(NavigatorCommands.PARAM_OBJECT_TYPE);
        boolean isFolder = CommonUtils.toBoolean(event.getParameter(NavigatorCommands.PARAM_OBJECT_TYPE_FOLDER));

        final ISelection selection = HandlerUtil.getCurrentSelection(event);

        if (selection.isEmpty()) {
            return null;
        }
        DBNNode node = getNodeFromSelection(selection);

        if (node != null) {
            Class<?> newObjectType = null;
            if (objectType != null) {
                if (node instanceof DBNDatabaseNode) {
                    newObjectType = ((DBNDatabaseNode) node).getMeta().getSource().getObjectClass(objectType);
                } else {
                    try {
                        newObjectType = Class.forName(objectType);
                    } catch (ClassNotFoundException e) {
                        log.error("Error detecting new object type " + objectType, e);
                    }
                }
            } else {
                // No explicit object type. Try to detect from selection
                IWorkbenchPart activePart = HandlerUtil.getActivePart(event);
                if (activePart != null) {
                    final ParameterizedCommand[] commands = fillCreateMenuItems(activePart.getSite(), node).stream()
                        .filter(item -> item instanceof CommandContributionItem)
                        .map(item -> (CommandContributionItem) item)
                        .map(CommandContributionItem::getCommand)
                        .filter(Objects::nonNull)
                        .filter(command -> command.getId().contains(".create")) // All create commands allowed
                        .toArray(ParameterizedCommand[]::new);

                    if (commands.length == 1) {
                        ActionUtils.runCommand(commands[0].getId(), selection, commands[0].getParameterMap(), activePart.getSite());
                        return null;
                    } else if (commands.length > 1) {
                        showPopupMenu(event, node);
                        return null;
                    }
                }
            }
            createNewObject(HandlerUtil.getActiveWorkbenchWindow(event), node, newObjectType, null, isFolder);
        }
        return null;
    }
Sorry, this is a bit over-complicated handler. Historical reasons.
It can create object of specified type (in parameters) or for current selection.
Dynamic menu "Create" fills elements with parameters. Direct contribution of create command will create nearest
object type according to navigator selection.
plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/navigator/actions/NavigatorHandlerObjectCreateNew.java