Пишем плагин для Netbeans. Часть вторая

в 12:56, , рубрики: java, netbeans, netbeans platform, pastebin, plugin, разработка, метки: , , ,

В предыдущей части мы рассмотрели создание плагина для Pastebin, а также научились создавать действия для модулей и связывать их с определённой командой в меню. В этой статье мы расширим функционал плагина, добавив авторизацию и окно настроек.

Окно настроек

Начнём сразу с создания вкладки в окне настроек. В «New->Other->Module Development» выбираем «Options Panel» и нажимаем «Next >».
Создание вкладки в настройках

Нам предлагают выбрать создание первичной или вторичной панели в настройках. Первичная нам ни к чему, нас вполне устроит место в панели «Miscellaneous», ведь так? Выбираем «Create Secondary Panel», в поле «Primary Panel» ставим «Advanced», указываем заголовок и ключевые слова, например «Pastebin».
Настройки вторичной панели

На следующем шаге проконтролируйте, чтобы правильно был указан «Package», а «Class Name Prefix» оставьте по умолчанию. Нажимаем «Finish» и получаем сгенерированный класс PastebinOptionsPanelController и форму PastebinPanel. Уже можно запустить модуль на проверку.
Вид вкладки в настройках

Как видно, вкладка создалась там, где надо, но она пока еще пустая. Давайте исправлять ситуацию.
Для успешной авторизации в pastebin нам потребуется логин и пароль. Перетягиваем в PastebinPanel JTextField и JPasswordField и располагаем поудобнее, назвав их loginTextField и passwordField.
Расположение компонент
Окно настроек мы создали.

Сохранение и восстановление настроек

Открыв код класса PastebinPanel можно легко догадаться, что методы store() / load() отвечают за сохранение и восстановление настроек. Netbeans даже нам показывает три возможных варианта совершения действий в закомментированных строчках. Первый вариант, это сохранение/загрузка посредством Preferences API, второй и третий — при помощи Netbeans Platform. Нам подойдёт второй предложенный способ, так как третий устарел. Пишем код:

public static final String LOGIN_KEY = "PastebinLogin", PASSWORD_KEY = "PastebinPassword";

void load() {
    loginTextField.setText(NbPreferences.forModule(PastebinPanel.class).get(LOGIN_KEY, ""));
    passwordField.setText(NbPreferences.forModule(PastebinPanel.class).get(PASSWORD_KEY, ""));
}

void store() {
    NbPreferences.forModule(PastebinPanel.class).put(LOGIN_KEY, loginTextField.getText());
    NbPreferences.forModule(PastebinPanel.class).put(PASSWORD_KEY, String.valueOf(passwordField.getPassword()));
}

Самое время проверить работоспособность. Запускаем, вводим значения, нажимаем Ok, заходим заново и видим, что всё успешно сохраняется. Отлично, с сохранением и загрузкой разобрались, это было не сложно.

Pastebin авторизация

В прошлой части мы уже писали отправку кода в pastebin, поэтому классы PastebinRequest и PastebinSender у нас остались. Удаляем из PastebinRequest строчку append(«api_user_key», "") и добавляем методы:

public void setUserKey(String key) {
    append("api_user_key", key.trim());
}

public String getUserKeyRequest(String user, String pass) {
    StringBuilder request = new StringBuilder();
    request.append("api_dev_key=").append(API_DEV_KEY);
    request.append("&api_user_name=").append(encode(user));
    request.append("&api_user_password=").append(encode(pass));
    return request.toString();
}

Класс PastebinSender придётся немного переписать.
Теперь в классе PastebinAction в конец метода setupRequest добавим следующие строки:

String user = NbPreferences.forModule(PastebinPanel.class).get(PastebinPanel.LOGIN_KEY, "");
String pass = NbPreferences.forModule(PastebinPanel.class).get(PastebinPanel.PASSWORD_KEY, "");
String userKey = PastebinSender.getUserKey(request.getUserKeyRequest(user, pass));
request.setUserKey(userKey);

Запускаем, вводим в настройках свои данные и пытаемся отправить код. Через несколько секунд появится окно со ссылкой. Видим, что отправитель кода уже не Guest, а мы. Ура, мы добились своего!

Локализация

Как и в прошлой статье, мы не будем останавливаться на английской версии плагина, поэтому добавим к нему и русский язык. Если в прошлый раз вы это не забыли сделать, то сейчас у вас должно быть два файла: Bundle.properties и Bundle_ru_RU.properties. Открыв первый файл, можно увидеть, что туда автоматически добавились строки:
PastebinPanel.jLabel1.text=Login:
PastebinPanel.loginTextField.text=
PastebinPanel.jLabel2.text=Password:
PastebinPanel.passwordField.text=

Вторая и последняя строки нам не нужны, поэтому удаляем их. Также нужно будет убрать привязку удалённых строчек к компонентам PastebinPanel. Открываем этот класс в Design режиме, выделяем loginTextField и в контекстном меню выбираем «Customize Code». Приводим код к такому виду:
Customize code

Аналогично следует поступить и с passwordField.
Теперь в Bundle_ru_RU.properties добавим строки:
PastebinPanel.jLabel1.text=Логин:
PastebinPanel.jLabel2.text=Пароль:

Запускаем, смотрим результат.
Результат

Остаётся только создать NBM-модуль. Как это делать, я описывал в прошлой статье.

Итоги

Мы научились создавать панель настроек для модуля, сохранять и восстанавливать настройки. Также мы улучшили клиент pastebin.com, добавив авторизацию.
Ссылка на полученный в этой части проект здесь

Также может быть полезной эта статья.

Автор: aNNiMON

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js