Modify

Opened 7 years ago

Last modified 3 years ago

#7548 new enhancement

[β Patch] Re-organize the preference dialog

Reported by: simon04 Owned by: team
Priority: normal Milestone:
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 (8)

7548.png (33.5 KB) - added by simon04 7 years ago.
7548_alpha.patch (48.2 KB) - added by simon04 7 years ago.
7548_v02.patch (47.8 KB) - added by simon04 7 years ago.
phpyWYECZ (44.9 KB) - added by bastiK 7 years ago.
updated patch to r5506
7548_2014.patch (81.1 KB) - added by simon04 5 years ago.
7548_2014_v2.patch (85.3 KB) - added by simon04 5 years ago.
7548_plugins.patch (4.8 KB) - added by simon04 5 years ago.
7548_2014_v3.patch (85.5 KB) - added by simon04 5 years ago.

Download all attachments as: .zip

Change History (41)

Changed 7 years ago by simon04

Attachment: 7548.png added

comment:1 Changed 7 years ago by simon04


Changed 7 years ago by simon04

Attachment: 7548_alpha.patch added

comment:2 Changed 7 years ago by simon04

Summary: Re-organize the preference dialog[alpha Patch] Re-organize the preference dialog
Type: defectenhancement

comment:3 Changed 7 years ago by akks

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

Last edited 7 years ago by akks (previous) (diff)

comment:4 in reply to:  3 ; Changed 7 years ago by simon04

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 in reply to:  4 Changed 7 years ago by akks

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

Last edited 7 years ago by akks (previous) (diff)

Changed 7 years ago by simon04

Attachment: 7548_v02.patch added

comment:6 Changed 7 years ago by simon04

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 Changed 7 years ago by bastiK

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

comment:8 Changed 7 years ago by simon04

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 in reply to:  8 Changed 7 years ago by bastiK

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 Changed 7 years ago by simon04

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:11 Changed 7 years ago by stoecker

What's the status of this? Something for a hidden option?

comment:12 Changed 7 years ago by simon04

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?

comment:13 Changed 7 years ago by bastiK

Hidden option wouldn't do much good and is too much work to implement.

Changed 7 years ago by bastiK

Attachment: phpyWYECZ added

updated patch to r5506

Changed 5 years ago by simon04

Attachment: 7548_2014.patch added

comment:14 Changed 5 years ago by simon04

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:15 Changed 5 years ago by Don-vip

I give it a look after I finish #9984 :)

comment:16 Changed 5 years ago by Don-vip

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

comment:17 Changed 5 years ago by Don-vip

Also, the direct access from validator dialog to validator preferences (through the small icon left dock/undock icon) does not work anymore.

comment:18 in reply to:  17 Changed 5 years ago by skyper

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 ?

comment:19 Changed 5 years ago by Don-vip

Don't think so, it's the same code :)

Changed 5 years ago by simon04

Attachment: 7548_2014_v2.patch added

comment:20 Changed 5 years ago by simon04

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 Changed 5 years ago by Don-vip

Much better :) Still another problem with direct access:

  1. setup a nonexistent proxy and erase the MOTD in user directory
  2. restart JOSM, there's an error message with a "change proxy settings" button
  3. This button leads to connection tab, not the proxy one

comment:22 Changed 5 years ago by Don-vip

Also the 2 methods PreferencesAction.forPreferenceSubTab should be removed, no?

comment:23 Changed 5 years ago by simon04

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 …

Changed 5 years ago by simon04

Attachment: 7548_plugins.patch added

Changed 5 years ago by simon04

Attachment: 7548_2014_v3.patch added

comment:24 Changed 5 years ago by Don-vip

Time to give it a try? :)

comment:25 Changed 5 years ago by Don-vip

Milestone: 14.0614.07

Move all tickets for which no work has been done yet to next milestone

comment:26 Changed 5 years ago by Don-vip

The patch may need an update after r7299.

comment:27 Changed 5 years ago by Don-vip

Milestone: 14.0714.08

Move some tickets to next milestone

comment:28 Changed 5 years ago by Don-vip

Milestone: 14.08

comment:29 Changed 5 years ago by Klumbumbus

Cc: Klumbumbus added

comment:30 Changed 3 years ago by openstreetmap.org-user-d1g

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 Changed 3 years ago by openstreetmap.org-user-d1g

Cc: penstreetmap.org-user-d1g added

comment:32 Changed 3 years ago by openstreetmap.org-user-d1g

Cc: openstreetmap.org-user-d1g added; penstreetmap.org-user-d1g removed

comment:33 Changed 3 years ago by openstreetmap.org-user-d1g

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.

Last edited 3 years ago by openstreetmap.org-user-d1g (previous) (diff)

Modify Ticket

Change Properties
Set your email in Preferences
Action
as new The owner will remain team.
as The resolution will be set.
to The owner will be changed from team to the specified user.
The owner will change to simon04
as duplicate The resolution will be set to duplicate.The specified ticket will be cross-referenced with this ticket
The owner will be changed from team to anonymous.

Add Comment


E-mail address and name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.