Closed jeffmaury closed 2 years ago
i get the general idea, and love it.
but the filter text area isn't very visible on the dark theme, compared to the standard eclipse UI :
it misses the border at least, and maybe the inside text.
on another side, is it possible to narrow the category label close to the arrow ? it seems swt left a palce for an icon, but there is none for categories.
at last, the tree is deployed entirely by default, may be better to only shows categories at first ?
Steps:
Result:
Selected Extensions: area is missing scrollbars (MacOS). Available Extensions: has those so that I can scroll to read the labels that are cut off.
When filtering, empty categories shows up. Feels unexpected at first glance, in a 2nd thought I get the idea. I tend to think that empty categories shouldn't be listed.
In other wizards (ex. new project wizard) empty categories are not listed
The Filter: text input looks too small vertically
especially when compared to other filter inputs in other wizards (ex. new project wizard)
@adietish I change an option for the filter text widget, can you check if it fixes the issue on MacOS ?
I found another problem with scrollbars when the wizard shows the page initially (no resizing): Available Extensions: does not have scrollbars even though only a portion of the content is shown. Scrollbars appear though as soon as you resize the dialog:
@jeffmaury I look into it since I have MacOS. Will ask you to verify on Windows/Linux once I filed a PR, ok?
I also have the following stack trace in the log as soon as I select the quarkus wizard: Steps:
Result: wizard shows first page of quarkus project wizard. In the log the following appears:
java.lang.NoSuchMethodException: org.jboss.tools.quarkus.core.code.model.QuarkusModel.addPropertyChangeListener(java.beans.PropertyChangeListener)
at java.base/java.lang.Class.getMethod(Class.java:2108)
at org.eclipse.core.internal.databinding.beans.BeanPropertyListenerSupport.processListener(BeanPropertyListenerSupport.java:97)
at org.eclipse.core.internal.databinding.beans.BeanPropertyListenerSupport.hookListener(BeanPropertyListenerSupport.java:48)
at org.eclipse.core.internal.databinding.beans.BeanPropertyListener.doAddTo(BeanPropertyListener.java:64)
at org.eclipse.core.databinding.property.NativePropertyListener.addTo(NativePropertyListener.java:49)
at org.eclipse.core.internal.databinding.property.list.SimplePropertyObservableList.lambda$2(SimplePropertyObservableList.java:94)
at org.eclipse.core.databinding.observable.Realm$1.run(Realm.java:151)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.core.databinding.observable.Realm.safeRun(Realm.java:155)
at org.eclipse.core.databinding.observable.Realm.exec(Realm.java:173)
at org.eclipse.core.internal.databinding.property.list.SimplePropertyObservableList.firstListenerAdded(SimplePropertyObservableList.java:89)
at org.eclipse.core.databinding.observable.list.AbstractObservableList$PrivateChangeSupport.firstListenerAdded(AbstractObservableList.java:63)
at org.eclipse.core.databinding.observable.ChangeManager.addListener(ChangeManager.java:72)
at org.eclipse.core.databinding.observable.ChangeSupport.addListener(ChangeSupport.java:34)
at org.eclipse.core.databinding.observable.list.AbstractObservableList.addListChangeListener(AbstractObservableList.java:118)
at org.eclipse.core.databinding.observable.list.DecoratingObservableList.firstListenerAdded(DecoratingObservableList.java:86)
at org.eclipse.core.databinding.observable.ChangeManager.addListener(ChangeManager.java:72)
at org.eclipse.core.databinding.observable.list.DecoratingObservableList.addListChangeListener(DecoratingObservableList.java:60)
at org.eclipse.core.internal.databinding.observable.masterdetail.DetailObservableList.updateInnerObservableList(DetailObservableList.java:131)
at org.eclipse.core.internal.databinding.observable.masterdetail.DetailObservableList.lambda$1(DetailObservableList.java:98)
at org.eclipse.core.databinding.observable.value.ValueChangeEvent.dispatch(ValueChangeEvent.java:73)
at org.eclipse.core.databinding.observable.ChangeManager.fireEvent(ChangeManager.java:119)
at org.eclipse.core.databinding.observable.value.DecoratingObservableValue.fireValueChange(DecoratingObservableValue.java:68)
at org.eclipse.core.databinding.observable.value.DecoratingObservableValue.handleValueChange(DecoratingObservableValue.java:105)
at org.eclipse.core.databinding.observable.value.ValueChangeEvent.dispatch(ValueChangeEvent.java:73)
at org.eclipse.core.databinding.observable.ChangeManager.fireEvent(ChangeManager.java:119)
at org.eclipse.core.databinding.observable.value.DecoratingObservableValue.fireValueChange(DecoratingObservableValue.java:68)
at org.eclipse.core.databinding.observable.value.DecoratingObservableValue.handleValueChange(DecoratingObservableValue.java:105)
at org.eclipse.core.databinding.observable.value.ValueChangeEvent.dispatch(ValueChangeEvent.java:73)
at org.eclipse.core.databinding.observable.ChangeManager.fireEvent(ChangeManager.java:119)
at org.eclipse.core.databinding.observable.value.AbstractObservableValue.fireValueChange(AbstractObservableValue.java:86)
at org.eclipse.core.internal.databinding.property.value.SimplePropertyObservableValue.notifyIfChanged(SimplePropertyObservableValue.java:120)
at org.eclipse.core.internal.databinding.property.value.SimplePropertyObservableValue.lambda$1(SimplePropertyObservableValue.java:69)
at org.eclipse.core.databinding.observable.Realm$1.run(Realm.java:151)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45)
at org.eclipse.core.databinding.observable.Realm.safeRun(Realm.java:155)
at org.eclipse.jface.databinding.swt.DisplayRealm.lambda$0(DisplayRealm.java:68)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4320)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3943)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java:166)
at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:368)
at org.eclipse.jface.wizard.WizardDialog.run(WizardDialog.java:1033)
at org.jboss.tools.common.ui.WizardUtils.runInWizard(WizardUtils.java:130)
at org.jboss.tools.common.ui.WizardUtils.runInWizard(WizardUtils.java:94)
at org.jboss.tools.common.ui.WizardUtils.runInWizard(WizardUtils.java:72)
at org.jboss.tools.quarkus.ui.wizard.CodeProjectTypeWizardPage.loadModel(CodeProjectTypeWizardPage.java:235)
at org.jboss.tools.quarkus.ui.wizard.CodeProjectTypeWizardPage.doCreateControls(CodeProjectTypeWizardPage.java:223)
at org.jboss.tools.common.ui.wizard.AbstractDataBindingWizardPage.createControl(AbstractDataBindingWizardPage.java:77)
at org.eclipse.jface.wizard.Wizard.createPageControls(Wizard.java:178)
at org.eclipse.jface.wizard.WizardDialog.createPageControls(WizardDialog.java:743)
at org.eclipse.jface.wizard.WizardDialog.setWizard(WizardDialog.java:1181)
at org.eclipse.jface.wizard.WizardDialog.updateForPage(WizardDialog.java:1234)
at org.eclipse.jface.wizard.WizardDialog.lambda$3(WizardDialog.java:1222)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:74)
at org.eclipse.jface.wizard.WizardDialog.showPage(WizardDialog.java:1222)
at org.eclipse.jface.wizard.WizardDialog.nextPressed(WizardDialog.java:917)
at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:468)
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:4579)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1524)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1547)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1532)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1325)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4365)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3941)
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.handlers.WizardHandler$New.executeHandler(WizardHandler.java:263)
at org.eclipse.ui.internal.handlers.WizardHandler.execute(WizardHandler.java:283)
at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:283)
at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:97)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:58)
at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:317)
at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:251)
at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:173)
at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:156)
at org.eclipse.core.commands.Command.executeWithChecks(Command.java:488)
at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:487)
at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:213)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.executeCommand(KeyBindingDispatcher.java:308)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.press(KeyBindingDispatcher.java:580)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.processKeyEvent(KeyBindingDispatcher.java:647)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher.filterKeySequenceBindings(KeyBindingDispatcher.java:439)
at org.eclipse.e4.ui.bindings.keys.KeyBindingDispatcher$KeyDownFilter.handleEvent(KeyBindingDispatcher.java:96)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1170)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4574)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1524)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1547)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1532)
at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1561)
at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1557)
at org.eclipse.swt.widgets.Canvas.sendKeyEvent(Canvas.java:522)
at org.eclipse.swt.widgets.Control.doCommandBySelector(Control.java:1085)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:6428)
at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native Method)
at org.eclipse.swt.internal.cocoa.NSResponder.interpretKeyEvents(NSResponder.java:59)
at org.eclipse.swt.widgets.Composite.keyDown(Composite.java:607)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:6260)
at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
at org.eclipse.swt.widgets.Widget.callSuper(Widget.java:236)
at org.eclipse.swt.widgets.Widget.windowSendEvent(Widget.java:2162)
at org.eclipse.swt.widgets.Shell.windowSendEvent(Shell.java:2487)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:6380)
at org.eclipse.swt.internal.cocoa.OS.objc_msgSendSuper(Native Method)
at org.eclipse.swt.widgets.Display.applicationSendEvent(Display.java:5628)
at org.eclipse.swt.widgets.Display.applicationProc(Display.java:5767)
at org.eclipse.swt.internal.cocoa.OS.objc_msgSend(Native Method)
at org.eclipse.swt.internal.cocoa.NSApplication.sendEvent(NSApplication.java:117)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3938)
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:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
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)
I found another problem with scrollbars when the wizard shows the page initially (no resizing): Available Extensions: does not have scrollbars even though only a portion of the content is shown. Scrollbars appear though as soon as you resize the dialog:
@jeffmaury I look into it since I have MacOS. Will ask you to verify on Windows/Linux once I filed a PR, ok?
I have scrollbars on Windows !!!!
I found another problem with scrollbars when the wizard shows the page initially (no resizing): Available Extensions: does not have scrollbars even though only a portion of the content is shown. Scrollbars appear though as soon as you resize the dialog I have scrollbars on Windows !!!!
@jeffmaury ok, a MacOS problem then. Do you have scrollbars in the table on the right "Selected Extensions:"? Initially and after resizing?
I found another problem with scrollbars when the wizard shows the page initially (no resizing): Available Extensions: does not have scrollbars even though only a portion of the content is shown. Scrollbars appear though as soon as you resize the dialog I have scrollbars on Windows !!!!
@jeffmaury ok, a MacOS problem then. Do you have scrollbars in the table on the right "Selected Extensions:"? Initially and after resizing?
No once there are enough extensions
No once there are enough extensions
@jeffmaury ok, for the vertical ones. But are there horizontal scrollbars if you resize (either the dialog or via Sashform) the "Selected Extensions:" so that the text of the extensions is cut off. Are there any horiz. scrollbars on windows in this case?
Found another flaw: filtering is case sensitive. I'll take care of this, too. Steps:
Result:
You should get the extensions for "SmallRye" but noe is listed
Expected result:
Extensions for "SmallRye" should be listed even though case of the filter text does not match
No once there are enough extensions
@jeffmaury ok, for the vertical ones. But are there horizontal scrollbars if you resize (either the dialog or via Sashform) the "Selected Extensions:" so that the text of the extensions is cut off. Are there any horiz. scrollbars on windows in this case?
You right, if I add an extension with a long description the horizontal scrollbar does not appear but as soon as the vertical scrollbar is show (after adding enough extensions), then the horizontal scrollbar is show so I would think this is an issue with the table and scrollbars
Found another flaw: filtering is case sensitive. I'll take care of this, too. Steps:
1. EXEC: open Quarkus project wizard 2. EXEC: in filter text field: enter "small"
Result: You should get the extensions for "SmallRye" but noe is listed
Expected result: Extensions for "SmallRye" should be listed even though case of the filter text does not match
Should be fixed by 27cbfea3e133312850e92f7f8985c8d7d88c7265
You right, if I add an extension with a long description the horizontal scrollbar does not appear but as soon as the vertical scrollbar is show (after adding enough extensions), then the horizontal scrollbar is show so I would think this is an issue with the table and scrollbars
ok, in MacOS there are never horizontal scrollbars. Vertical ones appear though as soon as there are more selected extensions than are visible (can be forced by resizing the dialog). I'll take care of it.
@jeffmaury 27cbfea fixed the filtering issue, yay! I fixed the height of "Filter:" input and horizontal scrollbars in "Selected Extensions:". Please verify that things behave correctly on Win/Linux: https://github.com/jeffmaury/jbosstools-quarkus/pull/1
…ng/removing extensions
Signed-off-by: Jeff MAURY jmaury@redhat.com
Pull Request Checklist
General
Code
Testing
Function