package tela.editingSupport; import java.math.BigDecimal; import org.eclipse.jface.viewers.CellEditor; import org.eclipse.jface.viewers.EditingSupport; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TextCellEditor; import aplicacao.helper.FormatterHelper; import banco.modelo.ForneceProduto; import banco.modelo.ProdutoServico; public class ForneceProdutoEditingSupport extends EditingSupport{ private TableViewer viewer; public ForneceProdutoEditingSupport(TableViewer viewer) { super(viewer); this.viewer = viewer; } @Override protected CellEditor getCellEditor(Object element) { TextCellEditor textEditor = new TextCellEditor(viewer.getTable()); return textEditor; } @Override protected boolean canEdit(Object element) { return true; } @Override protected Object getValue(Object element) { ForneceProduto fp = (ForneceProduto)element; if(fp.getValorUnitario() != null) return FormatterHelper.getDecimalFormat().format(fp.getValorUnitario()); return ""; } @Override protected void setValue(Object element, Object value) { String valor = (String) value; if(!valor.isEmpty()){ try{ BigDecimal preco = new BigDecimal(valor.replace(".", "").replace(",", ".")); if(preco.compareTo(BigDecimal.ZERO) >= 0){ ForneceProduto fp = (ForneceProduto)element; fp.setValorUnitario(preco); calcularValores(fp); viewer.refresh(); } }catch(Exception e){} } } private void calcularValores(ForneceProduto forneceProd){ BigDecimal media = BigDecimal.ZERO; ProdutoServico ps = forneceProd.getProduto(); for(ForneceProduto fp : ps.getListaFornecedores()){ if(fp.getValorUnitario() != null){ media = media.add(fp.getValorUnitario()); } } if(ps.getListaFornecedores().size() != 0) media = media.divide(new BigDecimal(ps.getListaFornecedores().size())); else media = BigDecimal.ZERO; ps.setValorUnitario(media); } }