Author: kmorin Date: 2013-05-16 18:28:15 +0200 (Thu, 16 May 2013) New Revision: 956 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/956 Log: fixes #2445 [CAMPAGNE] Raccourcis clavier pour l'?\195?\169dition des caract?\195?\169ristiques des engins Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-05-16 16:09:46 UTC (rev 955) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-05-16 16:28:15 UTC (rev 956) @@ -39,11 +39,15 @@ import fr.ifremer.tutti.ui.swing.util.CloseableUI; import fr.ifremer.tutti.ui.swing.util.TuttiUI; import jaxx.runtime.validator.swing.SwingValidator; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.jdesktop.swingx.JXTable; import javax.swing.*; import java.awt.*; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; @@ -235,19 +239,57 @@ Gear gear = (Gear) jList.getSelectedValue(); boolean editMenuEnabled = false; + boolean viewMenuEnabled = false; if (gear != null) { editMenuEnabled = !getModel().isCreate() && !getModel().isModify() && (!gear.isScientificGear() || persistenceService.isTemporary(gear)); + viewMenuEnabled = true; ui.setContextValue(gear); } ui.getEditGearCaracteristicsItem().setEnabled(editMenuEnabled); + ui.getViewGearCaracteristicsItem().setEnabled(viewMenuEnabled); ui.getGearMenuPopup().show(jList, e.getX(), e.getY()); //and show the menu } } }); + ui.getGearList().getSelectedList().addKeyListener(new KeyAdapter() { + @Override + public void keyPressed(KeyEvent e) { + if (e.getKeyCode() == KeyEvent.VK_CONTEXT_MENU) { + JList source = (JList) e.getSource(); + // get the lowest selected row + int[] selectedRows = source.getSelectedIndices(); + int lowestRow = -1; + for (int row : selectedRows) { + lowestRow = Math.max(lowestRow, row); + } + Rectangle r = source.getCellBounds(lowestRow, lowestRow); + + // get the point in the middle lower of the cell + Point p = new Point(r.x + r.width / 2, r.y + r.height); + + List<Gear> gears = source.getSelectedValuesList(); + + boolean editMenuEnabled = false; + boolean viewMenuEnabled = false; + if (gears != null && gears.size() == 1) { + Gear gear = gears.get(0); + editMenuEnabled = !getModel().isCreate() && !getModel().isModify() + && (!gear.isScientificGear() || persistenceService.isTemporary(gear)); + viewMenuEnabled = true; + ui.setContextValue(gear); + } + ui.getEditGearCaracteristicsItem().setEnabled(editMenuEnabled); + ui.getViewGearCaracteristicsItem().setEnabled(viewMenuEnabled); + ui.getGearMenuPopup().show(source, p.x, p.y); //and show the menu + + } + } + }); + SwingValidator validator = ui.getValidator(); listenValidatorValid(validator, model);