package net.sf.minuteProject.console.panel; import static net.sf.minuteProject.console.utils.UIUtils.createLabel; import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; import net.sf.minuteProject.configuration.bean.Condition; import net.sf.minuteProject.console.face.FillBasicConfiguration; import net.sf.minuteProject.integration.bean.BasicIntegrationConfiguration; public class PackagePanel extends JPanel implements FillBasicConfiguration{ private JLabel packageJL; private JScrollPane packageJSP; private JButton addPackageLineButton, removePackageLinesButton; private ClickListener clickListener; private DefaultTableModel dataModel; private JTable table; public PackagePanel() { packageJL = createLabel("packaging"); clickListener = new ClickListener(); addPackageLineButton = getAddPackageLineButton(); removePackageLinesButton = getRemovePackageLinesButton(); dataModel = new DefaultTableModel(new String[][]{{"",""},{"",""}}, new String[] {"entities starting with goes to ","package"}); table = new JTable(dataModel); } public void fill(BasicIntegrationConfiguration bic) { bic.setPackageConditions(getConditions()); } public List<Condition> getConditions() { int nbRow = dataModel.getRowCount(); List<Condition> conditions = new ArrayList<Condition>(); for (int i = 0; i < nbRow; i++) { Condition condition = new Condition(); condition.setType("package"); condition.setStartsWith((String)dataModel.getValueAt(i, 0)); condition.setResult((String)dataModel.getValueAt(i, 1)); conditions.add(condition); } return conditions; } public void fillPanel (JPanel panel) { panel.add(packageJL,"skip"); packageJSP = getPackageJSP (); panel.add(packageJSP, "span, growx"); panel.add(createLabel(""), "skip"); panel.add(addPackageLineButton,"skip"); panel.add(removePackageLinesButton,"wrap para"); } private JScrollPane getPackageJSP() { Dimension size = table.getPreferredScrollableViewportSize(); table.setPreferredScrollableViewportSize (new Dimension(Math.min(getPreferredSize().width, size.width), 50)); return new JScrollPane(table); } private JButton getAddPackageLineButton() { JButton b = new JButton("Add package"); b.addActionListener(clickListener); return b; } private JButton getRemovePackageLinesButton() { JButton b = new JButton("Remove packages"); b.addActionListener(clickListener); return b; } private class ClickListener implements ActionListener { public void actionPerformed(ActionEvent e) { if (e.getSource() == addPackageLineButton) { dataModel.addRow(new String[]{"",""}); } else if (e.getSource() == removePackageLinesButton) { int [] rows = table.getSelectedRows(); int s = rows.length; for (int i = s-1; i > -1; i--) { dataModel.removeRow(rows[i]); } } } } }