- introduce DatasetContext for better control over data sources
- extract actions and associated fields like language to an optional config
- create sub-config for standalone datasets
- adapt result report rendering more convenient for csv dataset
- make language configuration optional where possible
- make application lifecycle management more transparent and add sleep for quick runs (intellij can throw errors)
- fix inability to use colons in chunk name
Merge-request: IJ-MR-143249
Merged-by: Roman Vasiliev <Roman.Vasiliev@jetbrains.com>
GitOrigin-RevId: 0b15518f22af27ee9cfb544e99010ec293f31eb5
Implement ProjectFileNodeUpdaterCoroutineInvoker and
CoroutineProjectViewSupport to bridge the existing implementation
of the Project View and the new tree model implementation.
Add the ide.project.view.coroutines registry key to be able
to enable the new implementation, but keep it disabled for now,
as the new implementation likely needs a lot of fixes and improvements.
GitOrigin-RevId: 532f1c18a0a48f34d4d07c474e9345f9ba4023ca
The main new interfaces are:
- TreeDomainModel - background model interface;
- TreeViewModel - flow-based view model;
- TreeSwingModel - Swing compatibility layer.
Auxiliary classes:
- SuspendingTreeVisitor - suspending TreeVisitor equivalent;
- LoadingNode - converted to Kotlin and retrofitted to implement
TreeViewModel.
New presentation rendering is implemented in NodeRenderer.
TreeUtil.getUserObject() adapted to unwrap
TreeNodeViewModel instances, as at this point they don't
extend DefaultMutableTreeNode. It just doesn't seem necessary,
as Swing models technically don't require it.
In a similar fashion, CachedTreePresentation.getCachedNode
adapted to unwrap nodes as necessary, as the new implementation
forces nodes to be TreeNodeViewModel instances.
AbstractTreeNodeVisitor modified to call TreeUtil.getLastUserObject
instead of trying to unwrap the node itself. This lets us reuse
the new getLastUserObject implementation without duplicating logic.
The new implementation isn't used anywhere yet, so this commit
alone shouldn't affect anything.
GitOrigin-RevId: 8427b6642ff1902b3b71104c3611388e1270a5e4
Before migrating the Project View to the new models,
we need to take care of existing code that relies on the exact
implementation class.
For "Can this thing calculate nodes on a BGT?" instanceof checks,
introduce a new marker interface, BgtAwareTreeModel.
We may add methods such as isProcessing() there later.
Replace existing usages with the new interface.
For "Can this thing accept a visitor on a BGT?" instanceof checks,
introduce TreeVisitor.LoadingAwareAcceptor with the second
accept() overload that controls node loading. Replace existing
usages.
GitOrigin-RevId: 67905cc6873aab2f917ee2028d0a167f60fa85f7
To avoid duplicating a lot of logic in the new coroutine-based
implementation, extract the parts of AsyncProjectViewSupport
that don't depend on the models into a superclass.
Refactor the code around acceptAndUpdate a bit so
the only model-dependent part is now in this function
with a new signature, so it can be used in all places
where a similar logic was used.
Other than that, the code was mostly just moved.
The part about myNodeUpdater is a bit ugly,
as it's now initialized in the derived class and then
used in the base class in setupListeners.
It's OK, as it's an internal implementation class,
it won't have a lot of subclasses, so we're not forcing
anyone to figure out this ugliness before using it.
GitOrigin-RevId: a8d858c5c579a538a4c917cf830bc0704468f43d
To reuse ProjectFileNodeUpdater for the new coroutine-based
Project View, we need to remove its direct dependency on the legacy
Invoker. Introduce a new abstraction layer, including only
the methods that are really needed.
Because the existing implementation relies on the invoker
as the parent Disposable, we must implement it in the new
interface as well, and ensure that our invoker is disposed
along with the delegate.
To remove the dependency in AsyncProjectViewSupport,
remove the invoke() call around roots.forEach. It's a safe thing to do
because the ProjectFileNodeUpdater itself only ever invokes
updateStructure in the same invoker, so that wrapping
was effectively a no-op.
GitOrigin-RevId: dd239b1330a2d8ef84f09e1dc5e3a49d79d8414c
This makes it possible to use the new listCellRenderer with separators from Java code easily.
GitOrigin-RevId: d2320826c28cdd766b992d6262f05caaa561a21c
All Perf Unit tests are run on the hardware agents to ensure stability of the metrics.
So the annotation is not needed anymore and it doesn't work on JUnit5 tests so the same test is run twice and since test execution time depends on the bucketing, metrics are jumping.
GitOrigin-RevId: fc83a368447d09d6ad1b269c88fe4f6c79067a91
This allows using Symbol API to create references in PyKeywordArgument or PyReferenceExpression elements.
GitOrigin-RevId: 19545edec1499de66fb7744e7f8e3cb7f4ea85d3