package tela.view;
import static aplicacao.helper.LayoutHelper.getActiveShell;
import static aplicacao.helper.MessageHelper.openError;
import java.util.Calendar;
import java.util.Date;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.forms.widgets.Form;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.part.ViewPart;
import org.eclipse.wb.swt.ResourceManager;
import tela.componentes.MecasoftText;
import tela.dialog.BaixarDuplicataDialog;
import tela.filter.BaixaDuplicataFilter;
import aplicacao.helper.FormatterHelper;
import aplicacao.helper.UsuarioHelper;
import aplicacao.service.DuplicataService;
import banco.modelo.Duplicata;
public class BaixaDuplicataView extends ViewPart {
public static final String ID = "tela.view.BaixaDuplicataView"; //$NON-NLS-1$
private final FormToolkit formToolkit = new FormToolkit(Display.getDefault());
private Action actionBuscarTodas;
private Action actionBaixar;
private Action actionBuscarPeriodo;
private Text txtFiltro;
private Table table;
private TableViewer tvDuplicata;
private DuplicataService service = new DuplicataService();
private BaixaDuplicataFilter filter = new BaixaDuplicataFilter();
private MecasoftText txtDataInicial;
private MecasoftText txtDataFinal;
public BaixaDuplicataView() {
createActions();
}
@Override
public void createPartControl(Composite parent) {
Composite container = new Composite(parent, SWT.NONE);
container.setLayout(new FillLayout(SWT.HORIZONTAL));
Form frmBaixaDeDuplicatas = formToolkit.createForm(container);
frmBaixaDeDuplicatas.setImage(ResourceManager.getPluginImage("mecasoft", "assents/duplicata/duplicata32.png"));
formToolkit.paintBordersFor(frmBaixaDeDuplicatas);
frmBaixaDeDuplicatas.setText("Baixa de duplicatas");
frmBaixaDeDuplicatas.getBody().setLayout(new GridLayout(4, false));
Label lblBuscar = new Label(frmBaixaDeDuplicatas.getBody(), SWT.NONE);
formToolkit.adapt(lblBuscar, true, true);
lblBuscar.setText("Buscar:");
txtFiltro = new Text(frmBaixaDeDuplicatas.getBody(), SWT.BORDER);
txtFiltro.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
filter.setSearch(txtFiltro.getText());
tvDuplicata.refresh();
}
});
txtFiltro.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 3, 1));
txtFiltro.setMessage("Filtro...");
formToolkit.adapt(txtFiltro, true, true);
Label lblPerodoDe = new Label(frmBaixaDeDuplicatas.getBody(), SWT.NONE);
formToolkit.adapt(lblPerodoDe, true, true);
lblPerodoDe.setText("Per\u00EDodo de");
txtDataInicial = new MecasoftText(frmBaixaDeDuplicatas.getBody(), SWT.NONE);
txtDataInicial.text.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
if(e.keyCode == SWT.CR)
actionBuscarPeriodo.run();
}
});
txtDataInicial.setOptions(MecasoftText.NUMEROS, 10);
txtDataInicial.addChars(FormatterHelper.MECASOFTTXTDATA, new Integer[]{2, 4}, null, null);
GridData gd_txtDataInicial = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
gd_txtDataInicial.widthHint = 95;
txtDataInicial.setLayoutData(gd_txtDataInicial);
formToolkit.adapt(txtDataInicial);
formToolkit.paintBordersFor(txtDataInicial);
//seta a data inicial como 1 mes atraz
Calendar dtInicial = Calendar.getInstance();
dtInicial.add(Calendar.MONTH, -1);
txtDataInicial.setText(FormatterHelper.getDateFormatData().format(dtInicial.getTime()));
Label lblAte = new Label(frmBaixaDeDuplicatas.getBody(), SWT.NONE);
formToolkit.adapt(lblAte, true, true);
lblAte.setText("at\u00E9");
txtDataFinal = new MecasoftText(frmBaixaDeDuplicatas.getBody(), SWT.NONE);
txtDataFinal.text.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
if(e.keyCode == SWT.CR)
actionBuscarPeriodo.run();
}
});
txtDataFinal.setOptions(MecasoftText.NUMEROS, 10);
txtDataFinal.addChars(FormatterHelper.MECASOFTTXTDATA, new Integer[]{2, 4}, null, null);
GridData gd_txtDataFinal = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
gd_txtDataFinal.widthHint = 95;
txtDataFinal.setLayoutData(gd_txtDataFinal);
formToolkit.adapt(txtDataFinal);
formToolkit.paintBordersFor(txtDataFinal);
//seta a data final com a data atual
Calendar dtFinal = Calendar.getInstance();
txtDataFinal.setText(FormatterHelper.getDateFormatData().format(dtFinal.getTime()));
tvDuplicata = new TableViewer(frmBaixaDeDuplicatas.getBody(), SWT.BORDER | SWT.FULL_SELECTION);
table = tvDuplicata.getTable();
table.setLinesVisible(true);
table.setHeaderVisible(true);
table.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 4, 1));
tvDuplicata.setContentProvider(ArrayContentProvider.getInstance());
tvDuplicata.addFilter(filter);
formToolkit.paintBordersFor(table);
TableViewerColumn tvcNumero = new TableViewerColumn(tvDuplicata, SWT.NONE);
tvcNumero.setLabelProvider(new ColumnLabelProvider(){
@Override
public String getText(Object element) {
return ((Duplicata)element).getNumero();
}
});
TableColumn tblclmnNmero = tvcNumero.getColumn();
tblclmnNmero.setWidth(100);
tblclmnNmero.setText("N�mero");
TableViewerColumn tvcServico = new TableViewerColumn(tvDuplicata, SWT.NONE);
tvcServico.setLabelProvider(new ColumnLabelProvider(){
@Override
public String getText(Object element) {
return ((Duplicata)element).getServicoPrestado().getId().toString();
}
});
TableColumn tblclmnServico = tvcServico.getColumn();
tblclmnServico.setWidth(156);
tblclmnServico.setText("Servi\u00E7o");
TableViewerColumn tvcDataVencimento = new TableViewerColumn(tvDuplicata, SWT.NONE);
tvcDataVencimento.setLabelProvider(new ColumnLabelProvider(){
@Override
public String getText(Object element) {
return FormatterHelper.getDateFormatData().format(((Duplicata)element).getDataVencimento());
}
});
TableColumn tblclmnDataVencimento = tvcDataVencimento.getColumn();
tblclmnDataVencimento.setWidth(167);
tblclmnDataVencimento.setText("Data Vencimento");
TableViewerColumn tvcValor = new TableViewerColumn(tvDuplicata, SWT.NONE);
tvcValor.setLabelProvider(new ColumnLabelProvider(){
@Override
public String getText(Object element) {
return FormatterHelper.getDecimalFormat().format(((Duplicata)element).getValor());
}
});
TableColumn tblclmnValor = tvcValor.getColumn();
tblclmnValor.setWidth(137);
tblclmnValor.setText("Valor");
Menu menu = new Menu(table);
table.setMenu(menu);
MenuItem mntmBaixar = new MenuItem(menu, SWT.NONE);
mntmBaixar.setImage(ResourceManager.getPluginImage("mecasoft", "assents/duplicata/baixar20.png"));
mntmBaixar.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
IStructuredSelection selecao = (IStructuredSelection)tvDuplicata.getSelection();
if(selecao.isEmpty())
return;
if(UsuarioHelper.getCaixa() == null){
openError("O caixa esta fechado.\nAbra-o primeiro para depois baixar as duplicatas.");
return;
}
Duplicata duplicata = (Duplicata)selecao.getFirstElement();
new BaixarDuplicataDialog(getActiveShell(), duplicata).open();
actionBuscarPeriodo.run();
}
});
mntmBaixar.setText("Baixar");
frmBaixaDeDuplicatas.getToolBarManager().add(actionBuscarTodas);
frmBaixaDeDuplicatas.getToolBarManager().add(actionBuscarPeriodo);
frmBaixaDeDuplicatas.getToolBarManager().add(actionBaixar);
frmBaixaDeDuplicatas.updateToolBar();
}
private void createActions() {
{
actionBuscarTodas = new Action("Buscar todas as duplicatas") {
@Override
public void run() {
tvDuplicata.setInput(service.findAllNaoPagas());
tvDuplicata.refresh();
}
};
actionBuscarTodas.setImageDescriptor(ResourceManager.getPluginImageDescriptor("mecasoft", "assents/funcoes/refresh16.png"));
}
{
actionBaixar = new Action("Baixar duplicata") {
@Override
public void run() {
if(UsuarioHelper.getCaixa() == null){
openError("O caixa esta fechado.\nAbra-o primeiro para depois baixar as duplicatas.");
return;
}
new BaixarDuplicataDialog(getActiveShell(), new Duplicata()).open();
actionBuscarPeriodo.run();
}
};
actionBaixar.setImageDescriptor(ResourceManager.getPluginImageDescriptor("mecasoft", "assents/duplicata/baixar20.png"));
}
{
actionBuscarPeriodo = new Action("Buscar duplicatas no per�odo") {
@Override
public void run() {
Date dtInicial;
Date dtFinal;
try{
dtInicial = FormatterHelper.getDateFormatData().parse(txtDataInicial.getText());
dtFinal = FormatterHelper.getDateFormatData().parse(txtDataFinal.getText());
}catch(Exception e){
openError("Informe o per�odo corretamente.");
return;
}
tvDuplicata.setInput(service.findAllNaoPagasByPeriodo(dtInicial, dtFinal));
tvDuplicata.refresh();
}
};
actionBuscarPeriodo.setImageDescriptor(ResourceManager.getPluginImageDescriptor("mecasoft", "assents/funcoes/refresh16.png"));
}
}
@Override
public void setFocus() {
actionBuscarPeriodo.run();
}
}