package tela.editor; import java.util.List; import org.eclipse.core.databinding.DataBindingContext; import org.eclipse.core.databinding.beans.PojoObservables; 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.ComboViewer; 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.Combo; 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.dialog.SelecionarItemDialog; import tela.editor.editorInput.UsuarioEditorInput; import aplicacao.exception.ValidationException; import aplicacao.helper.LayoutHelper; import aplicacao.helper.MessageHelper; import aplicacao.helper.ValidatorHelper; import aplicacao.service.MecasoftService; import aplicacao.service.PapelService; import aplicacao.service.PessoaService; import aplicacao.service.UsuarioService; import banco.modelo.Papel; import banco.modelo.Pessoa; import banco.modelo.Usuario; public class UsuarioEditor extends MecasoftEditor{ public static final String ID = "tela.editor.usuarioEditor"; //$NON-NLS-1$ private Text txtNomeFuncionario; private Text txtLogin; private Text txtSenha; private Text txtConfirmarSenha; private Button btnAtivo; private UsuarioService service = new UsuarioService(); private PapelService papelService = new PapelService(); private List<Papel> papeis; private ComboViewer comboViewer; public UsuarioEditor() { papeis = papelService.findAll(); } @Override public void addComponentes(Composite compositeConteudo) { compositeConteudo.setLayout(new GridLayout(4, false)); Label lblFuncionario = new Label(compositeConteudo, SWT.NONE); lblFuncionario.setText("Funcionario"); txtNomeFuncionario = new Text(compositeConteudo, SWT.BORDER); txtNomeFuncionario.setEnabled(false); txtNomeFuncionario.setEditable(false); GridData gd_txtNomeFuncionario = new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1); gd_txtNomeFuncionario.widthHint = 247; txtNomeFuncionario.setLayoutData(gd_txtNomeFuncionario); Button btnSelecionar = new Button(compositeConteudo, SWT.NONE); btnSelecionar.setImage(ResourceManager.getPluginImage("mecasoft", "assents/funcoes/find16.png")); btnSelecionar.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { Pessoa p = selecionarPessoa(); if(p != null) service.getUsuario().setFuncionario(p); initDataBindings(); } }); btnSelecionar.setText("Selecionar"); Label lblLogin = new Label(compositeConteudo, SWT.NONE); lblLogin.setText("Login:"); txtLogin = new Text(compositeConteudo, SWT.BORDER); txtLogin.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); Label lblPapel = new Label(compositeConteudo, SWT.NONE); lblPapel.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); lblPapel.setText("Papel:"); comboViewer = new ComboViewer(compositeConteudo, SWT.READ_ONLY); Combo cbPapel = comboViewer.getCombo(); cbPapel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1)); Label lblSenha = new Label(compositeConteudo, SWT.NONE); lblSenha.setText("Senha:"); txtSenha = new Text(compositeConteudo, SWT.BORDER | SWT.PASSWORD); txtSenha.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); btnAtivo = new Button(compositeConteudo, SWT.CHECK); btnAtivo.setSelection(true); btnAtivo.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1)); btnAtivo.setText("Ativo"); Label lblConfirmarSenha = new Label(compositeConteudo, SWT.NONE); lblConfirmarSenha.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1)); lblConfirmarSenha.setText("Confirmar senha:"); txtConfirmarSenha = new Text(compositeConteudo, SWT.BORDER | SWT.PASSWORD); txtConfirmarSenha.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); new Label(compositeConteudo, SWT.NONE); new Label(compositeConteudo, SWT.NONE); initDataBindings(); txtConfirmarSenha.setText(txtSenha.getText()); } @Override public void salvarRegistro() throws ValidationException{ ValidatorHelper.validar(service.getUsuario()); if(!txtSenha.getText().equals(txtConfirmarSenha.getText())) throw new ValidationException("A senha n�o coincide com a confirma��o."); //usuario unico List<Usuario> listaUsuario = service.findByLogin(service.getUsuario().getLogin()); if(listaUsuario.size() >= 2 || (!listaUsuario.isEmpty() && service.getUsuario().getId() == null)) throw new ValidationException("J� existe um usu�rio com o login informado."); service.saveOrUpdate(); MessageHelper.openInformation("Usu�rio salvo com sucesso!"); } @Override public void excluirRegistro() {} @Override public void init(IEditorSite site, IEditorInput input) throws PartInitException { UsuarioEditorInput uei = (UsuarioEditorInput)input; setShowExcluir(false); if(uei.getUsuario().getId() != null){ service.setUsuario(service.find(uei.getUsuario().getId())); this.setPartName("Usu�rio: " + service.getUsuario().getFuncionario().getNomeFantasia()); }else service.setUsuario(uei.getUsuario()); setSite(site); setInput(input); } @Override public boolean isDirty() { return service.isDirty(); } public Pessoa selecionarPessoa(){ SelecionarItemDialog dialog = new SelecionarItemDialog(LayoutHelper.getActiveShell(), new LabelProvider(){ @Override public String getText(Object element) { return ((Pessoa)element).getNomeFantasia(); } }); dialog.setElements(new PessoaService().findAllAtivosSemUsuario().toArray()); return (Pessoa) dialog.getElementoSelecionado(); } @Override public void setFocus() { papeis = papelService.findAll(); initDataBindings(); } protected DataBindingContext initDataBindings() { DataBindingContext bindingContext = new DataBindingContext(); // IObservableValue txtLoginObserveTextObserveWidget = SWTObservables.observeText(txtLogin, SWT.Modify); IObservableValue servicegetUsuarioLoginObserveValue = PojoObservables.observeValue(service.getUsuario(), "login"); bindingContext.bindValue(txtLoginObserveTextObserveWidget, servicegetUsuarioLoginObserveValue, null, null); // IObservableValue txtSenhaObserveTextObserveWidget = SWTObservables.observeText(txtSenha, SWT.Modify); IObservableValue servicegetUsuarioSenhaObserveValue = PojoObservables.observeValue(service.getUsuario(), "senha"); bindingContext.bindValue(txtSenhaObserveTextObserveWidget, servicegetUsuarioSenhaObserveValue, null, null); // IObservableValue btnAtivoObserveSelectionObserveWidget = SWTObservables.observeSelection(btnAtivo); IObservableValue servicegetUsuarioAtivoObserveValue = PojoObservables.observeValue(service.getUsuario(), "ativo"); bindingContext.bindValue(btnAtivoObserveSelectionObserveWidget, servicegetUsuarioAtivoObserveValue, null, null); // ObservableListContentProvider listContentProvider = new ObservableListContentProvider(); IObservableMap observeMap = PojoObservables.observeMap(listContentProvider.getKnownElements(), Papel.class, "nome"); comboViewer.setLabelProvider(new ObservableMapLabelProvider(observeMap)); comboViewer.setContentProvider(listContentProvider); // WritableList writableList = new WritableList(papeis, Papel.class); comboViewer.setInput(writableList); // IObservableValue comboViewerObserveSingleSelection = ViewersObservables.observeSingleSelection(comboViewer); IObservableValue servicegetUsuarioPapelObserveValue = PojoObservables.observeValue(service.getUsuario(), "papel"); bindingContext.bindValue(comboViewerObserveSingleSelection, servicegetUsuarioPapelObserveValue, null, null); // IObservableValue txtNomeFuncionarioObserveTextObserveWidget = SWTObservables.observeText(txtNomeFuncionario, SWT.Modify); IObservableValue servicegetUsuarioFuncionarionomeFantasiaObserveValue = PojoObservables.observeValue(service.getUsuario(), "funcionario.nomeFantasia"); bindingContext.bindValue(txtNomeFuncionarioObserveTextObserveWidget, servicegetUsuarioFuncionarionomeFantasiaObserveValue, null, null); return bindingContext; } @Override public MecasoftService<?> getService() { return service; } }