Skip to content

New features#527

Open
zaum wants to merge 17 commits into
angryip:masterfrom
zaum:new-features
Open

New features#527
zaum wants to merge 17 commits into
angryip:masterfrom
zaum:new-features

Conversation

@zaum

@zaum zaum commented Jul 22, 2026

Copy link
Copy Markdown

1. File-based Comments + Inline Editing

Commits: 16033af8, 7ade9ea5, 57747ca2

  • New: Inline comment editor — double-click a comment cell opens a Text widget; Enter/FocusOut saves, Escape cancels.
  • New: CommentsConfig persists to comments.txt instead of Java Preferences (survives restarts, flushed immediately).
  • New: Config.getConfigDir() — portable config directory next to the JAR, falls back to ~/.ipscan.
image
  • New: Add auto-start scan preference
image

2. Default Opener per IP

Commits: 219305eb, 4e8ac91e, 4c0efca0, 3e8f2333

  • New: OpenerColumnFetcher — column showing the configured opener name; double-click opens a radio-menu to pick one.
  • New: OpenerLaunchFetcher — centered triangle () icon column; click to launch the default opener for that IP.
  • New: DefaultOpenerConfig — per-IP opener assignment (persisted to file).
image

3. ColumnVisibilityMenu (removes SelectFetchersDialog)

Commits: ed77fc0c

  • New: ColumnVisibilityMenu — right-click on the table header toggles individual columns on/off inline.
  • Deleted: SelectFetchersDialog.java — old modal dialog removed.
  • Modified: MacApplicationMenu, MainWindow, ToolsActions, ColumnsActions, CommandsMenuActions, OpenerLauncher, AbstractModalDialog.
image

4. Column Order Persistence + Drag-Reorder

Commits: (Contained within ed77fc0c and 95c1f86e)

  • New: saveColumnOrder() — persists visual column order via guiConfig.setColumnOrder() after every drag.
  • New: IP column is pinned to visual position 0 and never movable.
  • New: Drag-to-reorder is disabled during scan, re-enabled when idle.
drag

6. Column Header Tooltip

Commits: 3a2f7eaa

  • New: HeaderTooltipPoller — polls cursor position every 100ms to show a width-capped (360px), wrapping tooltip over column headers.
  • New: 2-second delay before showing, instant hide on focus loss, auto-positions below the hovered header.
image

ResultTable Performance
Commits: 39b5cf1e

  • New: Precomputed columnFetcherIndexMap for $O(1)$ fetcher lookup during virtual-table rendering.
  • New: populateNewFetcher() — background thread that fills a newly added fetcher column in batches (100 rows per UI update) without freezing the table.
  • Modified: ScanningResultList.

Table Rebuild on Fetcher Change
Commits: (Contained within ed77fc0c)

  • New: handleUpdateOfSelectedFetchers() now preserves scanned results, re-aligns columns in saved order, and populates newly added fetchers with real data off the UI thread.

zaum added 17 commits July 19, 2026 13:46
…for setting and opening with default openers
…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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant