package tela.editor;
import static aplicacao.helper.MessageHelper.openInformation;
import static aplicacao.helper.MessageHelper.openQuestion;
import static aplicacao.helper.ValidatorHelper.validar;
import java.util.List;
import org.apache.log4j.Logger;
import org.eclipse.core.databinding.DataBindingContext;
import org.eclipse.core.databinding.beans.PojoObservables;
import org.eclipse.core.databinding.observable.Realm;
import org.eclipse.core.databinding.observable.list.IObservableList;
import org.eclipse.core.databinding.observable.list.WritableList;
import org.eclipse.core.databinding.observable.map.IObservableMap;
import org.eclipse.core.databinding.observable.value.IObservableValue;
import org.eclipse.jface.databinding.swt.SWTObservables;
import org.eclipse.jface.databinding.viewers.ObservableListContentProvider;
import org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider;
import org.eclipse.jface.databinding.viewers.ViewersObservables;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.ComboViewer;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.FocusAdapter;
import org.eclipse.swt.events.FocusEvent;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.PartInitException;
import org.eclipse.wb.swt.ResourceManager;
import tela.componentes.MecasoftText;
import tela.dialog.SelecionarItemDialog;
import tela.editingSupport.ForneceProdutoEditingSupport;
import tela.editor.editorInput.PessoaEditorInput;
import tela.editor.editorInput.VeiculoEditorInput;
import aplicacao.exception.ValidationException;
import aplicacao.helper.FormatterHelper;
import aplicacao.helper.LayoutHelper;
import aplicacao.helper.UsuarioHelper;
import aplicacao.service.CepService;
import aplicacao.service.MecasoftService;
import aplicacao.service.PessoaService;
import aplicacao.service.ProdutoServicoService;
import aplicacao.service.TipoFuncionarioService;
import banco.modelo.Cep;
import banco.modelo.ForneceProduto;
import banco.modelo.ProdutoServico;
import banco.modelo.TipoFuncionario;
import banco.modelo.Veiculo;
public class PessoaEditor extends MecasoftEditor {
public static final String ID = "tela.editor.PessoaEditor"; //$NON-NLS-1$
private Logger log = Logger.getLogger(getClass());
private Text txtNomeFantasia;
private Text txtRazaoSocial;
private Text txtEmail;
private Text txtCidade;
private Text txtBairro;
private Text txtRua;
private Text txtComplemento;
private Table tableVeiculos;
private Table tableProdutos;
private Button btnAdicionarVeiculo;
private Button btnDesativarVeiculo;
private Button btnAdicionarProduto;
private Button btnRemoverProduto;
private ComboViewer cvCargo;
private Button btnFuncionrio;
private Button btnAtivo;
private Button btnCliente;
private Button btnFornecedor;
private TableViewer tvVeiculo;
private TableViewer tvProduto;
private Combo cbCargo;
private MecasoftText txtCpfCnpj;
private MecasoftText txtRgInscrEst;
private MecasoftText txtCartNum;
private MecasoftText txtSerie;
private MecasoftText txtSalario;
private MecasoftText txtFoneFax;
private MecasoftText txtCelular;
private MecasoftText txtCep;
private MecasoftText txtNumero;
private PessoaService service = new PessoaService();
private TipoFuncionarioService tipoFuncionarioService = new TipoFuncionarioService();
private ProdutoServicoService produtoService = new ProdutoServicoService();
private List<TipoFuncionario> tiposFuncionarios;
public PessoaEditor() {
tiposFuncionarios = tipoFuncionarioService.findAll();
}
@Override
public void addComponentes(Composite compositeConteudo) {
compositeConteudo.setLayout(new GridLayout(7, false));
Label lblNomeFantasia = new Label(compositeConteudo, SWT.NONE);
lblNomeFantasia.setText("Nome fantasia:");
txtNomeFantasia = new Text(compositeConteudo, SWT.BORDER);
txtNomeFantasia.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 5, 1));
btnAtivo = new Button(compositeConteudo, SWT.CHECK);
btnAtivo.setText("Ativo");
//verifica se a pessoa � definida como representante da empresa
//caso seja, o botao de ativo � desativado para que a pessoa n�o possa ser desativada
if(UsuarioHelper.getConfiguracaoPadrao() != null)
if(UsuarioHelper.getConfiguracaoPadrao().getRepresentanteEmpresa() != null)
if(UsuarioHelper.getConfiguracaoPadrao().getRepresentanteEmpresa().equals(service.getPessoa()))
btnAtivo.setEnabled(false);
Label lblTipo = new Label(compositeConteudo, SWT.NONE);
lblTipo.setText("Tipo:");
btnCliente = new Button(compositeConteudo, SWT.CHECK);
btnCliente.setText("Cliente");
btnFornecedor = new Button(compositeConteudo, SWT.CHECK);
btnFornecedor.setText("Fornecedor");
btnFuncionrio = new Button(compositeConteudo, SWT.CHECK);
btnFuncionrio.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));
btnFuncionrio.setText("Funcion\u00E1rio");
new Label(compositeConteudo, SWT.NONE);
new Label(compositeConteudo, SWT.NONE);
Label lblRazoSocial = new Label(compositeConteudo, SWT.NONE);
lblRazoSocial.setText("Raz\u00E3o social:");
txtRazaoSocial = new Text(compositeConteudo, SWT.BORDER);
txtRazaoSocial.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 6, 1));
Label lblCpfcnpj = new Label(compositeConteudo, SWT.NONE);
lblCpfcnpj.setText("CPF/CNPJ:");
txtCpfCnpj = new MecasoftText(compositeConteudo, SWT.NONE);
txtCpfCnpj.text.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
if(txtCpfCnpj.getText().length() > 14 && txtCpfCnpj.getCaracteres().equals(FormatterHelper.MECASOFTTXTCPF))
txtCpfCnpj.addChars(FormatterHelper.MECASOFTTXTCNPJ, new Integer[]{2, 5, 8, 12}, null, null);
else if(txtCpfCnpj.getText().length() <= 14 && txtCpfCnpj.getCaracteres().equals(FormatterHelper.MECASOFTTXTCNPJ))
txtCpfCnpj.addChars(FormatterHelper.MECASOFTTXTCPF, new Integer[]{3, 6, 9}, null, null);
}
});
txtCpfCnpj.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 6, 1));
txtCpfCnpj.setOptions(MecasoftText.NUMEROS, 18);
txtCpfCnpj.addChars(FormatterHelper.MECASOFTTXTCPF, new Integer[]{3, 6, 9}, null, null);
Label lblRginscricaoEst = new Label(compositeConteudo, SWT.NONE);
lblRginscricaoEst.setText("RG/Inscri\u00E7\u00E3o Est:");
txtRgInscrEst = new MecasoftText(compositeConteudo, SWT.NONE);
txtRgInscrEst.text.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
if(txtRgInscrEst.getText().length() > 11 && txtRgInscrEst.getCaracteres().equals(FormatterHelper.MECASOFTTXTRG))
txtRgInscrEst.addChars(FormatterHelper.MECASOFTTXTINSCRICAOESTADUAL, new Integer[]{3, 6, 9}, null, null);
else if(txtRgInscrEst.getText().length() <= 11 && txtRgInscrEst.getCaracteres().equals(FormatterHelper.MECASOFTTXTINSCRICAOESTADUAL))
txtRgInscrEst.addChars(FormatterHelper.MECASOFTTXTRG, new Integer[]{1, 4, 7}, null, null);
}
});
txtRgInscrEst.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 6, 1));
txtRgInscrEst.setOptions(MecasoftText.NUMEROS, 15);
txtRgInscrEst.addChars(FormatterHelper.MECASOFTTXTRG, new Integer[]{1, 4, 7}, null, null);
Label lblCartTrabalhoN = new Label(compositeConteudo, SWT.NONE);
lblCartTrabalhoN.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
lblCartTrabalhoN.setText("Cart. trabalho N\u00BA:");
txtCartNum = new MecasoftText(compositeConteudo, SWT.NONE);
txtCartNum.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 3, 1));
txtCartNum.setOptions(MecasoftText.NUMEROS, 7);
Label lblSerie = new Label(compositeConteudo, SWT.NONE);
lblSerie.setText("S\u00E9rie:");
txtSerie = new MecasoftText(compositeConteudo, SWT.NONE);
txtSerie.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 2, 1));
txtSerie.setOptions(MecasoftText.NUMEROS, 5);
txtSerie.addChars(FormatterHelper.MECASOFTTXTSERIECARTEIRATRABALHO, new Integer[]{3}, null, null);
Label lblSalario = new Label(compositeConteudo, SWT.NONE);
lblSalario.setText("Sal\u00E1rio:");
txtSalario = new MecasoftText(compositeConteudo, SWT.NONE);
txtSalario.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 3, 1));
txtSalario.setOptions(MecasoftText.NUMEROS, -1);
txtSalario.addChars(FormatterHelper.MECASOFTTXTMOEDA, new Integer[]{-2}, null, null);
Label lblCargo = new Label(compositeConteudo, SWT.NONE);
lblCargo.setText("Cargo:");
cvCargo = new ComboViewer(compositeConteudo, SWT.READ_ONLY);
cbCargo = cvCargo.getCombo();
cbCargo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
Label lblFoneFax = new Label(compositeConteudo, SWT.NONE);
lblFoneFax.setText("Fone/Fax:");
txtFoneFax = new MecasoftText(compositeConteudo, SWT.NONE);
txtFoneFax.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 3, 1));
txtFoneFax.setOptions(MecasoftText.NUMEROS, 14);
txtFoneFax.addChars(FormatterHelper.MECASOFTTXTTELEFONE, new Integer[]{0, 2, 2, 6}, null, null);
Label lblCelular = new Label(compositeConteudo, SWT.NONE);
lblCelular.setText("Celular:");
txtCelular = new MecasoftText(compositeConteudo, SWT.NONE);
txtCelular.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 2, 1));
txtCelular.setOptions(MecasoftText.NUMEROS, 14);
txtCelular.addChars(FormatterHelper.MECASOFTTXTTELEFONE, new Integer[]{0, 2, 2, 6}, null, null);
Label lblEmail = new Label(compositeConteudo, SWT.NONE);
lblEmail.setText("E-mail:");
txtEmail = new Text(compositeConteudo, SWT.BORDER);
txtEmail.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 6, 1));
Label lblCep = new Label(compositeConteudo, SWT.NONE);
lblCep.setText("CEP:");
txtCep = new MecasoftText(compositeConteudo, SWT.NONE);
txtCep.text.addFocusListener(new FocusAdapter() {
@Override
public void focusLost(FocusEvent e) {
completarEndereco();
}
});
txtCep.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 3, 1));
txtCep.setOptions(MecasoftText.NUMEROS, 9);
txtCep.addChars(FormatterHelper.MECASOFTTXTCEP, new Integer[]{5}, null, null);
Label lblCidade = new Label(compositeConteudo, SWT.NONE);
lblCidade.setText("Cidade:");
txtCidade = new Text(compositeConteudo, SWT.BORDER);
txtCidade.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
Label lblBairro = new Label(compositeConteudo, SWT.NONE);
lblBairro.setText("Bairro:");
txtBairro = new Text(compositeConteudo, SWT.BORDER);
txtBairro.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 6, 1));
Label lblRua = new Label(compositeConteudo, SWT.NONE);
lblRua.setText("Rua:");
txtRua = new Text(compositeConteudo, SWT.BORDER);
txtRua.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 3, 1));
Label lblNumero = new Label(compositeConteudo, SWT.NONE);
lblNumero.setText("N\u00FAmero:");
txtNumero = new MecasoftText(compositeConteudo, SWT.NONE);
txtNumero.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 2, 1));
txtNumero.setOptions(MecasoftText.NUMEROS, -1);
Label lblComplemento = new Label(compositeConteudo, SWT.NONE);
lblComplemento.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false, 1, 1));
lblComplemento.setText("Complemento:");
txtComplemento = new Text(compositeConteudo, SWT.BORDER | SWT.MULTI);
GridData gd_txtComplemento = new GridData(SWT.FILL, SWT.CENTER, true, false, 6, 1);
gd_txtComplemento.heightHint = 54;
txtComplemento.setLayoutData(gd_txtComplemento);
Label lblVeculos = new Label(compositeConteudo, SWT.NONE);
lblVeculos.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false, 1, 1));
lblVeculos.setText("Ve\u00EDculos:");
tvVeiculo = new TableViewer(compositeConteudo, SWT.BORDER | SWT.FULL_SELECTION);
tableVeiculos = tvVeiculo.getTable();
tableVeiculos.addMouseListener(new MouseAdapter() {
@Override
public void mouseUp(MouseEvent e) {
IStructuredSelection selecao = (IStructuredSelection)tvVeiculo.getSelection();
if(selecao.isEmpty())
return;
Veiculo v = (Veiculo)selecao.getFirstElement();
if(v.getAtivo()){
btnDesativarVeiculo.setImage(ResourceManager.getPluginImage("mecasoft", "assents/funcoes/car/lessCar16.png"));
btnDesativarVeiculo.setText("Desativar");
}else{
btnDesativarVeiculo.setImage(ResourceManager.getPluginImage("mecasoft", "assents/funcoes/car/plusCar16.png"));
btnDesativarVeiculo.setText("Ativar");
}
}
});
tableVeiculos.setLinesVisible(true);
tableVeiculos.setHeaderVisible(true);
GridData gd_tableVeiculos = new GridData(SWT.FILL, SWT.FILL, true, false, 5, 2);
gd_tableVeiculos.heightHint = 92;
tvVeiculo.setContentProvider(ArrayContentProvider.getInstance());
tableVeiculos.setLayoutData(gd_tableVeiculos);
TableViewerColumn tvcModelo = new TableViewerColumn(tvVeiculo, SWT.NONE);
tvcModelo.setLabelProvider(new ColumnLabelProvider(){
@Override
public String getText(Object element) {
return ((Veiculo)element).getModelo();
}
});
TableColumn tblclmnModelo = tvcModelo.getColumn();
tblclmnModelo.setWidth(100);
tblclmnModelo.setText("Modelo");
TableViewerColumn tvcPlaca = new TableViewerColumn(tvVeiculo, SWT.NONE);
tvcPlaca.setLabelProvider(new ColumnLabelProvider(){
@Override
public String getText(Object element) {
String placa = ((Veiculo)element).getPlaca();
if(placa == null)
return "";
return placa;
}
});
TableColumn tblclmnPlaca = tvcPlaca.getColumn();
tblclmnPlaca.setWidth(100);
tblclmnPlaca.setText("Placa");
TableViewerColumn tvcStatus = new TableViewerColumn(tvVeiculo, SWT.NONE);
tvcStatus.setLabelProvider(new ColumnLabelProvider(){
@Override
public String getText(Object element) {
Veiculo v = (Veiculo)element;
if(v.getAtivo())
return "Ativo";
else
return "Desativado";
}
});
TableColumn tblclmnStatus = tvcStatus.getColumn();
tblclmnStatus.setWidth(100);
tblclmnStatus.setText("Status");
btnAdicionarVeiculo = new Button(compositeConteudo, SWT.NONE);
btnAdicionarVeiculo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
try {
getSite().getPage().openEditor(new VeiculoEditorInput(service), VeiculoEditor.ID);
} catch (PartInitException e1) {
log.error(e1);
}
}
});
btnAdicionarVeiculo.setImage(ResourceManager.getPluginImage("mecasoft", "assents/funcoes/car/plusCar16.png"));
btnAdicionarVeiculo.setText("Adicionar");
new Label(compositeConteudo, SWT.NONE);
btnDesativarVeiculo = new Button(compositeConteudo, SWT.NONE);
btnDesativarVeiculo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
IStructuredSelection selecao = (IStructuredSelection)tvVeiculo.getSelection();
if(selecao.isEmpty())
return;
Veiculo v = (Veiculo)selecao.getFirstElement();
v.setAtivo(!v.getAtivo());
if(v.getAtivo()){
btnDesativarVeiculo.setImage(ResourceManager.getPluginImage("mecasoft", "assents/funcoes/car/lessCar16.png"));
btnDesativarVeiculo.setText("Desativar");
}else{
btnDesativarVeiculo.setImage(ResourceManager.getPluginImage("mecasoft", "assents/funcoes/car/plusCar16.png"));
btnDesativarVeiculo.setText("Ativar");
}
tvVeiculo.refresh();
}
});
btnDesativarVeiculo.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false, 1, 1));
btnDesativarVeiculo.setImage(ResourceManager.getPluginImage("mecasoft", "assents/funcoes/car/lessCar16.png"));
btnDesativarVeiculo.setText("Desativar");
Label lblFornece = new Label(compositeConteudo, SWT.NONE);
lblFornece.setText("Fornece:");
tvProduto = new TableViewer(compositeConteudo, SWT.BORDER | SWT.FULL_SELECTION);
tableProdutos = tvProduto.getTable();
tableProdutos.setLinesVisible(true);
tableProdutos.setHeaderVisible(true);
GridData gd_tableProdutos = new GridData(SWT.FILL, SWT.FILL, true, true, 5, 2);
gd_tableProdutos.heightHint = 92;
tvProduto.setContentProvider(ArrayContentProvider.getInstance());
tableProdutos.setLayoutData(gd_tableProdutos);
TableViewerColumn tvcDescricao = new TableViewerColumn(tvProduto, SWT.NONE);
tvcDescricao.setLabelProvider(new ColumnLabelProvider(){
@Override
public String getText(Object element) {
return ((ForneceProduto)element).getProduto().getDescricao();
}
});
TableColumn tblclmnDescricao = tvcDescricao.getColumn();
tblclmnDescricao.setWidth(193);
tblclmnDescricao.setText("Descri\u00E7\u00E3o");
TableViewerColumn tvcValorUnitario = new TableViewerColumn(tvProduto, SWT.NONE);
tvcValorUnitario.setEditingSupport(new ForneceProdutoEditingSupport(tvProduto));
tvcValorUnitario.setLabelProvider(new ColumnLabelProvider(){
@Override
public String getText(Object element) {
try{
return FormatterHelper.getDecimalFormat().format(((ForneceProduto)element).getValorUnitario());
}catch(Exception e){
return "";
}
}
});
TableColumn tblclmnValorUnitario = tvcValorUnitario.getColumn();
tblclmnValorUnitario.setWidth(100);
tblclmnValorUnitario.setText("Valor unit\u00E1rio");
btnAdicionarProduto = new Button(compositeConteudo, SWT.NONE);
btnAdicionarProduto.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
ProdutoServico ps = selecionarProduto();
if(ps != null){
ForneceProduto fp = new ForneceProduto();
fp.setPessoa(service.getPessoa());
fp.setProduto(ps);
service.getPessoa().getListaProduto().add(fp);
tvProduto.refresh();
}
}
});
btnAdicionarProduto.setImage(ResourceManager.getPluginImage("mecasoft", "assents/funcoes/product/productAdd16.png"));
btnAdicionarProduto.setText("Adicionar");
new Label(compositeConteudo, SWT.NONE);
btnRemoverProduto = new Button(compositeConteudo, SWT.NONE);
btnRemoverProduto.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
IStructuredSelection selecao = (IStructuredSelection)tvProduto.getSelection();
if(selecao.isEmpty())
return;
if(openQuestion("Deseja realmente remover este produto da lista?")){
ForneceProduto fp = (ForneceProduto)selecao.getFirstElement();
if(fp.getProduto().getListaFornecedores().size() == 1 && fp.getProduto().getAtivo()){
setErroMessage("N�o � poss�vel remover este produto.\nDirija-se ao cadastro de produtos e desative-o, " +
"para que o fornecedor possa ser removido.");
return;
}
fp.getProduto().getListaFornecedores().remove(fp);
service.getPessoa().getListaProduto().remove(fp);
tvProduto.refresh();
initDataBindings();
}
}
});
btnRemoverProduto.setImage(ResourceManager.getPluginImage("mecasoft", "assents/funcoes/product/productRemove16.png"));
btnRemoverProduto.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false, 1, 1));
btnRemoverProduto.setText("Remover");
initDataBindings();
}
public void completarEndereco(){
Cep endereco = null;
String cep = txtCep.getTextoSemFormatacao();
if(cep != null && !cep.isEmpty())
endereco = new CepService().getEndereco(cep);
if(endereco != null){
txtCidade.setText(endereco.getCidade());
txtBairro.setText(endereco.getBairro());
String ruaNum[] = endereco.getLogradouro().split(", ");
txtRua.setText(ruaNum[0]);
if(ruaNum.length > 1)
txtNumero.setText(ruaNum[1]);
}else{
txtCidade.setText("");
txtBairro.setText("");
txtRua.setText("");
}
}
@Override
public void salvarRegistro() throws ValidationException{
validar(service.getPessoa());
for(ForneceProduto fp : service.getPessoa().getListaProduto()){
if(fp.getValorUnitario() == null)
throw new ValidationException("N�o foi informado o valor de um ou mais produtos.");
}
if(service.getPessoa().getFoneFax().isEmpty() && service.getPessoa().getCelular().isEmpty())
throw new ValidationException("Informe ao menos um telefone.");
service.saveOrUpdate();
openInformation("Pessoa cadastrada com sucesso!");
}
@Override
public void excluirRegistro() {}
@Override
public void init(IEditorSite site, IEditorInput input)
throws PartInitException {
setShowExcluir(false);
PessoaEditorInput pei = (PessoaEditorInput)input;
if(pei.getPessoa().getId() != null){
service.setPessoa(service.find(pei.getPessoa().getId()));
setPartName("Pessoa: " + service.getPessoa().getNomeFantasia());
}else
service.setPessoa(pei.getPessoa());
setSite(site);
setInput(input);
}
@Override
public void setFocus() {
tvProduto.refresh();
tvVeiculo.refresh();
tiposFuncionarios = tipoFuncionarioService.findAll();
initDataBindings();
}
private ProdutoServico selecionarProduto(){
SelecionarItemDialog sid = new SelecionarItemDialog(LayoutHelper.getActiveShell(), new LabelProvider(){
@Override
public String getText(Object element) {
return ((ProdutoServico)element).getDescricao();
}
});
//pega a lista de produtos
List<ProdutoServico> listaProdutos = produtoService.findAllProdutos();
//remove os produtos ja adicionados
for(ForneceProduto fp : service.getPessoa().getListaProduto()){
listaProdutos.remove(fp.getProduto());
}
sid.setElements(listaProdutos.toArray());
return (ProdutoServico) sid.getElementoSelecionado();
}
@Override
public boolean isDirty() {
return service.isDirty();
}
protected DataBindingContext initDataBindings() {
DataBindingContext bindingContext = new DataBindingContext();
//
IObservableValue txtNomeFantasiaObserveTextObserveWidget = SWTObservables.observeText(txtNomeFantasia, SWT.Modify);
IObservableValue funcionarioServicegetFuncionarioNomeFantasiaObserveValue = PojoObservables.observeValue(service.getPessoa(), "nomeFantasia");
bindingContext.bindValue(txtNomeFantasiaObserveTextObserveWidget, funcionarioServicegetFuncionarioNomeFantasiaObserveValue, null, null);
//
IObservableValue btnAtivoObserveSelectionObserveWidget = SWTObservables.observeSelection(btnAtivo);
IObservableValue funcionarioServicegetFuncionarioAtivoObserveValue = PojoObservables.observeValue(service.getPessoa(), "ativo");
bindingContext.bindValue(btnAtivoObserveSelectionObserveWidget, funcionarioServicegetFuncionarioAtivoObserveValue, null, null);
//
IObservableValue btnClienteObserveSelectionObserveWidget = SWTObservables.observeSelection(btnCliente);
IObservableValue funcionarioServicegetFuncionarioTipoClienteObserveValue = PojoObservables.observeValue(service.getPessoa(), "tipoCliente");
bindingContext.bindValue(btnClienteObserveSelectionObserveWidget, funcionarioServicegetFuncionarioTipoClienteObserveValue, null, null);
//
IObservableValue btnFornecedorObserveSelectionObserveWidget = SWTObservables.observeSelection(btnFornecedor);
IObservableValue funcionarioServicegetFuncionarioTipoFornecedorObserveValue = PojoObservables.observeValue(service.getPessoa(), "tipoFornecedor");
bindingContext.bindValue(btnFornecedorObserveSelectionObserveWidget, funcionarioServicegetFuncionarioTipoFornecedorObserveValue, null, null);
//
IObservableValue btnFuncionrioObserveSelectionObserveWidget = SWTObservables.observeSelection(btnFuncionrio);
IObservableValue funcionarioServicegetFuncionarioTipoFuncionarioObserveValue = PojoObservables.observeValue(service.getPessoa(), "tipoFuncionario");
bindingContext.bindValue(btnFuncionrioObserveSelectionObserveWidget, funcionarioServicegetFuncionarioTipoFuncionarioObserveValue, null, null);
//
IObservableValue txtRazaoSocialObserveTextObserveWidget = SWTObservables.observeText(txtRazaoSocial, SWT.Modify);
IObservableValue funcionarioServicegetFuncionarioRazaoSocialObserveValue = PojoObservables.observeValue(service.getPessoa(), "razaoSocial");
bindingContext.bindValue(txtRazaoSocialObserveTextObserveWidget, funcionarioServicegetFuncionarioRazaoSocialObserveValue, null, null);
//
IObservableValue txtEmailObserveTextObserveWidget = SWTObservables.observeText(txtEmail, SWT.Modify);
IObservableValue funcionarioServicegetFuncionarioEmailObserveValue = PojoObservables.observeValue(service.getPessoa(), "email");
bindingContext.bindValue(txtEmailObserveTextObserveWidget, funcionarioServicegetFuncionarioEmailObserveValue, null, null);
//
IObservableValue txtCidadeObserveTextObserveWidget = SWTObservables.observeText(txtCidade, SWT.Modify);
IObservableValue funcionarioServicegetFuncionarioCidadeObserveValue = PojoObservables.observeValue(service.getPessoa(), "cidade");
bindingContext.bindValue(txtCidadeObserveTextObserveWidget, funcionarioServicegetFuncionarioCidadeObserveValue, null, null);
//
IObservableValue txtBairroObserveTextObserveWidget = SWTObservables.observeText(txtBairro, SWT.Modify);
IObservableValue funcionarioServicegetFuncionarioBairroObserveValue = PojoObservables.observeValue(service.getPessoa(), "bairro");
bindingContext.bindValue(txtBairroObserveTextObserveWidget, funcionarioServicegetFuncionarioBairroObserveValue, null, null);
//
IObservableValue txtRuaObserveTextObserveWidget = SWTObservables.observeText(txtRua, SWT.Modify);
IObservableValue funcionarioServicegetFuncionarioRuaObserveValue = PojoObservables.observeValue(service.getPessoa(), "rua");
bindingContext.bindValue(txtRuaObserveTextObserveWidget, funcionarioServicegetFuncionarioRuaObserveValue, null, null);
//
IObservableValue txtComplementoObserveTextObserveWidget = SWTObservables.observeText(txtComplemento, SWT.Modify);
IObservableValue funcionarioServicegetFuncionarioComplementoObserveValue = PojoObservables.observeValue(service.getPessoa(), "complemento");
bindingContext.bindValue(txtComplementoObserveTextObserveWidget, funcionarioServicegetFuncionarioComplementoObserveValue, null, null);
//
IObservableValue btnAdicionarProdutoObserveEnabledObserveWidget = SWTObservables.observeEnabled(btnAdicionarProduto);
bindingContext.bindValue(btnAdicionarProdutoObserveEnabledObserveWidget, funcionarioServicegetFuncionarioTipoFornecedorObserveValue, null, null);
//
IObservableValue btnRemoverProdutoObserveEnabledObserveWidget = SWTObservables.observeEnabled(btnRemoverProduto);
bindingContext.bindValue(btnRemoverProdutoObserveEnabledObserveWidget, funcionarioServicegetFuncionarioTipoFornecedorObserveValue, null, null);
//
IObservableValue btnAdicionarVeiculoObserveEnabledObserveWidget = SWTObservables.observeEnabled(btnAdicionarVeiculo);
bindingContext.bindValue(btnAdicionarVeiculoObserveEnabledObserveWidget, funcionarioServicegetFuncionarioTipoClienteObserveValue, null, null);
//
IObservableValue btnRemoverVeiculoObserveEnabledObserveWidget = SWTObservables.observeEnabled(btnDesativarVeiculo);
bindingContext.bindValue(btnRemoverVeiculoObserveEnabledObserveWidget, funcionarioServicegetFuncionarioTipoClienteObserveValue, null, null);
//
IObservableValue cbCargoObserveEnabledObserveWidget = SWTObservables.observeEnabled(cbCargo);
bindingContext.bindValue(cbCargoObserveEnabledObserveWidget, funcionarioServicegetFuncionarioTipoFuncionarioObserveValue, null, null);
//
ObservableListContentProvider listContentProvider_1 = new ObservableListContentProvider();
// IObservableMap[] observeMaps = PojoObservables.observeMaps(listContentProvider_1.getKnownElements(), ForneceProduto.class, new String[]{"id.produto.descricao", "valorUnitario"});
// tvProduto.setLabelProvider(new ObservableMapLabelProvider(observeMaps));
tvProduto.setContentProvider(listContentProvider_1);
//
IObservableList funcionarioServicegetFuncionarioListaProdutoObserveList = PojoObservables.observeList(Realm.getDefault(), service.getPessoa(), "listaProduto");
tvProduto.setInput(funcionarioServicegetFuncionarioListaProdutoObserveList);
//
ObservableListContentProvider listContentProvider_2 = new ObservableListContentProvider();
// IObservableMap[] observeMaps_1 = PojoObservables.observeMaps(listContentProvider_2.getKnownElements(), Veiculo.class, new String[]{"modelo", "placa"});
// tvVeiculo.setLabelProvider(new ObservableMapLabelProvider(observeMaps_1));
tvVeiculo.setContentProvider(listContentProvider_2);
//
IObservableList funcionarioServicegetFuncionarioListaVeiculoObserveList = PojoObservables.observeList(Realm.getDefault(), service.getPessoa(), "listaVeiculo");
tvVeiculo.setInput(funcionarioServicegetFuncionarioListaVeiculoObserveList);
//
IObservableValue tableVeiculosObserveEnabledObserveWidget = SWTObservables.observeEnabled(tableVeiculos);
bindingContext.bindValue(tableVeiculosObserveEnabledObserveWidget, funcionarioServicegetFuncionarioTipoClienteObserveValue, null, null);
//
IObservableValue tableProdutosObserveEnabledObserveWidget = SWTObservables.observeEnabled(tableProdutos);
bindingContext.bindValue(tableProdutosObserveEnabledObserveWidget, funcionarioServicegetFuncionarioTipoFornecedorObserveValue, null, null);
//
ObservableListContentProvider listContentProvider = new ObservableListContentProvider();
IObservableMap observeMap = PojoObservables.observeMap(listContentProvider.getKnownElements(), TipoFuncionario.class, "nome");
cvCargo.setLabelProvider(new ObservableMapLabelProvider(observeMap));
cvCargo.setContentProvider(listContentProvider);
//
WritableList writableList = new WritableList(tiposFuncionarios, TipoFuncionario.class);
cvCargo.setInput(writableList);
//
IObservableValue cvCargoObserveSingleSelection = ViewersObservables.observeSingleSelection(cvCargo);
IObservableValue funcionarioServicegetFuncionarioTipoObserveValue = PojoObservables.observeValue(service.getPessoa(), "tipo");
bindingContext.bindValue(cvCargoObserveSingleSelection, funcionarioServicegetFuncionarioTipoObserveValue, null, null);
//
IObservableValue txtCpfCnpjtextObserveTextObserveWidget = SWTObservables.observeText(txtCpfCnpj.text, SWT.Modify);
IObservableValue servicegetPessoaCpfCnpjObserveValue = PojoObservables.observeValue(service.getPessoa(), "cpfCnpj");
bindingContext.bindValue(txtCpfCnpjtextObserveTextObserveWidget, servicegetPessoaCpfCnpjObserveValue, null, null);
//
IObservableValue txtRgInscrEsttextObserveTextObserveWidget = SWTObservables.observeText(txtRgInscrEst.text, SWT.Modify);
IObservableValue servicegetPessoaRgInscricaoEstObserveValue = PojoObservables.observeValue(service.getPessoa(), "rgInscricaoEst");
bindingContext.bindValue(txtRgInscrEsttextObserveTextObserveWidget, servicegetPessoaRgInscricaoEstObserveValue, null, null);
//
IObservableValue txtCartNumtextObserveTextObserveWidget = SWTObservables.observeText(txtCartNum.text, SWT.Modify);
IObservableValue servicegetPessoaCarteiraNumObserveValue = PojoObservables.observeValue(service.getPessoa(), "carteiraNum");
bindingContext.bindValue(txtCartNumtextObserveTextObserveWidget, servicegetPessoaCarteiraNumObserveValue, null, null);
//
IObservableValue txtCartNumtextObserveEnabledObserveWidget = SWTObservables.observeEnabled(txtCartNum.text);
bindingContext.bindValue(txtCartNumtextObserveEnabledObserveWidget, funcionarioServicegetFuncionarioTipoFuncionarioObserveValue, null, null);
//
IObservableValue txtSerietextObserveTextObserveWidget = SWTObservables.observeText(txtSerie.text, SWT.Modify);
IObservableValue servicegetPessoaSerieObserveValue = PojoObservables.observeValue(service.getPessoa(), "serie");
bindingContext.bindValue(txtSerietextObserveTextObserveWidget, servicegetPessoaSerieObserveValue, null, null);
//
IObservableValue txtSerietextObserveEnabledObserveWidget = SWTObservables.observeEnabled(txtSerie.text);
bindingContext.bindValue(txtSerietextObserveEnabledObserveWidget, funcionarioServicegetFuncionarioTipoFuncionarioObserveValue, null, null);
//
IObservableValue txtSalariotextObserveTextObserveWidget = SWTObservables.observeText(txtSalario.text, SWT.Modify);
IObservableValue servicegetPessoaSalarioObserveValue = PojoObservables.observeValue(service.getPessoa(), "salario");
bindingContext.bindValue(txtSalariotextObserveTextObserveWidget, servicegetPessoaSalarioObserveValue, null, null);
//
IObservableValue txtSalariotextObserveEnabledObserveWidget = SWTObservables.observeEnabled(txtSalario.text);
bindingContext.bindValue(txtSalariotextObserveEnabledObserveWidget, funcionarioServicegetFuncionarioTipoFuncionarioObserveValue, null, null);
//
IObservableValue txtFoneFaxtextObserveTextObserveWidget = SWTObservables.observeText(txtFoneFax.text, SWT.Modify);
IObservableValue servicegetPessoaFoneFaxObserveValue = PojoObservables.observeValue(service.getPessoa(), "foneFax");
bindingContext.bindValue(txtFoneFaxtextObserveTextObserveWidget, servicegetPessoaFoneFaxObserveValue, null, null);
//
IObservableValue txtCelulartextObserveTextObserveWidget = SWTObservables.observeText(txtCelular.text, SWT.Modify);
IObservableValue servicegetPessoaCelularObserveValue = PojoObservables.observeValue(service.getPessoa(), "celular");
bindingContext.bindValue(txtCelulartextObserveTextObserveWidget, servicegetPessoaCelularObserveValue, null, null);
//
IObservableValue txtCeptextObserveTextObserveWidget = SWTObservables.observeText(txtCep.text, SWT.Modify);
IObservableValue servicegetPessoaCepObserveValue = PojoObservables.observeValue(service.getPessoa(), "cep");
bindingContext.bindValue(txtCeptextObserveTextObserveWidget, servicegetPessoaCepObserveValue, null, null);
//
IObservableValue txtNumerotextObserveTextObserveWidget = SWTObservables.observeText(txtNumero.text, SWT.Modify);
IObservableValue servicegetPessoaNumeroObserveValue = PojoObservables.observeValue(service.getPessoa(), "numero");
bindingContext.bindValue(txtNumerotextObserveTextObserveWidget, servicegetPessoaNumeroObserveValue, null, null);
//
return bindingContext;
}
@Override
public MecasoftService<?> getService() {
return service;
}
}