branch feature/8162 created (now f590a7c)
This is an automated email from the git hooks/post-receive script. New change to branch feature/8162 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git at f590a7c correction du redimensionnement (fixes #8162) This branch includes the following new commits: new f590a7c correction du redimensionnement (fixes #8162) The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit f590a7cba045e4797f96e91aa2ccfc5e32f70530 Author: Kevin Morin <morin@codelutin.com> Date: Thu Mar 24 19:11:31 2016 +0100 correction du redimensionnement (fixes #8162) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
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>.
participants (1)
-
codelutin.com scm