package tela.editor; import static aplicacao.helper.MessageHelper.openInformation; import static aplicacao.helper.ValidatorHelper.validar; import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.core.databinding.beans.PojoObservables; import org.eclipse.core.databinding.beans.PojoProperties; import org.eclipse.core.databinding.observable.value.IObservableValue; import org.eclipse.jface.databinding.swt.SWTObservables; import org.eclipse.jface.databinding.swt.WidgetProperties; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.SWT; 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.Composite; import org.eclipse.swt.widgets.Label; 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.editor.editorInput.VeiculoEditorInput; import aplicacao.exception.ValidationException; import aplicacao.helper.LayoutHelper; import aplicacao.service.MecasoftService; import aplicacao.service.PessoaService; import aplicacao.service.VeiculoService; import banco.modelo.Pessoa; public class VeiculoEditor extends MecasoftEditor { public static final String ID = "tela.editor.VeiculoEditor"; //$NON-NLS-1$ private Text txtMarca; private Text txtModelo; private Text txtCliente; private VeiculoService service = new VeiculoService(); private PessoaService pessoaService; private Button btnAtivo; private MecasoftText txtPlaca; private Button btnSelecionarCliente; private MecasoftText txtHodometro; private MecasoftText txtHorimetro; private Button btnHodmetro; private Button btnHormetro; public VeiculoEditor() {} @Override public void addComponentes(Composite compositeConteudo) { compositeConteudo.setLayout(new GridLayout(5, false)); Label lblMarca = new Label(compositeConteudo, SWT.NONE); lblMarca.setText("Marca:"); txtMarca = new Text(compositeConteudo, SWT.BORDER); txtMarca.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 4, 1)); Label lblModelo = new Label(compositeConteudo, SWT.NONE); lblModelo.setText("Modelo:"); txtModelo = new Text(compositeConteudo, SWT.BORDER); txtModelo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 4, 1)); Label lblPlaca = new Label(compositeConteudo, SWT.NONE); lblPlaca.setText("Placa:"); txtPlaca = new MecasoftText(compositeConteudo, SWT.NONE); txtPlaca.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 4, 1)); txtPlaca.setEditable(true); txtPlaca.setOptions(MecasoftText.AMBOS, 8); txtPlaca.addChars("-", new Integer[]{3}, null, null); Label lblTipo = new Label(compositeConteudo, SWT.NONE); lblTipo.setText("Tipo:"); btnHodmetro = new Button(compositeConteudo, SWT.RADIO); btnHodmetro.setText("Hod\u00F4metro"); btnHormetro = new Button(compositeConteudo, SWT.RADIO); btnHormetro.setText("Hor�metro"); new Label(compositeConteudo, SWT.NONE); new Label(compositeConteudo, SWT.NONE); Label lblHodometro = new Label(compositeConteudo, SWT.NONE); lblHodometro.setText("Hod\u00F4metro:"); txtHodometro = new MecasoftText(compositeConteudo, SWT.NONE); txtHodometro.setEnabled(false); txtHodometro.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 2, 1)); txtHodometro.setOptions(MecasoftText.NUMEROS, -1); Label lblHormetro = new Label(compositeConteudo, SWT.NONE); lblHormetro.setText("Hor\u00EDmetro:"); txtHorimetro = new MecasoftText(compositeConteudo, SWT.NONE); txtHorimetro.setEnabled(false); txtHorimetro.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); txtHorimetro.setOptions(MecasoftText.NUMEROS, -1); Label lblCliente = new Label(compositeConteudo, SWT.NONE); lblCliente.setText("Cliente:"); txtCliente = new Text(compositeConteudo, SWT.BORDER); txtCliente.setEnabled(false); txtCliente.setEditable(false); txtCliente.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1)); btnSelecionarCliente = new Button(compositeConteudo, SWT.NONE); btnSelecionarCliente.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { Pessoa p = selecionarCliente(); if(p != null){ service.getVeiculo().setCliente(p); txtCliente.setText(p.getNomeFantasia()); } } }); btnSelecionarCliente.setImage(ResourceManager.getPluginImage("mecasoft", "assents/funcoes/find16.png")); btnSelecionarCliente.setText("Selecionar"); new Label(compositeConteudo, SWT.NONE); btnAtivo = new Button(compositeConteudo, SWT.CHECK); btnAtivo.setText("Ativo"); new Label(compositeConteudo, SWT.NONE); new Label(compositeConteudo, SWT.NONE); new Label(compositeConteudo, SWT.NONE); new Label(compositeConteudo, SWT.NONE); if(pessoaService != null) if(service.getVeiculo().getCliente().getNomeFantasia() != null) txtCliente.setText(service.getVeiculo().getCliente().getNomeFantasia()); if(pessoaService != null) btnSelecionarCliente.setEnabled(false); initDataBindings(); } @Override public void salvarRegistro() throws ValidationException{ validar(service.getVeiculo()); if(service.getVeiculo().isPossuiHodometro()) if(service.getVeiculo().getHodometro() == null) throw new ValidationException("Informe o hod�metro."); if(service.getVeiculo().isPossuiHorimetro()) if(service.getVeiculo().getHorimetro() == null) throw new ValidationException("Informe o hor�metro."); if(pessoaService != null) pessoaService.getPessoa().getListaVeiculo().add(service.getVeiculo()); else service.saveOrUpdate(); openInformation("Ve�culo cadastrado com sucesso!"); } @Override public void excluirRegistro() {} @Override public void init(IEditorSite site, IEditorInput input) throws PartInitException { VeiculoEditorInput vei = (VeiculoEditorInput)input; if(vei.getVeiculo().getId() == null){ service.setVeiculo(vei.getVeiculo()); }else{ service.setVeiculo(service.find(vei.getVeiculo().getId())); this.setPartName("Ve�culo: " + service.getVeiculo().getModelo()); } pessoaService = vei.getFuncionarioService(); if(vei.getFuncionarioService() != null) service.getVeiculo().setCliente((Pessoa)pessoaService.getPessoa()); setShowExcluir(false); setSite(site); setInput(input); } @Override public boolean isDirty() { return service.isDirty(); } public Pessoa selecionarCliente(){ SelecionarItemDialog sid = new SelecionarItemDialog(LayoutHelper.getActiveShell(), new LabelProvider(){ @Override public String getText(Object element) { return ((Pessoa)element).getNomeFantasia(); } }); sid.setElements(new PessoaService().findAllClientesAtivos().toArray()); return (Pessoa) sid.getElementoSelecionado(); } @Override public void setFocus() { initDataBindings(); } protected DataBindingContext initDataBindings() { DataBindingContext bindingContext = new DataBindingContext(); // IObservableValue txtMarcaObserveTextObserveWidget = SWTObservables.observeText(txtMarca, SWT.Modify); IObservableValue servicegetVeiculoMarcaObserveValue = PojoObservables.observeValue(service.getVeiculo(), "marca"); bindingContext.bindValue(txtMarcaObserveTextObserveWidget, servicegetVeiculoMarcaObserveValue, null, null); // IObservableValue txtModeloObserveTextObserveWidget = SWTObservables.observeText(txtModelo, SWT.Modify); IObservableValue servicegetVeiculoModeloObserveValue = PojoObservables.observeValue(service.getVeiculo(), "modelo"); bindingContext.bindValue(txtModeloObserveTextObserveWidget, servicegetVeiculoModeloObserveValue, null, null); // IObservableValue btnAtivoObserveSelectionObserveWidget = SWTObservables.observeSelection(btnAtivo); IObservableValue servicegetVeiculoAtivoObserveValue = PojoObservables.observeValue(service.getVeiculo(), "ativo"); bindingContext.bindValue(btnAtivoObserveSelectionObserveWidget, servicegetVeiculoAtivoObserveValue, null, null); // IObservableValue txtClienteObserveTextObserveWidget = SWTObservables.observeText(txtCliente, SWT.Modify); IObservableValue servicegetVeiculoClientenomeFantasiaObserveValue = PojoObservables.observeValue(service.getVeiculo(), "cliente.nomeFantasia"); bindingContext.bindValue(txtClienteObserveTextObserveWidget, servicegetVeiculoClientenomeFantasiaObserveValue, null, null); // IObservableValue txtPlacatextObserveTextObserveWidget = SWTObservables.observeText(txtPlaca.text, SWT.Modify); IObservableValue servicegetVeiculoPlacaObserveValue = PojoObservables.observeValue(service.getVeiculo(), "placa"); bindingContext.bindValue(txtPlacatextObserveTextObserveWidget, servicegetVeiculoPlacaObserveValue, null, null); // IObservableValue txtHodometrotextObserveTextObserveWidget = SWTObservables.observeText(txtHodometro.text, SWT.Modify); IObservableValue servicegetVeiculoHodometroObserveValue = PojoObservables.observeValue(service.getVeiculo(), "hodometro"); bindingContext.bindValue(txtHodometrotextObserveTextObserveWidget, servicegetVeiculoHodometroObserveValue, null, null); // IObservableValue mecasoftTexttextObserveTextObserveWidget = SWTObservables.observeText(txtHorimetro.text, SWT.Modify); IObservableValue servicegetVeiculoHorimetroObserveValue = PojoObservables.observeValue(service.getVeiculo(), "horimetro"); bindingContext.bindValue(mecasoftTexttextObserveTextObserveWidget, servicegetVeiculoHorimetroObserveValue, null, null); // IObservableValue observeSelectionBtnHodmetroObserveWidget = WidgetProperties.selection().observe(btnHodmetro); IObservableValue possuiHodometroServicegetVeiculoObserveValue = PojoProperties.value("possuiHodometro").observe(service.getVeiculo()); bindingContext.bindValue(observeSelectionBtnHodmetroObserveWidget, possuiHodometroServicegetVeiculoObserveValue, null, null); // IObservableValue observeSelectionBtnHormetroObserveWidget = WidgetProperties.selection().observe(btnHormetro); IObservableValue possuiHorimetroServicegetVeiculoObserveValue = PojoProperties.value("possuiHorimetro").observe(service.getVeiculo()); bindingContext.bindValue(observeSelectionBtnHormetroObserveWidget, possuiHorimetroServicegetVeiculoObserveValue, null, null); // IObservableValue observeEnabledTxtHodometrotextObserveWidget = WidgetProperties.enabled().observe(txtHodometro.text); bindingContext.bindValue(observeEnabledTxtHodometrotextObserveWidget, possuiHodometroServicegetVeiculoObserveValue, null, null); // IObservableValue observeEnabledTxtHorimetrotextObserveWidget = WidgetProperties.enabled().observe(txtHorimetro.text); bindingContext.bindValue(observeEnabledTxtHorimetrotextObserveWidget, possuiHorimetroServicegetVeiculoObserveValue, null, null); // return bindingContext; } @Override public MecasoftService<?> getService() { return service; } }