В предыдущей части мы рассмотрели создание плагина для 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. Нам подойдёт второй предложенный способ, так как третий устарел. Пишем код:
Самое время проверить работоспособность. Запускаем, вводим значения, нажимаем Ok, заходим заново и видим, что всё успешно сохраняется. Отлично, с сохранением и загрузкой разобрались, это было не сложно.
В прошлой части мы уже писали отправку кода в pastebin, поэтому классы PastebinRequest и PastebinSender у нас остались. Удаляем из PastebinRequest строчку append(«api_user_key», "") и добавляем методы:
Класс PastebinSender придётся немного переписать.
Теперь в классе PastebinAction в конец метода setupRequest добавим следующие строки:
Запускаем, вводим в настройках свои данные и пытаемся отправить код. Через несколько секунд появится окно со ссылкой. Видим, что отправитель кода уже не 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». Приводим код к такому виду:

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

Остаётся только создать NBM-модуль. Как это делать, я описывал в прошлой статье.
Мы научились создавать панель настроек для модуля, сохранять и восстанавливать настройки. Также мы улучшили клиент pastebin.com, добавив авторизацию.
Ссылка на полученный в этой части проект здесь
Также может быть полезной эта статья.
Окно настроек
Начнём сразу с создания вкладки в окне настроек. В «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». Приводим код к такому виду:

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

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