Statistics
| Revision:

svn-gvsig-desktop / trunk / extensions / extGeoProcessing / src / com / iver / cit / gvsig / geoprocess / core / util / ViewTools.java @ 38039

History | View | Annotate | Download (1.69 KB)

1
package com.iver.cit.gvsig.geoprocess.core.util;
2

    
3
import java.util.ArrayList;
4

    
5
import com.iver.andami.PluginServices;
6
import com.iver.cit.gvsig.ProjectExtension;
7
import com.iver.cit.gvsig.fmap.layers.FLayer;
8
import com.iver.cit.gvsig.fmap.layers.FLayers;
9
import com.iver.cit.gvsig.project.Project;
10
import com.iver.cit.gvsig.project.documents.ProjectDocument;
11
import com.iver.cit.gvsig.project.documents.view.ProjectView;
12
import com.iver.cit.gvsig.project.documents.view.ProjectViewFactory;
13

    
14
public class ViewTools {
15

    
16
    public static ProjectView getViewFromLayer(final FLayer layer) {
17

    
18
        final Project project = ((ProjectExtension) PluginServices.getExtension(ProjectExtension.class)).getProject();
19
        final ArrayList<ProjectDocument> views = project.getDocumentsByType(ProjectViewFactory.registerName);
20

    
21
        for (int i = 0; i < views.size(); i++) {
22
            final ProjectView view = (ProjectView) views.get(i);
23
            final FLayers flayers = view.getMapContext().getLayers();
24
            for (int j = 0; j < flayers.getLayersCount(); j++) {
25
                final FLayer lyr = flayers.getLayer(j);
26
                if (lyr.equals(layer)) {
27
                    return view;
28
                }
29
                final ArrayList layerList = new ArrayList();
30
                splitLayerGroup(lyr, layerList);
31
                for (int k = 0; k < layerList.size(); k++) {
32
                    final FLayer lyr2 = ((FLayer) layerList.get(k));
33
                    if (lyr2.equals(layer)) {
34
                        return view;
35
                    }
36
                }
37
            }
38
        }
39
        return null;
40
    }
41

    
42
    private static void splitLayerGroup(final FLayer layer, final ArrayList result) {
43
        int i;
44
        FLayers layerGroup;
45
        if (layer instanceof FLayers) {
46
            layerGroup = (FLayers) layer;
47
            for (i = 0; i < layerGroup.getLayersCount(); i++) {
48
                splitLayerGroup(layerGroup.getLayer(i), result);
49
            }
50
        }
51
        else {
52
            result.add(layer);
53
        }
54
    }
55
}