Author: kmorin Date: 2013-04-15 17:39:32 +0200 (Mon, 15 Apr 2013) New Revision: 779 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/779 Log: refs #1848 [ERGO] - Touches de raccourcis Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/GearUseFeatureTabUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/VesselUseFeatureTabUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUI.jaxx 2013-04-15 15:38:46 UTC (rev 778) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUI.jaxx 2013-04-15 15:39:32 UTC (rev 779) @@ -95,7 +95,8 @@ <JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'> <JXTable id='table' - onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/> + onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)' + onKeyPressed='handler.openRowMenu(event, tablePopup)'/> </JScrollPane> </JPanel> \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx 2013-04-15 15:38:46 UTC (rev 778) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx 2013-04-15 15:39:32 UTC (rev 779) @@ -163,7 +163,8 @@ <JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'> <JXTable id='table' - onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/> + onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)' + onKeyPressed='handler.openRowMenu(event, tablePopup)'/> </JScrollPane> </JPanel> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.jaxx 2013-04-15 15:38:46 UTC (rev 778) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.jaxx 2013-04-15 15:39:32 UTC (rev 779) @@ -94,7 +94,8 @@ <JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'> <JXTable id='table' - onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/> + onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)' + onKeyPressed='handler.openRowMenu(event, tablePopup)'/> </JScrollPane> </JPanel> \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorUI.jaxx 2013-04-15 15:38:46 UTC (rev 778) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/caracteristics/CaracteristicMapEditorUI.jaxx 2013-04-15 15:39:32 UTC (rev 779) @@ -56,7 +56,8 @@ <cell fill='both' columns='2'> <JScrollPane> <JXTable id='caracteristicMapEditorTable' - onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/> + onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)' + onKeyPressed='handler.openRowMenu(event, tablePopup)'/> </JScrollPane> </cell> </row> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx 2013-04-15 15:38:46 UTC (rev 778) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUI.jaxx 2013-04-15 15:39:32 UTC (rev 779) @@ -106,7 +106,8 @@ <JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'> <JXTable id='table' - onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/> + onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)' + onKeyPressed='handler.openRowMenu(event, tablePopup)'/> </JScrollPane> </JPanel> \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx 2013-04-15 15:38:46 UTC (rev 778) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx 2013-04-15 15:39:32 UTC (rev 779) @@ -163,7 +163,8 @@ <JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'> <JXTable id='table' - onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/> + onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)' + onKeyPressed='handler.openRowMenu(event, tablePopup)'/> </JScrollPane> </JPanel> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/GearUseFeatureTabUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/GearUseFeatureTabUI.jaxx 2013-04-15 15:38:46 UTC (rev 778) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/GearUseFeatureTabUI.jaxx 2013-04-15 15:39:32 UTC (rev 779) @@ -58,7 +58,8 @@ <cell fill='both' columns='2'> <JScrollPane> <JXTable id='gearUseFeatureTable' - onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/> + onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)' + onKeyPressed='handler.openRowMenu(event, tablePopup)'/> </JScrollPane> </cell> </row> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/VesselUseFeatureTabUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/VesselUseFeatureTabUI.jaxx 2013-04-15 15:38:46 UTC (rev 778) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/VesselUseFeatureTabUI.jaxx 2013-04-15 15:39:32 UTC (rev 779) @@ -60,7 +60,8 @@ <cell fill='both' columns='2'> <JScrollPane> <JXTable id='vesselUseFeatureTable' - onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/> + onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)' + onKeyPressed='handler.openRowMenu(event, tablePopup)'/> </JScrollPane> </cell> </row> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2013-04-15 15:38:46 UTC (rev 778) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2013-04-15 15:39:32 UTC (rev 779) @@ -164,7 +164,8 @@ <cell fill='both' columns='3'> <JScrollPane> <JXTable id='speciesTable' - onMouseClicked='handler.autoSelectRowInTable(event, speciesTablePopup)'/> + onMouseClicked='handler.autoSelectRowInTable(event, speciesTablePopup)' + onKeyPressed='handler.openRowMenu(event, speciesTablePopup)'/> </JScrollPane> </cell> </row> @@ -198,7 +199,8 @@ <cell fill='both' columns='3'> <JScrollPane> <JXTable id='benthosTable' - onMouseClicked='handler.autoSelectRowInTable(event, benthosTablePopup)'/> + onMouseClicked='handler.autoSelectRowInTable(event, benthosTablePopup)' + onKeyPressed='handler.openRowMenu(event, benthosTablePopup)'/> </JScrollPane> </cell> </row> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2013-04-15 15:38:46 UTC (rev 778) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2013-04-15 15:39:32 UTC (rev 779) @@ -86,22 +86,12 @@ import javax.swing.ScrollPaneConstants; import javax.swing.SwingUtilities; import javax.swing.border.LineBorder; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.TableModelEvent; -import javax.swing.event.TableModelListener; +import javax.swing.event.*; import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumnModel; import javax.swing.text.JTextComponent; -import java.awt.Color; -import java.awt.Component; -import java.awt.Dialog; -import java.awt.Dimension; -import java.awt.Font; -import java.awt.Frame; -import java.awt.Point; +import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.FocusAdapter; import java.awt.event.FocusEvent; @@ -998,4 +988,46 @@ } } + public void openRowMenu(KeyEvent e, JPopupMenu popup) { + + if (e.getKeyCode() == KeyEvent.VK_CONTEXT_MENU) { + + JXTable source = (JXTable) e.getSource(); + + // get the lowest selected row + int[] selectedRows = source.getSelectedRows(); + int lowestRow = -1; + for (int row : selectedRows) { + lowestRow = Math.max(lowestRow, row); + } + // get the selected column + Rectangle r = source.getCellRect(lowestRow, source.getSelectedColumn(), true); + + // get the point in the middle lower of the cell + Point p = new Point(r.x + r.width/2, r.y + r.height); + + if (log.isDebugEnabled()) { + log.debug("Row " + lowestRow +" found t point [" + p + "]"); + } + + boolean canContinue = true; + + if (source.isEditing()) { + + // stop editing + boolean stopEdit = source.getCellEditor().stopCellEditing(); + if (!stopEdit) { + if (log.isWarnEnabled()) { + log.warn("Could not stop edit cell..."); + } + canContinue = false; + } + } + + if (canContinue) { + popup.show(source, p.x, p.y); + } + } + } + }