Revision 1600

View differences:

trunk/org.gvsig.app.document.layout2.app/pom.xml
11 11
    <parent>
12 12
        <groupId>org.gvsig</groupId>
13 13
        <artifactId>org.gvsig.desktop</artifactId>
14
        <version>2.0.423</version>
14
        <version>2.0.424-SNAPSHOT</version>
15 15
    </parent>
16 16

  
17 17
	<url>https://devel.gvsig.org/redmine/projects/gvsig-app-document-layout</url>
......
76 76
        </dependencies>
77 77
    </dependencyManagement>
78 78
    <properties>
79
        <org.gvsig.pdf.version>1.0.132</org.gvsig.pdf.version>
79
        <org.gvsig.pdf.version>1.0.133-SNAPSHOT</org.gvsig.pdf.version>
80 80
    </properties>
81 81
	<modules>
82 82
		<module>org.gvsig.app.document.layout2.app.mainplugin</module>
trunk/org.gvsig.app.document.layout2.app/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/i18n/text.properties
70 70
_Export_report_to_layout=Exportar informe a plantilla
71 71
_Export_a_report_to_a_layout=Exportar un informe a una plantilla
72 72
_Export_report=Exportar informe
73
_Label_of_the_frame_of_type_view_of_the_template_in_which_the_data_will_be_updated=Etiqueta del marco, de tipo vista, de la plantilla en la que se actualizar\u00e1n los datos
74
_Center_to_current_row=Centrar a la geometr\u00eda del registro
75
_Center_to_current_row_description=Centra la vista a la geometr\u00eda del registro
76
_Zoom_to_current_row=Zoom a la geometr\u00eda del registro
77
_Zoom_to_current_row_description=Realiza un zoom a la geometr\u00eda del registro
78
_Buffer_size=Tama\u00f1o del b\u00fafer
79
_Buffer_size_description=Tama\u00f1o del margen, alrededor de la geometr\u00eda del registro en unidades de la capa, que se utilizar\u00e1 para realizar el zoom
80
_Use_internal_pdf_viewer=Usar el visor de pdf interno
81
_Use_internal_pdf_viewer_description=Si se selecciona se utilizar\u00e1 el visor de pdf interno de gvSIG, si no, se utilizar\u00e1 el visor de pdf configurado en el sistema
82
_Building_pages=Construyendo p\u00e1ginas
83
_Building_pdf=Construyendo documento pdf
84
_Creating_report=Creando informe
trunk/org.gvsig.app.document.layout2.app/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/i18n/text_en.properties
70 70
_Export_report_to_layout=Export report to layout
71 71
_Export_a_report_to_a_layout=Export a report to a layout
72 72
_Export_report=Export report
73
_Label_of_the_frame_of_type_view_of_the_template_in_which_the_data_will_be_updated=Label of the frame, of type view, of the template in which the data will be updated
74
_Center_to_current_row=_Center to geometry of current row
75
_Center_to_current_row_description=Centers the view to the current record geometry
76
_Zoom_to_current_row=Zoom to current record geometry
77
_Zoom_to_current_row_description=Zooms to the geometry of the current record
78
_Buffer_size=Buffer size
79
_Buffer_size_description=Size of the margin, around the record geometry in layer units, to be used for zooming
80
_Use_internal_pdf_viewer=Use the internal pdf viewer
81
_Use_internal_pdf_viewer_description=If selected, the gvSIG internal pdf viewer will be used, if not, the pdf viewer configured in the system will be used
82
_Building_pages=Building pages
83
_Building_pdf=Building pdf document
84
_Creating_report=Creating report
85

  
trunk/org.gvsig.app.document.layout2.app/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/LayoutKeyEvent.java
77 77
                layout.getLayoutContext().addFFrame(copyFFrame, true, true);
78 78
            else
79 79
                layout.getLayoutContext().addFFrame(copyFFrame, false, true);
80
            copyFFrame.setDocument(layout.getDocument());
80 81
        }
81 82
        layout.getLayoutContext().getFrameCommandsRecord().endComplex();
82 83
        layout.getLayoutContext().notifAllObservers();      
trunk/org.gvsig.app.document.layout2.app/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/report/LayoutReportActionImpl.java
4 4
import java.awt.event.ActionEvent;
5 5
import java.awt.geom.Point2D;
6 6
import java.io.File;
7
import java.io.IOException;
8 7
import java.io.InputStream;
9 8
import java.util.ArrayList;
10 9
import java.util.List;
11
import javax.json.Json;
10
import java.util.Objects;
11
import javax.json.JsonNumber;
12 12
import javax.json.JsonObject;
13 13
import javax.swing.JComponent;
14
import javax.swing.JOptionPane;
15
import javax.swing.SwingUtilities;
14 16
import org.apache.commons.io.IOUtils;
15 17
import org.apache.commons.lang3.StringUtils;
18
import org.cresques.cts.ICoordTrans;
16 19
import org.gvsig.andami.ui.mdiManager.IWindow;
17 20
import org.gvsig.app.ApplicationLocator;
18 21
import org.gvsig.app.ApplicationManager;
......
49 52
import org.gvsig.fmap.mapcontext.ViewPort;
50 53
import org.gvsig.fmap.mapcontext.layers.FLayer;
51 54
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
55
import org.gvsig.json.Json;
52 56
import org.gvsig.pdf.lib.api.PDFDocument;
53 57
import org.gvsig.pdf.lib.api.PDFLocator;
54 58
import org.gvsig.pdf.lib.api.PDFManager;
......
56 60
import org.gvsig.pdf.swing.api.PDFSwingManager;
57 61
import org.gvsig.pdf.swing.api.PDFViewer;
58 62
import org.gvsig.tools.ToolsLocator;
63
import org.gvsig.tools.dispose.DisposeUtils;
64
import org.gvsig.tools.exception.BaseException;
65
import org.gvsig.tools.i18n.I18nManager;
59 66
import org.gvsig.tools.locator.LocatorException;
60 67
import org.gvsig.tools.persistence.PersistenceManager;
61 68
import org.gvsig.tools.persistence.PersistentState;
62 69
import org.gvsig.tools.resourcesstorage.ResourcesStorage;
63 70
import org.gvsig.tools.swing.api.ToolsSwingLocator;
64 71
import org.gvsig.tools.swing.api.ToolsSwingUtils;
72
import org.gvsig.tools.swing.api.task.JTaskStatus;
73
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager;
65 74
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
75
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
76
import org.gvsig.tools.task.SimpleTaskStatus;
66 77
import org.gvsig.tools.util.ToolsUtilLocator;
67 78

  
68 79
/**
......
108 119
    FeatureSymbolTable fSymbolTable;
109 120
    private boolean centerToCurrentRow;
110 121
    private boolean zoomToCurrentRow;
111
    private int bufferSize;
122
    private double bufferSize;
112 123
    private boolean selectCurrentRow;
113 124
    private boolean useInternalPdfViewer;
114 125
//    private FeatureSet set;
......
148 159
        
149 160
        this.setCenterToCurrentRow(this.json.getBoolean(LAYOUT_REPORT_CENTER_TO_CURRENT_ROW, true));
150 161
        this.setZoomToCurrentRow(this.json.getBoolean(LAYOUT_REPORT_ZOOM_TO_CURRENT_ROW, true));
151
        this.setBufferSize(this.json.getInt(LAYOUT_REPORT_BUFFER_SIZE, 0));
162
        this.setBufferSize(0.0);
163
        if(this.json.containsKey(LAYOUT_REPORT_BUFFER_SIZE)){
164
            JsonNumber theSize = this.json.getJsonNumber(LAYOUT_REPORT_BUFFER_SIZE);
165
            if(theSize != null){
166
                this.setBufferSize(theSize.doubleValue());
167
            }
168
        } 
152 169
        this.setSelectCurrentRow(this.json.getBoolean(LAYOUT_REPORT_SELECT_CURRENT_ROW, false));
153 170
        this.setViewTag(this.json.getString(LAYOUT_REPORT_VIEW_TAG, null));
154 171
        this.setUseInternalPdfViewer(this.json.getBoolean(LAYOUT_REPORT_USE_INTERNAL_PDF_VIEWER, true));
......
179 196
                    this.set = this.store.getFeaturesIterable(((FeatureSelection)this.selection).referenceIterator());
180 197
                } else {
181 198
                    this.set = this.selection;
199
                    DisposeUtils.bind(this.set);
182 200
                }
183 201
            }
184 202
        }
......
188 206
    
189 207
    @Override
190 208
    public void actionPerformed(ActionEvent e) {
191
        try {
192
            String title = this.getReportLabel();
193
            String creator = "gvSIG-desktop";
194
            String subject = "Layout report";
209
        if (!this.isEnabled()) {
210
            return;
211
        }
212
        I18nManager i18n = ToolsLocator.getI18nManager();
213
        final WindowManager_v2 windowManager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
214
        final JTaskStatus taskStatusPanel = ToolsSwingLocator.getTaskStatusSwingManager().createJTaskStatus();
215
        final LayoutReportAction report = this;
195 216

  
196
            File pdfFile = ToolsLocator.getFoldersManager().getUniqueTemporaryFile("report.pdf");
217
        SimpleTaskStatus theStatus = this.getStatus();
218
        theStatus.setIndeterminate();
219
        taskStatusPanel.setShowRemoveTaskButton(false);
220
        taskStatusPanel.bind(theStatus);
221
        ToolsSwingUtils.ensureRowsCols(taskStatusPanel, 4, 100, 5, 200);
222

  
223
        windowManager.showWindow(
224
                taskStatusPanel.asJComponent(),
225
                i18n.getTranslation("_Creating_report")+" '" + this.getReportLabel() + "'...",
226
                WindowManager.MODE.TOOL
227
        );
228

  
229
        Thread task = new Thread(() -> {
197 230
            List<File> singlePdfFiles = new ArrayList();
198
            int pag = 0;
199
            for (Feature feature : features()) {
200
                File f = printReport(feature,++pag);
201
                singlePdfFiles.add(f);
231
            Iterable<Feature> features = null; 
232
            try {
233
                String title = this.getReportLabel();
234
                String creator = "gvSIG-desktop";
235
                String subject = "Layout report";
236

  
237
                File pdfFile = ToolsLocator.getFoldersManager().getUniqueTemporaryFile("report.pdf");
238
                        int pag = 0;
239
                        features = features();
240
                        theStatus.setRangeOfValues(1, featuresCount);
241
                        theStatus.message(i18n.getTranslation("_Building_pages"));
242
                        for (Feature feature : features) {
243
                            if( theStatus.isCancellationRequested() ) {
244
                                theStatus.cancel();
245
                                return;
246
                            }
247
                            File f = printReport(feature, ++pag);
248
                            singlePdfFiles.add(f);
249
                            theStatus.incrementCurrentValue();
250
                        }
251

  
252
                        theStatus.message(i18n.getTranslation("_Building_pdf"));
253
                        PDFManager pdfManager = PDFLocator.getPDFManager();
254
                        pdfManager.merge(singlePdfFiles, pdfFile, title, creator, subject, theStatus);
255

  
256
                        if (this.isUseInternalPdfViewer()) {
257
                            this.showEmbedded(pdfFile);
258
                        } else {
259
                            this.showExternal(pdfFile);
260
                        }
261

  
262
                        theStatus.terminate();
263
                        SwingUtilities.invokeLater(() -> {
264
                            taskStatusPanel.setVisible(false);
265
                        });
266
                
267
            } catch (Throwable t) {
268
                LOGGER.warn("Can't create layout report.", t);
269
                theStatus.abort();
270
            } finally {
271
                for (File singlePdfFile : singlePdfFiles) {
272
                    singlePdfFile.delete();
273
                }
274
                DisposeUtils.disposeQuietly(features);
275

  
202 276
            }
203
            
204
            PDFManager pdfManager = PDFLocator.getPDFManager();
205
            pdfManager.merge(singlePdfFiles, pdfFile, title, creator, subject);
206
            
207
            for (File singlePdfFile : singlePdfFiles) {
208
                singlePdfFile.delete();
209
            }
210
            
211
            if (this.isUseInternalPdfViewer()) {
212
                this.showEmbedded(pdfFile);
213
            } else {
214
                this.showExternal(pdfFile);
215
            }
216
            
217
            this.getStatus().terminate();
218
            
219
        } catch (Throwable t) {
220
            LOGGER.warn("Can't create layout report.", t);
221
            this.getStatus().abort();
222
        }
277
        }, "Report_" + report.getReportName());
278
        task.start();
279
        
223 280
    }
224 281
    
225 282
    private File printReport(Feature feature, int page) throws Exception {
......
269 326
            
270 327
            FeatureStore storeInLayout = this.store;
271 328
            if (mapContext != null) {
272
                Envelope envelope = mapContext.getViewPort().getEnvelope();
329
                ICoordTrans ct = null;
330
                Geometry geom = this.current_row.getDefaultGeometry().cloneGeometry();
331
                for (FLayer layer : mapContext.getLayers().getLayers(null)) {
332
                    if (layer instanceof FLyrVect) {
333
                        FeatureStore layerStore = ((FLyrVect) layer).getFeatureStore();
334
                        if (layerStore != null) {
335
                            if (layerStore.getParameters().isTheSameStore(this.store.getParameters())) {
336
                                storeInLayout = layerStore;
337
                                ct = ((FLyrVect) layer).getCoordTrans();
338
                                break;
339
                            }
340
                        }
341
                    }
342
                }
343
                if(ct!=null && ct.getPOrig().equals(geom.getProjection())){
344
                    geom.reProject(ct);
345
                } else if(!geom.getProjection().equals(mapContext.getProjection())){
346
                    ct = geom.getProjection().getCT(mapContext.getProjection());
347
                    geom.reProject(ct);
348
                }
273 349
                if (isZoomToCurrentRow()) {
274 350

  
275
                    envelope = this.current_row.getDefaultGeometry()
351
                    Envelope envelope = geom
276 352
                            .getEnvelope().getGeometry().buffer(getBufferSize()).getEnvelope();
277 353
                    mapContext.getViewPort().setEnvelope(envelope);
278 354

  
279 355
                } else if (isCenterToCurrentRow()) {
280 356

  
281
                    envelope = this.current_row.getDefaultGeometry()
357
                    Envelope envelope = geom
282 358
                            .getEnvelope().getGeometry().buffer(getBufferSize()).getEnvelope();
283

  
284 359
                    center(mapContext, envelope);
285 360

  
286 361
                } else {
287 362
                    //DO NOTHING ??
288 363
                }
289
                /*
290
                    FIXME: Habria que localizar el store en la vista y buscar ahi
291
                    la current_row para seleccionarla. Seleccionando directamente
292
                    la del store puede no funcionar por no ser el mismo store.
293
                 */
294
                for (FLayer layer : mapContext.getLayers().getLayers(null)) {
295
                    if (layer instanceof FLyrVect) {
296
                        FeatureStore layerStore = ((FLyrVect) layer).getFeatureStore();
297
                        if (layerStore != null) {
298
                            if (layerStore.getParameters().isTheSameStore(this.store.getParameters())) {
299
                                storeInLayout = layerStore;
300
                            }
301
                        }
302
                    }
303
                }
304 364
            }
305 365
            storeInLayout.getFeatureSelection().deselectAll();
306 366
            if (isSelectCurrentRow()) {
......
341 401
        viewPort.setEnvelope(extent);
342 402
    }
343 403

  
344
    private void showEmbedded(File pdfFile) throws IOException {
345
        final WindowManager windowManager = ToolsSwingLocator.getWindowManager();
346
        final PDFSwingManager pdfSwingManager = PDFSwingLocator.getPDFSwingManager();
347
        final PDFManager pdfManager = PDFLocator.getPDFManager();
348

  
349
        final PDFDocument pdfdoc = pdfManager.createPDFDocument(pdfFile);            
350
        PDFViewer viewer = pdfSwingManager.createPDFViewer();
351
        viewer.put(pdfdoc);
352
        viewer.setMode(PDFViewer.MODE_LIGHT);
353

  
354
        JComponent comp = viewer.asJComponent();
355
        Dimension size = ToolsSwingUtils.ensureRowsCols(comp.getPreferredSize(), 20, 100, 40, 150);
356
        comp.setSize(size);
357

  
358
        String title = "Report: " + this.getLabel();
359
        windowManager.showWindow(
360
                comp,
361
                title,
362
                WindowManager.MODE.WINDOW
363
        );
404
    private void showEmbedded(File pdfFile) {
405
        if (!SwingUtilities.isEventDispatchThread()) {
406
            SwingUtilities.invokeLater(() -> {
407
                showEmbedded(pdfFile);
408
            });
409
            return;
410
        }
411
        try {
412
            final WindowManager windowManager = ToolsSwingLocator.getWindowManager();
413
            final PDFSwingManager pdfSwingManager = PDFSwingLocator.getPDFSwingManager();
414
            final PDFManager pdfManager = PDFLocator.getPDFManager();
415
            
416
            final PDFDocument pdfdoc = pdfManager.createPDFDocument(pdfFile);
417
            PDFViewer viewer = pdfSwingManager.createPDFViewer();
418
            viewer.put(pdfdoc);
419
            viewer.setMode(PDFViewer.MODE_LIGHT);
420
            
421
            JComponent comp = viewer.asJComponent();
422
            Dimension size = ToolsSwingUtils.ensureRowsCols(comp.getPreferredSize(), 20, 100, 40, 150);
423
            comp.setSize(size);
424
            
425
            String title = "Report: " + this.getLabel();
426
            windowManager.showWindow(
427
                    comp,
428
                    title,
429
                    WindowManager.MODE.WINDOW
430
            );
431
        } catch (Exception ex) {
432
            LOGGER.warn("Can't show pdf file '" + Objects.toString(pdfFile) + "'", ex);
433
            I18nManager i18n = ToolsLocator.getI18nManager();
434
            ThreadSafeDialogsManager dialogs = ToolsSwingLocator.getThreadSafeDialogsManager();
435
            dialogs.messageDialog(
436
                    i18n.getTranslation("_Cant_show_pdf_file")+" (" + Objects.toString(pdfFile) + ")\n\n"+BaseException.getMessageStack(ex, 0),
437
                    "Creating report '" + this.getReportLabel() + "'",
438
                    JOptionPane.WARNING_MESSAGE
439
            );
440
        }
364 441
    }
365 442

  
366 443
    private void showExternal(File pdfFile) {
444
        if (!SwingUtilities.isEventDispatchThread()) {
445
            SwingUtilities.invokeLater(() -> {
446
                showExternal(pdfFile);
447
            });
448
            return;
449
        }
367 450
        DesktopOpen desktop = ToolsUtilLocator.getToolsUtilManager().createDesktopOpen();
368 451
        desktop.open(pdfFile);
369 452
    }
......
436 519
    }
437 520
    
438 521
    @Override
439
    public int getBufferSize() {
522
    public double getBufferSize() {
440 523
        return bufferSize;
441 524
    }
442 525

  
443 526
    @Override
444
    public void setBufferSize(int bufferSize) {
527
    public void setBufferSize(double bufferSize) {
445 528
        this.bufferSize = bufferSize;
446 529
    }
447 530
    
trunk/org.gvsig.app.document.layout2.app/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/report/LayoutReportAction.java
27 27

  
28 28
    String evaluateDynamicText(String s);
29 29

  
30
    int getBufferSize();
30
    double getBufferSize();
31 31

  
32 32
    boolean isCenterToCurrentRow();
33 33

  
......
37 37
    
38 38
    boolean isUseInternalPdfViewer();
39 39

  
40
    void setBufferSize(int bufferSize);
40
    void setBufferSize(double bufferSize);
41 41

  
42 42
    void setCenterToCurrentRow(boolean centerToCurrentRow);
43 43

  
trunk/org.gvsig.app.document.layout2.app/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/reportfromlayout/ConfigureReportFromLayoutPanelView.java
34 34
   JComboBox cboReport = new JComboBox();
35 35
   JTextField txtIdentifier = new JTextField();
36 36
   JTextField txtLabel = new JTextField();
37
   TitledSeparator lblViewSeparator = new TitledSeparator();
38
   JLabel lblView = new JLabel();
39
   JComboBox cboView = new JComboBox();
37 40
   JCheckBox chkZoomToCurrentRow = new JCheckBox();
38 41
   JLabel lblBufferSize = new JLabel();
39 42
   JTextField txtBufferSize = new JTextField();
40
   TitledSeparator lblViewSeparator = new TitledSeparator();
41
   JLabel lblView = new JLabel();
42
   JComboBox cboView = new JComboBox();
43 43

  
44 44
   /**
45 45
    * Default constructor
......
159 159
      chkCenterToCurrentRow.setActionCommand("_Center_to_current_row");
160 160
      chkCenterToCurrentRow.setName("chkCenterToCurrentRow");
161 161
      chkCenterToCurrentRow.setText("_Center_to_current_row");
162
      chkCenterToCurrentRow.setToolTipText("");
162
      chkCenterToCurrentRow.setToolTipText("_Center_to_current_row_description");
163 163
      jpanel1.add(chkCenterToCurrentRow,cc.xywh(2,16,3,1));
164 164

  
165 165
      chkUseInternalPdfViewer.setActionCommand("_Center_to_current_row");
166 166
      chkUseInternalPdfViewer.setName("chkUseInternalPdfViewer");
167 167
      chkUseInternalPdfViewer.setText("_Use_internal_pdf_viewer");
168
      chkUseInternalPdfViewer.setToolTipText("");
168
      chkUseInternalPdfViewer.setToolTipText("_Use_internal_pdf_viewer_description");
169 169
      jpanel1.add(chkUseInternalPdfViewer,cc.xywh(2,20,3,1));
170 170

  
171 171
      cboLayout.setName("cboLayout");
......
188 188
      txtLabel.setName("txtLabel");
189 189
      jpanel1.add(txtLabel,cc.xy(4,10));
190 190

  
191
      jpanel1.add(createPanel1(),cc.xywh(2,18,3,1));
192 191
      lblViewSeparator.setName("lblViewSeparator");
193 192
      lblViewSeparator.setText("_View");
194 193
      jpanel1.add(lblViewSeparator,cc.xywh(2,12,3,1));
......
200 199
      cboView.setName("cboView");
201 200
      jpanel1.add(cboView,cc.xy(4,14));
202 201

  
202
      jpanel1.add(createPanel1(),cc.xywh(2,18,3,1));
203 203
      addFillComponents(jpanel1,new int[]{ 1,2,3,4,5 },new int[]{ 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21 });
204 204
      return jpanel1;
205 205
   }
......
214 214
      chkZoomToCurrentRow.setActionCommand("_Center_to_current_row");
215 215
      chkZoomToCurrentRow.setName("chkZoomToCurrentRow");
216 216
      chkZoomToCurrentRow.setText("_Zoom_to_current_row");
217
      chkZoomToCurrentRow.setToolTipText("");
217
      chkZoomToCurrentRow.setToolTipText("_Zoom_to_current_row_description");
218 218
      jpanel1.add(chkZoomToCurrentRow,cc.xy(1,1));
219 219

  
220 220
      lblBufferSize.setName("lblBufferSize");
221 221
      lblBufferSize.setText("_Buffer_size");
222
      lblBufferSize.setToolTipText("");
222
      lblBufferSize.setToolTipText("_Buffer_size_description");
223 223
      jpanel1.add(lblBufferSize,cc.xy(3,1));
224 224

  
225 225
      txtBufferSize.setName("txtBufferSize");
226
      txtBufferSize.setToolTipText("_Buffer_size_description");
226 227
      jpanel1.add(txtBufferSize,cc.xy(5,1));
227 228

  
228 229
      addFillComponents(jpanel1,new int[]{ 2,4 },new int[0]);
trunk/org.gvsig.app.document.layout2.app/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/reportfromlayout/ConfigureReportFromLayoutExtension.java
13 13
import javax.swing.JComponent;
14 14
import org.gvsig.andami.plugins.Extension;
15 15
import org.gvsig.app.ApplicationLocator;
16
import org.gvsig.app.project.Project;
16 17
import org.gvsig.app.project.documents.Document;
17 18
import org.gvsig.app.project.documents.layout.LayoutDocument;
18 19
import org.gvsig.tools.ToolsLocator;
......
44 45

  
45 46
    @Override
46 47
    public boolean isEnabled() {
47
        List<Document> layouts = ApplicationLocator.getProjectManager().getCurrentProject().getDocuments(LayoutDocument.class);
48
        return !layouts.isEmpty();
48
        Project currentProject = ApplicationLocator.getProjectManager().getCurrentProject();
49
        if(currentProject == null){
50
            return false;
51
        }
52
        List<Document> layouts = currentProject.getDocuments(LayoutDocument.class);
53
        return layouts != null && !layouts.isEmpty();
49 54
    }
50 55

  
51 56
    @Override
trunk/org.gvsig.app.document.layout2.app/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/reportfromlayout/ConfigureReportFromLayoutPanel.xml
376 376
            </at>
377 377
            <at name="actionCommand">_Center_to_current_row</at>
378 378
            <at name="name">chkCenterToCurrentRow</at>
379
            <at name="width">1008</at>
379
            <at name="width">1441</at>
380 380
            <at name="text">_Center_to_current_row</at>
381
            <at name="toolTipText"></at>
381
            <at name="toolTipText">_Center_to_current_row_description</at>
382 382
            <at name="height">22</at>
383 383
           </object>
384 384
          </at>
......
433 433
            </at>
434 434
            <at name="actionCommand">_Center_to_current_row</at>
435 435
            <at name="name">chkUseInternalPdfViewer</at>
436
            <at name="width">1008</at>
436
            <at name="width">1441</at>
437 437
            <at name="text">_Use_internal_pdf_viewer</at>
438
            <at name="toolTipText"></at>
438
            <at name="toolTipText">_Use_internal_pdf_viewer_description</at>
439 439
            <at name="height">22</at>
440 440
           </object>
441 441
          </at>
......
489 489
             </object>
490 490
            </at>
491 491
            <at name="name">cboLayout</at>
492
            <at name="width">871</at>
492
            <at name="width">1304</at>
493 493
            <at name="items">
494 494
             <object classname="com.jeta.forms.store.properties.ItemsProperty">
495 495
              <at name="name">items</at>
......
550 550
            <at name="scrollableTracksViewportHeight">true</at>
551 551
            <at name="scrollableTracksViewportWidth">true</at>
552 552
            <at name="name">treeSource</at>
553
            <at name="width">869</at>
553
            <at name="width">1302</at>
554 554
            <at name="rowCount">3</at>
555 555
            <at name="scollBars">
556 556
             <object classname="com.jeta.forms.store.properties.ScrollBarsProperty">
......
633 633
             </object>
634 634
            </at>
635 635
            <at name="name">cboReport</at>
636
            <at name="width">871</at>
636
            <at name="width">1304</at>
637 637
            <at name="items">
638 638
             <object classname="com.jeta.forms.store.properties.ItemsProperty">
639 639
              <at name="name">items</at>
......
692 692
             </object>
693 693
            </at>
694 694
            <at name="name">txtIdentifier</at>
695
            <at name="width">871</at>
695
            <at name="width">1304</at>
696 696
            <at name="height">21</at>
697 697
           </object>
698 698
          </at>
......
746 746
             </object>
747 747
            </at>
748 748
            <at name="name">txtLabel</at>
749
            <at name="width">871</at>
749
            <at name="width">1304</at>
750 750
            <at name="height">21</at>
751 751
           </object>
752 752
          </at>
......
757 757
     </item>
758 758
     <item >
759 759
      <at name="value">
760
       <object classname="com.jeta.forms.store.memento.BeanMemento">
761
        <super classname="com.jeta.forms.store.memento.ComponentMemento">
762
         <at name="cellconstraints">
763
          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
764
           <at name="column">2</at>
765
           <at name="row">12</at>
766
           <at name="colspan">3</at>
767
           <at name="rowspan">1</at>
768
           <at name="halign">default</at>
769
           <at name="valign">default</at>
770
           <at name="insets" object="insets">0,0,0,0</at>
771
          </object>
772
         </at>
773
         <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
774
        </super>
775
        <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
776
        <at name="beanclass">com.jeta.forms.components.separator.TitledSeparator</at>
777
        <at name="beanproperties">
778
         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
779
          <at name="classname">com.jeta.forms.components.separator.TitledSeparator</at>
780
          <at name="properties">
781
           <object classname="com.jeta.forms.store.support.PropertyMap">
782
            <at name="border">
783
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
784
              <super classname="com.jeta.forms.store.properties.BorderProperty">
785
               <at name="name">border</at>
786
              </super>
787
              <at name="borders">
788
               <object classname="java.util.LinkedList">
789
                <item >
790
                 <at name="value">
791
                  <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
792
                   <super classname="com.jeta.forms.store.properties.BorderProperty">
793
                    <at name="name">border</at>
794
                   </super>
795
                  </object>
796
                 </at>
797
                </item>
798
               </object>
799
              </at>
800
             </object>
801
            </at>
802
            <at name="name">lblViewSeparator</at>
803
            <at name="width">1441</at>
804
            <at name="text">_View</at>
805
            <at name="height">17</at>
806
           </object>
807
          </at>
808
         </object>
809
        </at>
810
       </object>
811
      </at>
812
     </item>
813
     <item >
814
      <at name="value">
815
       <object classname="com.jeta.forms.store.memento.BeanMemento">
816
        <super classname="com.jeta.forms.store.memento.ComponentMemento">
817
         <at name="cellconstraints">
818
          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
819
           <at name="column">2</at>
820
           <at name="row">14</at>
821
           <at name="colspan">1</at>
822
           <at name="rowspan">1</at>
823
           <at name="halign">default</at>
824
           <at name="valign">default</at>
825
           <at name="insets" object="insets">0,0,0,0</at>
826
          </object>
827
         </at>
828
         <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
829
        </super>
830
        <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
831
        <at name="beanclass">com.jeta.forms.components.label.JETALabel</at>
832
        <at name="beanproperties">
833
         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
834
          <at name="classname">com.jeta.forms.components.label.JETALabel</at>
835
          <at name="properties">
836
           <object classname="com.jeta.forms.store.support.PropertyMap">
837
            <at name="border">
838
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
839
              <super classname="com.jeta.forms.store.properties.BorderProperty">
840
               <at name="name">border</at>
841
              </super>
842
              <at name="borders">
843
               <object classname="java.util.LinkedList">
844
                <item >
845
                 <at name="value">
846
                  <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
847
                   <super classname="com.jeta.forms.store.properties.BorderProperty">
848
                    <at name="name">border</at>
849
                   </super>
850
                  </object>
851
                 </at>
852
                </item>
853
               </object>
854
              </at>
855
             </object>
856
            </at>
857
            <at name="name">lblView</at>
858
            <at name="width">125</at>
859
            <at name="text">_View</at>
860
            <at name="fill">
861
             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
862
              <at name="name">fill</at>
863
             </object>
864
            </at>
865
            <at name="height">17</at>
866
           </object>
867
          </at>
868
         </object>
869
        </at>
870
       </object>
871
      </at>
872
     </item>
873
     <item >
874
      <at name="value">
875
       <object classname="com.jeta.forms.store.memento.BeanMemento">
876
        <super classname="com.jeta.forms.store.memento.ComponentMemento">
877
         <at name="cellconstraints">
878
          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
879
           <at name="column">4</at>
880
           <at name="row">14</at>
881
           <at name="colspan">1</at>
882
           <at name="rowspan">1</at>
883
           <at name="halign">default</at>
884
           <at name="valign">default</at>
885
           <at name="insets" object="insets">0,0,0,0</at>
886
          </object>
887
         </at>
888
         <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
889
        </super>
890
        <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
891
        <at name="beanclass">javax.swing.JComboBox</at>
892
        <at name="beanproperties">
893
         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
894
          <at name="classname">javax.swing.JComboBox</at>
895
          <at name="properties">
896
           <object classname="com.jeta.forms.store.support.PropertyMap">
897
            <at name="border">
898
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
899
              <super classname="com.jeta.forms.store.properties.BorderProperty">
900
               <at name="name">border</at>
901
              </super>
902
              <at name="borders">
903
               <object classname="java.util.LinkedList">
904
                <item >
905
                 <at name="value">
906
                  <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
907
                   <super classname="com.jeta.forms.store.properties.BorderProperty">
908
                    <at name="name">border</at>
909
                   </super>
910
                  </object>
911
                 </at>
912
                </item>
913
               </object>
914
              </at>
915
             </object>
916
            </at>
917
            <at name="name">cboView</at>
918
            <at name="width">1304</at>
919
            <at name="items">
920
             <object classname="com.jeta.forms.store.properties.ItemsProperty">
921
              <at name="name">items</at>
922
             </object>
923
            </at>
924
            <at name="height">23</at>
925
           </object>
926
          </at>
927
         </object>
928
        </at>
929
       </object>
930
      </at>
931
     </item>
932
     <item >
933
      <at name="value">
760 934
       <object classname="com.jeta.forms.store.memento.FormMemento">
761 935
        <super classname="com.jeta.forms.store.memento.ComponentMemento">
762 936
         <at name="cellconstraints">
......
772 946
         </at>
773 947
         <at name="componentclass">com.jeta.forms.gui.form.FormComponent</at>
774 948
        </super>
775
        <at name="id">embedded.Tf2e0affT1889045d7a8SD7ffa</at>
949
        <at name="id">embedded.886285328</at>
776 950
        <at name="rowspecs">CENTER:DEFAULT:NONE</at>
777 951
        <at name="colspecs">FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:NONE,FILL:4DLU:NONE,FILL:DEFAULT:GROW(1.0)</at>
778 952
        <at name="components">
......
825 999
                 <at name="name">chkZoomToCurrentRow</at>
826 1000
                 <at name="width">190</at>
827 1001
                 <at name="text">_Zoom_to_current_row</at>
828
                 <at name="toolTipText"></at>
1002
                 <at name="toolTipText">_Zoom_to_current_row_description</at>
829 1003
                 <at name="height">22</at>
830 1004
                </object>
831 1005
               </at>
......
886 1060
                   <at name="name">fill</at>
887 1061
                  </object>
888 1062
                 </at>
889
                 <at name="toolTipText"></at>
1063
                 <at name="toolTipText">_Buffer_size_description</at>
890 1064
                 <at name="height">17</at>
891 1065
                </object>
892 1066
               </at>
......
940 1114
                  </object>
941 1115
                 </at>
942 1116
                 <at name="name">txtBufferSize</at>
943
                 <at name="width">703</at>
1117
                 <at name="width">1136</at>
1118
                 <at name="toolTipText">_Buffer_size_description</at>
944 1119
                 <at name="height">21</at>
945 1120
                </object>
946 1121
               </at>
......
966 1141
              </at>
967 1142
             </object>
968 1143
            </at>
969
            <at name="name"></at>
1144
            <at name="name"/>
970 1145
            <at name="fill">
971 1146
             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
972 1147
              <at name="name">fill</at>
......
977 1152
              <at name="name">scollBars</at>
978 1153
              <at name="verticalpolicy">21</at>
979 1154
              <at name="horizontalpolicy">31</at>
1155
              <at name="border">
1156
               <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
1157
                <super classname="com.jeta.forms.store.properties.BorderProperty">
1158
                 <at name="name">border</at>
1159
                </super>
1160
                <at name="borders">
1161
                 <object classname="java.util.LinkedList">
1162
                  <item >
1163
                   <at name="value">
1164
                    <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
1165
                     <super classname="com.jeta.forms.store.properties.BorderProperty">
1166
                      <at name="name">border</at>
1167
                     </super>
1168
                    </object>
1169
                   </at>
1170
                  </item>
1171
                 </object>
1172
                </at>
1173
               </object>
1174
              </at>
980 1175
             </object>
981 1176
            </at>
982 1177
           </object>
......
1011 1206
       </object>
1012 1207
      </at>
1013 1208
     </item>
1014
     <item >
1015
      <at name="value">
1016
       <object classname="com.jeta.forms.store.memento.BeanMemento">
1017
        <super classname="com.jeta.forms.store.memento.ComponentMemento">
1018
         <at name="cellconstraints">
1019
          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
1020
           <at name="column">2</at>
1021
           <at name="row">12</at>
1022
           <at name="colspan">3</at>
1023
           <at name="rowspan">1</at>
1024
           <at name="halign">default</at>
1025
           <at name="valign">default</at>
1026
           <at name="insets" object="insets">0,0,0,0</at>
1027
          </object>
1028
         </at>
1029
         <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
1030
        </super>
1031
        <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
1032
        <at name="beanclass">com.jeta.forms.components.separator.TitledSeparator</at>
1033
        <at name="beanproperties">
1034
         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
1035
          <at name="classname">com.jeta.forms.components.separator.TitledSeparator</at>
1036
          <at name="properties">
1037
           <object classname="com.jeta.forms.store.support.PropertyMap">
1038
            <at name="border">
1039
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
1040
              <super classname="com.jeta.forms.store.properties.BorderProperty">
1041
               <at name="name">border</at>
1042
              </super>
1043
              <at name="borders">
1044
               <object classname="java.util.LinkedList">
1045
                <item >
1046
                 <at name="value">
1047
                  <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
1048
                   <super classname="com.jeta.forms.store.properties.BorderProperty">
1049
                    <at name="name">border</at>
1050
                   </super>
1051
                  </object>
1052
                 </at>
1053
                </item>
1054
               </object>
1055
              </at>
1056
             </object>
1057
            </at>
1058
            <at name="name">lblViewSeparator</at>
1059
            <at name="width">1008</at>
1060
            <at name="text">_View</at>
1061
            <at name="height">17</at>
1062
           </object>
1063
          </at>
1064
         </object>
1065
        </at>
1066
       </object>
1067
      </at>
1068
     </item>
1069
     <item >
1070
      <at name="value">
1071
       <object classname="com.jeta.forms.store.memento.BeanMemento">
1072
        <super classname="com.jeta.forms.store.memento.ComponentMemento">
1073
         <at name="cellconstraints">
1074
          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
1075
           <at name="column">2</at>
1076
           <at name="row">14</at>
1077
           <at name="colspan">1</at>
1078
           <at name="rowspan">1</at>
1079
           <at name="halign">default</at>
1080
           <at name="valign">default</at>
1081
           <at name="insets" object="insets">0,0,0,0</at>
1082
          </object>
1083
         </at>
1084
         <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
1085
        </super>
1086
        <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
1087
        <at name="beanclass">com.jeta.forms.components.label.JETALabel</at>
1088
        <at name="beanproperties">
1089
         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
1090
          <at name="classname">com.jeta.forms.components.label.JETALabel</at>
1091
          <at name="properties">
1092
           <object classname="com.jeta.forms.store.support.PropertyMap">
1093
            <at name="border">
1094
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
1095
              <super classname="com.jeta.forms.store.properties.BorderProperty">
1096
               <at name="name">border</at>
1097
              </super>
1098
              <at name="borders">
1099
               <object classname="java.util.LinkedList">
1100
                <item >
1101
                 <at name="value">
1102
                  <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
1103
                   <super classname="com.jeta.forms.store.properties.BorderProperty">
1104
                    <at name="name">border</at>
1105
                   </super>
1106
                  </object>
1107
                 </at>
1108
                </item>
1109
               </object>
1110
              </at>
1111
             </object>
1112
            </at>
1113
            <at name="name">lblView</at>
1114
            <at name="width">125</at>
1115
            <at name="text">_View</at>
1116
            <at name="fill">
1117
             <object classname="com.jeta.forms.store.properties.effects.PaintProperty">
1118
              <at name="name">fill</at>
1119
             </object>
1120
            </at>
1121
            <at name="height">17</at>
1122
           </object>
1123
          </at>
1124
         </object>
1125
        </at>
1126
       </object>
1127
      </at>
1128
     </item>
1129
     <item >
1130
      <at name="value">
1131
       <object classname="com.jeta.forms.store.memento.BeanMemento">
1132
        <super classname="com.jeta.forms.store.memento.ComponentMemento">
1133
         <at name="cellconstraints">
1134
          <object classname="com.jeta.forms.store.memento.CellConstraintsMemento">
1135
           <at name="column">4</at>
1136
           <at name="row">14</at>
1137
           <at name="colspan">1</at>
1138
           <at name="rowspan">1</at>
1139
           <at name="halign">default</at>
1140
           <at name="valign">default</at>
1141
           <at name="insets" object="insets">0,0,0,0</at>
1142
          </object>
1143
         </at>
1144
         <at name="componentclass">com.jeta.forms.gui.form.StandardComponent</at>
1145
        </super>
1146
        <at name="jetabeanclass">com.jeta.forms.gui.beans.JETABean</at>
1147
        <at name="beanclass">javax.swing.JComboBox</at>
1148
        <at name="beanproperties">
1149
         <object classname="com.jeta.forms.store.memento.PropertiesMemento">
1150
          <at name="classname">javax.swing.JComboBox</at>
1151
          <at name="properties">
1152
           <object classname="com.jeta.forms.store.support.PropertyMap">
1153
            <at name="border">
1154
             <object classname="com.jeta.forms.store.properties.CompoundBorderProperty">
1155
              <super classname="com.jeta.forms.store.properties.BorderProperty">
1156
               <at name="name">border</at>
1157
              </super>
1158
              <at name="borders">
1159
               <object classname="java.util.LinkedList">
1160
                <item >
1161
                 <at name="value">
1162
                  <object classname="com.jeta.forms.store.properties.DefaultBorderProperty">
1163
                   <super classname="com.jeta.forms.store.properties.BorderProperty">
1164
                    <at name="name">border</at>
1165
                   </super>
1166
                  </object>
1167
                 </at>
1168
                </item>
1169
               </object>
1170
              </at>
1171
             </object>
1172
            </at>
1173
            <at name="name">cboView</at>
1174
            <at name="width">871</at>
1175
            <at name="items">
1176
             <object classname="com.jeta.forms.store.properties.ItemsProperty">
1177
              <at name="name">items</at>
1178
             </object>
1179
            </at>
1180
            <at name="height">23</at>
1181
           </object>
1182
          </at>
1183
         </object>
1184
        </at>
1185
       </object>
1186
      </at>
1187
     </item>
1188 1209
    </object>
1189 1210
   </at>
1190 1211
   <at name="properties">
trunk/org.gvsig.app.document.layout2.app/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/reportfromlayout/ExportReportToLayout.java
291 291
            
292 292
            resourceLayout = resources.getResource(templateName);
293 293
            
294
            if (!(templateFile.getPath().toLowerCase().endsWith(LayoutManager.TEMPLATE_FILE_POINTEXT.toLowerCase()))) {
295
                templateFile = new File(templateFile.getPath() + LayoutManager.TEMPLATE_FILE_POINTEXT);
296
            }
297
            
294 298
            templateOs = new FileOutputStream(templateFile);
295 299
            IOUtils.copy(resourceLayout.asInputStream(), templateOs);
296 300

  
trunk/org.gvsig.app.document.layout2.app/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/reportfromlayout/ConfigureReportFromLayout.java
277 277
        manager.translate(lblReport);
278 278
        manager.translate(lblIdentifier);
279 279
        manager.translate(lblLabel);
280
        manager.translate(lblViewSeparator);
281
        manager.translate(lblView);
280 282
        manager.translate(chkCenterToCurrentRow);
281 283
        manager.translate(chkZoomToCurrentRow);
282 284
        manager.translate(lblBufferSize);
283 285
//        manager.translate(chkSelectCurrentRow);
284 286
        manager.translate(chkUseInternalPdfViewer);
285
        manager.translate(lblViewSeparator);
286
        manager.translate(lblView);
287
        manager.translate(txtBufferSize);
287 288
    }
288 289
    
289 290
    public boolean doConfigureReportFromLayout(ConfigureReportFromLayoutParameters params) {

Also available in: Unified diff