This is an automated email from the git hooks/post-receive script. New commit to branch feature/8162 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit f590a7cba045e4797f96e91aa2ccfc5e32f70530 Author: Kevin Morin <morin@codelutin.com> Date: Thu Mar 24 19:11:31 2016 +0100 correction du redimensionnement (fixes #8162) --- .../species/frequency/SpeciesFrequencyUI.jaxx | 20 +++++---- .../frequency/SpeciesFrequencyUIHandler.java | 12 +++--- .../tutti/ui/swing/util/WideDataComboBoxUI.java | 49 ++++++++++++++++++++++ 3 files changed, 69 insertions(+), 12 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx index 5fffd0a..cf06030 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx @@ -20,7 +20,8 @@ #L% --> <JPanel id='editSpeciesFrequenciesTopPanel' layout='{new BorderLayout()}' decorator='help' - implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<SpeciesFrequencyUIModel, SpeciesFrequencyUIHandler>'> + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<SpeciesFrequencyUIModel, SpeciesFrequencyUIHandler>' + onComponentResized="JAXXWidgetUtil.setComponentWidth(lengthStepCaracteristicComboBox, getLengthStepPanelPreferedWidth()) ;"> <import> fr.ifremer.tutti.persistence.entities.data.CopyIndividualObservationMode @@ -40,6 +41,7 @@ fr.ifremer.tutti.ui.swing.util.computable.ComputableDataEditor jaxx.runtime.swing.CardLayout2Ext + jaxx.runtime.swing.JAXXWidgetUtil jaxx.runtime.swing.editor.bean.BeanFilterableComboBox org.nuiton.jaxx.widgets.number.NumberEditor @@ -66,6 +68,10 @@ public SpeciesFrequencyUI(TuttiUI<?,?> parentUI, String speciesOrBenthosContext) } public String getSpeciesOrBenthosContext() { return speciesOrBenthosContext; } + +protected int getLengthStepPanelPreferedWidth() { + return getWidth() - frequencyModePanel.getPreferredSize().width - histogramPanel.getPreferredSize().width; +} ]]></script> <SpeciesFrequencyUIModel id='model' initializer='getContextValue(SpeciesFrequencyUIModel.class)'/> @@ -147,7 +153,7 @@ public String getSpeciesOrBenthosContext() { return speciesOrBenthosContext; } <cell rows="2"> <!-- length step caracteristic --> - <Table id="lengthStepCaracteristicPanel" anchor="west" styleClass="visibleIfFrequencies"> + <Table id="lengthStepCaracteristicPanel" anchor="west" styleClass="visibleIfFrequencies" fill="both"> <row> <cell> @@ -174,7 +180,7 @@ public String getSpeciesOrBenthosContext() { return speciesOrBenthosContext; } </Table> </cell> - <cell rows="4" weightx="1"> + <cell rows="4"> <JPanel id="histogramPanel" layout="{new BorderLayout()}" styleClass="visibleIfFrequencies"/> </cell> </row> @@ -191,7 +197,7 @@ public String getSpeciesOrBenthosContext() { return speciesOrBenthosContext; } <cell rows="3"> <JPanel id='modeConfigurationPanel' styleClass="visibleIfFrequencies"> - <Table id='autoGenModePanel' constraints='"autoGenMode"'> + <Table id='autoGenModePanel' constraints='"autoGenMode"' fill="both"> <!-- Min step--> <row> <cell anchor='west'> @@ -219,7 +225,7 @@ public String getSpeciesOrBenthosContext() { return speciesOrBenthosContext; } </cell> </row> </Table> - <Table id='rafaleModePanel' constraints='"rafaleMode"'> + <Table id='rafaleModePanel' constraints='"rafaleMode"' fill="both"> <!-- Rafale step--> <row> <cell weightx='1.0'> @@ -273,7 +279,7 @@ public String getSpeciesOrBenthosContext() { return speciesOrBenthosContext; } <cell anchor="east"> <JLabel id='totalNumberLabel'/> </cell> - <cell> + <cell weightx="1"> <JTextField id='totalNumberField'/> </cell> </row> @@ -281,7 +287,7 @@ public String getSpeciesOrBenthosContext() { return speciesOrBenthosContext; } <cell> <JLabel id='totalWeightLabel'/> </cell> - <cell> + <cell weightx="1"> <ComputableDataEditor id='totalWeightField' genericType="Float" constructorParams='this'/> </cell> </row> diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java index 6c3cde9..f692fe4 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java @@ -47,12 +47,8 @@ import fr.ifremer.tutti.type.WeightUnit; import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchRowModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchTableModel; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.SamplingCodeCellRenderer; import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.SamplingCodeCellEditor; -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.EditSpeciesBatchPanelUI; -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesOrBenthosBatchUISupport; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchRowModel; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchTableModel; +import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.SamplingCodeCellRenderer; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.EditSpeciesBatchPanelUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesOrBenthosBatchUISupport; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.edit.SpeciesBatchRowModel; @@ -63,6 +59,7 @@ import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; import fr.ifremer.tutti.ui.swing.util.TuttiNumberTickUnitSource; import fr.ifremer.tutti.ui.swing.util.TuttiUI; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.WideDataComboBoxUI; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentCellEditor; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentCellRenderer; import fr.ifremer.tutti.ui.swing.util.caracteristics.CaracteristicMapCellComponent; @@ -97,6 +94,7 @@ import org.nuiton.decorator.Decorator; import org.nuiton.jaxx.application.ApplicationBusinessException; import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler; +import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; @@ -523,6 +521,10 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci lengthStepCaracteristics, modelCaracteristic); + // on change l'ui pour pouvoir redimensionner la liste mais pas sa popup + JComboBox lengthStepCaracteristicComboBox = ui.getLengthStepCaracteristicComboBox().getCombobox(); + lengthStepCaracteristicComboBox.setUI(new WideDataComboBoxUI(lengthStepCaracteristicComboBox.getPreferredSize())); + // get step from the pmfm float step = getStep(modelCaracteristic); model.setStep(step); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/WideDataComboBoxUI.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/WideDataComboBoxUI.java new file mode 100644 index 0000000..0a6a588 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/WideDataComboBoxUI.java @@ -0,0 +1,49 @@ +package fr.ifremer.tutti.ui.swing.util; + +import javax.swing.plaf.basic.BasicComboPopup; +import javax.swing.plaf.basic.ComboPopup; +import javax.swing.plaf.synth.SynthComboBoxUI; +import java.awt.Dimension; +import java.awt.Rectangle; + +/** + * ComboBox ui pour les listes déroulantes dont la popup est très large alors qu'on n'a pas trop la place pour une liste large. + * + * @author Kevin Morin (Code Lutin) + * @since 4.5 + */ +public class WideDataComboBoxUI extends SynthComboBoxUI { + + private Dimension popupSize; + + public WideDataComboBoxUI(Dimension popupSize) { + this.popupSize = popupSize; + } + + protected ComboPopup createPopup() { + BasicComboPopup popup = new BasicComboPopup(comboBox) { + + public void show() { + int width = Math.max(popupSize.width, comboBox.getPreferredSize().width); + popupSize.setSize(width, getPopupHeightForRowCount(comboBox.getMaximumRowCount())); + Rectangle popupBounds = computePopupBounds(0, comboBox.getBounds().height, width, popupSize.height); + scroller.setMaximumSize(popupBounds.getSize()); + scroller.setPreferredSize(popupBounds.getSize()); + scroller.setMinimumSize(popupBounds.getSize()); + list.invalidate(); + int selectedIndex = comboBox.getSelectedIndex(); + if (selectedIndex == -1) { + list.clearSelection(); + } else { + list.setSelectedIndex(selectedIndex); + } + list.ensureIndexIsVisible(list.getSelectedIndex()); + setLightWeightPopupEnabled(comboBox.isLightWeightPopupEnabled()); + + show(comboBox, popupBounds.x, popupBounds.y); + } + }; + popup.getAccessibleContext().setAccessibleParent(comboBox); + return popup; + } +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.