package es.udc.cartolab.gvsig.navtable.contextualmenu; import java.util.Collections; import java.util.List; import javax.swing.ButtonGroup; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.SortOrder; import net.miginfocom.swing.MigLayout; import com.iver.andami.PluginServices; import es.icarto.gvsig.commons.gui.WidgetFactory; import es.icarto.gvsig.commons.utils.Field; @SuppressWarnings("serial") public class ChooseSortFieldPanel extends JPanel { private static final String PROTOTYPE_DISPLAY_VALUE = "XXXXXXXXXXXXXXXXXXXXXXXX"; private final ButtonGroup buttonGroup; private final JComboBox jComboBox; public ChooseSortFieldPanel(int priority, List<Field> fields) { super(new MigLayout("insets 10", "[90!][][]")); String jLabelText = PluginServices.getPluginServices(this).getText( "sort_then_by"); if (priority == 0) { jLabelText = PluginServices.getPluginServices(this).getText( "sort_by"); } add(new JLabel(jLabelText), "cell 0 0 1 2"); Collections.sort(fields); jComboBox = WidgetFactory.combobox(); jComboBox.addItem(Field.EMPTY_FIELD); for (Field f : fields) { jComboBox.addItem(f); } jComboBox.setPrototypeDisplayValue(PROTOTYPE_DISPLAY_VALUE); add(jComboBox, "cell 1 0 1 2"); buttonGroup = new ButtonGroup(); JRadioButton asc = new JRadioButton(PluginServices.getPluginServices( this).getText("sort_asc")); asc.setActionCommand(SortOrder.ASCENDING.toString()); JRadioButton desc = new JRadioButton(PluginServices.getPluginServices( this).getText("sort_desc")); desc.setActionCommand(SortOrder.DESCENDING.toString()); buttonGroup.add(asc); buttonGroup.add(desc); buttonGroup.setSelected(asc.getModel(), true); add(asc, "cell 2 0"); add(desc, "cell 2 1"); } private SortOrder getSortOrder() { String actionCommand = buttonGroup.getSelection().getActionCommand(); return SortOrder.valueOf(actionCommand); } public Field getSelected() { Field field = null; Object selected = jComboBox.getSelectedItem(); if ((selected != null) && (selected != Field.EMPTY_FIELD)) { field = (Field) selected; field.setSortOrder(getSortOrder()); } return field; } }