r2394 - in isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input: . population
Author: chatellier Date: 2009-06-17 08:34:54 +0000 (Wed, 17 Jun 2009) New Revision: 2394 Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationSeasonInfoComboModel.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationSeasonInfoComboRenderer.java Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationEquationUI.jaxx isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationImmigrationUI.jaxx isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationUI.jaxx Log: Conservation de la selection. Am?\195?\169lioration des propri?\195?\169t?\195?\169s 'enabled/actif'. Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationEquationUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationEquationUI.jaxx 2009-06-16 15:54:04 UTC (rev 2393) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationEquationUI.jaxx 2009-06-17 08:34:54 UTC (rev 2394) @@ -46,29 +46,29 @@ } ]]> </script> - <Table id='body'> + <Table> <row> - <cell fill='both' weightx='1.0' weighty='0.3'> + <cell fill='both' weightx='1.0' weighty='1.0'> <InputOneEquationUI id='migrationEquation' constructorParams='this' - lblText='{_("isisfish.common.migration")}' + lblText='{_("isisfish.common.migration")}' actif='{isActif()}' bean='{getPopInfo()}' nameEquation='Migration' methodGet='MigrationEquation' methodSet='MigrationEquationAsString' clazz='{fr.ifremer.isisfish.equation.MigrationEquation.class}' decorator='boxed' _bean='{PopulationImpl.class}' _method='"Growth"'/> </cell> </row> <row> - <cell fill='both' weightx='1.0' weighty='0.3'> + <cell fill='both' weightx='1.0' weighty='1.0'> <InputOneEquationUI id='emigrationEquation' constructorParams='this' - lblText='{_("isisfish.common.emigration")}' + lblText='{_("isisfish.common.emigration")}' actif='{isActif()}' bean='{getPopInfo()}' nameEquation='Emigration' methodGet='EmigrationEquation' methodSet='EmigrationEquationAsString' clazz='{fr.ifremer.isisfish.equation.EmigrationEquation.class}' decorator='boxed' _bean='{PopulationImpl.class}' _method='"Growth"'/> </cell> </row> <row> - <cell fill='both' weightx='1.0' weighty='0.3'> + <cell fill='both' weightx='1.0' weighty='1.0'> <InputOneEquationUI id='immigrationEquation' constructorParams='this' - lblText='{_("isisfish.common.immigration")}' + lblText='{_("isisfish.common.immigration")}' actif='{isActif()}' bean='{getPopInfo()}' nameEquation='Immigration' methodGet='ImmigrationEquation' methodSet='ImmigrationEquationAsString' clazz='{fr.ifremer.isisfish.equation.ImmigrationEquation.class}' decorator='boxed' _bean='{PopulationImpl.class}' _method='"Growth"'/> Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationImmigrationUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationImmigrationUI.jaxx 2009-06-16 15:54:04 UTC (rev 2393) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationImmigrationUI.jaxx 2009-06-17 08:34:54 UTC (rev 2394) @@ -144,10 +144,10 @@ } ]]> </script> - <Table id='body'> + <Table> <row> <cell> - <JLabel text="isisfish.common.populationGroup" enabled='{isActif()}'/> + <JLabel text="isisfish.common.populationGroup" enabled='{isActif()}'/> </cell> <cell fill='horizontal' weightx='0.5'> <JComboBox id="fieldPopulationMigrationImmigrationGroupChooser" enabled='{isActif()}' onActionPerformed='groupChanged()'/> @@ -177,12 +177,12 @@ </row> <row columns='4'> <cell fill='both' weightx='1.0' weighty='1.0'> - <org.codelutin.math.matrix.gui.JAXXMatrixEditor id ='populationMigrationImmigrationTable' linearModel="true" enabled='{isActif()}'/> + <org.codelutin.math.matrix.gui.JAXXMatrixEditor id='populationMigrationImmigrationTable' linearModel="true" enabled='{isActif()}'/> </cell> </row> <row> <cell columns='4' fill='horizontal' weightx='1.0'> - <JButton id="remove" text="isisfish.common.remove" onActionPerformed='remove()' enabled='{isActif()}'/> + <JButton id="remove" text="isisfish.common.remove" onActionPerformed='remove()' enabled='{isActif()}'/> </cell> </row> </Table> Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationUI.jaxx 2009-06-16 15:54:04 UTC (rev 2393) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationMigrationUI.jaxx 2009-06-17 08:34:54 UTC (rev 2394) @@ -23,26 +23,26 @@ <fr.ifremer.isisfish.entities.PopulationImpl id='bean' javaBean='null'/> <fr.ifremer.isisfish.entities.PopulationSeasonInfoImpl id='popInfo' javaBean='null'/> + <Boolean id="selectedPopulationSeasonInfo" javaBean='false' /> + <script><![CDATA[ import fr.ifremer.isisfish.entities.PopulationSeasonInfo; import fr.ifremer.isisfish.entities.PopulationSeasonInfoImpl; import fr.ifremer.isisfish.entities.Population; import fr.ifremer.isisfish.entities.PopulationImpl; -import fr.ifremer.isisfish.ui.widget.editor.GenericCell; +import fr.ifremer.isisfish.ui.input.population.PopulationSeasonInfoComboModel; +import fr.ifremer.isisfish.ui.input.population.PopulationSeasonInfoComboRenderer; addPropertyChangeListener("bean", new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { if (evt.getOldValue() != null || evt.getNewValue() == null) { - // remove previous binding on getBean() - //jaxx.runtime.SwingUtil.removeDataBinding(get$Table0(), "fieldCellName.text", "fieldCellLongitude.text", "fieldCellLatitude.text", "fieldCellLand.selected", "fieldCellComment.text"); fieldPopulationMigrationComment.setText(""); fieldUseEquationMigration.setSelected(false); } - if (evt.getNewValue() != null) { - // add binding on getBean() - //jaxx.runtime.SwingUtil.applyDataBinding(get$Table0(), "fieldCellName.text", "fieldCellLongitude.text", "fieldCellLatitude.text", "fieldCellLand.selected", "fieldCellComment.text"); - } + /*if (evt.getNewValue() != null) { + + }*/ } }); @@ -55,17 +55,33 @@ setBean(null); setBean((PopulationImpl) population); + // refresh psi list in combo box + PopulationSeasonInfoComboModel model = (PopulationSeasonInfoComboModel)fieldPopulationMigrationSeasonChooser.getModel(); if (getBean() != null) { - setFieldPopulationMigrationSeasonChooserModel(); + PopulationSeasonInfo previousSelected = (PopulationSeasonInfo)model.getSelectedItem(); + model.setPopulationSeasonInfos(getBean().getPopulationSeasonInfo()); + + // do this to keep selected after cancel/refresh + if (previousSelected != null) { + for (PopulationSeasonInfo psi : getBean().getPopulationSeasonInfo()) { + if (psi.getTopiaId().equals(previousSelected.getTopiaId())) { + model.setSelectedItem(psi); + } + } + } + + seasonChanged(); } - - // must reset popInfo here, on tree swap - // there is a popInfo here - // and useEquationChanged erase saved UseEquationMigration field - setPopInfo(null); - useEquationChanged(); - + else { + model.setPopulationSeasonInfos(null); + } + getVerifier().addCurrentPanel(populationMigrationEquationUI, populationMigrationMigrationUI, populationMigrationImmigrationUI, populationMigrationEmigrationUI); + // addCurrentPanel set all to isActif() + // force it to isSelectedPopulationSeasonInfo() + // twice for real change event :( + setSelectedPopulationSeasonInfo(fieldPopulationMigrationSeasonChooser.getModel().getSelectedItem() == null); + setSelectedPopulationSeasonInfo(fieldPopulationMigrationSeasonChooser.getModel().getSelectedItem() != null); } @Override @@ -75,47 +91,38 @@ } protected void seasonChanged() { - setPopInfo((PopulationSeasonInfoImpl)getPopulationSeasonInfo()); + PopulationSeasonInfoComboModel model = (PopulationSeasonInfoComboModel)fieldPopulationMigrationSeasonChooser.getModel(); + PopulationSeasonInfo selectedPSI = (PopulationSeasonInfo)model.getSelectedItem(); + setPopInfo((PopulationSeasonInfoImpl)selectedPSI); if (getPopInfo() != null) { getVerifier().addCurrentEntity(getPopInfo()); populationMigrationEquationUI.init(getPopInfo()); populationMigrationMigrationUI.init(getPopInfo()); populationMigrationImmigrationUI.init(getPopInfo()); populationMigrationEmigrationUI.init(getPopInfo()); + + setSelectedPopulationSeasonInfo(isActif()); } - useEquationChanged(); -} -protected void setFieldPopulationMigrationSeasonChooserModel() { - DefaultComboBoxModel model = new DefaultComboBoxModel(); - if (getBean().getPopulationSeasonInfo() != null) { - model.addElement(new GenericCell(" ", null, PopulationSeasonInfo.class)); - for (PopulationSeasonInfo psi : getBean().getPopulationSeasonInfo()) { - model.addElement(new GenericCell(psi.getFirstMonth() + " - " + psi.getLastMonth(), psi, PopulationSeasonInfo.class)); - } + else { + setSelectedPopulationSeasonInfo(false); } - fieldPopulationMigrationSeasonChooser.setModel(model); + refreshHidablePanel(); } -protected PopulationSeasonInfo getPopulationSeasonInfo() { - PopulationSeasonInfo result = null; - Object selected = fieldPopulationMigrationSeasonChooser.getSelectedItem(); - if (selected != null) { - GenericCell cell = (GenericCell)selected; - if (cell.getValue() != null) { - result = (PopulationSeasonInfo)cell.getValue(); - } - } - return result; +protected void useEquationChanged() { + getPopInfo().setUseEquationMigration(fieldUseEquationMigration.isSelected()); + refreshHidablePanel(); } -protected void useEquationChanged() { +protected void refreshHidablePanel() { if (getPopInfo() != null) { - getPopInfo().setUseEquationMigration(fieldUseEquationMigration.isSelected()); + if (getPopInfo().getUseEquationMigration()) { + fieldUseEquationMigration.setSelected(true); + ((CardLayout) hidablePanel.getLayout()).show(hidablePanel, "fieldUseEquation"); + } + else { + fieldUseEquationMigration.setSelected(false); + ((CardLayout) hidablePanel.getLayout()).show(hidablePanel, "fieldUseMatrix"); + } } - if (fieldUseEquationMigration.isSelected()) { - ((CardLayout) hidablePanel.getLayout()).show(hidablePanel, "fieldUseEquation"); - } - else { - ((CardLayout) hidablePanel.getLayout()).show(hidablePanel, "fieldUseMatrix"); - } } ]]> </script> @@ -125,46 +132,51 @@ <JLabel text="isisfish.populationMigration.selectSeason" enabled='{isActif()}'/> </cell> <cell fill='horizontal' weightx='1.0'> - <JComboBox id="fieldPopulationMigrationSeasonChooser" onActionPerformed='seasonChanged()' enabled='{isActif()}'/> + <JComboBox id="fieldPopulationMigrationSeasonChooser" + model='{new PopulationSeasonInfoComboModel()}' + renderer="{new PopulationSeasonInfoComboRenderer()}" + onActionPerformed='seasonChanged()' + enabled='{isActif()}'/> </cell> </row> <row> <cell columns='2' anchor='west'> <JCheckBox id="fieldUseEquationMigration" selected='{getPopInfo().getUseEquationMigration()}' - text="isisfish.populationMigration.useEquation" onActionPerformed='useEquationChanged()' enabled='{isActif()}' decorator='boxed'/> + text="isisfish.populationMigration.useEquation" onActionPerformed='useEquationChanged()' enabled='{isSelectedPopulationSeasonInfo()}' decorator='boxed'/> </cell> </row> <row> <cell columns='2' fill='both' weightx='1.0' weighty='0.7'> - <JPanel id="hidablePanel" layout='{new CardLayout()}'> - <PopulationMigrationEquationUI id='populationMigrationEquationUI' constraints='"fieldUseEquation"' constructorParams='this'/> - <JTabbedPane id="fieldUseMatrix" constraints='"fieldUseMatrix"'> + <JPanel id="hidablePanel" layout='{new CardLayout()}'> + <JTabbedPane id="fieldUseMatrix" constraints='"fieldUseMatrix"' enabled='{isSelectedPopulationSeasonInfo()}'> <tab title='{_("isisfish.populationMigrationMigration.title")}'> <PopulationMigrationMigrationUI id="populationMigrationMigrationUI" constructorParams='this' decorator='boxed' - _bean='{PopulationSeasonInfoImpl.class}' _method='"MigrationMatrix"'/> + _bean='{PopulationSeasonInfoImpl.class}' _method='"MigrationMatrix"' actif='{isSelectedPopulationSeasonInfo()}' /> </tab> <tab title='{_("isisfish.populationMigrationImmigration.title")}'> <PopulationMigrationImmigrationUI id="populationMigrationImmigrationUI" constructorParams='this' decorator='boxed' - _bean='{PopulationSeasonInfoImpl.class}' _method='"ImmigrationMatrix"'/> + _bean='{PopulationSeasonInfoImpl.class}' _method='"ImmigrationMatrix"' actif='{isSelectedPopulationSeasonInfo()}' /> </tab> <tab title='{_("isisfish.populationMigrationEmigration.title")}'> <PopulationMigrationEmigrationUI id="populationMigrationEmigrationUI" constructorParams='this' decorator='boxed' - _bean='{PopulationSeasonInfoImpl.class}' _method='"EmigrationMatrix"'/> + _bean='{PopulationSeasonInfoImpl.class}' _method='"EmigrationMatrix"' actif='{isSelectedPopulationSeasonInfo()}' /> </tab> </JTabbedPane> + <PopulationMigrationEquationUI id='populationMigrationEquationUI' constraints='"fieldUseEquation"' constructorParams='this' + actif='{isSelectedPopulationSeasonInfo()}' /> </JPanel> </cell> </row> <row> <cell anchor='east'> - <JLabel text="isisfish.populationMigration.comments" enabled='{isActif()}'/> + <JLabel text="isisfish.populationMigration.comments" enabled='{isSelectedPopulationSeasonInfo()}'/> </cell> <cell fill='both' weightx='1.0' weighty='0.3'> <JScrollPane> <!-- comment can be null jaxx.runtime.SwingUtil.getStringValue() --> <JTextArea id="fieldPopulationMigrationComment" text='{jaxx.runtime.SwingUtil.getStringValue(getBean().getMigrationComment())}' onKeyReleased='getBean().setMigrationComment(fieldPopulationMigrationComment.getText())' - enabled='{isActif()}' decorator='boxed'/> + enabled='{isSelectedPopulationSeasonInfo()}' decorator='boxed'/> </JScrollPane> </cell> </row> Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationSeasonInfoComboModel.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationSeasonInfoComboModel.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationSeasonInfoComboModel.java 2009-06-17 08:34:54 UTC (rev 2394) @@ -0,0 +1,102 @@ +/* *##% + * Copyright (C) 2009 Code Lutin + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.ui.input.population; + +import java.util.List; + +import javax.swing.DefaultComboBoxModel; + +import fr.ifremer.isisfish.entities.PopulationSeasonInfo; + +/** + * Model pour la liste des {@link PopulationSeasonInfo}. + * + * @author chatellier + * @version $Revision: 2350 $ + * + * Last update : $Date: 2009-06-09 13:52:58 +0200 (mar. 09 juin 2009) $ + * By : $Author: chatellier $ + */ +public class PopulationSeasonInfoComboModel extends DefaultComboBoxModel { + + /** serialVersionUID. */ + private static final long serialVersionUID = 6171850179969290032L; + + /** PopulationSeasonInfo list */ + protected List<PopulationSeasonInfo> populationSeasonInfos; + + /** + * Empty constructor. + */ + public PopulationSeasonInfoComboModel() { + this(null); + } + + /** + * Constructor with population season info list. + * + * @param populationSeasonInfos population season info list + */ + public PopulationSeasonInfoComboModel(List<PopulationSeasonInfo> populationSeasonInfos) { + super(); + setPopulationSeasonInfos(populationSeasonInfos); + } + + /** + * Get population season info list. + * + * @return population season info list + */ + public List<PopulationSeasonInfo> getPopulationSeasonInfos() { + return populationSeasonInfos; + } + + /** + * Set population season info list. + * + * @param populationSeasonInfos the population season info list to set + */ + public void setPopulationSeasonInfos(List<PopulationSeasonInfo> populationSeasonInfos) { + this.populationSeasonInfos = populationSeasonInfos; + + // clear selection + setSelectedItem(null); + } + + /* + * @see javax.swing.ListModel#getElementAt(int) + */ + @Override + public Object getElementAt(int index) { + return populationSeasonInfos.get(index); + } + + /* + * @see javax.swing.ListModel#getSize() + */ + @Override + public int getSize() { + int size = 0; + + if (populationSeasonInfos != null) { + size = populationSeasonInfos.size(); + } + return size; + } +} Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationSeasonInfoComboRenderer.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationSeasonInfoComboRenderer.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/population/PopulationSeasonInfoComboRenderer.java 2009-06-17 08:34:54 UTC (rev 2394) @@ -0,0 +1,65 @@ +/* *##% + * Copyright (C) 2009 Code Lutin + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.ui.input.population; + +import java.awt.Component; + +import javax.swing.DefaultListCellRenderer; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.ListCellRenderer; + +import fr.ifremer.isisfish.entities.PopulationSeasonInfo; + +/** + * Renderer pour la combo des {@link PopulationSeasonInfo}. + * + * @author chatellier + * @version $Revision: 2350 $ + * + * Last update : $Date: 2009-06-09 13:52:58 +0200 (mar. 09 juin 2009) $ + * By : $Author: chatellier $ + */ +public class PopulationSeasonInfoComboRenderer extends DefaultListCellRenderer implements + ListCellRenderer { + + /** serialVersionUID. */ + private static final long serialVersionUID = -8277883340386163087L; + + /* + * @see javax.swing.ListCellRenderer#getListCellRendererComponent(javax.swing.JList, java.lang.Object, int, boolean, boolean) + */ + @Override + public Component getListCellRendererComponent(JList list, Object value, + int index, boolean isSelected, boolean cellHasFocus) { + + // this must be used to have alterned highlight rows and default + // selection color + JLabel c = (JLabel) super.getListCellRendererComponent(list, value, + index, isSelected, cellHasFocus); + + PopulationSeasonInfo populationSeasonInfo = (PopulationSeasonInfo) value; + + // there is no default selection + if (value != null) { + c.setText(populationSeasonInfo.getFirstMonth() + " - " + populationSeasonInfo.getLastMonth()); + } + return c; + } +}
participants (1)
-
chatellierï¼ users.labs.libre-entreprise.org