Statistics
| Revision:

svn-gvsig-desktop / trunk / examples / exaTemplateLayout / src / com / iver / templateLayout / PrintingManager.java @ 10626

History | View | Annotate | Download (2.94 KB)

1
package com.iver.templateLayout;
2

    
3
import com.hardcode.gdbms.driver.exceptions.ReadDriverException;
4
import com.hardcode.gdbms.engine.data.driver.DriverException;
5
import com.hardcode.gdbms.engine.values.ValueWriter;
6
import com.iver.andami.PluginServices;
7
import com.iver.cit.gvsig.ProjectExtension;
8
import com.iver.cit.gvsig.exceptions.expansionfile.ExpansionFileReadException;
9
import com.iver.cit.gvsig.fmap.core.IFeature;
10
import com.iver.cit.gvsig.fmap.layers.FBitSet;
11
import com.iver.cit.gvsig.fmap.layers.FLayer;
12
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
13
import com.iver.cit.gvsig.fmap.layers.SelectableDataSource;
14
import com.iver.cit.gvsig.fmap.layers.layerOperations.Selectable;
15
import com.iver.cit.gvsig.project.Project;
16
import com.iver.cit.gvsig.project.documents.layout.ProjectMap;
17
import com.iver.cit.gvsig.project.documents.layout.ProjectMapFactory;
18
import com.iver.cit.gvsig.project.documents.layout.fframes.FFrameText;
19
import com.iver.cit.gvsig.project.documents.layout.fframes.FFrameView;
20
import com.iver.cit.gvsig.project.documents.layout.fframes.IFFrame;
21
import com.iver.cit.gvsig.project.documents.layout.gui.Layout;
22

    
23
public class PrintingManager {
24
        FLyrVect layer;
25
        Layout layout;
26

    
27
        public PrintingManager(FLayer layerProvin) {
28
                layer = (FLyrVect) layerProvin;
29
                ProjectExtension aux = (ProjectExtension) PluginServices.getExtension(ProjectExtension.class);
30
                Project theProject = aux.getProject();
31
                layout = ((ProjectMap) theProject.getProjectDocumentByName(
32
                                "FichaCurso", ProjectMapFactory.registerName)).getModel();
33

    
34
        }
35

    
36
        public void startPrinting() throws ReadDriverException {
37
                Selectable select = (Selectable) layer;
38
                FBitSet bs = select.getSelection();
39
                SelectableDataSource rs = layer.getRecordset();
40

    
41
                for(int i=bs.nextSetBit(0); i>=0; i=bs.nextSetBit(i+1)) {
42
                        // operate on index i here }
43
                        IFeature feat;
44
                        try {
45
                                feat = layer.getSource().getFeature(i);
46
                        } catch (ExpansionFileReadException e) {
47
                                throw new ReadDriverException(layer.getName(),e);
48
                        }
49

    
50
                        IFFrame[] theFrames = layout.getLayoutContext().getFFrames();
51
                        for (int j=0; j < theFrames.length; j++)
52
                        {
53
                                if (theFrames[j].getTag() != null)
54
                                {
55
                                        processFrame(theFrames[j], feat, rs );
56
                                }
57
                        }
58
                        layout.getLayoutControl().refresh();
59
                        layout.showPrintDialog(null);
60
                }
61

    
62
        }
63

    
64
        private void processFrame(IFFrame frame, IFeature feat, SelectableDataSource rs) throws ReadDriverException {
65
                String tag = frame.getTag();
66
                if (tag.compareTo("VISTA1")==0)
67
                {
68
                        FFrameView fv = (FFrameView) frame;
69
                        fv.getMapContext().getViewPort().setExtent(feat.getGeometry().getBounds2D());
70
                }
71
                if (frame instanceof FFrameText)
72
                {
73
                        FFrameText ft = (FFrameText) frame;
74
                        ft.clearText();
75
                        int fieldId = rs.getFieldIndexByName(tag);
76
                        ft.addText(feat.getAttribute(fieldId).getStringValue(ValueWriter.internalValueWriter));
77
                }
78
//                if (tag.compareTo("1")==0)
79
//                {
80
//                        FFrameView fv = (FFrameView) frame;
81
//                        fv.getFMap().getViewPort().setExtent(feat.getGeometry().getBounds2D());
82
//                }
83

    
84
        }
85

    
86
}