ADF 11g gerenciando Popup via ManagedBean

Uma das características do ADF 11g, é poder gerenciar um Popup, por um ManagedBean.
Crie um projeto no JDeveloper 11G
Como exemplo vou criar um projeto simples somente com um view, um bean e uma Página jsp.

Nesta Página insira um componente popup, dentro do popup insira um componente Dialog, para termos os botões ok e cancel por default.Set a propriedade  contentDelivery como lazy assim garantimos um “refresh” nos componentes.
Insira também um componente OutputText, para vermos as modificações.

JDeveloper com a Página do Popup

Agora criaremos um ManagedBean para a nossa aplicação, insira também um botão ou qualquer outro componente que gere um evento na página jsp. Defina sua propriedade PartialSubmit como true veja

image

Crie um Action para o botão e defina como corpo do método como abaixo

   1: public String actionChamaPopup() {

   2:     FacesContext context = FacesContext.getCurrentInstance();

   3:

   4:     StringBuilder script = new StringBuilder();

   5:     script.append("var popup = AdfPage.PAGE.findComponent('").append("popID").append("'); ").append("if (!popup.isPopupVisible()) { ").append("var hints = {}; \n" +

   6:             " hints[AdfRichPopup.HINT_ALIGN] = AdfRichPopup.ALIGN_AFTER_START;\n" +

   7:             " hints[AdfRichPopup.HINT_ALIGN_ID] = 'botaoID';\n ").append("popup.show(hints);}");

   8:     ExtendedRenderKitService erks =

   9:         Service.getService(context.getRenderKit(),

  10:                            ExtendedRenderKitService.class);

  11:     erks.addScript(context, script.toString());

  12:     setTexto("Exemplo");

  13:     return null;

  14: }

Neste método você descreve o script para chamar a popup,  define o alinhamento, e quem a popup deve pegar como base para se alinhar

Posições de alinhamento
ALIGN_AFTER_START
ALIGN_AFTER_END
ALIGN_BEFORE_START
ALIGN_BEFORE_END
ALIGN_END_AFTER
ALIGN_END_BEFORE
ALIGN_START_AFTER
ALIGN_START_BEFORE

Agora o projeto em execução

image

Abaixo está o fonte do projeto, divirta-se 😀

Download do projeto.