Изменить строку состояния окна ADempiere

Как изменить текст строки состояния в окне ADempiere, чтобы отображалось сообщение при создании новой записи?

Кроме того, как я могу создать всплывающее окно, которое появляется при создании новой записи?


person Davide Ruggeri    schedule 07.10.2014    source источник


Ответы (2)


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

На Idempiere вы можете проверить код класса AbstractADWindowContent.java в пакете org.adempiere.ui.zk, проверьте эту ссылку, строка 2104

person Arthur Melo    schedule 02.03.2015

Вы можете поместить сообщение о состоянии в строку состояния в Adempiere, используя следующий метод в org.compiere.model.GridTable

/**
 *  Create and fire Data Status Info Event
 *  @param AD_Message message
 *  @param info additional info
 */
protected void fireDataStatusIEvent (String AD_Message, String info)
{
    DataStatusEvent e = createDSE();
    e.setInfo(AD_Message, info, false,false);
    fireDataStatusChanged (e);
}

Вы найдете пример его использования в том же классе, когда строка сохраняется с помощью метода dataSave(boolean). Если все пойдет по плану и запись будет сохранена, в конце метода вы увидите

fireDataStatusIEvent("Saved", "");

Это помещает сообщение «Сохранено» по умолчанию в приложение, когда вы нажимаете «Сохранить» на любой вкладке.

Существует два рекомендуемых подхода к настройке Adempiere.

  1. Выноски; используются для добавления сложной настройки по умолчанию и проверки в пользовательском интерфейсе
  2. Валидаторы моделей; используются для применения бизнес-логики или проверки, когда происходит ряд событий модели данных, таких как сохранение записи. Но не все изменения происходят во время событий пользовательского интерфейса... как, например, в модуле учета, поэтому механизмы проверки модели предполагают, что пользовательский интерфейс не существует.

Ваше требование, чтобы что-то происходило в пользовательском интерфейсе, когда происходит событие модели данных, находится между ними. Для вашего требования может быть проще просто изменить это сообщение по умолчанию (выделено выше в dataSave()), чтобы отображать то, что вы хотите. Но GridTable лежит в основе приложения, поэтому имейте в виду, что каждый раз, когда вы будете обновлять/обновлять Adempiere в будущем, вам придется снова вносить эту модификацию!

person Colin Rooney    schedule 09.10.2015