Author: tchemit Date: 2008-02-23 00:50:58 +0000 (Sat, 23 Feb 2008) New Revision: 1208 Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/SearchAction.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowListTabAbstractAction.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/ListTableModel.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/QueryModel.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/DetailTabRefreshHelper.java trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-en_GB.properties trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-fr_FR.properties Log: add list sortor fix to see LE type TODO modify detail model to match directly a LE and no more a MetaData Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/SearchAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/SearchAction.java 2008-02-22 21:35:14 UTC (rev 1207) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/SearchAction.java 2008-02-23 00:50:58 UTC (rev 1208) @@ -68,6 +68,9 @@ model.synch(model.isRemote(), (MetaData) null); model.setSelectedIndex(-1); + //model.getQuery().setSortAscending(false); + //model.getQuery().setSortColumn(SortColumn.None); + // update model model.updateTabModel(getContext(), (ListTableModel) ((JListTab) getUI()).getTable().getModel(), true); } Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowListTabAbstractAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowListTabAbstractAction.java 2008-02-22 21:35:14 UTC (rev 1207) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowListTabAbstractAction.java 2008-02-23 00:50:58 UTC (rev 1208) @@ -20,27 +20,35 @@ import fr.cemagref.simexplorer.is.entities.metadata.MetaData; import fr.cemagref.simexplorer.is.exceptions.SimExplorerRuntimeException; -import fr.cemagref.simexplorer.is.ui.swing.ui.JListTab; import fr.cemagref.simexplorer.is.ui.swing.SimExplorerActionManager; import fr.cemagref.simexplorer.is.ui.swing.actions.ImportElementAction; import fr.cemagref.simexplorer.is.ui.swing.model.DataEntityModel; import fr.cemagref.simexplorer.is.ui.swing.model.ListTabModel; import fr.cemagref.simexplorer.is.ui.swing.model.ListTableModel; +import fr.cemagref.simexplorer.is.ui.swing.ui.JListTab; import fr.cemagref.simexplorer.is.ui.swing.ui.ListTabRefreshHelper; import jaxx.runtime.swing.JAXXTab; import static org.codelutin.i18n.I18n._; import javax.swing.AbstractButton; import javax.swing.JTabbedPane; +import javax.swing.JTable; import javax.swing.ListSelectionModel; +import javax.swing.RowSorter; +import javax.swing.SortOrder; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; +import javax.swing.event.RowSorterEvent; +import javax.swing.event.RowSorterListener; +import javax.swing.table.TableModel; +import javax.swing.table.TableRowSorter; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.util.List; /** @author chemit */ public class ShowListTabAbstractAction extends ShowTabAbstractAction<JListTab, ListTabModel> { @@ -89,9 +97,10 @@ ui.getImportElement().setToolTipText(_(action.getI18nToolTipText(model.isRemote()))); listMetaSelectionListener = new ListMetaSelectionListener(ui, model); - ui.getTable().getSelectionModel().addListSelectionListener(listMetaSelectionListener); + final JTable table = ui.getTable(); + table.getSelectionModel().addListSelectionListener(listMetaSelectionListener); - ui.getTable().addMouseListener(new ListMetaMouseListener(ui, model)); + table.addMouseListener(new ListMetaMouseListener(ui, model)); // add search actions listeners ui.getSearchText().addKeyListener(new KeyAdapter() { @@ -104,11 +113,38 @@ //TODO Est-ce vraiment le bon endroit pour faire ça ? // push model into tableModel - ListTableModel modelTab = (ListTableModel) ui.getTable().getModel(); + final ListTableModel modelTab = (ListTableModel) table.getModel(); modelTab.setData(model.getList()); // on force les valeurs nulles model.setSelectedIndex(-1); model.setSelectedItem(null); + //table.setAutoCreateRowSorter(true); + table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + table.getTableHeader().setReorderingAllowed(true); + + final MyTableRowSorter rowSorter = new MyTableRowSorter(modelTab); + ui.getTable().setRowSorter(rowSorter); + rowSorter.addRowSorterListener(new RowSorterListener() { + public void sorterChanged(RowSorterEvent e) { + RowSorterEvent.Type type = e.getType(); + if (type == RowSorterEvent.Type.SORT_ORDER_CHANGED) { + List keys = e.getSource().getSortKeys(); + if (keys.isEmpty()) { + return; + } + RowSorter.SortKey key = (RowSorter.SortKey) keys.get(0); + int column = key.getColumn(); + SortOrder sortOrder = key.getSortOrder(); + model.getQuery().setSortColumn(modelTab.getSortColumn(column)); + model.getQuery().setSortAscending(sortOrder== SortOrder.ASCENDING); + log.info("sortedChanged " + model.getQuery()); + //TODOFinish this + model.updateTabModel(getContext(), modelTab, true); + } + + + } + }); } protected void synchSelected(final JListTab ui, int rowAtPoint, ListSelectionModel selectionModel, ListTabModel model) { @@ -137,7 +173,7 @@ entityModel = model.getSelectedItem(); log.info(entityModel); - ListTabRefreshHelper.refreshListTablePopupMenu(getMainUI(),getContext(), ui, model); + ListTabRefreshHelper.refreshListTablePopupMenu(getMainUI(), getContext(), ui, model); } } @@ -190,8 +226,7 @@ try { // synchronization du meta selectionne synchSelected(ui, getRowAtPoint(ui, e.getPoint()), ui.getTable().getSelectionModel(), model); - // lancement de l'action d'affichage de l'onglet de detail - //ActionEvent e1 = new ActionEvent(e.getSource(), ActionEvent.ACTION_FIRST, "showTab_detail"); + // lancement de l'action d'affichage de l'onglet de detail SimExplorerActionManager.fireAction("showTab_detail", e.getSource(), (AbstractButton) null); } catch (Exception e1) { throw new SimExplorerRuntimeException(e1); @@ -208,4 +243,17 @@ } } } + + private static class MyTableRowSorter extends TableRowSorter<TableModel> { + + private MyTableRowSorter(TableModel model) { + super(model); + setMaxSortKeys(1); + } + + @Override + public void sort() { + // do not sort + } + } } Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/ListTableModel.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/ListTableModel.java 2008-02-22 21:35:14 UTC (rev 1207) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/ListTableModel.java 2008-02-23 00:50:58 UTC (rev 1208) @@ -20,6 +20,7 @@ import fr.cemagref.simexplorer.is.entities.EntityHelper; import fr.cemagref.simexplorer.is.entities.metadata.MetaData; +import fr.cemagref.simexplorer.is.storage.SortColumn; import static org.codelutin.i18n.I18n._; import static org.codelutin.i18n.I18n.n_; @@ -58,9 +59,17 @@ this.data = data; } + private final SortColumn[] sorts = { + SortColumn.uuid, + SortColumn.elementClass, + SortColumn.description, + SortColumn.version, + SortColumn.creationDate + }; + private final String[] columnNames = { n_("simexplorer.common.name"), - n_("simexplorer.common.type"), + n_("simexplorer.common.elementClass"), n_("simexplorer.common.description"), n_("simexplorer.common.version"), n_("simexplorer.common.creationDate") @@ -79,13 +88,12 @@ MetaData current = data[rowIndex]; if (current != null) { try { + PropertyDescriptor propertyDescriptor = getDescriptors()[columnIndex]; + Method readMethod = propertyDescriptor.getReadMethod(); + result = readMethod.invoke(current); if (columnIndex == 1) { // use I18n - result = EntityHelper.Type.getLibelle(current); - } else { - PropertyDescriptor propertyDescriptor = getDescriptors()[columnIndex]; - Method readMethod = propertyDescriptor.getReadMethod(); - result = readMethod.invoke(current); + result = EntityHelper.Type.getLibelle(result); } } catch (IllegalAccessException e) { throw new RuntimeException(e); @@ -130,4 +138,9 @@ } return descriptors; } + + + public SortColumn getSortColumn(int column) { + return sorts[column]; + } } Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/QueryModel.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/QueryModel.java 2008-02-22 21:35:14 UTC (rev 1207) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/QueryModel.java 2008-02-23 00:50:58 UTC (rev 1208) @@ -18,7 +18,6 @@ package fr.cemagref.simexplorer.is.ui.swing.model; import fr.cemagref.simexplorer.is.storage.SortColumn; -import fr.cemagref.simexplorer.is.storage.database.DatabaseConstants; import java.io.Serializable; @@ -36,7 +35,7 @@ protected boolean onlyLatest = true; protected SortColumn sortColumn = SortColumn.None; - + protected boolean sortAscending = true; private static final long serialVersionUID = -5018101346037499469L; @@ -92,4 +91,9 @@ sortColumn = SortColumn.None; sortAscending = true; } + + @Override + public String toString() { + return super.toString() + "<sortColumn:" + sortColumn + ",sortAscending:" + sortAscending + ", query:" + query + ">"; + } } Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/DetailTabRefreshHelper.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/DetailTabRefreshHelper.java 2008-02-22 21:35:14 UTC (rev 1207) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/DetailTabRefreshHelper.java 2008-02-23 00:50:58 UTC (rev 1208) @@ -203,7 +203,7 @@ // FIXME !!! // ui.getDetailDescriptorsHeader().setText(_("simexplorer.node.descriptors", detail.getDescriptors().size())); ui.getDetailDescriptorsHeader().setText(_("simexplorer.node.descriptors", 0)); - ui.getDetailType().setText(EntityHelper.Type.getLibelle(detail)); + ui.getDetailType().setText(EntityHelper.Type.getLibelle(detail.getElementClass())); String s = detail.getDescription(); String tooltip = s; if (s.length() > 32) { Modified: trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-en_GB.properties =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-en_GB.properties 2008-02-22 21:35:14 UTC (rev 1207) +++ trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-en_GB.properties 2008-02-23 00:50:58 UTC (rev 1208) @@ -134,6 +134,7 @@ simexplorer.common.close=Close simexplorer.common.creationDate=create date simexplorer.common.description=description +simexplorer.common.elementClass=type simexplorer.common.key=key simexplorer.common.login=Login simexplorer.common.name=name Modified: trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-fr_FR.properties =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-fr_FR.properties 2008-02-22 21:35:14 UTC (rev 1207) +++ trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-fr_FR.properties 2008-02-23 00:50:58 UTC (rev 1208) @@ -134,6 +134,7 @@ simexplorer.common.close=Fermer simexplorer.common.creationDate=date de cr\u00E9ation simexplorer.common.description=description +simexplorer.common.elementClass=type simexplorer.common.key=nom descriptor simexplorer.common.login=Login utilisateur simexplorer.common.name=nom
participants (1)
-
tchemit@users.labs.libre-entreprise.org