featureful todo.txt
===================
Current
-------
Bugs
----
Meld running from the app prevented the app from terminating.
But all the git difftool commands seem to have & at the end???
This may be related to out/err consumers? Does run() redirect out to /dev/null?
Next
----
FeatherTextEditor
Shortcut Ctrl+ENTER to add an import. Looks for the word in all packages.
New Runner Prefixes :
"?" -> API Help - Need Glok's markdown viewer to be fully working.
Add a "focus" shortcut to properties and StringFeature.
FeaturefulTab diagram out of date. Had "add()" method on View.
Search Files
Check replacement (using Matcher.groupCount)
Escape the replacement when not using regex.
Features can have a popupAction (onPopupTrigger)
Use this for the history buttons (also Runner's history buttons).
Text context type - set when any textarea/field has a selection and right-clicked.
Maybe also add a file's name/path too???
Eval an expression
Launch man, runner, dictionary, wikipedia ...
Maybe a TextPosition context type too.
The features will look for relevant stuff before/after.
e.g. Look for file paths, paths and positions (jump to)
Look for Class names (in Featureful's public API and in compiled scripts).
Duplicate tab
Maybe just for Promptable Behaviours (and PromptBehaviour).
Feature.appliesTo( context : Context ) - By default, it only checks the context type.
ApplicableFeature may do extra???
"Raw" output from commands.
A toggle button to switch between GUI output and raw output.
With the help from command worker.
Scan the output from Gradle, looking for Files and/or FilePositions.
Add a MenuFeature to the tab, which jumps to any of the found errors.
This requires TextTab to be converted into a "Content" for CustomTab.
Then we can extend the TextContent to add a title bar.
Context Type "Link" (launch in web browser, download as text... )
Use it to link to https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html
ZipComponent
primary extracts the file to a tmp file. Changes an icon to show it has been extracted.
Now that entry ALSO has a File context type.
JarComponent
Shows bytecode
"Controller"
Usually the MainWindow is the controller,
But when a popup menu is displayed, this changes to the popup window's controller.
BEWARE - If we rely on Stage's focus, this may be problematic if the popup hides before the action is performed.
HelperFunctions.findContext() uses the current controller.
This will also let us create new stages.
Use Stage.onFocused to set the global "currentController".
MainWindow should only concern itself with its "contexts", not "projectContexts"
HelpFunction.findContext() will always fall back to the "projectContexts".
Perhaps a CHAIN of controllers.
When a tab has focus its controller is in the chain.
MainWindow is also part of the chain???
Each tab can then have its own toolbar (and even its own MenuBar).
A mechanism to add extra Features to a Behaviour.
.e.g. GitBehaviour has "checkDiff", which isn't broadly wanted. It shouldn't have that feature.
But *I* want it.
If behaviours include specific context-types for themselves, the toolbars/menus could add extra features.
In the case of "checkDiff" the "Nick" component would add features for context-type "Git",
The value of the Context would be the behaviour itself?
Currently, the toolbar is built ONLY from the Features returned by the Behaviour.
I'm suggesting it ALSO adds features from all Components that register with ANY of the contexts
NOTE. We'd need a NEW method, because FeatureSet.toolbar() is for the "top" toolbar.
Now I want to add to the "local" toolbar???
Maybe not. Maybe the "top" toolbar should NEVER contain features related to the current contexts,
and ONLY contain features related to the Project (and "None").
New Features
Timer
API
Show API documentation for classes.
Either Dokka, auto-generated styled text, or text form dokka?
ImageTab
Use Imagemagik to convert to a png, and then load the png.
New ImageTab
Behaviour.onClose : Function = null
Image Features
Rotate, Convert, Scale
In FeatherEditor Right-click "include" directive to open that file.
When we right-click an include, build a Context, and treat it like popups in ListTab/TreeTab/TableTab.
f2g creates special range for includes - not visible?`
Allow 3rd parties to add extra icons
Remove as many FeaturefulActions as possible.
Later
-----
A pipeline of tasks. e.g.
Find -> raw -> filter lines -> covert to list of files/folders
If we go back and change parameters, we can still go forwards and apply the same operations.
Can we also save these operations and play them back after restarting the app?
Tab selector Feature
"Find-all" type feature. Start typing, and it filters the content.
Looks for tab text and file/folder names?
Multi-key shortcuts?
e.g. Ctrl+P (for project) is associated with a MultiKeyFeature
When that shortcut matches, remember the (set of) MultiKeyFeature, but do nothing.
When the NEXT key is pressed, compare it with the children's shortcuts.
e.g. Key.F (for folder), then open the project's folder.
e.g. Key.B (for browse), then launch the file-explorer. etc.
Drag files to open them.
Output Dock to color stderr.
Maybe all docks which receive output from a command.
FolderTree
Option to flatten empty folders
i.e. uk/co/nickthecoder/projectName will be a single line.
Can be expanded by right-click menu item.
Other Tabs :
SQL(ite) database, table and row.
SystemFeatures
Memory Usage
Health checks for websites
Toggle full-screen
All elements apart from the current tab are hidden.