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

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

2 ответа

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

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

Вы можете поместить сообщение о состоянии в строке состояния в 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 в будущем, вам нужно будет снова внести эту модификацию!

Другие вопросы по тегам