eclipse-platform / eclipse.platform.ui Goto Github PK
View Code? Open in Web Editor NEWEclipse Platform
Home Page: https://projects.eclipse.org/projects/eclipse.platform
License: Eclipse Public License 2.0
Eclipse Platform
Home Page: https://projects.eclipse.org/projects/eclipse.platform
License: Eclipse Public License 2.0
There are those settings in Preferences -> keys to show the key binding when command is invoked, by mouse and/or keyboard.
I find this very helpful when programming with shared screen.
However, when the cursor is at the end of the file, each keystroke (e.g. Ctrl Arrow left/right) brings up the window and it hides the cursor position. That is very annoying.
At would be helpful if that window is direct to another location when the focus is in text editor and the cursor at the bottom.
The API to handle code in Eclipse is the IWorkspace
and it's associated IResource
management API. It contains a flat list of projects that Eclipse is aware of. The problem with this approach is that you always have to set up Eclipse metadata (.project
) in the folder even if you just want to view a folder.
My idea would be to create a view that you can add root folders to (akin to what IDE's like VS Code do). Any folders containing a .project
file would be added to the IWorkspace
and would be visible as projects through their icon annotations. For other folders, the user might get a UI that prompts to create Eclipse projects from the folder where appropriate (for example, those containing pom.xml
or package.json
).
Many project build systems (maven, npm) use folders containment on disk as an organizing principle. The "folders" view would support that kind of organisation better.
Similar to Bug 156792 it would be very useful to close a tab with the middle button within the chevron list. The list should stay open after a tab has been closed and the item has been removed from the list. Several tabs can be close very quickly then.
At the moment I have to right click each item and click the Close button of the context menu.
However removing items by pressing DEL
key already works but navigation by arrow keys is much slower.
@Bananeweizen as you recently worked on Quick access, do you also see this?
A button added with menu:DirectToolItem
can disappear on Reset Perspective
. I think this might be a regression introduced between Photon (good) and 2022-03 (bad) but I didn't test inbetweenies. It might need more than one tab to happen.
In Eclipse IDE for RCP and RAP Developers - 2022-03
Window
→ Perspective
→ Reset Perspective
i edited the source attachment of a .jar resource
java.lang.NullPointerException: Cannot invoke "org.eclipse.ui.internal.ide.dialogs.ResourceFilterGroup$Filters.hasChanged()" because "this.filters" is null
at org.eclipse.ui.internal.ide.dialogs.ResourceFilterGroup.performOk(ResourceFilterGroup.java:1185)
at org.eclipse.ui.internal.ide.dialogs.ResourceFilterPage.performOk(ResourceFilterPage.java:71)
at org.eclipse.jface.preference.PreferenceDialog$7.run(PreferenceDialog.java:905)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
at org.eclipse.jface.preference.PreferenceDialog.okPressed(PreferenceDialog.java:889)
at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.okPressed(FilteredPreferenceDialog.java:461)
at org.eclipse.jface.preference.PreferenceDialog.buttonPressed(PreferenceDialog.java:233)
at org.eclipse.jface.dialogs.Dialog.lambda$0(Dialog.java:619)
at org.eclipse.swt.events.SelectionListener$1.widgetSelected(SelectionListener.java:84)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:252)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4251)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4068)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3645)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:823)
at org.eclipse.jface.window.Window.open(Window.java:799)
at org.eclipse.ui.dialogs.PropertyDialogAction.run(PropertyDialogAction.java:155)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:474)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:580)
at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:414)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4251)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1066)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4068)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3645)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1155)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:156)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:577)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:596)
at org.eclipse.equinox.launcher.Main.run(Main.java:1467)
at org.eclipse.equinox.launcher.Main.main(Main.java:1440)
After updating to I20220414-0120 we see crashes in our automated tests.
The crash is caused by an extra workspace rule taken on beginning of the undo operation, see https://github.com/eclipse-platform/eclipse.platform.ui/pull/6/files#r852668795
The undo task in question itself wants to begin the rule and waits now forever:
OperationHistoryActionHandler locked the workspace bbefore starting undo:
"main" #1 prio=6 os_prio=0 cpu=1336038.52ms elapsed=8612.16s tid=0x00007ffff001a800 nid=0x6ca9 runnable [0x00007ffff5420000]
java.lang.Thread.State: RUNNABLE
at org.eclipse.swt.internal.gtk.OS.Call(Native Method)
at org.eclipse.swt.widgets.Display.sleep(Display.java:5655)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java:167)
at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:368)
at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:470)
at org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog.run(ProgressMonitorJobsDialog.java:230)
at org.eclipse.ui.internal.progress.ProgressManager.run(ProgressManager.java:984)
at com.advantest.itee.testflow.core.edit.engine.WriteUtil.executeWriteBack(WriteUtil.java:456)
at com.advantest.itee.testflow.core.edit.UndoRedoOperation.undo(UndoRedoOperation.java:97)
at org.eclipse.core.commands.operations.DefaultOperationHistory.doUndo(DefaultOperationHistory.java:407)
at org.eclipse.core.commands.operations.DefaultOperationHistory.undo(DefaultOperationHistory.java:1149)
at org.eclipse.ui.operations.UndoActionHandler.runCommand(UndoActionHandler.java:86)
at org.eclipse.ui.operations.OperationHistoryActionHandler.lambda$0(OperationHistoryActionHandler.java:293)
at org.eclipse.ui.operations.OperationHistoryActionHandler$$Lambda$3012/0x0000000842334440.run(Unknown Source)
at org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:434)
at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:352)
at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:470)
at org.eclipse.ui.internal.operations.TimeTriggeredProgressMonitorDialog.access$1(TimeTriggeredProgressMonitorDialog.java:1)
at org.eclipse.ui.internal.operations.TimeTriggeredProgressMonitorDialog.lambda$0(TimeTriggeredProgressMonitorDialog.java:155)
at org.eclipse.ui.internal.operations.TimeTriggeredProgressMonitorDialog$$Lambda$3014/0x0000000842333040.run(Unknown Source)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:74)
at org.eclipse.ui.internal.operations.TimeTriggeredProgressMonitorDialog.run(TimeTriggeredProgressMonitorDialog.java:167)
at org.eclipse.ui.operations.OperationHistoryActionHandler.run(OperationHistoryActionHandler.java:322)
Undo code tries to lock the workspace:
"ModalContext" #38513 prio=6 os_prio=0 cpu=0.22ms elapsed=951.45s tid=0x00007ffef9426800 nid=0xb5ab in Object.wait() [0x00007fff28e70000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait([email protected]/Native Method)
- waiting on <no object reference available>
at java.lang.Object.wait([email protected]/Object.java:328)
at org.eclipse.core.internal.jobs.ThreadJob.waitForRun(ThreadJob.java:322)
- waiting to re-lock in wait() <0x000000104a48b9b0> (a java.lang.Object)
at org.eclipse.core.internal.jobs.ThreadJob.joinRun(ThreadJob.java:208)
at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:95)
at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:311)
at com.advantest.itee.testflow.core.edit.engine.WriteUtil.executeWriteOperation(WriteUtil.java:403)
at com.advantest.itee.testflow.core.edit.engine.WriteUtil$2.run(WriteUtil.java:459)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:122)
Currently PlainMessageDialog provides a builder pattern for message dialogs but does not allow to center the message text, the text is way to the left alligned.
Example:
See eclipse-pde/eclipse.pde#149 for screenshots of OS dialogs
We should add an option to the builder to center the text of the message.
@marcushoepfner WDYT?
The FiltersConfigurationDialog that is used by MarkerSupportView has a usefull button to restore default settings. However the button is positioned at the same level as the ok and cancel buttons. Instead it should be in the section used to configure the filter settings.
See the the position of the default button in the preferences dialog for the correct place.
org.eclipse.ui.tests.quickaccess.QuickAccessDialogTest.testLongRunningComputerDoesntFreezeUI failed in the build I20220519-0130 on Mac, with the below error
Missing contributed element
java.lang.AssertionError: Missing contributed element
at org.junit.Assert.fail(Assert.java:89)
at org.junit.Assert.assertTrue(Assert.java:42)
at org.eclipse.ui.tests.quickaccess.QuickAccessDialogTest.testLongRunningComputerDoesntFreezeUI(QuickAccessDialogTest.java:184)
test results : I20220519-0130/testresults/html/org.eclipse.ui.tests_ep424I-unit-mac64-java17
Add support to resolve Color and Font definitions in the following PreferenceHandler
When defining new themes, we can define template preferences in a more core theme, which can be extended by importing those theme templates and providing color and font definitions. Today this can only be done at SWT widget styling. Adding this to preference we can improve the support. This will enable us to define more of a predefined theme configuration like in vscode.
!ENTRY org.eclipse.ui.tests 4 0 2022-06-18 11:16:17.799
!MESSAGE FrameworkEvent ERROR
!STACK 0
org.osgi.framework.BundleException: Could not resolve module: org.eclipse.ui.tests [309]
Bundle was not resolved because of a uses constraint violation.
org.apache.felix.resolver.reason.ReasonException: Uses constraint violation. Unable to resolve resource org.eclipse.ui.tests [osgi.identity; osgi.identity="org.eclipse.ui.tests"; type="osgi.bundle"; version:Version="3.15.700.v20220610-1735"; singleton:="true"] because it is exposed to package 'org.osgi.service.component' from resources org.eclipse.osgi.services [osgi.identity; type="osgi.bundle"; version:Version="3.10.200.v20210723-0643"; osgi.identity="org.eclipse.osgi.services"] and org.osgi.service.component [osgi.identity; type="osgi.bundle"; version:Version="1.5.0.202109301733"; osgi.identity="org.osgi.service.component"] via two dependency chains.
Chain 1:
org.eclipse.ui.tests [osgi.identity; osgi.identity="org.eclipse.ui.tests"; type="osgi.bundle"; version:Version="3.15.700.v20220610-1735"; singleton:="true"]
require: (&(osgi.wiring.bundle=org.eclipse.osgi.services)(bundle-version>=3.3.100))
|
provide: osgi.wiring.bundle: org.eclipse.osgi.services
org.eclipse.osgi.services [osgi.identity; type="osgi.bundle"; version:Version="3.10.200.v20210723-0643"; osgi.identity="org.eclipse.osgi.services"]
Chain 2:
org.eclipse.ui.tests [osgi.identity; osgi.identity="org.eclipse.ui.tests"; type="osgi.bundle"; version:Version="3.15.700.v20220610-1735"; singleton:="true"]
require: (&(osgi.extender=osgi.component)(version>=1.2)(!(version>=2.0)))
|
provide: osgi.extender; osgi.extender="osgi.component"; version:Version="1.5.0"; uses:="org.osgi.service.component"
org.apache.felix.scr [osgi.identity; type="osgi.bundle"; version:Version="2.2.2"; osgi.identity="org.apache.felix.scr"]
import: (&(osgi.wiring.package=org.osgi.service.component)(&(version>=1.5.0)(!(version>=1.6.0))))
|
export: osgi.wiring.package: org.osgi.service.component
org.osgi.service.component [osgi.identity; type="osgi.bundle"; version:Version="1.5.0.202109301733"; osgi.identity="org.osgi.service.component"]
at org.eclipse.osgi.container.Module.start(Module.java:463)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel$2.run(ModuleContainer.java:1847)
at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor$1$1.execute(EquinoxContainerAdaptor.java:136)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1840)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1781)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1745)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1667)
at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234)
at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:345)
Steps to reproduce:
I did this in Eclipse IDE for C/C++ 2022-06 M2. I'll report back shortly if it occurs in platform build.
!ENTRY org.eclipse.jface 4 0 2022-05-05 17:40:47.496
!MESSAGE An error has occurred. See error log for more details.
!STACK 0
java.lang.NullPointerException: Cannot invoke "org.eclipse.ui.handlers.IHandlerService.deactivateHandler(org.eclipse.ui.handlers.IHandlerActivation)" because "service" is null
at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.close(FilteredPreferenceDialog.java:641)
at org.eclipse.ui.internal.dialogs.WorkbenchPreferenceDialog.close(WorkbenchPreferenceDialog.java:125)
at org.eclipse.jface.preference.PreferenceDialog$7.run(PreferenceDialog.java:927)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
at org.eclipse.jface.preference.PreferenceDialog.okPressed(PreferenceDialog.java:889)
at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.okPressed(FilteredPreferenceDialog.java:461)
at org.eclipse.jface.preference.PreferenceDialog.buttonPressed(PreferenceDialog.java:233)
at org.eclipse.jface.dialogs.Dialog.lambda$0(Dialog.java:619)
at org.eclipse.swt.events.SelectionListener$1.widgetSelected(SelectionListener.java:84)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:252)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5798)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1529)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5029)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4481)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:823)
at org.eclipse.jface.window.Window.open(Window.java:799)
at org.eclipse.ui.internal.OpenPreferencesAction.run(OpenPreferencesAction.java:66)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:474)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:580)
at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:414)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5798)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1529)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5029)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4481)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1155)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:156)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:402)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:596)
at org.eclipse.equinox.launcher.Main.run(Main.java:1467)
at org.eclipse.equinox.launcher.Main.main(Main.java:1440)
Today for JavaEditor we can achieve this my providing all the letters in the activation trigger. But the experience is not so good due to auto activation doesn't debounce the key events. For example when you are trying continuously we don't want to content assist to popup and preselect wrong suggestions which the developer doesn't need.
The current activation logic can be extended to support debounce, We could introduce a configuration to enable this new activation feature for all valid keys with debounce. One simple implementation would be to change the current activation logic by resetting the last activation time when ever a key is pressed and reduce the delay to something like 100ms in this new mode.
JFace forms default currently use still gradients, which makes such UI look very Win95. We use a default SWT color.
See #111
I've seen now two times sporadic LockManager.handleException
errors logged on shutdown of the IDE.
Looks some of the recent changes in UI/SWT area caused that, bugzilla never saw that error before.
First one was reported with 4.24.0.I20220504-0230 build, but that doesn't mean this was introduced there, because error is random (only if some workspace task runs at shutdown time).
Looks like the Display is now disposed earlier on shutdown?
Could be side effect of removing synchronization block from Display.isDisposed() via eclipse-platform/eclipse.platform.swt#74 / eclipse-platform/eclipse.platform.swt#75
Also could be a side effect of #8.
Autobuild running during shutdown:
org.eclipse.swt.SWTException: Device is disposed
at org.eclipse.swt.SWT.error(SWT.java:4918)
at org.eclipse.swt.SWT.error(SWT.java:4833)
at org.eclipse.swt.SWT.error(SWT.java:4804)
at org.eclipse.swt.widgets.Display.error(Display.java:1505)
at org.eclipse.swt.widgets.Display.getThread(Display.java:3378)
at org.eclipse.ui.internal.UILockListener.isUI(UILockListener.java:188)
at org.eclipse.ui.internal.UILockListener.aboutToRelease(UILockListener.java:124)
at org.eclipse.core.internal.jobs.LockManager.aboutToRelease(LockManager.java:88)
at org.eclipse.core.internal.jobs.OrderedLock.doRelease(OrderedLock.java:189)
at org.eclipse.core.internal.jobs.OrderedLock.release(OrderedLock.java:237)
at org.eclipse.core.internal.resources.WorkManager.checkOut(WorkManager.java:167)
at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1523)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:176)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:255)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Same as above, but from refresh job
org.eclipse.swt.SWTException: Device is disposed
at org.eclipse.swt.SWT.error(SWT.java:4918)
at org.eclipse.swt.SWT.error(SWT.java:4833)
at org.eclipse.swt.SWT.error(SWT.java:4804)
at org.eclipse.swt.widgets.Display.error(Display.java:1505)
at org.eclipse.swt.widgets.Display.getThread(Display.java:3378)
at org.eclipse.ui.internal.UILockListener.isUI(UILockListener.java:188)
at org.eclipse.ui.internal.UILockListener.aboutToRelease(UILockListener.java:124)
at org.eclipse.core.internal.jobs.LockManager.aboutToRelease(LockManager.java:88)
at org.eclipse.core.internal.jobs.OrderedLock.doRelease(OrderedLock.java:189)
at org.eclipse.core.internal.jobs.OrderedLock.release(OrderedLock.java:237)
at org.eclipse.core.internal.resources.WorkManager.checkOut(WorkManager.java:167)
at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1523)
at org.eclipse.core.internal.resources.Resource.refreshLocal(Resource.java:1579)
at org.eclipse.core.internal.refresh.RefreshJob.runInWorkspace(RefreshJob.java:219)
at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:42)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
@mickaelistria suggested to change some UI defaults, which I personally like.
As some people will not like this, we could offer a configuration similar to what @merks implemented for Oomph / EPL (which AFAIK no EPP currently actively uses.
I made a "professional" ;-) mockup-up for such a flag which could trigger a wizard to configure a configuration wizard.
This wizard could set selected preferences in a certain folder, e.g. .eclipse in the user home and these prefeence could be applied for each new workspace. Preferences which come to mind:
This would allow us to modify the default with the option for users to change the new default back to their preferences.
There is a
Eclipse GitHub integration with task focused interface 6.1.0.202203080745-r
now we have migrated many (all?) projects to github it might be a good idea to have this installed by default, @merks ?
Its description says: Integration with GitHub this seems to be the description page: https://wiki.eclipse.org/EGit/GitHub/User_Guide
Just saw this stack after all tests were (successfully) done.
Eclipse or surefire should be fixed to avoid either premature workbench close (surefire) or attempt to use already disposed display (and most likely trying to close already closed workbench)
Results:
Tests run: 193, Failures: 0, Errors: 0, Skipped: 8
(SWT:11892): Gdk-CRITICAL **: 15:15:02.593: gdk_threads_set_lock_functions: assertion 'gdk_threads_lock == NULL && gdk_threads_unlock == NULL' failed
Exception in thread "WorkbenchTestable" org.eclipse.swt.SWTException: Device is disposed
at org.eclipse.swt.SWT.error(SWT.java:4918)
at org.eclipse.swt.SWT.error(SWT.java:4833)
at org.eclipse.swt.SWT.error(SWT.java:4804)
at org.eclipse.swt.widgets.Display.error(Display.java:1505)
at org.eclipse.swt.widgets.Display.syncExec(Display.java:5903)
at org.eclipse.e4.ui.internal.workbench.swt.E4Testable.testingFinished(E4Testable.java:127)
at org.eclipse.tycho.surefire.osgibooter.AbstractUITestApplication.runTests(AbstractUITestApplication.java:55)
at org.eclipse.e4.ui.internal.workbench.swt.E4Testable.lambda$0(E4Testable.java:76)
at java.base/java.lang.Thread.run(Thread.java:834)
15:15:03.025 [INFO] All tests passed!
Just noted at a client machine that if you have lots of search results and press the Expand all / Collapse all buttons Eclipse takes very very long to react.
To test:
Import lots of projects
Search for something which is present a lot of times, e.g. the letter "a"
Press Expand all -> Wait cursor for a very long time
Press Collapse all -> Wait cursor for a long time
Would be nice to not block the UI here, or to be faster in the tree.
When a text cell editor (JFace table) in one column receives the focus and a subsequent mouse click, pressing the tab key forwards the control focus not to the next row but that after it. In other words, a row gets skipped.
Of course this happens rarely, since the cell editor already has the focus.
It seems to not happen when there are more cell editors on the row.
I've attached a snippet to reproduce the behaviour and one with a workaround.
On all platforms they are failing now:
This is a regression from eclipse-platform/eclipse.platform.team#14 commit eclipse-platform/eclipse.platform.team@3b04269
Pressing the Save shortcut multiple times or entering other invalid characters will pop up a code prompt box.
This is a continuation/migration of Bug 562174 - Add support for "icon packs" in Eclipse IDE.
It'd be nice for to have an officially supported way to replace the icons used in Eclipse.
There is a lot of discussion to be held on how this should be handled (and there was already a lot of discussion on the original BZ thread), so I'm going to leave this relatively open-ended.
IIRC the approach I had initially tried was:
There are probably some limitations to this approach, for instance:
It might be nicer to set some JFace preference which points to a specific plugin path (where the plugin is the icon pack provider plugin), and then alternative icons are checked from that plugin before loading the default icon.
I am going to submit a WIP PR that shows my current implementation, as well as an example plugin fragment that provides icon replacements.
happend together with eclipse-platform/eclipse.platform.swt#181
eclipse.buildId=4.23.0.I20220308-0310
java.version=17.0.3
java.vendor=Eclipse Adoptium
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE
Framework arguments: -product org.eclipse.sdk.ide
java.lang.NullPointerException: Cannot invoke "org.eclipse.swt.widgets.Display.disposeExec(java.lang.Runnable)" because "toQuery" is null
at org.eclipse.jface.resource.JFaceResources.getResources(JFaceResources.java:224)
at org.eclipse.jface.resource.JFaceResources.getResources(JFaceResources.java:242)
at org.eclipse.ui.part.WorkbenchPart.dispose(WorkbenchPart.java:105)
at org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart.dispose(PackageExplorerPart.java:481)
at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.invalidate(CompatibilityPart.java:264)
at org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.destroy(CompatibilityPart.java:421)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:995)
at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:960)
at org.eclipse.e4.core.internal.di.InjectorImpl.disposed(InjectorImpl.java:452)
at org.eclipse.e4.core.internal.di.Requestor.disposed(Requestor.java:161)
at org.eclipse.e4.core.internal.contexts.ContextObjectSupplier$ContextInjectionListener.update(ContextObjectSupplier.java:83)
at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.update(TrackableComputationExt.java:103)
at org.eclipse.e4.core.internal.contexts.TrackableComputationExt.handleInvalid(TrackableComputationExt.java:68)
at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:178)
at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:163)
at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:163)
at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:163)
at org.eclipse.e4.core.internal.contexts.EclipseContext.dispose(EclipseContext.java:163)
at org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.dispose(EclipseContextOSGi.java:102)
at org.eclipse.e4.core.internal.contexts.osgi.EclipseContextOSGi.bundleChanged(EclipseContextOSGi.java:144)
at org.eclipse.osgi.internal.framework.BundleContextImpl.dispatchEvent(BundleContextImpl.java:944)
at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234)
at org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:151)
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEventPrivileged(EquinoxEventPublisher.java:229)
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:138)
at org.eclipse.osgi.internal.framework.EquinoxEventPublisher.publishBundleEvent(EquinoxEventPublisher.java:130)
at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor.publishModuleEvent(EquinoxContainerAdaptor.java:217)
at org.eclipse.osgi.container.Module.publishEvent(Module.java:499)
at org.eclipse.osgi.container.Module.doStop(Module.java:658)
at org.eclipse.osgi.container.Module.stop(Module.java:521)
at org.eclipse.osgi.container.SystemModule.stop(SystemModule.java:207)
at org.eclipse.osgi.internal.framework.EquinoxBundle$SystemBundle$EquinoxSystemModule$1.run(EquinoxBundle.java:226)
at java.base/java.lang.Thread.run(Thread.java:833)
This is a duplicate of Bug 571316 - JUnit tests in org.eclipse.jface.text.tests.contentassist are failing on Windows and Mac
I will close the bug in bugzilla and this bug will be tracked here.
The JFace text tests in org.eclipse.jface.text.tests.contentassist fail in the nightly build as below
Windows
Both Windows and Mac
ClassUtils contains a method which calculates the simple class name. Looks like we simply can use class.getSimpleName for that.
Recently @mickaelistria updated forms to look flat in its native form.
Dark theme still looks a bit odd with its border around the left / top / right.
Would be nice to remove this to make it also flat in the dark theme.
In the e4 programming model, I can do something like this to register a menu contribution declared in my .e4xmi
with a control:
eMenuService.registerContextMenu(control, MENU_ID);
Unfortunately, I cannot find a similar functionality for associating an "open action" (think org.eclipse.jface.viewers.IOpenListener
) with a control. Could such a functionality be added? Or am I simply missing it?
Would be nice to add a GH build action to platform.ui
The info/warning/error icons in IconAndMessageDialog / TitleAreaDialog are not fully accessible:
This is a followup of discussions in #6 and former Gerrit patch.
The general problem is that when one wants to run a job or some other operation protected by scheduling rules in UI Thread, and this scheduling rule is currently "blocked" by some other work, then the result is a UI Freeze.
We could do better by allowing the workbench/IDE parts to customize a bit the JobManager, more specifically the beginRule
so it would show the interesting ProgressDialog when called from the UI Thread, so it doesn't seem too much like a freeze, and users have the opportunity to workaround it. It would also ease debugging.
Such a solution would allow to serve multiple operations that have implemented workarounds for this freeze, such as #6 , and those workarounds could then be removed.
Sometimes when there is a severe error (like missing target platform) in the workspace i end up with many problem Markers which are sorted quiet slow:
Looks like the slow thing is the language aware comparison. I don't see much value of sorting problem message (usual english) by Locale aware Comparator. Even on german which has special sorting rules i would not need that feature. When i click on sort by description i just want to have same descriptions grouped.
Also i wonder if all those "performance optimizations " in MarkerSortUtil realy work as desired. It feels like the collatorcache is cleared too often. Also i wonder what that optimizations try to archive - getting the top(k) of n entries always has a minimal O(n+log(k)) which is not significant better than the trivial O(n*log(n)) when just sorting all entries.
to avoid the editor jumping up and down.
I'd like to debug some things related to the workspace chooser (especially the problem with plugins starting "too early") but when I launch an IDE from my workspace the workspace chooser never appears (what seems a perquisite to trigger the problem).
So what is the recommended way to do so? Exporting a product and using remote debugging seems like it will slow-down such testings a lot...
Happens for all objects that adapt to IProject, but not IResource. Similar to eclipse-platform/eclipse.platform.debug#33 (see there for reproduction).
java.lang.NullPointerException: Cannot invoke "org.eclipse.core.resources.IProject.getWorkspace()" because "this.project" is null
at org.eclipse.ui.internal.ide.dialogs.ProjectNaturesPage.createContents(ProjectNaturesPage.java:125)
at org.eclipse.jface.preference.PreferencePage.createControl(PreferencePage.java:244)
at org.eclipse.jface.preference.PreferenceDialog.createPageControl(PreferenceDialog.java:1433)
at org.eclipse.jface.preference.PreferenceDialog$8.run(PreferenceDialog.java:1196)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:174)
at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:1188)
The JFace text tests in org.eclipse.jface.text.tests.codemining.CodeMiningTest failed in the Ibuild I20220407-0240 as below
This is a followup of Bug 571317
The link to the test failures report is org.eclipse.jface.text.tests_ep424I-unit-win32-java11_win32.win32.x86_64_11
From Bug 571317#c10 - the code mining code is not working completely on Windows. The issue in Bug 541415#c14 can still be reproduced on Windows.
Switching themes / disabling themes under Windows results in the following stacktrace.
java.lang.Error: SWT Resource was not properly disposed
at org.eclipse.swt.graphics.Resource.initNonDisposeTracking(Resource.java:172)
at org.eclipse.swt.graphics.Resource.(Resource.java:120)
at org.eclipse.swt.graphics.Image.(Image.java:483)
at org.eclipse.e4.ui.workbench.renderers.swt.CTabRendering.createShadow(CTabRendering.java:909)
at org.eclipse.e4.ui.workbench.renderers.swt.CTabRendering.setShadowColor(CTabRendering.java:1054)
at org.eclipse.e4.ui.css.swt.dom.CTabFolderElement.reset(CTabFolderElement.java:136)
at org.eclipse.e4.ui.css.swt.engine.AbstractCSSSWTEngineImpl.reset(AbstractCSSSWTEngineImpl.java:126)
at org.eclipse.e4.ui.css.swt.internal.theme.ThemeEngine.setTheme(ThemeEngine.java:453)
at org.eclipse.e4.ui.css.swt.internal.theme.ThemeEngine.setTheme(ThemeEngine.java:434)
at org.eclipse.ui.internal.dialogs.ViewsPreferencePage.performOk(ViewsPreferencePage.java:263)
at org.eclipse.jface.preference.PreferencePage.performApply(PreferencePage.java:457)
at org.eclipse.jface.preference.PreferencePage.lambda$1(PreferencePage.java:289)
at org.eclipse.swt.events.SelectionListener$1.widgetSelected(SelectionListener.java:84)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:252)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4221)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1063)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4038)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3610)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:823)
at org.eclipse.jface.window.Window.open(Window.java:799)
at org.eclipse.ui.internal.OpenPreferencesAction.run(OpenPreferencesAction.java:66)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:474)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:580)
at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:414)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4221)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1063)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4038)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3610)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1155)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1046)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155)
at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:644)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:551)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:156)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:136)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:659)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:596)
at org.eclipse.equinox.launcher.Main.run(Main.java:1467)
As a starting point to implement some similar to described in https://twitter.com/gaparv/status/1527965482158112769?s=21&t=nJqrxHjxvqwDdx6xn3PjYQ We should have the support to parameterized as many values in the current theme definitions.
The idea is to parameterize things like
This will enable us to have more platform level themes definitions for light and dark and let theme developers to customize them based on the parameters.
This will also enable to easily fix styling issues where most of the themes will adapt without any changes in most of the scenarios.
The effort to create a new theme will be less.
We currently show a warning dialog if a workspace is opened with a newer or older version of Eclipse? What is the value and what do we expect the user to do?
AFAIK we recommend reusing workspaces with newer Eclipse versions. If that is the case we should remove or disable the version check by default.
cc @akurtakov @marcushoepfner @sratz WDYT?
Reading this https://eclipsesource.com/blogs/2012/05/10/eclipse-4-final-sprint-part-1-the-e4-application-model/
I see following:
Creating an e4 Application
The easiest way to get started is to use a template to create a new e4 application.
This will create a bundle containing all necessary artefacts for an Eclipse 4 Application including the Application Model.
To create such a project, choose the “Eclipse 4 Application Project” entry within the “New Project” wizard.
But I can't find anything similar in my 4.24 SDK???
Where it is gone?
The actual reason I'm asking about it: in context of eclipse-platform/eclipse.platform.runtime#35 I've stumbled over code in
How is that e4 application workspace initialization is supposed to work? Do we have there something like workspace selection dialog? Or is this always using workspace location somehow specified via command line or model file?
AnnotationModel.cleanup(boolean, boolean)
iterates over map with keyset iterator and does lookup for every value from iterator. With ~10_000 annotations this is not fun anymore. Similar code in other places. That can be improved by using entryset iterator.
I plan to push the fix after eclipse-platform/eclipse.platform.text#19 is done.
Continuation of #56. If some job was running during shutdown, we might see following error:
org.eclipse.swt.SWTException: Device is disposed
at org.eclipse.swt.SWT.error(SWT.java:4918)
at org.eclipse.swt.SWT.error(SWT.java:4833)
at org.eclipse.swt.SWT.error(SWT.java:4804)
at org.eclipse.swt.widgets.Display.error(Display.java:1505)
at org.eclipse.swt.widgets.Display.getThread(Display.java:3378)
at org.eclipse.jface.util.Throttler.throttledExec(Throttler.java:90)
at org.eclipse.ui.internal.progress.ProgressManager.refreshJobInfo(ProgressManager.java:637)
at org.eclipse.ui.internal.progress.ProgressManager$JobMonitor.subTask(ProgressManager.java:319)
at org.eclipse.core.runtime.SubMonitor$RootInfo.subTask(SubMonitor.java:256)
at org.eclipse.core.runtime.SubMonitor.subTask(SubMonitor.java:667)
at org.eclipse.core.internal.resources.Resource.refreshLocal(Resource.java:1560)
at org.eclipse.core.internal.refresh.RefreshJob.runInWorkspace(RefreshJob.java:219)
at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:42)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
I will push a patch in a moment.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.