All Downloads are FREE. Search and download functionalities are using the official Maven repository.

bot.keyboard.InlineKeyboardMarkupBuilder Maven / Gradle / Ivy

There is a newer version: 3.5.0
Show newest version
package bot.keyboard;

import bot.exception.EmptyKeyboardException;
import com.google.common.collect.Lists;
import org.telegram.telegrambots.api.objects.replykeyboard.InlineKeyboardMarkup;
import org.telegram.telegrambots.api.objects.replykeyboard.buttons.InlineKeyboardButton;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * Created by Luca Mosetti on 2017
 * 

* It builds InlineKeyboardMarkup * Each InlineKeyboardButton has a "label" and a Query */ public class InlineKeyboardMarkupBuilder { /** * Each row of the ReplyKeyboardMarkup can have between 1 and 7 buttons */ private final static int MAX_COLUMNS = 7; private int columns = 5; private InlineKeyboardMarkup inlineKeyboardMarkup = new InlineKeyboardMarkup(); private List> keyboardRows = new ArrayList<>(); public InlineKeyboardMarkupBuilder setColumns(int columns) { this.columns = columns > MAX_COLUMNS ? MAX_COLUMNS : columns < 1 ? 1 : columns; return this; } public InlineKeyboardMarkupBuilder addSeparateRowsKeyboardButtons(List> entryButtons) { List>> rows = Lists.partition(entryButtons, columns); for (List> row : rows) { List keyboardRow = new ArrayList<>(); for (Map.Entry entry : row) { InlineKeyboardButton button = new InlineKeyboardButton(); button.setText(entry.getKey()); button.setCallbackData(entry.getValue()); keyboardRow.add(button); } keyboardRows.add(keyboardRow); } return this; } public InlineKeyboardMarkupBuilder addFullRowUrlInlineButton(String text, String url) { List keyboardRow = new ArrayList<>(); InlineKeyboardButton button = new InlineKeyboardButton(); button.setText(text); button.setUrl(url); keyboardRow.add(button); keyboardRows.add(keyboardRow); return this; } public InlineKeyboardMarkupBuilder addFullRowInlineButton(String text, String callbackData) { List keyboardRow = new ArrayList<>(); InlineKeyboardButton button = new InlineKeyboardButton(); button.setText(text); button.setCallbackData(callbackData); keyboardRow.add(button); keyboardRows.add(keyboardRow); return this; } public InlineKeyboardMarkupBuilder addFullRowSwitchInlineButton(String text, String callbackData) { List keyboardRow = new ArrayList<>(); InlineKeyboardButton button = new InlineKeyboardButton(); button.setText(text); button.setSwitchInlineQuery(callbackData); keyboardRow.add(button); keyboardRows.add(keyboardRow); return this; } public InlineKeyboardMarkup build() throws EmptyKeyboardException { if (keyboardRows.isEmpty()) throw new EmptyKeyboardException(); InlineKeyboardMarkup tmp = inlineKeyboardMarkup.setKeyboard(keyboardRows); clear(); return tmp; } private void clear() { columns = 5; inlineKeyboardMarkup = new InlineKeyboardMarkup(); keyboardRows = new ArrayList<>(); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy