Java tutorial
/* * Copyright 2007 Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package py.edu.uca.intercajas.client.menumail; import java.util.List; import org.fusesource.restygwt.client.Method; import org.fusesource.restygwt.client.MethodCallback; import org.fusesource.restygwt.client.TextCallback; import py.edu.uca.intercajas.client.AppUtils; import py.edu.uca.intercajas.client.BeneficiarioService; import py.edu.uca.intercajas.client.LoginService; import py.edu.uca.intercajas.client.UIErrorRestDialog; import py.edu.uca.intercajas.client.finiquito.UIConceder; import py.edu.uca.intercajas.client.finiquito.UIDenegar; import py.edu.uca.intercajas.client.mensaje.UIAnular; import py.edu.uca.intercajas.client.mensaje.UIAutorizar; import py.edu.uca.intercajas.client.tiemposervicio.TiempoServicioReconocidoEditorWorkFlow; import py.edu.uca.intercajas.shared.ConsultaEstadoMensaje; import py.edu.uca.intercajas.shared.ConsultaEstadoSolicitudBeneficiario; import py.edu.uca.intercajas.shared.entity.Adjunto; import py.edu.uca.intercajas.shared.entity.Destino; import py.edu.uca.intercajas.shared.entity.Mensaje; import py.edu.uca.intercajas.shared.entity.Solicitud; import py.edu.uca.intercajas.shared.entity.SolicitudBeneficiario; import py.edu.uca.intercajas.shared.entity.Usuario; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.safehtml.shared.SafeHtmlBuilder; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.DisclosurePanel; import com.google.gwt.user.client.ui.FlowPanel; import com.google.gwt.user.client.ui.HTML; import com.google.gwt.user.client.ui.HorizontalPanel; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.ResizeComposite; import com.google.gwt.user.client.ui.VerticalPanel; import com.google.gwt.user.client.ui.Widget; /** * A composite for displaying the details of an email message. */ public class MailDetail extends ResizeComposite { interface Binder extends UiBinder<Widget, MailDetail> { } private static final Binder binder = GWT.create(Binder.class); @UiField Label subject; @UiField Label sender; @UiField Label recipient; @UiField HTML body; @UiField HorizontalPanel panelAdjuntos; @UiField FlowPanel opciones; @UiField Anchor imprimirSolicitudDetalle; @UiField Anchor imprimirMensaje; Destino item; HorizontalPanel optionsButtons = new HorizontalPanel(); public MailDetail() { initWidget(binder.createAndBindUi(this)); initComponents(); // panelAdjuntos.getElement().getStyle().setPadding(20, Unit.PX); } public void initComponents() { imprimirSolicitudDetalle.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { BeneficiarioService.Util.get().reporteSolicitudDetalle(item.getMensaje().getSolicitud().getId(), new TextCallback() { @Override public void onSuccess(Method method, String response) { Window.open("servlet.gupld?show=" + "reports/" + response + "&nombreDescarga=solicitudDetalle.pdf", "_parent", ""); } @Override public void onFailure(Method method, Throwable exception) { Window.alert(exception.getMessage()); } }); } }); imprimirMensaje.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { BeneficiarioService.Util.get().reporteMensaje(item.getId(), new TextCallback() { @Override public void onSuccess(Method method, String response) { Window.open("servlet.gupld?show=" + "reports/" + response + "&nombreDescarga=mensaje.pdf", "_parent", ""); } @Override public void onFailure(Method method, Throwable exception) { Window.alert(exception.getMessage()); } }); } }); imprimirMensaje.setVisible(false); imprimirSolicitudDetalle.setVisible(false); } public void setItem(Destino item) { this.item = item; subject.setText(item.getMensaje().getReferencia()); if (item.getMensaje().getRemitente() == null) { sender.setText("SistemaIntercajas"); } else { sender.setText(item.getMensaje().getRemitente().getSiglas()); } //TODO falta recipient.setText(item.getDestinatario().getSiglas()); // WARNING: For the purposes of this demo, we're using HTML directly, on // the assumption that the "server" would have appropriately scrubbed the // HTML. Failure to do so would open your application to XSS attacks. //body.setHTML(item.body); acciones(item); //Obtenemos los adjuntos del mensaje BeneficiarioService.Util.get().adjuntoFindByMensajeId(item.getMensaje().getId(), new MethodCallback<List<Adjunto>>() { @Override public void onSuccess(Method method, List<Adjunto> response) { panelAdjuntos.clear(); for (Adjunto a : response) { panelAdjuntos.add(createDownloadLink(a.getTipo().toString(), a.getRutaArchivo(), a.getNombreArchivo())); } } @Override public void onFailure(Method method, Throwable exception) { new UIErrorRestDialog(method, exception); } }); //Actualizamos el cuerpo del mensaje if (item.getMensaje().getCuerpo() == null || item.getMensaje().getCuerpo().isEmpty()) { body.setHTML(""); } else { body.setHTML(new SafeHtmlBuilder().appendEscapedLines(item.getMensaje().getCuerpo()).toSafeHtml()); } //Aparecen los botones de impresion imprimirMensaje.setVisible(true); imprimirSolicitudDetalle.setVisible(true); } public Anchor createDownloadLink(final String tipo, final String rutaArchivo, final String nombreArchivo) { Anchor link = new Anchor(tipo); //// link.setStyleName(style.item()); // // // Add a click handler that displays a ContactPopup when it is clicked. link.addClickHandler(new ClickHandler() { public void onClick(ClickEvent event) { // final String url = GWT.getModuleBaseURL() + "servlet.gupld?show=" + nombreInternoArchivo; Window.open("servlet.gupld?show=" + rutaArchivo + nombreArchivo, "_blank", "status=0,toolbar=0,menubar=0,location=0"); } }); link.getElement().getStyle().setProperty("margin", "4px"); link.getElement().getStyle().setProperty("color", "blue"); return link; } public void acciones(final Destino item) { opciones.clear(); optionsButtons.clear(); final Solicitud s = item.getMensaje().getSolicitud(); //Para el gestor, con estadoDestino Nuevo if (LoginService.Util.currentUser.getTipo() == Usuario.Tipo.Gestor) { BeneficiarioService.Util.get().consultEstadoMensaje(item.getMensaje().getId(), new MethodCallback<ConsultaEstadoMensaje>() { @Override public void onSuccess(Method method, ConsultaEstadoMensaje response) { if (item.getMensaje().getAsunto() == Mensaje.Asunto.NuevaSolicitud && response.getEstadoRTS() == ConsultaEstadoMensaje.EstadoRTS.SIN_RTS) { Button rts = new Button("Reconocer Tiempo de Servicio"); rts.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { TiempoServicioReconocidoEditorWorkFlow b = new TiempoServicioReconocidoEditorWorkFlow( item); // b.titulo = "Reconocimiento de Tiempo de Servicio"; b.mostrarDialog(); } }); optionsButtons.add(rts); //} else if (response.getSolicitud().getEstado() == Solicitud.Estado.ConAntiguedad && response.getEstado() == CajaDeclarada.Estado.ConAntiguedad && response.getAutorizado() ) { } else if (item.getMensaje().getAsunto() == Mensaje.Asunto.NuevaSolicitud && response .getEstadoRTS() == ConsultaEstadoMensaje.EstadoRTS.CON_RTS_SIN_AUTORIZACION) { optionsButtons.add(new Label( "Con Reconocimiento de Tiempo de Servicio - Esperando autorizacion para envio")); } else if (item.getMensaje().getAsunto() == Mensaje.Asunto.TotalizacionTiempoServicio) { try { final VerticalPanel vp = new VerticalPanel(); HorizontalPanel hp = null; for (ConsultaEstadoSolicitudBeneficiario c : response .getListaConsultaEstadoSolicitudBeneficiario()) { final SolicitudBeneficiario sb = c.getSolicitudBeneficiario(); hp = new HorizontalPanel(); if (c.getEstado() == ConsultaEstadoSolicitudBeneficiario.Estado.Concedido && c.isAutorizado()) { hp.add(new Label(sb.getBeneficiario().toString() + " con beneficio concedido, no mas acciones diponibles")); } else if (c .getEstado() == ConsultaEstadoSolicitudBeneficiario.Estado.Denegado && c.isAutorizado()) { hp.add(new Label(sb.getBeneficiario().toString() + " con beneficio denegado, no mas acciones diponibles")); } else if (c .getEstado() == ConsultaEstadoSolicitudBeneficiario.Estado.Concedido && !c.isAutorizado()) { hp.add(new Label(sb.getBeneficiario().toString() + " en espera de autorizacion para conceder beneficio, no mas acciones diponibles")); } else if (c .getEstado() == ConsultaEstadoSolicitudBeneficiario.Estado.Denegado && !c.isAutorizado()) { hp.add(new Label(sb.getBeneficiario().toString() + " en espera de autorizacion para denegar beneficio, no mas acciones diponibles")); } else if (c .getEstado() == ConsultaEstadoSolicitudBeneficiario.Estado.Pendiente) { Anchor conceder = new Anchor("conceder"); conceder.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { UIConceder c = new UIConceder(sb, item); c.titulo = "Conceder beneficio a " + sb.getBeneficiario().toString(); c.mostrarDialog(); } }); Anchor denegar = new Anchor("denegar"); denegar.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { UIDenegar d = new UIDenegar(sb, item); d.titulo = "Denegar beneficio a " + sb.getBeneficiario().getNombres() + " " + sb.getBeneficiario().getApellidos(); d.mostrarDialog(); } }); conceder.getElement().getStyle().setProperty("margin", "4px"); conceder.getElement().getStyle().setProperty("color", "blue"); denegar.getElement().getStyle().setProperty("margin", "4px"); denegar.getElement().getStyle().setProperty("color", "blue"); hp.add(conceder); hp.add(new Label("o")); hp.add(denegar); hp.add(new Label(" el beneficio a " + sb.getBeneficiario().getNombres() + " " + sb.getBeneficiario().getApellidos())); } vp.add(hp); } optionsButtons.add(vp); } catch (Exception e) { Window.alert(e.getMessage()); } } else { optionsButtons.add(new Label("No hay acciones disponibles")); } } @Override public void onFailure(Method method, Throwable exception) { new UIErrorRestDialog(method, exception); } }); } else if (LoginService.Util.currentUser.getTipo() == Usuario.Tipo.Superior && item.getMensaje().getEstado() == Mensaje.Estado.Pendiente) { final HorizontalPanel hp = new HorizontalPanel(); final Anchor autorizar = new Anchor("autorizar y enviar"); autorizar.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { UIAutorizar uiautorizar = new UIAutorizar(item); uiautorizar.mostrarDialog(); } }); final Anchor anular = new Anchor("anular"); anular.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { UIAnular uianular = new UIAnular(item.getMensaje(), item); uianular.mostrarDialog(); } }); autorizar.getElement().getStyle().setProperty("margin", "4px"); autorizar.getElement().getStyle().setProperty("color", "blue"); anular.getElement().getStyle().setProperty("margin", "4px"); anular.getElement().getStyle().setProperty("color", "blue"); hp.add(autorizar); hp.add(new Label("o")); hp.add(anular); optionsButtons.add(hp); } else if (LoginService.Util.currentUser.getTipo() == Usuario.Tipo.Administrador) { final Anchor anular = new Anchor("anular solicitud"); anular.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { // UIAnular uianular = new UIAnular(item.getMensaje(), item); // uianular.mostrarDialog(); Window.alert("falta la UI de anular solicitud"); } }); anular.getElement().getStyle().setProperty("margin", "4px"); anular.getElement().getStyle().setProperty("color", "blue"); optionsButtons.add(anular); } else { optionsButtons.add(new Label("No hay acciones disponibles")); } // Add advanced options to form in a disclosure panel DisclosurePanel optionPanel = new DisclosurePanel("Acciones"); optionPanel.setAnimationEnabled(true); // optionPanel.ensureDebugId("cwDisclosurePanel"); optionPanel.setContent(optionsButtons); opciones.add(optionPanel); } public void clear() { subject.setText("--"); sender.setText("--"); recipient.setText("--"); body.setHTML(""); panelAdjuntos.clear(); optionsButtons.clear(); opciones.clear(); imprimirMensaje.setVisible(false); imprimirSolicitudDetalle.setVisible(false); } }