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);
|