Изменить строку состояния окна 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.
- выноски; используются для добавления сложных значений по умолчанию и проверки в пользовательском интерфейсе
- Модельные валидаторы; используются для применения бизнес-логики или проверки при возникновении ряда событий модели данных, таких как сохраняемая запись. Но не все изменения происходят в то время, когда происходят события пользовательского интерфейса... как, например, с модулем учета, поэтому механизмы проверки модели предполагают, что пользовательский интерфейс не существует.
Ваше требование, чтобы что-то происходило в пользовательском интерфейсе, когда происходит событие модели данных, находится между ними. По вашему требованию может быть проще всего изменить это сообщение по умолчанию (выделено выше в dataSave()
) для отображения того, что вы хотели бы. Но GridTable
лежит в основе приложения, поэтому имейте в виду, что каждый раз, когда вы обновляете / обновляете Adempiere в будущем, вам нужно будет снова внести эту модификацию!