#7548 closed enhancement (fixed)
Re-organize the preference dialog
Reported by: | simon04 | Owned by: | team |
---|---|---|---|
Priority: | major | Milestone: | 20.11 |
Component: | Core | Version: | |
Keywords: | Cc: | Klumbumbus, openstreetmap.org-user-d1g |
Description
To me, the current preference dialog is not very intuitive. Especially, Often, I click through several panes to find the desired one.
I would like to make the following improvement suggestions:
- Instead of icons use (additionally) textual labels for the buttons on the left hand side. This allows IMO to find the desired one more quickly.
- Reorganize all panes in categories and sub-categories as follows:
- Mapping
- OSM Data
- GPS Points
- Map Projection
- Map Paint Styles
- Tagging Presets
- Imagery
- Servers
- Authentication
- Proxy settings
- UI/JOSM
- Colors
- Look and Feel
- File backup
- Toolbar
- Keyboard Shortcuts
- Advanced
- Audio
- Validator
- Remote control
- Advanced Preferences
- Plugins
- Install/update
- Update policy
- … (custom panes of plugins)
I'm happy to hear some opinions :-)
Attachments (25)
Change History (193)
by , 13 years ago
by , 13 years ago
Attachment: | 7548_alpha.patch added |
---|
comment:2 by , 13 years ago
Summary: | Re-organize the preference dialog → [alpha Patch] Re-organize the preference dialog |
---|---|
Type: | defect → enhancement |
follow-up: 4 comment:3 by , 13 years ago
It looks really good, but not too easy :)
Other possible problem: are you sure it will fit on 800x600 width or 1024x768 with enlarged font, like in
http://josm.openstreetmap.de/ticket/7450#comment:40 ?
Maybe we need some shorter TODO list for non-experts?
Main reasons to change preferences for them are
- specify OSM account, maybe with OpenID
- specify proxy, if it exists
- install needed plugins (recommended on forums, etc.)
- configure imagery sources (choose specific for your region)
- sometimes - remote control, beacuse online tools need it
On the other hand, we can not hide all other preferences or do reordering for non-experts only...
follow-up: 5 comment:4 by , 13 years ago
Replying to akks:
It looks really good, but not too easy :)
Actually, the required changes have been the same for each preference tab (except for some).
Other possible problem: are you sure it will fit on 800x600 width or 1024x768 with enlarged font, like in
http://josm.openstreetmap.de/ticket/7450#comment:40 ?
Currently, (vertical and horizontal) scrollbars are shown on the right pane whenever necessary. However, this happens also in unexpected cases at the moment (e.g., instead of horizontally scrolling the tagging presets lists themselves, an outer scrollbar is shown).
Maybe we need some shorter TODO list for non-experts?
Main reasons to change preferences for them are
- specify OSM account, maybe with OpenID
- specify proxy, if it exists
- install needed plugins (recommended on forums, etc.)
- configure imagery sources (choose specific for your region)
- sometimes - remote control, beacuse online tools need it
On the other hand, we can not hide all other preferences or do reordering for non-experts only...
This would suggest to have something like a quick setup wizard. I guess, the OSM account can be skipped as this is requested anyway when uploading changes.
Concerning plugins, custom styles, custom presets and imagery sources, it would be great to somehow have "bundled versions" which installs the things automatically.
comment:5 by , 13 years ago
Replying to simon04:
This would suggest to have something like a quick setup wizard. I guess, the OSM account can be skipped as this is requested anyway when uploading changes.
Yes, some quick setup wizard would be good. Maybe something with highlighting most important preferences tabs and showing tooltips on them could help too...
Concerning plugins, custom styles, custom presets and imagery sources, it would be great to somehow have "bundled versions" which installs the things automatically.
Currently this can be already done by custom configurations, (#4421)
For example, I have settings for drawing forests in Russia: http://josm.openstreetmap.de/attachment/ticket/4421/forestMapping.xml
by , 13 years ago
Attachment: | 7548_v02.patch added |
---|
comment:6 by , 13 years ago
I resolved some merging conflicts due to code changes. In addition, the horizontal scrolling problem as described above has been resolved by not using the ScrollPane for the corresponding preferences.
comment:7 by , 13 years ago
Some comments:
- "File backup" can be moved to the Advanced section.
- Instead of JTabbedPane you could use JList or JTree on the left and CardLayout on the right: When there is not enough vertical space for all the entries on the left, the scrolling works better for a list. By using one JList for each category, you can add the large icons as labels in between, so they aren't clickable any more.
- It would be nice to have new icons for "Mapping" and "User Interface".
follow-up: 9 comment:8 by , 13 years ago
Thank you for your comments, bastiK!
- Good point concerning "File backup"
- Concerning icons, we might find something on http://thenounproject.com/noun/earth/#icon-No1238
- What would be the advantage of the CardLayout?
- The big icons in the current solution could display some help text for the corresponding settings (just as an idea).
comment:9 by , 13 years ago
Replying to simon04:
- What would be the advantage of the CardLayout?
- The big icons in the current solution could display some help text for the corresponding settings (just as an idea).
It is a little unconventional to have two kinds of tabs (icon and text). With CardLayout you can simulate a JTabbedPane, and use your own GUI to switch the content of the main panel.
comment:10 by , 13 years ago
JOSM (is|might be)
unconventional in other aspects as well. :-)
IMO, this sounds like (a lot?) effort for mostly aesthetic things. ATM, I'm not really up to those changes, are you? ;-)
comment:12 by , 13 years ago
This patch might need some adaption due to r5465. Having a hidden option might be difficult (additional work), as I had to restructure some preference panels to fit the new idea. We might want to add this change right at the beginning of a "free development" phase.
Dirk, what do you think?
by , 11 years ago
Attachment: | 7548_2014.patch added |
---|
comment:14 by , 11 years ago
Summary: | [alpha Patch] Re-organize the preference dialog → [β Patch] Re-organize the preference dialog |
---|
Updated patch to current revision, quite some merging conflicts ;-). Also improved some messages, dialogs. attachment:7548_2014.patch
Should we give it a try? What do you think?
comment:16 by , 11 years ago
It's really nice I love it :) I vote in favour of this new layout. But I have encountered a strange bug when clicking in Connection Settings:
Revision: 7133 Is-Local-Build: true Build-Date: 2014-05-15 23:48:37 Identification: JOSM/1.5 (7133 SVN en) Windows 8.1 64-Bit Memory Usage: 79 MB / 2731 MB (37 MB allocated, but free) Java version: 1.8.0_05, Oracle Corporation, Java HotSpot(TM) 64-Bit Server VM VM arguments: [-Xmx3G, -Dfile.encoding=UTF-8] Program arguments: [--debug] java.lang.NoClassDefFoundError: sun/awt/VerticalBagLayout at org.openstreetmap.josm.gui.preferences.server.ServerAccessPreference.buildContentPanel(ServerAccessPreference.java:42) at org.openstreetmap.josm.gui.preferences.server.ServerAccessPreference.addGui(ServerAccessPreference.java:56) at org.openstreetmap.josm.gui.preferences.PreferenceTabbedPane.stateChanged(PreferenceTabbedPane.java:593) at javax.swing.DefaultSingleSelectionModel.fireStateChanged(DefaultSingleSelectionModel.java:132) at javax.swing.DefaultSingleSelectionModel.setSelectedIndex(DefaultSingleSelectionModel.java:67) at javax.swing.JTabbedPane.setSelectedIndexImpl(JTabbedPane.java:616) at javax.swing.JTabbedPane.setSelectedIndex(JTabbedPane.java:591) at javax.swing.plaf.basic.BasicTabbedPaneUI$Handler.mousePressed(BasicTabbedPaneUI.java:3645) at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:279) at java.awt.Component.processMouseEvent(Component.java:6524) at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) at java.awt.Component.processEvent(Component.java:6292) at java.awt.Container.processEvent(Container.java:2234) at java.awt.Component.dispatchEventImpl(Component.java:4883) at java.awt.Container.dispatchEventImpl(Container.java:2292) at java.awt.Component.dispatchEvent(Component.java:4705) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4530) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462) at java.awt.Container.dispatchEventImpl(Container.java:2278) at java.awt.Window.dispatchEventImpl(Window.java:2739) at java.awt.Component.dispatchEvent(Component.java:4705) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746) at java.awt.EventQueue.access$400(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:697) at java.awt.EventQueue$3.run(EventQueue.java:691) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:719) at java.awt.EventQueue$4.run(EventQueue.java:717) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) at java.awt.EventQueue.dispatchEvent(EventQueue.java:716) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109) at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:184) at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:229) at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:227) at java.security.AccessController.doPrivileged(Native Method) at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:227) at java.awt.Dialog.show(Dialog.java:1084) at java.awt.Component.show(Component.java:1656) at java.awt.Component.setVisible(Component.java:1608) at java.awt.Window.setVisible(Window.java:1014) at java.awt.Dialog.setVisible(Dialog.java:1005) at org.openstreetmap.josm.gui.preferences.PreferenceDialog.setVisible(PreferenceDialog.java:126) at org.openstreetmap.josm.actions.PreferencesAction.run(PreferencesAction.java:112) at org.openstreetmap.josm.actions.PreferencesAction.actionPerformed(PreferencesAction.java:101) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289) at java.awt.Component.processMouseEvent(Component.java:6527) at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) at java.awt.Component.processEvent(Component.java:6292) at java.awt.Container.processEvent(Container.java:2234) at java.awt.Component.dispatchEventImpl(Component.java:4883) at java.awt.Container.dispatchEventImpl(Container.java:2292) at java.awt.Component.dispatchEvent(Component.java:4705) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462) at java.awt.Container.dispatchEventImpl(Container.java:2278) at java.awt.Window.dispatchEventImpl(Window.java:2739) at java.awt.Component.dispatchEvent(Component.java:4705) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:746) at java.awt.EventQueue.access$400(EventQueue.java:97) at java.awt.EventQueue$3.run(EventQueue.java:697) at java.awt.EventQueue$3.run(EventQueue.java:691) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue$4.run(EventQueue.java:719) at java.awt.EventQueue$4.run(EventQueue.java:717) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75) at java.awt.EventQueue.dispatchEvent(EventQueue.java:716) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) Caused by: java.lang.ClassNotFoundException: sun.awt.VerticalBagLayout at java.net.URLClassLoader$1.run(URLClassLoader.java:372) at java.net.URLClassLoader$1.run(URLClassLoader.java:361) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:360) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 87 more
follow-up: 18 comment:17 by , 11 years ago
Also, the direct access from validator dialog to validator preferences (through the small icon left dock/undock icon) does not work anymore.
comment:18 by , 11 years ago
Replying to Don-vip:
Also, the direct access from validator dialog to validator preferences (through the small icon left dock/undock icon) does not work anymore.
How about the mappaint toggle dialog. Does this link work ?
by , 11 years ago
Attachment: | 7548_2014_v2.patch added |
---|
comment:20 by , 11 years ago
Thank you for your feedback!
In attachment:7548_2014_v2.patch, comment:16 and comment:17 have been resolved (comment:18 wasn't a problem).
(Concerning comment:16: In the old days I tried to come around GridBagLayout
by trying other managers )
comment:21 by , 11 years ago
Much better :) Still another problem with direct access:
- setup a nonexistent proxy and erase the MOTD in user directory
- restart JOSM, there's an error message with a "change proxy settings" button
- This button leads to connection tab, not the proxy one
comment:22 by , 11 years ago
Also the 2 methods PreferencesAction.forPreferenceSubTab
should be removed, no?
comment:23 by , 11 years ago
Milestone: | → 14.06 |
---|
Right, thank you – patch adapted. Some plugins need also to be adapted – patch attached.
Let's keep this for the subsequent stable release to have enough time for finding more bugs …
by , 11 years ago
Attachment: | 7548_plugins.patch added |
---|
by , 11 years ago
Attachment: | 7548_2014_v3.patch added |
---|
comment:25 by , 11 years ago
Milestone: | 14.06 → 14.07 |
---|
Move all tickets for which no work has been done yet to next milestone
comment:28 by , 11 years ago
Milestone: | 14.08 |
---|
comment:29 by , 11 years ago
Cc: | added |
---|
comment:30 by , 9 years ago
Yes, text labels are far better than only icons in tabs.
Compared to Firefox
In the Firefeox we have "file", "edit" "view" and so on.
If you open "about:preferences" there would be "General", "Search", "Content", "Applications", "Privacy", "Security", "Sync", "Advanced"
There no icons in the "main menu", icons in about:preferences is alongside to ordinary text labels.
Any reason why it wasn't merged? Nobody had time for it?
comment:31 by , 9 years ago
Cc: | added |
---|
comment:32 by , 9 years ago
Cc: | added; removed |
---|
comment:33 by , 9 years ago
Please don't use centrer aligned text in the horizontal tabs (on the left). Is is harder to find beginning of the each word.
Firefox/Chromium aligns text to the left.
follow-up: 36 comment:35 by , 5 years ago
Milestone: | → 20.10 |
---|
It was ready, for forgotten twice after a stabilization phase. Now it needs a big overhaul due to various merge conflicts. I can try to update it again.
(Btw: I started working on this idea on the train to FOSSGIS 2012…)
comment:36 by , 5 years ago
Replying to simon04:
It was ready, for forgotten twice after a stabilization phase. Now it needs a big overhaul due to various merge conflicts. I can try to update it again.
(Btw: I started working on this idea on the train to FOSSGIS 2012…)
Where is the FOSSGIS 2021? Guess to far away in time to wait for a release of the enhancement on the train to the conference.
comment:38 by , 5 years ago
comment:39 by , 5 years ago
comment:40 by , 4 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
by , 4 years ago
Attachment: | 2020-10-11-102936_852x756_scrot.png added |
---|
by , 4 years ago
Attachment: | 2020-10-11-112249_898x956_scrot.png added |
---|
by , 4 years ago
Attachment: | 2020-10-11-114632_898x956_scrot.png added |
---|
by , 4 years ago
Attachment: | 2020-10-11-123753_898x956_scrot.png added |
---|
by , 4 years ago
Attachment: | 2020-10-11-124515_898x956_scrot.png added |
---|
comment:46 by , 4 years ago
Replying to GerdP:
The tab "Display Settings" is now empty.
The following plugins add sub-tabs to "Display Settings":
- https://josm.openstreetmap.de/browser/osm/applications/editors/josm/plugins/MicrosoftStreetside/src/org/openstreetmap/josm/plugins/streetside/gui/StreetsidePreferenceSetting.java
- https://josm.openstreetmap.de/browser/osm/applications/editors/josm/plugins/colorscheme/src/org/openstreetmap/josm/plugins/colorscheme/ColorSchemePreference.java
- https://gitlab.com/JOSM/plugin/Mapillary/blob/master/src/main/java/org/openstreetmap/josm/plugins/mapillary/gui/MapillaryPreferenceSetting.java
Maybe, we/I should transform the "OSM data" drawing preference back to a sub-tab, see attachment:2020-10-11-124515_898x956_scrot.png?
follow-up: 49 comment:47 by , 4 years ago
I don't use any of the mentioned plugins. Does this explain the tab is empty?
comment:48 by , 4 years ago
As the list on the left can get quite long now, especially with some plugins installed, are there any plans to have an option to fold all tab entries but the one in the active section?
follow-up: 51 comment:49 by , 4 years ago
Replying to GerdP:
I don't use any of the mentioned plugins. Does this explain the tab is empty?
Yes.
Replying to skyper:
are there any plans to have an option to fold all tab entries but the one in the active section?
No, as this would make the whole reorganisation pointless (all entries should be directly accessible).
The icons could be smaller, such as:
by , 4 years ago
Attachment: | 2020-10-11-192837_598x742_scrot.png added |
---|
comment:50 by , 4 years ago
Summary: | [β Patch] Re-organize the preference dialog → Re-organize the preference dialog |
---|
comment:51 by , 4 years ago
Replying to simon04:
Replying to skyper:
are there any plans to have an option to fold all tab entries but the one in the active section?
No, as this would make the whole reorganisation pointless (all entries should be directly accessible).
The icons could be smaller, such as:
Better, maybe, even centered for the group.
follow-up: 54 comment:52 by , 4 years ago
I would go with:
- an own 24px icon for every line on the left
- left aligned text
- no empty tabs
follow-up: 64 comment:54 by , 4 years ago
Replying to Klumbumbus:
- left aligned text
Not so easy, see https://stackoverflow.com/questions/26308859/jtabbedpane-tab-placement-set-to-left-but-icons-are-not-aligned for a rather complex solution. I'll look into that in depth later…
by , 4 years ago
Attachment: | 7548-init.patch added |
---|
follow-up: 57 comment:56 by , 4 years ago
@Simon: During my work on #19876 I noticed that the DisplayPreferences
tab was always initialized. Reason is that the ChangeListener
reacts (too early) when javax.swing.JTabbedPane.insertTab(String title, Icon icon, Component component, String tip, int index)
is called first time and this code is executed:
if (pages.size() == 1) { setSelectedIndex(0); }
With the small patch the listener is added later and thus DisplayPreferences
is not (wrongly) added to list settingsInitialized
.
comment:57 by , 4 years ago
follow-up: 60 comment:59 by , 4 years ago
Just to make sure: I still don't see the content of the DisplayPreferences
tab.
comment:60 by , 4 years ago
Replying to GerdP:
Just to make sure: I still don't see the content of the
DisplayPreferences
tab.
Is there any content to be displayed? Think this and Map Settings
are leftovers and only serve as titles right now.
follow-ups: 62 63 comment:61 by , 4 years ago
Ahh! Very confusing, at least for me.
Why not remove the empty tabs? I would alse move the "language" tab into the "look and feel" panel.
comment:62 by , 4 years ago
Replying to GerdP:
Ahh! Very confusing, at least for me.
Why not remove the empty tabs? I would alse move the "language" tab into the "look and feel" panel.
+1
The OSM-Server
and Proxy settings
tabs need a vertical scroll bar, if the content is not fully displayed.
comment:63 by , 4 years ago
Replying to GerdP:
Why not remove the empty tabs?
See comment:46 for the reason and a possible solution.
comment:64 by , 4 years ago
Replying to simon04:
Replying to Klumbumbus:
- left aligned text
Not so easy, see https://stackoverflow.com/questions/26308859/jtabbedpane-tab-placement-set-to-left-but-icons-are-not-aligned for a rather complex solution. I'll look into that in depth later…
tbh if we can't find a solution for the left alignment we should revert this reorganization because the centered text really looks ugly and doesn't help at all to find the wanted tab faster. Or we move away from these tabs and use something different?
Some brainstorming (i.e. some other apps with icons in preferences):
by , 4 years ago
Attachment: | prefs-with-search.png added |
---|
comment:65 by , 4 years ago
tbh if we can't find a solution for the left alignment we should revert this reorganization because the centered text really looks ugly and doesn't help at all to find the wanted tab faster.
+1
Or we move away from these tabs and use something different?
I think all preference dialogs have the same problem for newbes. Situation is this: User doesn't like a default behaviour and wonders if there is an option to change that. As long as they don't know the internal structure of the application they can only guess where such an option could be hidden. At that point in time the icons don't help me at all. Typically I look at the texts only at that time and maybe I remember the icon to find that setting faster next time.
In fact I prefer to use the filter in the expert preferences. It's like a very simple Google search.
The System settings in MS Windows were changed often and - I think - never to the better. Their best idea was to add the search function which simply lists possible links. Since that exists I don't have to care about the organisation.
comment:70 by , 4 years ago
Replying to simon04:
In 17231/josm:
Few icon paths seem to be wrong. Thought we do not use file extensions and a regression in #19964.
comment:71 by , 4 years ago
I tried r17237 , press F12 directly after start and the display for OSM Data is still empty. I have to click on another tab and then again on the first to get its content.
comment:72 by , 4 years ago
Yeap, same for me.
Is the file extension needed?
-
trunk/src/org/openstreetmap/josm/gui/preferences/display/GPXPreference.java
a b 25 25 26 26 GPXPreference() { 27 super("layer/gpx_small .svg", tr("GPS Points"), tr("Settings that control the drawing of GPS tracks."));27 super("layer/gpx_small", tr("GPS Points"), tr("Settings that control the drawing of GPS tracks.")); 28 28 }
follow-up: 76 comment:75 by , 4 years ago
I think we should
- completeley remove the "Map" tab (MapPreference.java) as it is never displayed
rename the "Display" tab (DisplayPreference.java) to "Plugins", change its description and move the tab down after "Imagery".
follow-up: 98 comment:76 by , 4 years ago
Replying to Klumbumbus:
- rename the "Display" tab (DisplayPreference.java) to "Plugins"
Ah, no we already have a "Plugins" tab. So maybe "Plugins settings"? Or we change them to own tabs, not subtabs?
by , 4 years ago
Attachment: | display.png added |
---|
follow-up: 78 comment:77 by , 4 years ago
I'm looking at #19968 and the colorscheme plugin preferences go into the "display" tab, this is weird:
comment:78 by , 4 years ago
comment:79 by , 4 years ago
@Simon ColorPreference.getTabPane() returns null so I can't add color schemes tab there. How do you want to address this?
by , 4 years ago
Attachment: | Screenshot 2020-10-21 at 19.13.22.png added |
---|
The preferences panel also looks very very weird on macOS in Java 15.
comment:80 by , 4 years ago
follow-up: 83 comment:81 by , 4 years ago
The Aqua L&F doesn't allow to get horizontal tabs. The time has probably come to move away from a tab-based panel to a list or tree-based one. We should also add a filter input text at the top allowing us to search for a preference by its name, like in many other applications.
follow-up: 93 comment:83 by , 4 years ago
Replying to Don-vip:
@Simon ColorPreference.getTabPane() returns null so I can't add color schemes tab there. How do you want to address this?
ColorPreference
isn't instantiating a JTabbedPane
in its constructor –
-
src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java
diff --git a/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java b/src/org/openstreetmap/josm/gui/preferences/display/ColorPreference.java index 45196fb3b..6ac830a4a 100644
a b public PreferenceSetting createPreferenceSetting() { 81 82 82 83 ColorPreference() { 83 84 super(/* ICON(preferences/) */ "color", 84 tr("Colors"), tr("Change colors used in program dialogs and in map paint styles.") );85 tr("Colors"), tr("Change colors used in program dialogs and in map paint styles."), false, new JTabbedPane()); 85 86 } 86 87 87 88 private ColorTableModel tableModel;
comment:84 by , 4 years ago
There is a complie warning:
compile: [javac] Compiling 1633 source files to C:\Users\stefa\Documents\OSM\josm\core\build [javac] C:\Users\stefa\Documents\OSM\josm\core\src\org\openstreetmap\josm\gui\preferences\server\ProxyPreferencesPanel.java:182: warning: [UnusedVariable] The local variable 'gc' is never read. [javac] GridBagConstraints gc = new GridBagConstraints(); [javac] ^ [javac] (see https://errorprone.info/bugpattern/UnusedVariable) [javac] Did you mean to remove this line or 'new GridBagConstraints();'? [javac] 1 warning
comment:85 by , 4 years ago
Replying to GerdP:
In 17256/josm:
Now the Display tab is completely blank when opening the preferences.
comment:87 by , 4 years ago
Strange, I think it fixed the problem on my PC, but on my Laptop it is still there :(
So, I've revert it. On my Laptop this doesn't change anything.
follow-up: 89 comment:88 by , 4 years ago
On my machine it happens when F12 is pressed for the first time. If you chose another tab and then the first again the problem is gone (for that JOSM session). If you just chose another tab this is also opened again with that content.
comment:89 by , 4 years ago
Replying to GerdP:
If you chose another tab and then the first again the problem is gone (for that JOSM session).
Yes that worked for me too in both versions, but is a bad workaround.
by , 4 years ago
Attachment: | 7548-no-empty.patch added |
---|
@Klumbumbus Please try this patch. It solves the problem on both my PC and the laptop
comment:93 by , 4 years ago
Replying to simon04:
Replying to Don-vip:
@Simon ColorPreference.getTabPane() returns null so I can't add color schemes tab there. How do you want to address this?
ColorPreference
isn't instantiating aJTabbedPane
in its constructor –
This isn't enough to make it being displayed. I think all preferences should define a tab pane. Those who currently have no tab pane should define their contents in the first tab named the same as preferences. Make the tab pane hidden if it contains only one tab, so that visually there is no difference between the current system and the new one, except this is expendable: all plugins can define new tabs everywhere, not only in the preferences where tabs are defined by JOSM core.
comment:94 by , 4 years ago
comment:95 by , 4 years ago
I think the Mapillary dialog is intended, although I think that we should show a core dialog if nothing special was selected. OSM data would be my preference.
comment:98 by , 4 years ago
Replying to Klumbumbus:
Replying to Klumbumbus:
- rename the "Display" tab (DisplayPreference.java) to "Plugins"
Ah, no we already have a "Plugins" tab. So maybe "Plugins settings"? Or we change them to own tabs, not subtabs?
Or we move the subtabs of plugins from "Display" tab to "Plugins" tab. (Or to other tabs if it fits better like in the case of colorscheme, comment:78) This makes the "Display" tab completeley obsolete, which would be fine.
comment:100 by , 4 years ago
I guess wee need to find a completely different solution than tabs as they don't really work on macOS.
comment:101 by , 4 years ago
For macOS, something like a JTree, or a JList with headers? A JTabbedPane with tabs at the top would be limited to one line.
See also #15570 for how the Preferences dialog was already broken in macOS before.
comment:102 by , 4 years ago
See ticket:20013#comment:9. Is this a blocker? I fear I can't help here but I have a few more patches ready.
comment:103 by , 4 years ago
Priority: | normal → blocker |
---|
Yeah, the current state makes the preferences pretty unusable on macOS. I'll mark it as blocker for now, just for clarity.
follow-up: 105 comment:104 by , 4 years ago
Owner: | changed from | to
---|---|
Status: | assigned → new |
What's the minimal change required to fix the macOS problem?
Suggestion for platform=macOS: Disable the tab labels and only display the icons.
comment:105 by , 4 years ago
Replying to simon04:
Suggestion for platform=macOS: Disable the tab labels and only display the icons.
We can give it a try to see if it unblocks the situation.
comment:107 by , 4 years ago
I guess the Mapillary plugin still dominates the settings when installed (comment:94)?
comment:108 by , 4 years ago
Thank you! So in a way, it's back to how it was before.
The icons are very small, and don't explain what's going to happen if I click on them. It is hard to guide users (Click the icon with the two computers... no the other one).
The Display icon shows up twice.
The Mapillary plugin indeed still dominates the settings.
Horizontal tabs at the top couldn't work?
by , 4 years ago
Attachment: | Captura de pantalla 2020-11-03 a las 11.35.54.png added |
---|
comment:110 by , 4 years ago
Replying to simon04:
In 17292/josm:
We should restrict it to Aqua, I guess this works fine with Metal or any other look-and-feel. @Stereo do you confirm?
comment:112 by , 4 years ago
It should better with versions before r17292 (as they should have Text next to icons.
comment:113 by , 4 years ago
@Stereo, Don-vip meant you should test with macos but with another LookAndFeel than Aqua with a version before 17292. If that works the plan is to disable the text not for macos in general (as r17292 did) but for the Aqua LookAndFeel only.
comment:117 by , 4 years ago
Current summary (I hope I have not forgotten anything):
What should be done before next release:
- ✓ (r17297) Change the text disable from macos to Aqua LaF only (comment:110)
- ✓ (r17298) Make the "Look and Feel" tab a subtag of the "Display" tab. Without special plugins it is then the only content in the "Display" tab which is fine. This fixes also these problems:
- removes twice used icon (comment:108)
- plugins can keep adding subtabs in the "Display" tab and then it is not the first which is displayed when opening the preferences ("plugin dominates the settings", comment:108, comment:109)
What should be done, but is not a blocker for release:
- ✓ (r17312) The "Proxy" tab has an ugly high space top
- ✓ (r17313) Use more space on the right side of the tabs icons (between icon and text), it looks a bit glued together
- ✓ (r17314) Overhall to allow plugins to add subtabs to
everymore tabs (comment:83, comment:93) - ✓ (r35643/osm) Move the colorscheme plugin subtab from "Display" tab to "Colors" tab (comment:78)
- Consider if the plugins mapillary and streetside either move their subtabs from "Display" tab to "Plugins" tab (like the plugins wikipedia and pdfimport do) or use own tabs. Subtabs of "Display" tab doesn't fit so well anymore imho.
- Switch to Jtree, JList or ... to improve the Aqua LaF workaround (comment:81, comment:101, comment:108)
- Add a searchbox to filter the preferences to find things quicker (comment:81)
- ✓ (r17315) Check about dead code after restructure, e.g. remove the "Map" tab (MapPreference.java) as it is never displayed (comment:75)
follow-up: 121 comment:119 by , 4 years ago
reg. Aqua: Is this dialog the only place that looks ugly with Aqua? If not, wouldn't it be better to disallow Aqua for JOSM?
comment:120 by , 4 years ago
Disabling Aqua would get you screams from the macOS crowd, myself included :)
comment:121 by , 4 years ago
Replying to GerdP:
wouldn't it be better to disallow Aqua for JOSM?
This would be crazy, this is absolutely not possible.
follow-up: 126 comment:125 by , 4 years ago
I see this message in my log each time when I open the preferences and the "Display" preferences are displayed.
2020-11-06 08:45:13.522 WARNING: Could not load Mapillary brand image!
comment:126 by , 4 years ago
Replying to GerdP:
I see this message in my log each time when I open the preferences and the "Display" preferences are displayed.
2020-11-06 08:45:13.522 WARNING: Could not load Mapillary brand image!
This has already been fixed in the Mapillary plugin (see #19969). I haven't made a release yet that fixes it, but the fix is in the source tree.
comment:127 by , 4 years ago
Last changes introduced a new sonar lint issue:
https://josm.openstreetmap.de/sonar/project/issues?id=josm&open=AXWcuHDyo8TI5VuR00nH&resolved=false&sinceLeakPeriod=true&types=BUG
follow-up: 129 comment:128 by , 4 years ago
With complete new preferences, when enable/disable expert mode the selection is lost and no content displayed but a blue background.
comment:129 by , 4 years ago
Replying to skyper:
when enable/disable expert mode ... no content displayed
Yes, that should be fixed before next release.
comment:131 by , 4 years ago
Shit, still doesn't work when last selection was one that is only shown in expert mode and expert mode is toggled while dialog is not visible (View ->Expert Mode)
comment:132 by , 4 years ago
That one is caused by a memory leak. PreferenceTabbedPane
still listens to the toggle change after dialog was closed. It is not destroyed properly.
follow-up: 157 comment:134 by , 4 years ago
The memory leak isn't that easy to fix, but there is no need to handle it in this ticket.
comment:135 by , 4 years ago
Priority: | blocker → major |
---|
comment:136 by , 4 years ago
Ok, the tab stays now, but the selection highlighting on the left is still lost.
Found two more issues which could be related to each other:
- The focus of the list on the left is off if you use the shortcuts from panels like validator or mappaint styles
- The list on the left needs a defined bottom to stop scrolling down. Opening preferences with the shortcut from validator panel offers me a few entries visible on top with lots of empty space below, where almost all entries could be display without having to scroll the list.
comment:137 by , 4 years ago
Seems that I re-introduce an old error each time when I fix a new one :(
I did only test with a dialog that shows all entries. When the dialog is too small for that there is also still the empty page.
follow-up: 140 comment:139 by , 4 years ago
Are there still plans to release a tested version 20.10 or can I commit changes for 20.11?
comment:140 by , 4 years ago
Replying to GerdP:
Are there still plans to release a tested version 20.10 or can I commit changes for 20.11?
Yes I plan to fix the remaining points in comment:117 and release it today.
comment:141 by , 4 years ago
"Display" is used without context for two very different things now:
private DisplayPreference() { super(/* ICON(preferences/) */ "display", tr("Display"), tr("Various settings that influence the visual representation of the whole program."), false, new JTabbedPane()); }
<item name="Clock" icon="presets/service/clock.svg" type="node" preset_name_label="true"> <link wiki="Tag:amenity=clock" /> <key key="amenity" value="clock" /> <optional> <combo key="display" text="Display" values="analog,digital,sundial,unorthodox" /> <reference ref="support" /> <combo key="faces" text="Faces" text_context="clock" values="1,2,3,4" /> <!-- ... --> </optional> </item> <!-- Clock -->
comment:144 by , 4 years ago
The "OSM-Server" tab needs a scroll bar. With OAuth enabled, click on "Display Advanced OAuth Parameters" and context above and below turns unreachable.
comment:146 by , 4 years ago
No release for today, these UI fixes took me way longer than expected, I'll resume tomorrow.
follow-up: 155 comment:152 by , 4 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
This will be all for this ticket and this milestone. New issues or enhancements should be tracked by new tickets.
comment:155 by , 4 years ago
follow-up: 158 comment:157 by , 4 years ago
Replying to GerdP:
The memory leak isn't that easy to fix, but there is no need to handle it in this ticket.
Do we have a new ticket for that?
Replying to skyper:
Ok, the tab stays now, but the selection highlighting on the left is still lost.
Seems to be a problem of the flatlaf plugin, see #20086.
Replying to skyper:
The "OSM-Server" tab needs a scroll bar. With OAuth enabled, click on "Display Advanced OAuth Parameters" and context above and below turns unreachable.
See #20099.
comment:158 by , 4 years ago
Replying to skyper:
Replying to GerdP:
The memory leak isn't that easy to fix, but there is no need to handle it in this ticket.
Do we have a new ticket for that?
No. I looked at it for quite a while and I think I got confused by the behaviour of WeakReference
. Sometimes multiple instances of the PreferenceDialog exist for quite a while and then they disappear when a different dialog is opened. So probably nothing to fix here.
follow-up: 162 comment:159 by , 4 years ago
Big thanks to all involved in re-organizing the preference dialog!
I think we are ready to release milestone:20.10 since there are no major issues left. Unless anyone vetoes or someone gets there first, I'd do a release in the afternoon/evening today.
by , 4 years ago
Attachment: | EmptyPrefs.png added |
---|
comment:160 by , 4 years ago
In the current version r17329 the list in the "Advanced Preferences" tab is empty:
Sorry, but I realised, that if you start typing something into the "Search" field, the (filtered) list is shown. This is a different behaviour compared with prior versions. If this is intended, it would be nice to have a hint, that the user must enter a search string.
comment:162 by , 4 years ago
Replying to simon04:
Big thanks to all involved in re-organizing the preference dialog!
I think we are ready to release milestone:20.10 since there are no major issues left. Unless anyone vetoes or someone gets there first, I'd do a release in the afternoon/evening today.
No objection, given the date, I will just rename 20.10 to 20.11 and 20.11 to 20.12.
comment:164 by , 4 years ago
@Simon: It seems the milestone 20.11 was not set. Is this still possible?
comment:166 by , 4 years ago
I mean "Mark milestone complete" in wiki:DevelopersGuide/Releasing
I am still offered to set milestone 20.11 for tickets.