Révision 2860

tmp/org.txm.rcp/src/main/java/org/txm/rcp/messages/TXMUIMessages.java (revision 2860)
8 8
	
9 9
	private static final String BUNDLE_NAME = "org.txm.rcp.messages.messages"; //$NON-NLS-1$
10 10

  
11
	public static String theP0FileAlreadyExistsWouldYouLikeToReplaceIt;
12

  
11 13
	public static String theP0directoryNotABinaryCorpus;
12 14
	
13 15
	public static String P0CorpusLoaded;
tmp/org.txm.rcp/src/main/java/org/txm/rcp/messages/messages.properties (revision 2860)
9 9
Explorer_7 = ⌂
10 10

  
11 11
FileTreeContentProvider_4 = '
12

  
12

  
13
theP0FileAlreadyExistsWouldYouLikeToReplaceIt=the {0} file already exists. Would you like to replace it?
13 14
LoadBinaryCorporaDirectory_aCorpusNamedP0alreadyExistsLoadingOfP1Canceled = A corpus named {0} already exists, loading of {1} canceled.
14 15
LoadBinaryCorporaDirectory_corporaDirectoryNotFoundAborting               = Corpora directory not found. Aborting.
15 16
LoadBinaryCorporaDirectory_corpusLoad                                     = Corpus load
......
469 470
exporting = Exporting…
470 471

  
471 472
exporting = Exporting {0}…
472

  
473
exportingP0 = Exporting {0}…
473 474
exportingAnnotations = Exporting annotations.
474 475

  
475 476
exportingP0ThisMayTakeAWhile = Exporting {0}. This can take time, depending on the size of the corpus.
tmp/org.txm.rcp/src/main/java/org/txm/rcp/messages/messages_fr.properties (revision 2860)
9 9
Explorer_7 = ⌂
10 10

  
11 11
FileTreeContentProvider_4 = '
12

  
12
theP0FileAlreadyExistsWouldYouLikeToReplaceIt=Le fichier {0} existe déjà. Voulez vous vraiment le remplacer ?
13 13
P0CorpusLoaded = {0} corpus chargé(s).
14 14

  
15 15
SourceDirectoryPage_0  = Selection du répertoire des fichiers sources
......
419 419
exporting = Exportation…
420 420

  
421 421
exporting = Exportation de {0}…
422

  
422
exportingP0 = Exportation de {0}…
423 423
exportingAnnotations = Exportation des annotations…
424 424

  
425 425
exportingP0ThisMayTakeAWhile = Exportation de {0}. Cela peut prendre du temps, en fonction de la taille du corpus.
tmp/org.txm.core/src/java/org/txm/Toolbox.java (revision 2860)
80 80
public class Toolbox {
81 81

  
82 82
	public static final DateFormat dateformat = new SimpleDateFormat("yyyy-MM-dd");
83
	public static final DateFormat shortUKDateformat = new SimpleDateFormat("dd-MM-yy");
83
	//public static final DateFormat shortUKDateformat = new SimpleDateFormat("dd-MM-yy");
84 84

  
85 85
	private static LinkedHashMap<EngineType, EnginesManager<?>> enginesManagers = new LinkedHashMap<EngineType, EnginesManager<?>>();
86 86

  
tmp/org.txm.searchengine.cqp.rcp/src/org/txm/searchengine/cqp/rcp/handlers/base/ExportCorpus.java (revision 2860)
55 55
 * Export a corpus to the .txm binary format (Zip)
56 56
 */
57 57
public class ExportCorpus extends AbstractHandler {
58
	
58

  
59 59
	public final static String ID = "org.txm.rcp.commands.base.ExportCorpus"; //$NON-NLS-1$
60
	
60

  
61 61
	/** The selection. */
62 62
	private IStructuredSelection selection;
63
	
63

  
64 64
	/** The lastopenedfile. */
65 65
	private static String lastopenedfile;
66
	
66

  
67 67
	/*
68 68
	 * (non-Javadoc)
69 69
	 * @see
......
73 73
	@Override
74 74
	public Object execute(ExecutionEvent event) throws ExecutionException {
75 75
		selection = (IStructuredSelection) HandlerUtil.getCurrentSelection(event);
76
		
76

  
77 77
		Shell shell = HandlerUtil.getActiveWorkbenchWindowChecked(event)
78 78
				.getShell();
79
		
79

  
80 80
		if (!(selection.getFirstElement() instanceof MainCorpus))
81 81
			return null;
82
		
82

  
83 83
		final MainCorpus corpus = (MainCorpus) selection.getFirstElement();
84
		
84

  
85 85
		try {
86 86
			corpus.compute(false);
87 87
		}
......
90 90
			e.printStackTrace();
91 91
			return null;
92 92
		}
93
		
93

  
94 94
		if (corpus.isModified()) {
95 95
			boolean ret = MessageDialog.openConfirm(shell, "Export - " + corpus.getName() + " annotations not saved",
96 96
					"Do you wish to export without the current annotations?\n\n(to include the current annotations in the exported corpus, you need to save them before calling the \"Export\" command)");
97 97
			if (!ret) return null;
98 98
		}
99
		
99

  
100 100
		ExportCorpusDialog dialog = new ExportCorpusDialog(shell, corpus);
101
		
101

  
102 102
		if (dialog.open() == Window.OK) {
103
			
103

  
104 104
			final File outfile = dialog.getZipFile();
105

  
106
			if (outfile.exists()) {
107
				boolean ret = MessageDialog.openConfirm(shell, "Export - " + corpus.getName() + " warning",
108
						TXMUIMessages.bind(TXMUIMessages.theP0FileAlreadyExistsWouldYouLikeToReplaceIt, outfile.getAbsoluteFile()));
109
				if (!ret) {
110
					Log.info(TXMUIMessages.abort);
111
					return null;
112
				}
113
			}
114

  
105 115
			Log.info(NLS.bind(TXMUIMessages.exportingP0, corpus.getName()));
106 116
			JobHandler jobhandler = new JobHandler(NLS.bind(TXMUIMessages.exportingP0, corpus.getName())) {
107
				
117

  
108 118
				@Override
109 119
				protected IStatus run(IProgressMonitor monitor) {
110 120
					this.runInit(monitor);
111 121
					try {
112 122
						monitor.beginTask(NLS.bind(TXMUIMessages.exportingP0ThisMayTakeAWhile, corpus.getName()), 100);
113
						
123

  
124

  
125

  
114 126
						if (!corpus.export(outfile, this, dialog.getIgnoreNames())) {
115 127
							System.out.println(NLS.bind(TXMUIMessages.failedToExportCorpusP0, corpus.getName()));
116 128
						}
117
						
129

  
118 130
						System.out.println(TXMUIMessages.bind(TXMUIMessages.doneTheCreatedBinaryFileIsP0, outfile.getAbsolutePath()));
119 131
						monitor.worked(100);
120 132
					}
......
129 141
			};
130 142
			jobhandler.startJob();
131 143
		}
132
		
144

  
133 145
		return null;
134 146
	}
135 147
}
tmp/org.txm.searchengine.cqp.rcp/src/org/txm/searchengine/cqp/rcp/dialogs/ExportCorpusDialog.java (revision 2860)
32 32
import org.eclipse.swt.widgets.TableItem;
33 33
import org.eclipse.swt.widgets.Text;
34 34
import org.txm.Toolbox;
35
import org.txm.core.results.TXMResult;
35
import org.txm.core.preferences.TXMPreferences;
36 36
import org.txm.objects.Project;
37
import org.txm.rcp.swt.dialog.LastOpened;
38 37
import org.txm.searchengine.cqp.corpus.CQPCorpus;
39 38

  
40 39
/**
......
43 42
 *
44 43
 */
45 44
public class ExportCorpusDialog extends Dialog {
46
	
45

  
47 46
	/**
48 47
	 * list of the default files to include in the corpus binary
49 48
	 */
50 49
	private List<String> defaultFiles = Arrays.asList("HTML", "txm", "data", "registry", "annotations", "analec", "temporary_annotations", "xsl", "css", ".settings", ".project");
51
	
50

  
52 51
	private File zipFile;
53
	
52

  
54 53
	private LinkedHashMap<File, Boolean> selectedFiles;
55
	
54

  
56 55
	private CQPCorpus corpus;
57
	
56

  
58 57
	private TableViewer treeViewer;
59
	
58

  
60 59
	private TableViewerColumn nameColumn;
61
	
60

  
62 61
	private Text textField;
63
	
62

  
64 63
	private Button selectButton;
65
	
64

  
66 65
	public final static String ID = ExportCorpusDialog.class.getName();
67
	
66

  
68 67
	/**
69 68
	 * 
70 69
	 * @param parentShell
......
76 75
		super(parentShell);
77 76
		this.corpus = corpus;
78 77
	}
79
	
78

  
80 79
	@Override
81 80
	protected void configureShell(Shell newShell) {
82 81
		super.configureShell(newShell);
83 82
		newShell.setText(NLS.bind("Exporting {0}...", corpus.getName()));
84
		newShell.setMinimumSize(400, 200);
83
		newShell.setMinimumSize(400, 300);
85 84
	}
86
	
85

  
87 86
	@Override
88 87
	protected Control createDialogArea(Composite parent) {
89 88
		Composite comp = (Composite) super.createDialogArea(parent);
90
		
89

  
91 90
		GridLayout layout = (GridLayout) comp.getLayout();
92 91
		layout.numColumns = 3;
93
		
92

  
94 93
		Label l = new Label(comp, SWT.LEFT);
95 94
		l.setText("Output file");
96 95
		l.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false));
97
		
96

  
98 97
		textField = new Text(comp, SWT.SINGLE | SWT.BORDER);
99 98
		textField.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
100
		textField.setText(Toolbox.getTxmHomePath() + "/" + corpus.getName() + "-" + Toolbox.shortUKDateformat.format(Calendar.getInstance().getTime()) + ".txm"); //$NON-NLS-1$
101
		
99
		String previousPath = TXMPreferences.getString("path", ExportCorpusDialog.class.getName());
100
		if (previousPath == null || previousPath.length() == 0) {
101
			previousPath = System.getProperty("user.home"); ////$NON-NLS-0$
102
		}
103
		textField.setText(previousPath + "/" + corpus.getName() + "-" + Toolbox.dateformat.format(Calendar.getInstance().getTime()) + ".txm"); //$NON-NLS-1$
104

  
102 105
		selectButton = new Button(comp, SWT.PUSH);
103 106
		selectButton.setText("...");
104 107
		selectButton.addSelectionListener(new SelectionListener() {
105
			
108

  
106 109
			@Override
107 110
			public void widgetSelected(SelectionEvent e) {
108 111
				FileDialog dialog = new FileDialog(selectButton.getShell(), SWT.SAVE);
109
				
112

  
110 113
				String[] exts = { "*.txm", "*.zip" }; //$NON-NLS-1$ //$NON-NLS-2$
111 114
				dialog.setFilterExtensions(exts);
112
				dialog.setFilterPath(textField.getText());
113
				dialog.setFileName(textField.getText());
114
				
115
				String path = dialog.open();
115
				String path = textField.getText();
116
				if (path != null && path.length() > 0) {
117
					File p = new File(path);
118
					if (p.isDirectory()) {
119
						dialog.setFilterPath(textField.getText());
120
					} else {
121
						dialog.setFilterPath(p.getParent());
122
						dialog.setFileName(p.getName());
123
					}
124
				}
125
				//
126

  
127
				path = dialog.open();
116 128
				if (path != null) {
117 129
					textField.setText(path);
118
					getButton(IDialogConstants.OK_ID).setEnabled(new File(path).getParentFile().exists());
130
					File dir = new File(path).getParentFile();
131
					getButton(IDialogConstants.OK_ID).setEnabled(dir.exists());
132
					TXMPreferences.put(ExportCorpusDialog.class.getName(), "path", dir.getAbsolutePath());
119 133
				}
120 134
			}
121
			
135

  
122 136
			@Override
123 137
			public void widgetDefaultSelected(SelectionEvent e) {}
124 138
		});
125
		
139

  
126 140
		selectedFiles = new LinkedHashMap<>();
127 141
		Project project = corpus.getProject();
128 142
		File directory = project.getProjectDirectory();
129 143
		if (directory.exists()) {
130
			
144

  
131 145
			File[] files = directory.listFiles(new FileFilter() {
132
				
146

  
133 147
				@Override
134 148
				public boolean accept(File f) {
135 149
					return !f.getName().startsWith(".") && !f.isHidden() && f.isDirectory() && !defaultFiles.contains(f.getName());
136 150
				}
137 151
			});
138 152
			Arrays.sort(files, new Comparator<File>() {
139
				
153

  
140 154
				@Override
141 155
				public int compare(File arg0, File arg1) {
142 156
					if (arg0.isDirectory() && arg1.isDirectory()) {
......
157 171
			});
158 172
			for (File f : files) {
159 173
				if (!f.isHidden() && f.isDirectory()) {
160
					
174

  
161 175
					if (defaultFiles.contains(f.getName())) {
162 176
						selectedFiles.put(f, true);
163 177
					}
......
166 180
					}
167 181
				}
168 182
			}
169
			
183

  
170 184
			if (files.length > 0) {
171 185
				treeViewer = new TableViewer(comp, SWT.CHECK | SWT.BORDER | SWT.V_SCROLL | SWT.H_SCROLL);
172
				
186

  
173 187
				treeViewer.setContentProvider(new ArrayContentProvider());
174
				
188

  
175 189
				treeViewer.getTable().addListener(SWT.Selection, event -> {
176
					
190

  
177 191
					if (event.detail == SWT.CHECK) {
178 192
						TableItem item = (TableItem) event.item;
179 193
						selectedFiles.put((File) event.item.getData(), item.getChecked());
180 194
					}
181 195
				});
182
				
196

  
183 197
				treeViewer.getTable().setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true, 3, 1));
184 198
				treeViewer.getTable().setHeaderVisible(true);
185 199
				treeViewer.getTable().setLinesVisible(true);
186
				
200

  
187 201
				nameColumn = new TableViewerColumn(treeViewer, SWT.NONE);
188 202
				nameColumn.getColumn().setText("Extra files");
189 203
				nameColumn.getColumn().pack();
190 204
				nameColumn.setLabelProvider(new CellLabelProvider() {
191
					
205

  
192 206
					@Override
193 207
					public void update(ViewerCell cell) {
194 208
						Object element = cell.getElement();
195
						
209

  
196 210
						if (element instanceof File) {
197 211
							File f = (File) element;
198 212
							cell.setText(f.getName());
......
202 216
						}
203 217
					}
204 218
				});
205
				
219

  
206 220
				treeViewer.setInput(files);
207 221
				for (int i = 0; i < files.length; i++) {
208 222
					treeViewer.getTable().getItem(i).setChecked(selectedFiles.get(files[i]));
209 223
				}
210
				
224

  
211 225
				Button selectAllButton = new Button(comp, SWT.PUSH);
212 226
				selectAllButton.setText("Select All");
213 227
				selectAllButton.addSelectionListener(new SelectionListener() {
214
					
228

  
215 229
					@Override
216 230
					public void widgetSelected(SelectionEvent e) {
217 231
						massSelect(true);
218 232
					}
219
					
233

  
220 234
					@Override
221 235
					public void widgetDefaultSelected(SelectionEvent e) {}
222 236
				});
223
				
237

  
224 238
				Button clearAllButton = new Button(comp, SWT.PUSH);
225 239
				clearAllButton.setText("Clear selection");
226 240
				clearAllButton.addSelectionListener(new SelectionListener() {
227
					
241

  
228 242
					@Override
229 243
					public void widgetSelected(SelectionEvent e) {
230 244
						massSelect(false);
231 245
					}
232
					
246

  
233 247
					@Override
234 248
					public void widgetDefaultSelected(SelectionEvent e) {}
235 249
				});
236 250
			}
237 251
		}
238
		
252

  
239 253
		return comp;
240 254
	}
241
	
255

  
242 256
	protected void massSelect(boolean b) {
243 257
		for (int i = 0; i < treeViewer.getTable().getItems().length; i++) {
244 258
			treeViewer.getTable().getItem(i).setChecked(b);
......
247 261
			selectedFiles.put(f, b);
248 262
		}
249 263
	}
250
	
264

  
251 265
	@Override
252 266
	protected boolean isResizable() {
253 267
		return true;
254 268
	}
255
	
269

  
256 270
	@Override
257 271
	protected void buttonPressed(int buttonId) {
258 272
		if (buttonId == Dialog.OK) {
......
260 274
		}
261 275
		super.buttonPressed(buttonId);
262 276
	}
263
	
277

  
264 278
	public File getZipFile() {
265 279
		return zipFile;
266 280
	}
267
	
281

  
268 282
	public LinkedHashMap<File, Boolean> getFileSelection() {
269 283
		return selectedFiles;
270 284
	}
271
	
285

  
272 286
	public HashSet<String> getIgnoreNames() {
273 287
		HashSet<String> ignore = new HashSet<>();
274 288
		for (File f : selectedFiles.keySet()) {

Formats disponibles : Unified diff