Ignore:
Timestamp:
2007-08-08T22:28:09+02:00 (17 years ago)
Author:
frsantos
Message:

Support for multiple layers

Location:
applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/ErrorLayer.java

    r2804 r4023  
    66import java.awt.Graphics;
    77import java.util.Enumeration;
     8import java.util.List;
    89
    9 import javax.swing.*;
     10import javax.swing.Icon;
     11import javax.swing.JMenuItem;
     12import javax.swing.JSeparator;
    1013import javax.swing.tree.DefaultMutableTreeNode;
    1114
     
    4245         */
    4346        @Override public Icon getIcon() {
    44                 return ImageProvider.get("preferences", "validator");
     47                return ImageProvider.get("layer", "validator");
    4548        }
    4649
     
    8285    {
    8386        Bag<Severity, TestError> errorTree = new Bag<Severity, TestError>();
    84         for(TestError e : OSMValidatorPlugin.getPlugin().errors)
     87        List<TestError> errors = OSMValidatorPlugin.getPlugin().validationDialog.tree.getErrors();
     88        for(TestError e : errors)
    8589        {
    8690            errorTree.add(e.getSeverity(), e);
  • applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/ErrorTreePanel.java

    r2801 r4023  
    3434    public ErrorTreePanel(List<TestError> errors)
    3535    {
    36         this.errors = errors;
    3736        this.setModel(treeModel);
    3837                this.setRootVisible(false);
     
    4241                this.setCellRenderer(new ErrorTreeRenderer());
    4342                this.getSelectionModel().setSelectionMode(TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);
    44        
    45         buildTree();
     43        setErrorList(errors);
    4644    }
    4745
     
    152150
    153151    /**
    154      * Set the errors of the tree
    155      * @param errors
     152     * Sets the errors list used by a data layer
     153     * @param errors The error list that is used by a data layer
     154     */
     155    public void setErrorList(List<TestError> errors)
     156    {
     157        this.errors = errors;
     158        if( isVisible() )
     159                buildTree();
     160    }
     161
     162    /**
     163     * Clears the current error list and adds thiese errors to it
     164     * @param errors The validation errors
    156165     */
    157166    public void setErrors(List<TestError> errors)
    158167    {
    159         this.errors = errors;
    160     }
    161    
     168        this.errors.clear();
     169        this.errors.addAll(errors);
     170        if( isVisible() )
     171                buildTree();
     172    }
     173
     174    /**
     175     * Returns the errors of the tree
     176     * @return  the errors of the tree
     177     */
     178    public List<TestError> getErrors()
     179    {
     180        return errors != null ? errors : Collections.<TestError>emptyList();
     181    }
     182
    162183    /**
    163184     * Expands all tree
  • applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/OSMValidatorPlugin.java

    r3261 r4023  
    1414import org.openstreetmap.josm.actions.UploadAction.UploadHook;
    1515import org.openstreetmap.josm.gui.MapFrame;
     16import org.openstreetmap.josm.gui.MapView.LayerChangeListener;
     17import org.openstreetmap.josm.gui.layer.Layer;
     18import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    1619import org.openstreetmap.josm.gui.preferences.PreferenceSetting;
    1720import org.openstreetmap.josm.plugins.Plugin;
     
    2528 * @author Francisco R. Santos <frsantos@gmail.com>
    2629 */
    27 public class OSMValidatorPlugin extends Plugin
     30public class OSMValidatorPlugin extends Plugin implements LayerChangeListener
    2831{
    2932    /** The validate action */
     
    3336    ValidatorDialog validationDialog;
    3437   
    35     /** The list of errors */
    36     List<TestError> errors = new ArrayList<TestError>(30);
    37 
     38    /** The list of errors per layer*/
     39    Map<Layer, List<TestError>> layerErrors = new HashMap<Layer, List<TestError>>();
     40   
    3841    /**
    3942     * All available tests
     
    5457        CrossingSegments.class,
    5558        SimilarNamedWays.class,
     59        Coastlines.class,
    5660    };
    5761
     
    7579                if (newFrame != null)
    7680                {
    77             errors = new ArrayList<TestError>(50);
    7881                    validationDialog = new ValidatorDialog();
    7982                newFrame.addToggleDialog(validationDialog);
    8083            Main.main.addLayer(new ErrorLayer(tr("Validation errors")));
    81                 }
     84            Main.map.mapView.addLayerChangeListener(this);
     85                }
     86                else
     87            oldFrame.mapView.removeLayerChangeListener(this);
    8288       
    8389        // Add/Remove the upload hook
     
    163169     * Gets the list of all available test classes
    164170     *
    165      * @return An array of the test classes
     171     * @return An array of the test classes             validationDialog.tree.setErrorList(errors);
    166172     */
    167173    public static Class[] getAllAvailableTests()
     
    197203                }
    198204        }
     205       
     206        public void activeLayerChange(Layer oldLayer, Layer newLayer)
     207        {
     208                if( newLayer instanceof OsmDataLayer )
     209                {
     210                List<TestError> errors = layerErrors.get(newLayer);
     211                validationDialog.tree.setErrorList(errors);
     212                        Main.map.repaint();             
     213                }
     214        }
     215
     216        public void layerAdded(Layer newLayer)
     217        {
     218                if( newLayer instanceof OsmDataLayer )
     219                {
     220                        layerErrors.put(newLayer, new ArrayList<TestError>() );
     221                }
     222        }
     223
     224        public void layerRemoved(Layer oldLayer)
     225        {
     226                layerErrors.remove(oldLayer);
     227        }
    199228}
  • applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/ValidateAction.java

    r2800 r4023  
    55import java.util.ArrayList;
    66import java.util.Collection;
     7import java.util.List;
    78
    89import org.openstreetmap.josm.Main;
    910import org.openstreetmap.josm.actions.JosmAction;
     11import org.openstreetmap.josm.data.osm.DataSet;
    1012import org.openstreetmap.josm.data.osm.OsmPrimitive;
    1113import org.openstreetmap.josm.plugins.validator.util.AgregatePrimitivesVisitor;
     
    5658            return;
    5759       
    58                 plugin.errors = new ArrayList<TestError>();
    59                
    6060                Collection<Test> tests = OSMValidatorPlugin.getTests(true);
    6161                if( tests.isEmpty() )
     
    8686                }
    8787
     88                List<TestError> errors = new ArrayList<TestError>();
    8889                for(Test test : tests)
    8990        {
     
    9293                    test.visit(selection);
    9394                        test.endTest();
    94                         plugin.errors.addAll( test.getErrors() );
     95                        errors.addAll( test.getErrors() );
    9596                }
    9697                tests = null;
    9798               
    98                 plugin.validationDialog.tree.setErrors(plugin.errors);
     99                plugin.validationDialog.tree.setErrors(errors);
    99100        plugin.validationDialog.setVisible(true);
    100         Main.map.repaint();
    101         Main.ds.fireSelectionChanged(Main.ds.getSelected());
    102        
     101        DataSet.fireSelectionChanged(Main.ds.getSelected());
    103102        }
    104103}
  • applications/editors/josm/plugins/validator/src/org/openstreetmap/josm/plugins/validator/ValidatorDialog.java

    r3439 r4023  
    1717import org.openstreetmap.josm.command.Command;
    1818import org.openstreetmap.josm.command.SequenceCommand;
     19import org.openstreetmap.josm.data.osm.DataSet;
    1920import org.openstreetmap.josm.data.osm.OsmPrimitive;
    2021import org.openstreetmap.josm.gui.dialogs.ToggleDialog;
     
    8788                        action.button.setSelected(v);
    8889                super.setVisible(v);
     90                Main.map.repaint();
    8991        }
    9092   
     
    145147                        fixCommand = new SequenceCommand("Fix errors", allComands);
    146148                else
    147                         fixCommand = (Command)allComands.get(0);
     149                        fixCommand = allComands.get(0);
    148150               
    149                 Main.main.editLayer().add( fixCommand );
     151                Main.main.undoRedo.add( fixCommand );
    150152                Main.map.repaint();
    151                 Main.ds.fireSelectionChanged(Main.ds.getSelected());
     153                DataSet.fireSelectionChanged(Main.ds.getSelected());
    152154                       
    153155        OSMValidatorPlugin.getPlugin().validateAction.doValidate(e, false);
     
    199201        }
    200202
    201         /**
    202          * Refresh the error messages display
    203          * @param errors The errors to display
    204          */
    205         public void refresh(List<TestError> errors)
    206         {
    207         tree.setErrors(errors);
    208                 tree.buildTree();
    209         }
    210        
    211203    /**
    212204     * Checks for fixes in selected element and, if needed, adds to the sel parameter all selected elements
Note: See TracChangeset for help on using the changeset viewer.