private static boolean supportsCreatingColumnObject(@Nullable DBNNode node, @NotNull Class<?> supertype) {
        if (!DBWorkbench.getPlatform().getWorkspace().hasRealmPermission(RMConstants.PERMISSION_METADATA_EDITOR)) {
            return false;
        }
        if (!(node instanceof DBNDatabaseItem databaseItem)) {
            return false;
        }
        DBSObject attributeObject = databaseItem.getObject();
        if (!(attributeObject instanceof DBSEntityAttribute entityAttribute)) {
            return false;
        }
        DBPDataSource dataSource = entityAttribute.getDataSource();
        if (dataSource == null || dataSource.getInfo().isReadOnlyMetaData()) {
            return false;
        }
        DBSEntity entityObject = entityAttribute.getParentObject();
        DBEStructEditor<?> structEditor = DBWorkbench.getPlatform().getEditorsRegistry().getObjectManager(entityObject.getClass(), DBEStructEditor.class);
        if (structEditor == null) {
            return false;
        }
        for (Class<?> childType: structEditor.getChildTypes()) {
            DBEObjectMaker<?, ?> maker = DBWorkbench.getPlatform().getEditorsRegistry().getObjectManager(childType, DBEObjectMaker.class);
            if (maker != null && maker.canCreateObject(entityObject) && supertype.isAssignableFrom(childType)) {
                return true;
            }
        }
        return false;
    }
Check whether the owner project of the specified node has required permissions
plugins/org.jkiss.dbeaver.ui.navigator/src/org/jkiss/dbeaver/ui/actions/ObjectPropertyTester.java