Revision 1701

View differences:

trunk/org.gvsig.app.document.layout2.app/org.gvsig.app.document.layout2.app.mainplugin/src/main/java/org/gvsig/app/extension/LayoutExtension.java
21 21
 */
22 22
package org.gvsig.app.extension;
23 23

  
24
import java.awt.BorderLayout;
24 25
import java.awt.Component;
26
import java.awt.event.ActionEvent;
27
import java.awt.event.ActionListener;
25 28
import java.io.File;
26 29
import java.io.FileOutputStream;
30
import javax.swing.ImageIcon;
31
import javax.swing.JButton;
27 32

  
28 33
import javax.swing.JFileChooser;
29 34
import javax.swing.JOptionPane;
35
import javax.swing.JPanel;
36
import org.apache.commons.lang3.StringUtils;
30 37

  
31 38
import org.slf4j.Logger;
32 39
import org.slf4j.LoggerFactory;
......
38 45
import org.gvsig.andami.preferences.IPreference;
39 46
import org.gvsig.andami.preferences.IPreferenceExtension;
40 47
import org.gvsig.andami.ui.mdiManager.IWindow;
48
import org.gvsig.app.ApplicationLocator;
49
import org.gvsig.app.ApplicationManager;
50
import org.gvsig.app.PreferencesNode;
51
import static org.gvsig.app.extension.InitializeApplicationExtension.TEMPLATES_FOLDER_PROPERTY_NAME;
41 52
import org.gvsig.app.gui.preferencespage.LayoutPage;
42 53
import org.gvsig.app.project.documents.layout.FLayoutZooms;
43 54
import org.gvsig.app.project.documents.layout.LayoutManager;
44 55
import org.gvsig.app.project.documents.layout.gui.LayoutPanel;
45 56
import org.gvsig.app.project.documents.layout.report.LayoutReportActionFactory;
57
import org.gvsig.filedialogchooser.FileDialogChooser;
58
import org.gvsig.filedialogchooser.FileDialogChooserManager;
46 59
import org.gvsig.i18n.Messages;
47 60
import org.gvsig.tools.ToolsLocator;
61
import org.gvsig.tools.i18n.I18nManager;
48 62
import org.gvsig.tools.persistence.PersistenceManager;
49 63
import org.gvsig.tools.persistence.PersistentState;
50 64
import org.gvsig.tools.persistence.text.JavaTextFactory;
65
import org.gvsig.tools.swing.api.ToolsSwingLocator;
66
import org.gvsig.tools.swing.api.ToolsSwingUtils;
67
import org.gvsig.tools.util.ToolsUtilLocator;
51 68
import org.gvsig.utils.GenericFileFilter;
52 69

  
53 70
/**
......
99 116
            saveLayout();
100 117
        }
101 118
    }
102

  
119
    
103 120
    private void saveLayout() {
121
        I18nManager i18n = ToolsLocator.getI18nManager();
104 122
        layout = (LayoutPanel) PluginServices.getMDIManager().getActiveWindow();
105
        JFileChooser jfc = new JFileChooser();
123
        FileDialogChooserManager manager = ToolsUtilLocator.getFileDialogChooserManager();
124
        FileDialogChooser fc = manager.create("_Last_layout_template_folder");
106 125
        GenericFileFilter layoutMainFilter = new GenericFileFilter(
107
                LayoutManager.TEMPLATE_FILE_POINTEXT,
108
                Messages.getText("_Layout_template") + " (*"
109
                        + LayoutManager.TEMPLATE_FILE_POINTEXT + ")");
110
        jfc.addChoosableFileFilter(layoutMainFilter);
111
        jfc.setFileFilter(layoutMainFilter);
126
        LayoutManager.TEMPLATE_FILE_POINTEXT,
127
        i18n.getTranslation("_Layout_template") + " (*"
128
                + LayoutManager.TEMPLATE_FILE_POINTEXT + ")");
112 129

  
113
        if (jfc.showSaveDialog((Component) PluginServices.getMainFrame()) == JFileChooser.APPROVE_OPTION) {
114
            File file = jfc.getSelectedFile();
115
            if (!(file.getPath().endsWith(
116
                    LayoutManager.TEMPLATE_FILE_POINTEXT.toLowerCase()) || file
117
                    .getPath().endsWith(LayoutManager.TEMPLATE_FILE_POINTEXT))) {
118
                file = new File(file.getPath()
119
                        + LayoutManager.TEMPLATE_FILE_POINTEXT);
120
            }
121
            if (file.exists()) {
122
                int resp = JOptionPane.showConfirmDialog(
123
                        (Component) PluginServices.getMainFrame(),
124
                        PluginServices.getText(this,
125
                                "fichero_ya_existe_seguro_desea_guardarlo"),
126
                        PluginServices.getText(this, "guardar"),
127
                        JOptionPane.YES_NO_OPTION);
128
                if (resp != JOptionPane.YES_OPTION) {
129
                    return;
130
        fc.addChoosableFileFilter(layoutMainFilter);
131
        fc.setFileFilter(layoutMainFilter);
132
        ApplicationManager application = ApplicationLocator.getApplicationManager();
133
        PreferencesNode prefs = application.getPreferences("gvsig.foldering");
134
        
135
        File folder = null;
136
        String path = prefs.get(TEMPLATES_FOLDER_PROPERTY_NAME, null);
137
        if(StringUtils.isNotBlank(path)){
138
            folder = new File(path);
139
        }
140
        
141
        File projectfile = application.getCurrentProject().getFile();
142
        if(projectfile != null) {
143
            JPanel accesory = new JPanel();
144
            accesory.setLayout(new BorderLayout(0, 0));
145
            ImageIcon icon = ToolsSwingLocator.getIconThemeManager().getActive().get("application-project-gotofolder");
146
            JButton goToProjectButton = new JButton(icon);
147
            
148
            goToProjectButton.setToolTipText(i18n.getTranslation("_Go_to_folder_project"));
149
            accesory.add(goToProjectButton, BorderLayout.NORTH);
150
            goToProjectButton.addActionListener(new ActionListener() {
151
                @Override
152
                public void actionPerformed(ActionEvent e) {
153
                    fc.setCurrentDirectory(projectfile.getParentFile());
130 154
                }
155
            });
156
            fc.setAccessory(accesory);
157
        }
158
        if(folder == null) {
159
//            folder = fc.getLastPath(null); //TODO
160
            folder = manager.getLastPath("_Last_layout_template_folder", null);
161
            if(folder ==  null) {
162
                if(projectfile != null){
163
                    folder = projectfile.getParentFile();
164
                }
165
                if (folder == null) {
166
                    folder = ToolsLocator.getFoldersManager().getHome();
167
                }
131 168
            }
132

  
133
            try {
134
                FileOutputStream fos = new FileOutputStream(
135
                        file.getAbsolutePath());
136
                PersistenceManager persistenceManager = ToolsLocator
137
                        .getPersistenceManager();
138
                PersistentState persistentState = persistenceManager
139
                        .getState(layout);
140
                persistenceManager.saveState(persistentState, fos);
169
        }    
170
        
171
        
172
        if (fc.showSaveDialog((Component) PluginServices.getMainFrame(), folder) != JFileChooser.APPROVE_OPTION) {
173
            return;
174
        }
175
        File file = fc.getSelectedFile();
176
        if (!(file.getPath().endsWith(
177
            LayoutManager.TEMPLATE_FILE_POINTEXT.toLowerCase()) || file
178
            .getPath().endsWith(LayoutManager.TEMPLATE_FILE_POINTEXT))) {
179
            file = new File(file.getPath()
180
                + LayoutManager.TEMPLATE_FILE_POINTEXT);
181
        }
182
        if (file.exists()) {
183
            int resp = JOptionPane.showConfirmDialog(
184
                (Component) PluginServices.getMainFrame(),
185
                PluginServices.getText(this,
186
                    "fichero_ya_existe_seguro_desea_guardarlo"),
187
                PluginServices.getText(this, "guardar"),
188
                JOptionPane.YES_NO_OPTION);
189
            if (resp != JOptionPane.YES_OPTION) {
190
                return;
141 191
            }
142
            catch (Exception e) {
143
                NotificationManager.addError(PluginServices.getText(this,
144
                        "Error_guardando_la_plantilla"), e);
145
            }
146 192
        }
193

  
194
        try {
195
            FileOutputStream fos = new FileOutputStream(
196
                file.getAbsolutePath());
197
            PersistenceManager persistenceManager = ToolsLocator
198
                .getPersistenceManager();
199
            PersistentState persistentState = persistenceManager
200
                .getState(layout);
201
            persistenceManager.saveState(persistentState, fos);
202
        } catch (Exception e) {
203
            NotificationManager.addError(PluginServices.getText(this,
204
                "Error_guardando_la_plantilla"), e);
205
        }
206
        
207
//        manager.setLastPath("_Last_layout_template_folder", file.getParentFile());
208

  
147 209
    }
148

  
210
    
149 211
    /**
150 212
     * @see com.iver.mdiApp.plugins.IExtension#isVisible()
151 213
     */
......
187 249
                "application-layout-template-save", this);
188 250

  
189 251
        IconThemeHelper.registerIcon("action",
252
                "application-project-gotofolder", this);
253

  
254
        IconThemeHelper.registerIcon("action",
190 255
                "layout-navigation-zoom-in-center", this);
191 256
        IconThemeHelper.registerIcon("action",
192 257
                "layout-navigation-zoom-out-center", this);
trunk/org.gvsig.app.document.layout2.app/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/i18n/text.properties
118 118
_Matches_the_size_of_the_selected_elements=Iguala el tama\u00f1o de los elementos seleccionados.
119 119
_Horizontally_distributes_selected_elements_with_even_spacing=Distribuye horizontalmente los elementos seleccionados con espacios uniformes
120 120
_Vertically_distributes_selected_elements_with_even_spacing=Distribuye verticalmente los elementos seleccionados con espacios uniformes
121
_Go_to_folder_project=Ir a la carpeta del proyecto
trunk/org.gvsig.app.document.layout2.app/org.gvsig.app.document.layout2.app.mainplugin/src/main/resources-plugin/i18n/text_en.properties
118 118
_Matches_the_size_of_the_selected_elements=Matches the size of the selected elements
119 119
_Horizontally_distributes_selected_elements_with_even_spacing=Horizontally distributes selected elements with even spacing
120 120
_Vertically_distributes_selected_elements_with_even_spacing=Vertically distributes selected elements with even spacing
121
_Go_to_folder_project=Go to folder project
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.441</version>
14
        <version>2.0.442-SNAPSHOT</version>
15 15
    </parent>
16 16

  
17 17
	<url>https://devel.gvsig.org/redmine/projects/gvsig-app-document-layout</url>

Also available in: Unified diff