Changeset 12651 in josm for trunk


Ignore:
Timestamp:
2017-08-25T23:56:58+02:00 (7 years ago)
Author:
Don-vip
Message:

see #15182 - code refactoring to avoid dependence on GUI packages from MapPaintStyles

Location:
trunk
Files:
3 added
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/MapView.java

    r12639 r12651  
    3434import javax.swing.JComponent;
    3535import javax.swing.JPanel;
     36import javax.swing.SwingUtilities;
    3637
    3738import org.openstreetmap.josm.Main;
     
    7071import org.openstreetmap.josm.gui.layer.geoimage.GeoImageLayer;
    7172import org.openstreetmap.josm.gui.layer.markerlayer.PlayHeadMarker;
     73import org.openstreetmap.josm.gui.mappaint.MapPaintStyles;
     74import org.openstreetmap.josm.gui.mappaint.MapPaintStyles.MapPaintSylesUpdateListener;
    7275import org.openstreetmap.josm.io.audio.AudioPlayer;
    7376import org.openstreetmap.josm.tools.JosmRuntimeException;
     
    9295implements PropertyChangeListener, PreferenceChangedListener,
    9396LayerManager.LayerChangeListener, MainLayerManager.ActiveLayerChangeListener {
     97
     98    static {
     99        MapPaintStyles.addMapPaintSylesUpdateListener(new MapPaintSylesUpdateListener() {
     100            @Override
     101            public void mapPaintStylesUpdated() {
     102                SwingUtilities.invokeLater(() -> {
     103                    // Trigger a repaint of all data layers
     104                    MainApplication.getLayerManager().getLayers()
     105                        .stream()
     106                        .filter(layer -> layer instanceof OsmDataLayer)
     107                        .forEach(Layer::invalidate);
     108                });
     109            }
     110
     111            @Override
     112            public void mapPaintStyleEntryUpdated(int index) {
     113                mapPaintStylesUpdated();
     114            }
     115        });
     116    }
    94117
    95118    /**
  • trunk/src/org/openstreetmap/josm/gui/dialogs/MapPaintDialog.java

    r12649 r12651  
    6565import org.openstreetmap.josm.gui.mappaint.StyleSetting;
    6666import org.openstreetmap.josm.gui.mappaint.StyleSource;
     67import org.openstreetmap.josm.gui.mappaint.loader.MapPaintStyleLoader;
    6768import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource;
    6869import org.openstreetmap.josm.gui.preferences.map.MapPaintPreference;
     
    417418        public void actionPerformed(ActionEvent e) {
    418419            final int[] rows = tblStyles.getSelectedRows();
    419             MapPaintStyles.reloadStyles(rows);
     420            MapPaintStyleLoader.reloadStyles(rows);
    420421            MainApplication.worker.submit(() -> SwingUtilities.invokeLater(() -> {
    421422                selectionModel.setValueIsAdjusting(true);
  • trunk/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java

    r12649 r12651  
    11// License: GPL. For details, see LICENSE file.
    22package org.openstreetmap.josm.gui.mappaint;
    3 
    4 import static org.openstreetmap.josm.tools.I18n.tr;
    53
    64import java.io.File;
     
    2422import org.openstreetmap.josm.data.preferences.sources.MapPaintPrefHelper;
    2523import org.openstreetmap.josm.data.preferences.sources.SourceEntry;
    26 import org.openstreetmap.josm.gui.MainApplication;
    27 import org.openstreetmap.josm.gui.PleaseWaitRunnable;
    28 import org.openstreetmap.josm.gui.layer.Layer;
    29 import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    3024import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource;
    3125import org.openstreetmap.josm.gui.mappaint.styleelement.MapImage;
    3226import org.openstreetmap.josm.gui.mappaint.styleelement.NodeElement;
    3327import org.openstreetmap.josm.gui.mappaint.styleelement.StyleElement;
    34 import org.openstreetmap.josm.gui.progress.ProgressMonitor;
    3528import org.openstreetmap.josm.io.CachedFile;
    3629import org.openstreetmap.josm.tools.ImageProvider;
     
    340333
    341334    /**
    342      * reload styles
    343      * preferences are the same, but the file source may have changed
    344      * @param sel the indices of styles to reload
    345      */
    346     public static void reloadStyles(final int... sel) {
    347         List<StyleSource> toReload = new ArrayList<>();
    348         List<StyleSource> data = styles.getStyleSources();
    349         for (int i : sel) {
    350             toReload.add(data.get(i));
    351         }
    352         MainApplication.worker.submit(new MapPaintStyleLoader(toReload));
    353     }
    354 
    355     /**
    356      * This class loads the map paint styles
    357      */
    358     public static class MapPaintStyleLoader extends PleaseWaitRunnable {
    359         private boolean canceled;
    360         private final Collection<StyleSource> sources;
    361 
    362         /**
    363          * Create a new {@link MapPaintStyleLoader}
    364          * @param sources The styles to load
    365          */
    366         public MapPaintStyleLoader(Collection<StyleSource> sources) {
    367             super(tr("Reloading style sources"));
    368             this.sources = sources;
    369         }
    370 
    371         @Override
    372         protected void cancel() {
    373             canceled = true;
    374         }
    375 
    376         @Override
    377         protected void finish() {
    378             fireMapPaintSylesUpdated();
    379             afterStyleUpdate();
    380         }
    381 
    382         @Override
    383         protected void realRun() {
    384             ProgressMonitor monitor = getProgressMonitor();
    385             monitor.setTicksCount(sources.size());
    386             for (StyleSource s : sources) {
    387                 if (canceled)
    388                     return;
    389                 monitor.subTask(tr("loading style ''{0}''...", s.getDisplayString()));
    390                 s.loadStyleSource();
    391                 monitor.worked(1);
    392             }
    393         }
    394     }
    395 
    396     /**
    397335     * Move position of entries in the current list of StyleSources
    398336     * @param sel The indices of styles to be moved.
     
    415353        MapPaintPrefHelper.INSTANCE.put(data);
    416354        fireMapPaintSylesUpdated();
    417         afterStyleUpdate();
    418     }
    419 
    420     /**
    421      * Manually trigger for now. TODO: Move this to a listener
    422      */
    423     private static void afterStyleUpdate() {
    424         SwingUtilities.invokeLater(() -> {
    425             styles.clearCached();
    426 
    427             // Trigger a repaint of all data layers
    428             MainApplication.getLayerManager().getLayers()
    429                 .stream()
    430                 .filter(layer -> layer instanceof OsmDataLayer)
    431                 .forEach(Layer::invalidate);
    432         });
    433355    }
    434356
     
    469391            fireMapPaintSylesUpdated();
    470392        }
    471         afterStyleUpdate();
    472393    }
    473394
     
    500421        MapPaintPrefHelper.INSTANCE.put(styles.getStyleSources());
    501422        fireMapPaintSylesUpdated();
    502         afterStyleUpdate();
    503423    }
    504424
     
    522442    private static final ListenerList<MapPaintSylesUpdateListener> listeners = ListenerList.createUnchecked();
    523443
     444    static {
     445        listeners.addListener(new MapPaintSylesUpdateListener() {
     446            @Override
     447            public void mapPaintStylesUpdated() {
     448                SwingUtilities.invokeLater(styles::clearCached);
     449            }
     450
     451            @Override
     452            public void mapPaintStyleEntryUpdated(int index) {
     453                mapPaintStylesUpdated();
     454            }
     455        });
     456    }
     457
    524458    /**
    525459     * Add a listener that listens to global style changes.
  • trunk/src/org/openstreetmap/josm/gui/mappaint/StyleSetting.java

    r12634 r12651  
    1212import org.openstreetmap.josm.Main;
    1313import org.openstreetmap.josm.gui.MainApplication;
     14import org.openstreetmap.josm.gui.mappaint.loader.MapPaintStyleLoader;
    1415import org.openstreetmap.josm.tools.Logging;
    1516
     
    7172                public void actionPerformed(ActionEvent e) {
    7273                    setValue(item.isSelected());
    73                     MainApplication.worker.submit(new MapPaintStyles.MapPaintStyleLoader(Arrays.asList(parentStyle)));
     74                    MainApplication.worker.submit(new MapPaintStyleLoader(Arrays.asList(parentStyle)));
    7475                }
    7576            };
  • trunk/src/org/openstreetmap/josm/io/FileWatcher.java

    r12649 r12651  
    1919import org.openstreetmap.josm.data.validation.OsmValidator;
    2020import org.openstreetmap.josm.data.validation.tests.MapCSSTagChecker;
    21 import org.openstreetmap.josm.gui.mappaint.MapPaintStyles.MapPaintStyleLoader;
    2221import org.openstreetmap.josm.gui.mappaint.StyleSource;
     22import org.openstreetmap.josm.gui.mappaint.loader.MapPaintStyleLoader;
    2323import org.openstreetmap.josm.gui.mappaint.mapcss.parsergen.ParseException;
    2424import org.openstreetmap.josm.tools.CheckParameterUtil;
  • trunk/test/performance/org/openstreetmap/josm/gui/mappaint/MapRendererPerformanceTest.java

    r12650 r12651  
    3939import org.openstreetmap.josm.gui.NavigatableComponent;
    4040import org.openstreetmap.josm.gui.mappaint.StyleSetting.BooleanStyleSetting;
     41import org.openstreetmap.josm.gui.mappaint.loader.MapPaintStyleLoader;
    4142import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource;
    4243import org.openstreetmap.josm.gui.mappaint.mapcss.Selector;
     
    142143        Assert.assertNotNull(hideIconsSetting);
    143144        hideIconsSetting.setValue(false);
    144         MapPaintStyles.reloadStyles(defaultStyleIdx);
     145        MapPaintStyleLoader.reloadStyles(defaultStyleIdx);
    145146
    146147        try (
     
    157158            hideIconsSetting.setValue(true);
    158159        }
    159         MapPaintStyles.reloadStyles(defaultStyleIdx);
     160        MapPaintStyleLoader.reloadStyles(defaultStyleIdx);
    160161    }
    161162
     
    290291            setFilterStyleActive(false);
    291292        }
    292         MapPaintStyles.reloadStyles(filterStyleIdx);
     293        MapPaintStyleLoader.reloadStyles(filterStyleIdx);
    293294        test.run();
    294295    }
  • trunk/test/performance/org/openstreetmap/josm/gui/mappaint/mapcss/MapCSSPerformanceTest.java

    r12650 r12651  
    6868
    6969    void loadStyle() {
    70         System.out.println("Loading style '"+STYLE_FILE+"' ...");
     70        System.out.print("Loading style '"+STYLE_FILE+"' ...");
    7171        MapCSSStyleSource source = new MapCSSStyleSource(
    7272            new SourceEntry(
Note: See TracChangeset for help on using the changeset viewer.