GithubHelp home page GithubHelp logo

eclipse-platform / eclipse.platform.ui Goto Github PK

View Code? Open in Web Editor NEW
67.0 23.0 150.0 153.39 MB

Eclipse Platform

Home Page: https://projects.eclipse.org/projects/eclipse.platform

License: Eclipse Public License 2.0

HTML 1.00% Java 98.84% CSS 0.16%
eclipse java rcp gui osgi swt

eclipse.platform.ui's People

Contributors

akurtakov avatar angelozerr avatar beckerwdf avatar briandealwis avatar carstenartur avatar dmegert avatar ecljpseb0t avatar emoffatt avatar fipro78 avatar heikoklare avatar iloveeclipse avatar jensli avatar joneshelming avatar laeubi avatar marcushoepfner avatar merks avatar mickaelistria avatar mkeller avatar opcoach avatar paulweb515 avatar psuzzi avatar rolfth avatar simonscholz avatar sopotc avatar sprigogin avatar sravanlakkimsetti avatar sxenos avatar tomsontom avatar vogella avatar wimjongman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

eclipse.platform.ui's Issues

The key binding shown hides cursor

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.

Disable or fix System theme on Windows

System theme looks not native on Windows. I suggest we remove it, users which want native styling can disable theming via unchekcing "Enable theming".

System theme

image

No theming:

image

Make a View that Shows Folders, not Projects

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.

Close Tabs with the middle button within chevron

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.
image

DirectToolItem disappears on Perspective Reset

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

  1. Switch to the Plugin Development perspective.
  2. (I have several files open)
  3. WindowPerspectiveReset Perspective

Project Explorer

before:
image

after:
image

NPE in ResourceFilterGroup

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)

Deadlock on undo

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)

The default button in FiltersConfigurationDialog is in the wrong section

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.

Few QuickAccessDialogTest tests failed in the I-build

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

Make it possible to ColorDefinitions from CSS theme also in preference CSS nodes

Add support to resolve Color and Font definitions in the following PreferenceHandler

UseCase

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.

org.eclipse.ui.tests DNF

https://download.eclipse.org/eclipse/downloads/drops4/I20220618-0340/testresults/ep425I-unit-cen64-gtk3-java11_linux.gtk.x86_64_11/org.eclipse.ui.tests.UiTestSuite.txt

!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)

Filter in Quick Access similar to VsCode

In VsCode you can filter based on the category, e.g. Git: as in the following screenshot.

image

Would be super useful to have this also in Eclipse, e.g. for New: or View:

NPE when changing Eclipse theme

Steps to reproduce:

  1. Start Eclipse
  2. Preferences -> General -> Appearance -> Theme
  3. Change from Light to Dark or vice versa
  4. Apply and Close
  5. at this point most of the UI is updated, but then the "Restart for theme..." prompt comes up
  6. Press restart and the below stack trace will appear numerous times.

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)

Inbuilt support for content assist on typing like vscode

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.

LockManager.handleException errors on shutdown

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)

Workspace launcher theme.

Hi,
Have you noticed that even using Dark theme, the workspace launcher shows in Light color?
image
It would be great if the workspace launcher behave according to the Dark or Light theme of Eclipse IDE.

Allow to configure UI defaults for new workspaces

@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.

image

I made a "professional" ;-) mockup-up for such a flag which could trigger a wizard to configure a configuration wizard.

image

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:

  • Dark Theme / Light Theme
  • Toolbar visible / Toolbar not visible.

This would allow us to modify the default with the option for users to change the new default back to their preferences.

Error after test execution in jenkins/surefire

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!

Expand all / Collapse all takes very long in the search view if we have lots of search results

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.

JFace: Tab key after 2nd click in a cell editor skips a row

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.

CellEditorFocusIssueSnippets.zip
.

3 UI tests fail since I20220420-1800

See https://download.eclipse.org/eclipse/downloads/drops4/I20220420-1800/testresults/html/org.eclipse.ui.tests_ep424I-unit-cen64-gtk3-java11_linux.gtk.x86_64_11.html

On all platforms they are failing now:

  • UIComparePreferencesAuto.testCompareViewersPref
  • DeprecatedUIPreferencesAuto.testFieldEditorEnablePref
  • DeprecatedUIPreferencesAuto.testFontEditorsPref

This is a regression from eclipse-platform/eclipse.platform.team#14 commit eclipse-platform/eclipse.platform.team@3b04269

Add support for "Icon Packs"

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:

  • Allow custom/replacement icons to be provided by a plugin fragment, by placing them in a "theme" directory of the plugin fragment
    • So in order to replace one of the "debug" icons, you must make a plugin fragment where the host plugin is "eclipse.debug.ui" and place the icon within a "theme" directory, with the same file path as the original icon
  • When loading an icon from a plugin, check if the plugin provides an alternative path to the icon that is prefixed by "/themes/"
  • If so, load it
  • Otherwise, use the default icon

There are probably some limitations to this approach, for instance:

  • The icon-provider must create a plugin fragment for each plugin which they wish to replace the icons for. This is very tedious.
  • How do we handle switching between different icon packs, if each plugin fragment uses the same "themes" directory?

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.

NPE in JFaceResources.getResources after dispose

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)

Dark theme - Flat forms

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.

image

Would be nice to remove this to make it also flat in the dark theme.

Add an e4 way to register a command/handler as an "open action"

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?

Prevent JobManager UI freeze when waiting for a rule in the UI Thread

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.

slow marker sort (many markers)

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:
image

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.

How to develop / debug the Workspace Chooser?

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...

NPE in ProjectNaturesPage

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)

No code mining updated when using Ctrl+End on Windows

The JFace text tests in org.eclipse.jface.text.tests.codemining.CodeMiningTest failed in the Ibuild I20220407-0240 as below

  1. CodeMiningProjectionViewerTest.testCodeMiningDoesntAlterFocus
  2. CodeMiningTest.testCodeMiningCtrlEnd
  3. CodeMiningTest.testCodeMiningCtrlHome
  4. CodeMiningTest.testCodeMiningFirstLine

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.

java.lang.Error: SWT Resource was not properly disposed in at org.eclipse.e4.ui.workbench.renderers.swt.CTabRendering.createShadow

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)

Add support to parameterize preference section of the theme css

Suggestion

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

  • view background / foreground
  • editor group background / foreground
  • editor background / foreground
  • editor selection background / foreground
  • editor popup background / foreground

Benefits

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.

Remove or disable Workspace version check dialog

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?

Where is new e4 application wizard???

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.

There is a wizard shown:
image

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

that initializes default workspace location before actual one is supposed to be initialized few lines later in
Location instanceLocation = WorkbenchSWTActivator.getDefault().getInstanceLocation();

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?

"Device is disposed" on shutdown in Throttler.throttledExec()

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.

Tab text in classic theme not readable

Do we have users of the classic theme under Windows? I tried it today and the text in the tabs in hardly readable for me.

Not sure if that is a regression or the "classic theming".

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.