New features#527
Open
zaum wants to merge 17 commits into
Open
Conversation
…plement inline editing in ResultTable
…for setting and opening with default openers
… ResultTable and DetailsWindow
…alog - Introduced ColumnVisibilityMenu: a new context menu on the results table header that lets users show or hide individual columns (fetchers) in place, replacing the old SelectFetchersDialog with a faster, inline workflow. - Removed SelectFetchersDialog from MacApplicationMenu and MainWindow. - ResultTable now supports dynamic column visibility and reordering. - Cleaned up related references and menu/action wiring for the removed dialog.
- ScanningResultComparator now catches ClassCastException during a typed comparison and falls back to a case-insensitive text comparison (with a secondary sort on the first column), so sorting mixed-type values no longer crashes the UI. - ResultTable mouse handling now converts display-relative event coordinates to control-relative coordinates before hit-testing the header area. - ColumnsActions.ColumnClick was reworked: a left-click on a column header sorts by that column (toggling ascending/descending on repeated clicks), instead of opening the old ColumnsMenu. Sorting uses the fetcher (data) index rather than the visual column position, so reordering columns does not break sorting. The unused ColumnsMenu dependency was removed.
…plement inline editing in ResultTable - Comments are now persisted to a plain comments.txt file in the config directory instead of the OS Java Preferences store. This makes them survive program restarts and updates, and they are flushed to disk immediately on every change so they are never lost on crash. - Added Config.getConfigDir() which prefers a portable "config" directory next to the application (jar/exe) and falls back to ~/.ipscan in the user's home when that is not writable. - Added inline comment editing directly in the results table: clicking the comment cell opens a text editor in place. Press Enter or move focus to save, Escape to cancel. The change is written through CommentsConfig and the row is refreshed instantly.
Precompute a column-to-fetcher index map to avoid repeated `getFetcherIndex` calls during virtual table rendering. Batch UI updates in `populateNewFetcher` to reduce `asyncExec` overhead. Use a precomputed position map for fetcher reordering in `ScanningResultList` to replace `indexOf` calls inside loops.
…ups. Hide tooltip and reset internal state when the application window loses focus. Add `/bin` directory to .gitignore.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
1. File-based Comments + Inline Editing
Commits:
16033af8,7ade9ea5,57747ca2Textwidget;Enter/FocusOutsaves,Escapecancels.CommentsConfigpersists tocomments.txtinstead of Java Preferences (survives restarts, flushed immediately).Config.getConfigDir()— portable config directory next to the JAR, falls back to~/.ipscan.2. Default Opener per IP
Commits:
219305eb,4e8ac91e,4c0efca0,3e8f2333OpenerColumnFetcher— column showing the configured opener name; double-click opens a radio-menu to pick one.OpenerLaunchFetcher— centered triangle (▶) icon column; click to launch the default opener for that IP.DefaultOpenerConfig— per-IP opener assignment (persisted to file).3. ColumnVisibilityMenu (removes SelectFetchersDialog)
Commits:
ed77fc0cColumnVisibilityMenu— right-click on the table header toggles individual columns on/off inline.SelectFetchersDialog.java— old modal dialog removed.MacApplicationMenu,MainWindow,ToolsActions,ColumnsActions,CommandsMenuActions,OpenerLauncher,AbstractModalDialog.4. Column Order Persistence + Drag-Reorder
Commits: (Contained within
ed77fc0cand95c1f86e)saveColumnOrder()— persists visual column order viaguiConfig.setColumnOrder()after every drag.6. Column Header Tooltip
Commits:
3a2f7eaaHeaderTooltipPoller— polls cursor position every 100ms to show a width-capped (360px), wrapping tooltip over column headers.ResultTable Performance
Commits:
39b5cf1ecolumnFetcherIndexMapforpopulateNewFetcher()— background thread that fills a newly added fetcher column in batches (100 rows per UI update) without freezing the table.ScanningResultList.Table Rebuild on Fetcher Change
Commits: (Contained within
ed77fc0c)handleUpdateOfSelectedFetchers()now preserves scanned results, re-aligns columns in saved order, and populates newly added fetchers with real data off the UI thread.