fskorgen opened a new issue, #8360:
URL: https://github.com/apache/hop/issues/8360

   ### Apache Hop version?
   
   2,20
   
   ### Java version?
   
   21
   
   ### Operating system
   
   Windows
   
   ### What happened?
   
   ## The problem
   
   I run a query and want to work with the result: read the values, select a 
few rows and copy them
   into a spreadsheet, or pick up one order number to use elsewhere. The result 
grid is read-only, which
   is right — but read-only also blocks the ordinary things a user does with a 
result:
   
   - clicking a cell opens an inline editor over it instead of selecting the 
row,
   - that editor takes the right-click, so the grid's own context menu is out 
of reach,
   - the selection and copy actions in that menu are disabled,
   - and there is no way to copy a single cell value.
   
   ## What happens today
   
   On `main` (`ad8c53380d`): Database perspective → connect → SQL tab → `SELECT 
* FROM <a table with at
   least one long text value>` → Run.
   
   | | Do | Expected | Actual |
   |---|---|---|---|
   | 1 | Left-click a cell | the row is selected | a text editor is placed over 
the cell, covering the value |
   | 2 | Right-click in that cell | the grid's context menu | the platform's 
text menu (Undo / Cut / Paste). The grid's own menu cannot be reached |
   | 3 | Right-click a row, outside the editor | usable actions | *Select all 
rows*, *Clear selection*, *Filtered selection* and *Copy selected lines to 
clipboard* are all disabled |
   | 4 | Copy a single cell value | some way to do it | there is none. The 
nearest workaround is selecting text inside the editor from step 1 |
   
   The same happens in every read-only grid, including the SQL results and the 
execution views.
   
   ## Expected behavior and proposed change
   
   A read-only result grid should prevent changes to the data while still 
allowing users to inspect,
   select and copy it.
   
   - Clicking a cell should select its row without opening an inline editor.
   - Right-clicking should open the grid's context menu.
   - Selection actions and copying selected rows should remain available.
   - A **Copy cell value** action should copy the complete underlying value, 
even when the displayed
     text is shortened.
   
   Long values must remain accessible for viewing and copying after the inline 
editor is removed — the
   pop-out value viewer stays reachable from the keyboard, and *Copy cell 
value* takes the stored value,
   not the shortened display string.
   
   ## Cause
   
   All of it is in `TableView`:
   
   - `editSelected` calls `edit(...)` on a left click and only checks 
`table.isEnabled()`; nothing
     consults `readonly`. On a read-only grid the editor has nothing to edit.
   - Four menu items are switched off where they are created, with 
`setEnabled(!readonly)`:
     *Select all rows*, *Clear selection*, *Filtered selection* and *Copy 
selected lines to clipboard*.
     None of them changes the table — `setFilter()` ends in 
`table.setSelection(...)`, `clipSelected()`
     reads.
   - `clipSelected()` copies whole rows with a header line; there is no 
single-cell copy.
   
   The result grid built by `DatabaseResultsPanel` shows all three at once: it 
is read-only, and it
   uses `setShortenDisplayedValues(true)`, so long values are displayed 
shortened. That is why a
   single-cell copy has to take the stored value rather than the display string.
   
   ## Scope of the fix
   
   One class — `TableView.java` — plus one message key:
   
   1. `editSelected`: when `readonly`, select the row and return.
   2. Drop the `!readonly` gate on the four menu items.
   3. Add *Copy cell value* beside *Copy selected lines to clipboard*, using 
`getCellValue` for the
      stored value.
   
   Happy to open the PR if the approach looks right. The one point worth an 
opinion is whether to
   suppress the inline editor on read-only grids, or to keep it and give the 
grid's menu precedence over
   it.
   
   
   ### Issue Priority
   
   Priority: 3
   
   ### Issue Component
   
   Component: Hop Gui


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to