public static List<IContributionItem> fillCreateMenuItems(@Nullable IWorkbenchPartSite site, @Nullable DBNNode node) {
        List<IContributionItem> createActions = new ArrayList<>();
        boolean projectResourceEditable =
            node == null || ObjectPropertyTester.nodeProjectHasPermission(node, RMConstants.PERMISSION_PROJECT_RESOURCE_EDIT);
        boolean projectConnectionEditable =
            node == null || ObjectPropertyTester.nodeProjectHasPermission(node, RMConstants.PERMISSION_PROJECT_DATASOURCES_EDIT);

        if ((node instanceof DBNLocalFolder || node instanceof DBNProjectDatabases) && projectConnectionEditable) {
            IContributionItem item = makeCreateContributionItem(
                site, DBPDataSourceContainer.class.getName(), ModelMessages.model_navigator_Connection, UIIcon.SQL_NEW_CONNECTION, false);
            createActions.add(item);
        }
        if (node instanceof DBNDatabaseNode) {
            addDatabaseNodeCreateItems(site, createActions, (DBNDatabaseNode) node);
        }

        if ((node instanceof DBNLocalFolder || node instanceof DBNProjectDatabases || node instanceof DBNDataSource)
            && projectConnectionEditable
        ) {
            createActions.add(makeCommandContributionItem(site, NavigatorCommands.CMD_CREATE_LOCAL_FOLDER));
        } else {
            final DBPWorkspaceDesktop workspace = DBPPlatformDesktop.getInstance().getWorkspace();
            final IResource resource = GeneralUtils.adapt(node, IResource.class);
            if (resource != null) {
                if (resource instanceof IProject && !DBWorkbench.isDistributed()) {
                    createActions.add(makeCommandContributionItem(site, NavigatorCommands.CMD_CREATE_PROJECT));
                }
                DBPResourceHandler handler = workspace.getResourceHandler(resource);
                if (handler instanceof DBPResourceCreator
                    && (handler.getFeatures(resource) & DBPResourceCreator.FEATURE_CREATE_FILE) != 0 && projectResourceEditable
                ) {
                    createActions.add(makeCommandContributionItem(site, NavigatorCommands.CMD_CREATE_RESOURCE_FILE));
                }
                if (handler != null
                    && (handler.getFeatures(resource) & DBPResourceHandler.FEATURE_CREATE_FOLDER) != 0 && projectResourceEditable
                ) {
                    createActions.add(makeCommandContributionItem(site, NavigatorCommands.CMD_CREATE_RESOURCE_FOLDER));
                }
                if (resource instanceof IContainer && !(resource instanceof DBFFileStoreProvider) && projectResourceEditable && !DBWorkbench.isDistributed()) {
                    createActions.add(makeCommandContributionItem(site, NavigatorCommands.CMD_CREATE_FILE_LINK));
                    createActions.add(makeCommandContributionItem(site, NavigatorCommands.CMD_CREATE_FOLDER_LINK));
                }
            }
        }

        if (site != null) {
            if (!createActions.isEmpty() && !(createActions.get(createActions.size() - 1) instanceof Separator)) {
                createActions.add(new Separator());
            }
            createActions.add(ActionUtils.makeCommandContribution(
                site, IWorkbenchCommandConstants.FILE_NEW, UINavigatorMessages.navigator_handler_object_create_file_other_text, null
            ));
        }
        return createActions;
    }
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