Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.exportto / org.gvsig.exportto.swing / org.gvsig.exportto.swing.impl / src / main / java / org / gvsig / export / swing / impl / panels / SelectOutputFilePanel.java @ 44469

History | View | Annotate | Download (5.2 KB)

1
package org.gvsig.export.swing.impl.panels;
2

    
3
import java.awt.event.ActionEvent;
4
import java.io.File;
5
import javax.swing.AbstractAction;
6
import javax.swing.Action;
7
import javax.swing.JComponent;
8
import javax.swing.JOptionPane;
9
import javax.swing.JPopupMenu;
10
import org.apache.commons.lang.StringUtils;
11
import org.gvsig.export.ExportParameters;
12
import org.gvsig.export.ExportParametersGeometry;
13
import org.gvsig.export.spi.AbstractExportParameters;
14
import org.gvsig.export.swing.JExportProcessPanel;
15
import org.gvsig.export.swing.spi.ExportPanel;
16
import org.gvsig.export.swing.spi.ExportPanelValidationException;
17
import org.gvsig.export.swing.spi.ExportPanelsManager;
18
import org.gvsig.expressionevaluator.ExpressionUtils;
19
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingLocator;
20
import org.gvsig.tools.ToolsLocator;
21
import org.gvsig.tools.i18n.I18nManager;
22
import org.gvsig.tools.swing.api.ToolsSwingLocator;
23
import org.gvsig.tools.swing.api.ToolsSwingManager;
24
import org.gvsig.tools.swing.api.pickercontroller.FilePickerController;
25
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager;
26
import org.gvsig.tools.util.HasAFile;
27

    
28
/**
29
 *
30
 * @author jjdelcerro
31
 */
32
public class SelectOutputFilePanel
33
        extends SelectOutputFilePanelView
34
        implements ExportPanel {
35

    
36
    private FilePickerController fileController;
37
    private final HasAFile parameters;
38
    private final JExportProcessPanel processPanel;
39

    
40
    public SelectOutputFilePanel(
41
            JExportProcessPanel processPanel,
42
            ExportParameters parameters
43
    ) {
44
        this.processPanel = processPanel;
45
        this.parameters = (HasAFile) parameters;
46
        this.initComponents();
47
    }
48

    
49
    @Override
50
    public String getIdPanel() {
51
        return ExportPanelsManager.PANEL_SELECT_OUTPUT_FILE;
52
    }
53

    
54
    @Override
55
    public String getTitlePanel() {
56
        I18nManager i18n = ToolsLocator.getI18nManager();
57
        return i18n.getTranslation("Seleccionar_fichero");
58
    }
59

    
60
    @Override
61
    public boolean validatePanel() throws ExportPanelValidationException {
62
        I18nManager i18n = ToolsLocator.getI18nManager();
63
        ThreadSafeDialogsManager dialogs = ToolsSwingLocator.getThreadSafeDialogsManager();
64
        if (this.fileController.isEmpty()) {
65
            throw new ExportPanelValidationException(
66
                    i18n.getTranslation("_File_cannot_be_empty"));
67
        }
68
        File file = this.fileController.get();
69
        File newFile = null;
70
        try {
71
            newFile = ExpressionUtils.evaluateFilename(file);
72
        } catch (Exception ex) {
73
            throw new ExportPanelValidationException(
74
                    i18n.getTranslation("_Evaluated_file_path_is_not_valid"));
75
        }
76
        if (newFile != null && newFile.exists()) {
77
            int resp = dialogs.confirmDialog(
78
                    i18n.getTranslation("fichero_ya_existe_seguro_desea_guardarlo"),
79
                    i18n.getTranslation("guardar"),
80
                    JOptionPane.YES_NO_OPTION,
81
                    JOptionPane.QUESTION_MESSAGE,
82
                    "OverwriteFileOnExport"
83
            );
84
            if (resp == JOptionPane.NO_OPTION) {
85
                return false;
86
            }
87
        }
88
        return true;
89
    }
90

    
91
    @Override
92
    public void previousPanel() {
93

    
94
    }
95

    
96
    @Override
97
    public void nextPanel() {
98
        File file = this.fileController.get();
99
        this.parameters.setFile(file);
100
    }
101

    
102
    @Override
103
    public void enterPanel() {
104
        File file = this.parameters.getFile();
105
        if (file != null) {
106
            this.fileController.set(file);
107
        }
108
    }
109

    
110
    @Override
111
    public JComponent asJComponent() {
112
        return this;
113
    }
114

    
115
    private void initComponents() {
116
        File initialPath = null;
117
        if (this.parameters.getFile() != null) {
118
            initialPath = this.parameters.getFile();
119
        }
120
        this.fileController = ToolsSwingLocator.getToolsSwingManager()
121
                .createFilePickerController(txtFile,
122
                        btnSelectFile,
123
                        null,
124
                        null, initialPath, true);
125
        JPopupMenu menu = this.txtFile.getComponentPopupMenu();
126
        menu.add(ExpressionEvaluatorSwingLocator.getManager().createJExpressionBuilderAction(this.txtFile));
127
        I18nManager i18nManager = ToolsLocator.getI18nManager();
128
        Action textUniqueTempLayer;
129
        textUniqueTempLayer = new AbstractAction(i18nManager.getTranslation("_Temporal_layer_path")) {
130
            @Override
131
            public void actionPerformed(ActionEvent e) {
132
                if (txtFile.isEditable() && txtFile.isEnabled()) {
133
                    String nameLayer;
134
                    try {
135
                        nameLayer = ((ExportParameters) parameters).getSourceFeatureStore().getName();
136
                    } catch (Exception ex) {
137
                        nameLayer = "temp";
138
                    }
139
                    txtFile.setText("<%=UNIQUETEMPORARYFILE('" + nameLayer + "')%>");
140
                }
141
            }
142
        };
143
        txtFile.getComponentPopupMenu().add(textUniqueTempLayer);
144
        this.translate();
145
    }
146

    
147
    private void translate() {
148
        ToolsSwingManager i18nc = ToolsSwingLocator.getToolsSwingManager();
149
        i18nc.translate(this.lblFile);
150
    }
151
}