Revision 1858

View differences:

org.gvsig.raster.tools/trunk/org.gvsig.raster.tools/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/raster/gui/wizard/proj/WritableFolderPanel.java
8 8
import java.io.File;
9 9

  
10 10
import javax.swing.JButton;
11
import javax.swing.JCheckBox;
11 12
import javax.swing.JLabel;
12 13

  
13 14
import org.cresques.Messages;
......
27 28
public class WritableFolderPanel extends DefaultButtonsPanel implements ActionListener, IWindow {
28 29
	private static final long           serialVersionUID       = 1L;
29 30
	private SelectDirectoryPanel        selectDirectoryPanel   = null;
31
	private JCheckBox                   allFiles               = null;
30 32
	private Point                       posWindow              = null;
31
	private int                         widthWindow            = 300;
32
	private int                         heightWindow           = 90;
33
	private int                         widthWindow            = 320;
34
	private int                         heightWindow           = 120;
33 35
	private String                      defaultFolder          = null;
36
	private String                      layerName              = null;
34 37
	private ActionListener              listener               = null;
35 38
	
36
	public WritableFolderPanel(String defaultFolder, ActionListener listener) {
39
	public WritableFolderPanel(String defaultFolder, ActionListener listener, String layerName) {
37 40
		this.defaultFolder = defaultFolder;
41
		this.layerName = layerName;
38 42
		setListener(listener);
39 43
		posWindow = RasterToolsUtil.iwindowPosition(widthWindow, heightWindow);
40 44
		initGUI();
......
55 59
		gbc.weightx = 1;
56 60
		JLabel label = new JLabel();
57 61
		label.setText("<html><p>" + Messages.getText("folder_not_writable") + "</p></html>");
62
		
63
		gbc.gridy = 0;
64
		this.add(new JLabel("<html><p>" + layerName + "</p><BR></html>"), gbc);
65
		
66
		gbc.gridy = 1;
58 67
		this.add(label, gbc);
59 68
		
60
		gbc.gridy = 1;
69
		gbc.gridy = 2;
61 70
		this.add(getSelectDirectoryPanel(), gbc);
62 71
		
72
		gbc.gridy = 3;
73
		this.add(getCheckOption(), gbc);
74
		
63 75
		getSelectDirectoryPanel().setListener(this);
64 76
	}
65 77
	
78
	public boolean aplyAllFiles() {
79
		return getCheckOption().isSelected();
80
	}
81
	
82
	public JCheckBox getCheckOption() {
83
		if (allFiles == null)
84
			allFiles = new JCheckBox(PluginServices.getText(this, "apply_all"));
85
		return allFiles;
86
	}
87
	
66 88
	public SelectDirectoryPanel getSelectDirectoryPanel() {
67 89
		if(selectDirectoryPanel == null) {
68 90
			selectDirectoryPanel = new SelectDirectoryPanel();
org.gvsig.raster.tools/trunk/org.gvsig.raster.tools/org.gvsig.raster.tools.app/org.gvsig.raster.tools.app.basic/src/main/java/org/gvsig/raster/tools/app/basic/raster/gui/wizard/PrepareLayerAskWritableDirectory.java
44 44
 * @author Nacho Brodin (nachobrodin@gmail.com)
45 45
 */
46 46
public class PrepareLayerAskWritableDirectory implements PrepareDataStoreParameters, ActionListener {
47
	private DataStoreParameters         newParameters = null;
48
	private DataStoreParameters         oldParameters = null;
49
	private String                      selectedPath  = null;
47
	private DataStoreParameters         newParameters       = null;
48
	private DataStoreParameters         oldParameters        = null;
49
	private String                      selectedPath         = null;
50
	private boolean                     applyToAllLayers     = false;
50 51
	
51 52
	public DataStoreParameters prepare(DataStoreParameters storeParameters,
52 53
			PrepareContext context) throws BaseException {
......
56 57
		oldParameters = storeParameters;
57 58
		String uri = ((RasterDataParameters)storeParameters).getURI();
58 59
		
59
		
60
		String folder = uri;
61
		String layerName = uri;
60 62
		if(uri.contains(File.separator)) {
61
			uri = uri.substring(0, uri.lastIndexOf(File.separator));
63
			folder = getFolder(uri) ;
64
			layerName = getLayerName(uri);
62 65
		} else {
63
			uri = System.getProperty("user.home");
66
			folder = System.getProperty("user.home");
64 67
		}
65 68
		
66
		if(!isValidFolder(uri)) {
67
			new WritableFolderPanel(uri, this);
69
		if(!isValidFolder(folder)) {
70
			if(applyToAllLayers) {
71
				setFolderToNewDataParameters(selectedPath);
72
			} else {
73
				WritableFolderPanel panel = new WritableFolderPanel(folder, this, layerName);
74
				applyToAllLayers = panel.aplyAllFiles();
75
			}
68 76
		} else {
69 77
			return oldParameters;
70 78
		}
......
72 80
		return newParameters;
73 81
	}
74 82
	
83
	private String getFolder(String uri) {
84
		return uri.substring(0, uri.lastIndexOf(File.separator));
85
	}
86
	
87
	private String getLayerName(String uri) {
88
		int lastSeparator = uri.lastIndexOf(File.separator);
89
		return uri.substring(lastSeparator + 1, uri.length());
90
	}
91
	
75 92
	public void actionPerformed(ActionEvent e) {
76 93
		if(e.getID() == 0) { //Cambio de directorio
77 94
			selectedPath = e.getActionCommand();
78 95
		}
79 96
		if(e.getID() == ButtonsPanel.BUTTON_ACCEPT) {
80 97
			if(isValidFolder(selectedPath)) {
81
				newParameters = oldParameters;
82
				newParameters.setDynValue(RasterDataParameters.FIELD_RMF_FOLDER, new File(selectedPath));
98
				setFolderToNewDataParameters(selectedPath);
83 99
			} else {
84 100
				JOptionPane.showMessageDialog(null, Messages.getText("folder_not_writable"), "", JOptionPane.WARNING_MESSAGE);
85 101
				newParameters = null;
......
91 107
		}
92 108
	}
93 109
	
110
	private void setFolderToNewDataParameters(String path) {
111
		newParameters = oldParameters;
112
		newParameters.setDynValue(RasterDataParameters.FIELD_RMF_FOLDER, new File(path));
113
	}
114
	
94 115
	private boolean isValidFolder(String folder) {
95 116
		File path = new File(folder);
96 117
		return (path.exists() && path.isDirectory() && path.canWrite());
97 118
	}
98 119
	
99 120
	public void post(DataStoreParameters storeParameters, PrepareContext context) {
121
		applyToAllLayers = false;
100 122
	}
101 123
	
102 124
	public void pre(DataStoreParameters storeParameters, PrepareContext context) {

Also available in: Unified diff