package org.transgalactica.swing.logistics.view.impl; import javax.annotation.PostConstruct; import javax.inject.Inject; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.SwingConstants; import org.springframework.stereotype.Component; import org.transgalactica.management.data.rest.bo.HangarSummaryTo; import org.transgalactica.swing.logistics.presentationmodel.impl.HangarRecherchePresentationModel; import com.jgoodies.binding.adapter.AbstractTableAdapter; import com.jgoodies.binding.adapter.BasicComponentFactory; import com.jgoodies.forms.builder.PanelBuilder; import com.jgoodies.forms.factories.ComponentFactory2; import com.jgoodies.forms.factories.FormFactory; import com.jgoodies.forms.layout.ColumnSpec; import com.jgoodies.forms.layout.FormLayout; import com.jgoodies.forms.layout.RowSpec; @Component public class HangarRecherchePanel extends JPanel { private static final long serialVersionUID = 1L; private ComponentFactory2 componentFactory = PanelBuilder.getDefaultComponentFactory(); private JTextField localisationField; private JTable hangarTable; private JButton rechercherButton; @Inject private HangarRecherchePresentationModel model; protected HangarRecherchePanel() { } @PostConstruct protected void initComponents() { setLayout(new FormLayout(new ColumnSpec[] { FormFactory.RELATED_GAP_COLSPEC, ColumnSpec.decode("default:grow"), FormFactory.LABEL_COMPONENT_GAP_COLSPEC, ColumnSpec.decode("default:grow"), }, new RowSpec[] { FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC, FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC, FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC, FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC, FormFactory.RELATED_GAP_ROWSPEC, FormFactory.DEFAULT_ROWSPEC, FormFactory.RELATED_GAP_ROWSPEC, RowSpec.decode("default:grow"), FormFactory.RELATED_GAP_ROWSPEC, })); JComponent hangarTitle = componentFactory.createTitle("Liste des Hangars"); add(hangarTitle, "1, 2, 4, 1"); JComponent identificationSeparator = componentFactory.createSeparator("Critères de recherche", SwingConstants.LEFT); add(identificationSeparator, "1, 4, 4, 1"); JLabel localisationLabel = componentFactory.createLabel("Localistation :"); add(localisationLabel, "2, 6, right, default"); localisationField = BasicComponentFactory.createTextField(model.getCriteresModel().getValueModel( "localisationHangar")); localisationField.setColumns(30); add(localisationField, "4, 6, fill, default"); rechercherButton = new JButton(model.getRechercherAction()); add(rechercherButton, "4, 8, right, default"); JComponent vaisseauxSeparator = componentFactory.createSeparator("Résultats de recherche", SwingConstants.LEFT); add(vaisseauxSeparator, "1, 10, 4, 1"); hangarTable = BasicComponentFactory.createTable(model.getResultatsModel(), new AbstractTableAdapter<HangarSummaryTo>("Numéro", "Localisation", "nombre d'emplacements") { private static final long serialVersionUID = 1L; @Override public Object getValueAt(int rowIndex, int columnIndex) { HangarSummaryTo hangar = getRow(rowIndex); switch (columnIndex) { case 0: return hangar.getNumero(); case 1: return hangar.getLocalisation(); case 2: return hangar.getNombreEmplacements(); default: return null; } } }); add(new JScrollPane(hangarTable), "2, 12, 3, 1, fill, fill"); } }