public DialogListaPontoEncontro( final InfoCaronaServerAsync controller, final String idSessao, final String idCarona) { novosPontos = ""; listaNovosPontosEncontros = new ArrayList<InfoPontoEncontro>(); this.idCarona = idCarona; this.controller = controller; setText("Pontos de Encontro - ID: " + idCarona); setAnimationEnabled(true); setGlassEnabled(true); center(); VerticalPanel panelListaPontoEncontro = new VerticalPanel(); tabelaPontoEncontro = new CellTable<InfoPontoEncontro>(); tabelaPontoEncontro.setWidth("400px"); dataProvider = new ListDataProvider<InfoPontoEncontro>(); SimplePager.Resources pagerResources = GWT.create(SimplePager.Resources.class); SimplePager pager = new SimplePager(TextLocation.CENTER, pagerResources, false, 0, true); pager.setDisplay(tabelaPontoEncontro); pager.setPageSize(5); TextColumn<InfoPontoEncontro> colunaIdPontoEncontro = new TextColumn<InfoPontoEncontro>() { @Override public String getValue(InfoPontoEncontro pontoEncontro) { return pontoEncontro.getIdPontoEncontro(); } }; TextColumn<InfoPontoEncontro> colunaPontosEncontro = new TextColumn<InfoPontoEncontro>() { @Override public String getValue(InfoPontoEncontro pontoEncontro) { return pontoEncontro.getPontoEncontro(); } }; tabelaPontoEncontro.addColumn(colunaPontosEncontro, "Pontos de Encontro"); listaPontoEncontros = new ArrayList<InfoPontoEncontro>(); populaTabela(); HorizontalPanel hPanel01 = new HorizontalPanel(); final TextBox boxNovoPontoEncontro = new TextBox(); boxNovoPontoEncontro.setWidth("200px"); boxNovoPontoEncontro.setStyleName("boxModificada"); Button buttonAdicionarOutroPontoEncontro = new Button(); buttonAdicionarOutroPontoEncontro.setStyleName("botaoModificado"); buttonAdicionarOutroPontoEncontro.setTitle("Adicionar Sugestão"); buttonAdicionarOutroPontoEncontro.addClickHandler( new ClickHandler() { @Override public void onClick(ClickEvent event) { if (boxNovoPontoEncontro.getText().trim().equals("")) { DialogMensagemUsuario dialogErro = new DialogMensagemUsuario("Falhou", "Ponto de Encontro Inválido"); dialogErro.show(); } else { novosPontos += boxNovoPontoEncontro.getText().trim() + ";"; InfoPontoEncontro novoPontoEncontro = new InfoPontoEncontro("00", boxNovoPontoEncontro.getText().trim()); boxNovoPontoEncontro.setText(""); listaNovosPontosEncontros.add(novoPontoEncontro); listaPontoEncontros = new ArrayList<InfoPontoEncontro>(); for (InfoPontoEncontro novoPonto : listaNovosPontosEncontros) { listaPontoEncontros.add(novoPonto); } populaTabela(); } } }); Image imageFiltro = new Image("imagens/adicionar.png"); imageFiltro.setSize("15px", "15px"); buttonAdicionarOutroPontoEncontro.getElement().appendChild(imageFiltro.getElement()); Button buttonSalvarNovosPontos = new Button("Salvar"); buttonSalvarNovosPontos.setStyleName("botaoModificado"); buttonSalvarNovosPontos.addClickHandler( new ClickHandler() { @Override public void onClick(ClickEvent event) { controller.cadastrarNovosPontosEncontro( idSessao, idCarona, novosPontos, new AsyncCallback<String>() { @Override public void onFailure(Throwable caught) { DialogMensagemUsuario dialogSucess = new DialogMensagemUsuario("Erro", caught.getMessage()); dialogSucess.show(); } @Override public void onSuccess(String result) { DialogMensagemUsuario dialogSucess = new DialogMensagemUsuario( "ID: " + result, "Pontos de Encontro Cadastrados com Sucesso!"); dialogSucess.show(); hide(); } }); } }); Button buttonFechar = new Button("Fechar"); buttonFechar.setStyleName("botaoModificado"); buttonFechar.addClickHandler( new ClickHandler() { @Override public void onClick(ClickEvent event) { hide(); } }); colunaPontosEncontro.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_LEFT); hPanel01.setCellVerticalAlignment(boxNovoPontoEncontro, HasVerticalAlignment.ALIGN_BOTTOM); hPanel01.setCellVerticalAlignment(buttonSalvarNovosPontos, HasVerticalAlignment.ALIGN_TOP); hPanel01.setCellVerticalAlignment( buttonAdicionarOutroPontoEncontro, HasVerticalAlignment.ALIGN_TOP); hPanel01.setCellVerticalAlignment(buttonFechar, HasVerticalAlignment.ALIGN_TOP); hPanel01.setCellHorizontalAlignment(boxNovoPontoEncontro, HasHorizontalAlignment.ALIGN_CENTER); hPanel01.setCellHorizontalAlignment( buttonSalvarNovosPontos, HasHorizontalAlignment.ALIGN_CENTER); hPanel01.setCellHorizontalAlignment( buttonAdicionarOutroPontoEncontro, HasHorizontalAlignment.ALIGN_CENTER); hPanel01.setCellHorizontalAlignment(buttonFechar, HasHorizontalAlignment.ALIGN_CENTER); hPanel01.setWidth("100%"); hPanel01.setSpacing(6); hPanel01.add(boxNovoPontoEncontro); hPanel01.add(buttonAdicionarOutroPontoEncontro); hPanel01.add(buttonSalvarNovosPontos); hPanel01.add(buttonFechar); panelListaPontoEncontro.add(tabelaPontoEncontro); panelListaPontoEncontro.add(pager); panelListaPontoEncontro.add(hPanel01); panelListaPontoEncontro.setCellVerticalAlignment( tabelaPontoEncontro, HasVerticalAlignment.ALIGN_MIDDLE); panelListaPontoEncontro.setCellVerticalAlignment(pager, HasVerticalAlignment.ALIGN_MIDDLE); panelListaPontoEncontro.setCellHorizontalAlignment( tabelaPontoEncontro, HasHorizontalAlignment.ALIGN_CENTER); panelListaPontoEncontro.setCellHorizontalAlignment(pager, HasHorizontalAlignment.ALIGN_CENTER); panelListaPontoEncontro.setSpacing(8); setWidget(panelListaPontoEncontro); }
@SuppressWarnings("unchecked") public Widget asWidget() { ProvidesKey<ModelNode> providesKey = node -> node.get("operation-date").asString(); table = new DefaultCellTable<>(20, providesKey); dataProvider = new ListDataProvider<>(providesKey); dataProvider.addDataDisplay(table); // the date / time column table.addColumn( new TextColumn<ModelNode>() { @Override public String getValue(ModelNode item) { // the operation-date is 2016-07-08T22:39:50.783Z // there is some format to facilitate user experience // by replacing the T with a blank space String opTimestamp = item.get("operation-date").asString(); opTimestamp = opTimestamp.replaceFirst("T", " "); return opTimestamp; } }, "Date and time"); // access-mechanism column TextColumn<ModelNode> accessMechanismColumn = createColumn("access-mechanism"); accessMechanismColumn.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER); table.addColumn(accessMechanismColumn, "Access Mechanism"); // remote address column TextColumn<ModelNode> remoteAddressColumn = new TextColumn<ModelNode>() { @Override public String getValue(ModelNode item) { // the remote address is 10.10.10.10/10.10.10.10 // to facilitate user experience we cut at at first slash String clientAddress = item.get("remote-address").asString(); clientAddress = clientAddress.substring(0, clientAddress.indexOf("/")); return clientAddress; } }; remoteAddressColumn.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER); table.addColumn(remoteAddressColumn, "Remote address"); // the resource address TextColumn<ModelNode> resourceColumn = new TextColumn<ModelNode>() { @Override public String getValue(ModelNode item) { return StringUtils.shortenStringIfNecessary(extractResourceAddress(item), 63); } }; table.addColumn(resourceColumn, "Resource address"); table.setColumnWidth(resourceColumn, 50, Style.Unit.PCT); // operation column table.addColumn( new TextColumn<ModelNode>() { @Override public String getValue(ModelNode item) { return item.get(OPERATIONS).get(0).get(OP).asString(); } }, "Operation"); // result column table.addColumn(createColumn(OUTCOME), "Result"); table.setTableLayoutFixed(false); // the details panel selectionModel = new SingleSelectionModel<>(providesKey); selectionModel.addSelectionChangeHandler( event -> { ModelNode changeDetails = selectionModel.getSelectedObject(); if (changeDetails != null) { detailsConfigurationChange.setValue(changeDetails.toString()); } }); table.setSelectionModel(selectionModel); detailsConfigurationChange = new TextAreaItem("details", "Details 1", 20); detailsConfigurationChange.setEnabled(false); HorizontalPanel header = new HorizontalPanel(); header.addStyleName("fill-layout-width"); header.add(new HTML("<h3 class='metric-label-embedded'>Configuration change details</h3>")); VerticalPanel detailsPanel = new VerticalPanel(); detailsPanel.addStyleName("metric-container"); detailsPanel.add(header); detailsPanel.add(detailsConfigurationChange.asWidget()); // ====================== DefaultPager pager = new DefaultPager(); pager.setDisplay(table); VerticalPanel tableAndPager = new VerticalPanel(); tableAndPager.setStyleName("fill-layout-width"); tableAndPager.add(table); tableAndPager.add(pager); SimpleLayout layout = new SimpleLayout() .setPlain(true) .setHeadline("Configuration Changes") .setDescription( SafeHtmlUtils.fromString(Console.MESSAGES.configuration_changes_description())) .addContent("", toolstripButtons()) .addContent("", tableAndPager) .addContent("", detailsPanel); return layout.build(); }