OpenConcerto

Dépôt officiel du code source de l'ERP OpenConcerto
sonarqube

svn://code.openconcerto.org/openconcerto

Rev

Rev 181 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package org.openconcerto.modules.common.batchprocessing;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.io.IOException;
import java.util.List;

import javax.swing.AbstractAction;
import javax.swing.JFrame;

import org.openconcerto.erp.modules.AbstractModule;
import org.openconcerto.erp.modules.ComponentsContext;
import org.openconcerto.erp.modules.ModuleFactory;
import org.openconcerto.sql.element.SQLElement;
import org.openconcerto.sql.model.SQLField;
import org.openconcerto.sql.model.SQLRowAccessor;
import org.openconcerto.sql.model.SQLRowValues;
import org.openconcerto.sql.view.list.IListe;
import org.openconcerto.sql.view.list.IListeAction.IListeEvent;
import org.openconcerto.sql.view.list.RowAction;
import org.openconcerto.ui.FrameUtil;

public final class Module extends AbstractModule {

        public Module(ModuleFactory f) throws IOException {
                super(f);
        }

        @Override
        protected void setupComponents(final ComponentsContext ctxt) {

                super.setupComponents(ctxt);
                final SQLElement element = ctxt.getElement("ARTICLE");
                final RowAction.PredicateRowAction editAction = new RowAction.PredicateRowAction(
                                new AbstractAction("Traitement par lot...") {

                                        @Override
                                        public void actionPerformed(ActionEvent e) {
                                                final List<SQLRowAccessor> rows = IListe.get(e).getSelectedRowAccessors();
                                                final int size = rows.size();
                                                if (size > 0) {
                                                        final JFrame f = new JFrame();
                                                        if (size > 1) {
                                                                f.setTitle("Traitement des " + size + " " + element.getPluralName());
                                                        } else {
                                                                f.setTitle("Traitement d'" + element.getSingularName());
                                                        }
                                                        FieldFilter filter = new FieldFilter() {

                                                                @Override
                                                                public boolean isFiltered(SQLField f) {
                                                                        final String fieldName = f.getName();
                                                                        return fieldName.contains("METRIQUE") || fieldName.equals("ID_STOCK");
                                                                }

                                                        };

                                                        f.setContentPane(
                                                                        new BatchEditorPanel(ctxt.getElement("ARTICLE").getDirectory(), rows, filter));
                                                        f.pack();
                                                        f.setMinimumSize(new Dimension(400, 300));
                                                        f.setLocationRelativeTo(IListe.get(e));
                                                        FrameUtil.show(f);
                                                }
                                        }
                                }, false) {
                };
                editAction.setPredicate(IListeEvent.getNonEmptySelectionPredicate());
                element.getRowActions().add(editAction);

        }

        @Override
        protected void start() {
        }

        @Override
        protected void stop() {
        }

}