/* * codjo.net * * Common Apache License 2.0 */ package net.codjo.dataprocess.gui.selector; import javax.swing.JButton; import net.codjo.dataprocess.client.RepositoryClientHelper; import net.codjo.dataprocess.common.exception.RepositoryException; import net.codjo.dataprocess.gui.util.ComboUpdateEventListener; import net.codjo.dataprocess.gui.util.GuiContextUtils; import net.codjo.mad.client.request.RequestException; import net.codjo.mad.gui.framework.LocalGuiContext; import net.codjo.mad.gui.framework.MutableGuiContext; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JLabel; import javax.swing.JPanel; /** * */ public class RepositoryFamilyPanel extends JPanel { private FamilyComboBox familyComboBox; private JLabel jLabelRepository = new JLabel("R�f�rentiel:"); private JLabel jLabelFamily = new JLabel("Famille:"); private ComboUpdateEventListener repositoryEventListener = null; private ComboUpdateEventListener familyEventListener = null; private int oldRepository; private int oldFamily; private RepositoryComboBox repositoryComboBox; private MutableGuiContext ctxt; private boolean enableRepositoryCombobox; private boolean isLoading; private JButton refreshButton = new JButton("Rafraichir"); public RepositoryFamilyPanel(MutableGuiContext ctxt, boolean enableRepositoryCombobox, boolean showVisibleFamilyOnly) { this.ctxt = ctxt; this.enableRepositoryCombobox = enableRepositoryCombobox; repositoryComboBox = new RepositoryComboBox(new LocalGuiContext(ctxt)); familyComboBox = new FamilyComboBox(ctxt, showVisibleFamilyOnly); buildGui(); } public void load() { try { isLoading = true; repositoryComboBox.loadData(); if (!enableRepositoryCombobox) { String currentRepositoryId = GuiContextUtils.getCurrentRepository(ctxt); repositoryComboBox.setSelectedRepository( RepositoryClientHelper.getRepositoryName(ctxt, currentRepositoryId)); } familyComboBox.load(getSelectedRepositoryId()); setOldValues(); isLoading = false; } catch (RepositoryException ex) { throw new IllegalStateException("Erreur d'initialisation du composant RepositoryFamilyPanel", ex); } catch (RequestException ex) { throw new IllegalStateException("Erreur d'initialisation du composant RepositoryFamilyPanel", ex); } } public int getOldFamily() { return oldFamily; } public int getOldRepository() { return oldRepository; } public void buildGui() { repositoryComboBox.setName("repositoryComboBox"); familyComboBox.setName("familyComboBox"); setLayout(new GridBagLayout()); GridBagConstraints gridBagConstraints1 = new GridBagConstraints(); gridBagConstraints1.gridy = 0; gridBagConstraints1.ipadx = 0; gridBagConstraints1.insets = new Insets(5, 5, 5, 1); gridBagConstraints1.gridx = 0; GridBagConstraints gridBagConstraints2 = new GridBagConstraints(); gridBagConstraints2.gridy = 0; gridBagConstraints2.ipadx = 100; gridBagConstraints2.fill = GridBagConstraints.NONE; gridBagConstraints2.insets = new Insets(5, 6, 5, 0); gridBagConstraints2.gridx = 1; GridBagConstraints gridBagConstraints3 = new GridBagConstraints(); gridBagConstraints3.gridy = 0; gridBagConstraints3.ipadx = 0; gridBagConstraints3.insets = new Insets(5, 10, 5, 1); gridBagConstraints3.gridx = 2; GridBagConstraints gridBagConstraints4 = new GridBagConstraints(); gridBagConstraints4.gridy = 0; gridBagConstraints4.ipadx = 100; gridBagConstraints4.fill = GridBagConstraints.NONE; gridBagConstraints4.insets = new Insets(5, 6, 5, 0); gridBagConstraints4.gridx = 3; GridBagConstraints gridBagConstraints5 = new GridBagConstraints(); gridBagConstraints5.gridy = 0; gridBagConstraints5.ipadx = 100; gridBagConstraints5.fill = GridBagConstraints.NONE; gridBagConstraints5.insets = new Insets(5, 6, 5, 0); gridBagConstraints5.gridx = 4; add(jLabelRepository, gridBagConstraints1); add(repositoryComboBox, gridBagConstraints2); add(jLabelFamily, gridBagConstraints3); add(familyComboBox, gridBagConstraints4); add(refreshButton, gridBagConstraints5); repositoryComboBox.addActionListener(new RepositoryActionListener()); familyComboBox.addActionListener(new FamilyActionListener()); refreshButton.addActionListener(new FamilyActionListener()); repositoryComboBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { if (!isLoading) { familyComboBox.load(getSelectedRepositoryId()); } } }); repositoryComboBox.setEnabled(enableRepositoryCombobox); } public int getSelectedRepositoryId() { return repositoryComboBox.getSelectedRepositoryId(); } public void setSelectedRepositoryId(MutableGuiContext ctxt, String repositoryId) throws RepositoryException, RequestException { repositoryComboBox.setSelectedRepository(RepositoryClientHelper.getRepositoryName(ctxt, repositoryId)); } public int getSelectedFamilyId() { return familyComboBox.getSelectedFamilyId(); } public String getSelectedFamilyName() { return (String)familyComboBox.getSelectedItem(); } public void addRepositoryEventListener(ComboUpdateEventListener repoEventListener) { this.repositoryEventListener = repoEventListener; } public void addFamilyEventListener(ComboUpdateEventListener familyEvtListener) { this.familyEventListener = familyEvtListener; } public String getSelectedRepositoryName() { return repositoryComboBox.getSelectedValueToDisplay("repositoryName"); } private void setOldValues() { oldRepository = getSelectedRepositoryId(); oldFamily = getSelectedFamilyId(); } private class FamilyActionListener implements ActionListener { public void actionPerformed(ActionEvent evt) { if (familyEventListener != null) { familyEventListener.executeUpdate(); } setOldValues(); } } private class RepositoryActionListener implements ActionListener { public void actionPerformed(ActionEvent evt) { if (repositoryEventListener != null) { repositoryEventListener.executeUpdate(); } setOldValues(); } } }