Révision 2602

tmp/org.txm.progression.core/src/org/txm/progression/core/functions/Progression.java (revision 2602)
329 329
			this.structurePositions = new int[0];
330 330
			this.structureNames = new String[0];
331 331
			
332
			this.subTask("Processing queries...");
332
			this.setTask("Processing queries...");
333 333
			if (!this.stepQueries()) {
334 334
				return true;
335 335
			}
......
341 341
		}
342 342
		
343 343
		// Structural units
344
		this.subTask("Processing structural units...");
344
		this.setTask("Processing structural units...");
345 345
		if (!this.stepStructuralUnits()) {
346 346
			return false;
347 347
		}
......
350 350
		
351 351
		// Finalization steps
352 352
		if (this.hasParameterChanged(ProgressionPreferences.QUERIES)) {
353
			this.subTask("Finalizing...");
353
			this.setTask("Finalizing...");
354 354
			if (!stepFinalize()) {
355 355
				return false;
356 356
			}
tmp/org.txm.querycooccurrences.rcp/src/org/txm/functions/coocmatrix/QueryAutoCooccurrence.java (revision 2602)
28 28
public class QueryAutoCooccurrence extends TXMResult implements ICAComputable, IAdaptable {
29 29
	
30 30
	protected CQPCorpus corpus;
31
	
31 32
	protected int[][] coocs;
33
	
32 34
	protected ArrayList<CQLQuery> queries;
35
	
33 36
	protected ArrayList<String> names;
34

  
37
	
35 38
	protected int dist;
39
	
36 40
	protected String struct = "";
41
	
37 42
	protected String symbol;
43
	
38 44
	protected static int noCoocMatrix = 1;
39

  
45
	
40 46
	protected static String prefixR = "CoocMatrix";
41

  
47
	
42 48
	protected int nNodes = 0;
49
	
43 50
	protected int nEdges = 0;
51
	
44 52
	protected int minCooc;
53
	
45 54
	protected boolean oriented = false;
46

  
55
	
47 56
	public QueryAutoCooccurrence(CQPCorpus corpus) {
48 57
		super(corpus);
49 58
	}
50 59
	
51
	public void setParameters(ArrayList<CQLQuery> queries, 
60
	public void setParameters(ArrayList<CQLQuery> queries,
52 61
			ArrayList<String> names, int dist, int minCooc, String struct, boolean oriented, IProgressMonitor monitor) throws CqiClientException, RWorkspaceException {
53 62
		this.queries = queries;
54 63
		this.names = names;
......
56 65
		this.minCooc = minCooc;
57 66
		this.oriented = oriented;
58 67
		if (struct != null)
59
			this.struct = "within "+struct; 
68
			this.struct = "within " + struct;
60 69
		else
61 70
			this.struct = "within text";
62

  
71
		
63 72
		nNodes = queries.size();
64 73
	}
65

  
74
	
66 75
	@Override
67 76
	public boolean _compute() throws Exception {
68 77
		coocs = new int[queries.size()][queries.size()];
69 78
		
70
		this.beginTask("Querying cooccurrences...", nNodes);
79
		this.setTask("Querying cooccurrences...");
80
		this.setWorkRemaining(nNodes);
71 81
		
72
		for (int i = 0 ; i < queries.size() ; i++) {
82
		for (int i = 0; i < queries.size(); i++) {
73 83
			int j = i;
74 84
			if (oriented) j = 0; // if the graph is not oriented, we don't need to evaluate all queries
75
			for (; j < queries.size() ; j++) {
85
			for (; j < queries.size(); j++) {
76 86
				this.worked(1);
77 87
				String query = null;
78 88
				if (oriented) {
79
					query = "("+queries.get(i)+"[]{0,"+dist+"}"+queries.get(j)+") "+this.struct;
89
					query = "(" + queries.get(i) + "[]{0," + dist + "}" + queries.get(j) + ") " + this.struct;
80 90
				}
81 91
				else {
82
					query = "("+queries.get(i)+"[]{0,"+dist+"}"+queries.get(j)+")|("+queries.get(j)+"[]{0,"+dist+"}"+queries.get(i)+") "+this.struct;
92
					query = "(" + queries.get(i) + "[]{0," + dist + "}" + queries.get(j) + ")|(" + queries.get(j) + "[]{0," + dist + "}" + queries.get(i) + ") " + this.struct;
83 93
				}
84

  
85
				Log.info("ListCooc: query "+query);
94
				
95
				Log.info("ListCooc: query " + query);
86 96
				QueryResult result = corpus.query(new CQLQuery(query), "tmp", false);
87 97
				coocs[i][j] = result.getNMatch();
88 98
				if (coocs[i][j] >= minCooc) {
89 99
					nEdges++;
90
				} else {
100
				}
101
				else {
91 102
					coocs[i][j] = 0;
92 103
				}
93 104
				result.drop();
94 105
			}
95 106
		}
96

  
107
		
97 108
		if (!oriented) //// if the graph is not oriented, copy upper triangle values to lower triangle values
98
			for (int i = 0 ; i < queries.size() ; i++) {
99
				for (int j = i ; j < queries.size() ; j++) {
100
					coocs[j][i] = coocs[i][j];
101
				}
109
			for (int i = 0; i < queries.size(); i++) {
110
			for (int j = i; j < queries.size(); j++) {
111
			coocs[j][i] = coocs[i][j];
102 112
			}
113
			}
103 114
		this.done();
104 115
		
105 116
		return true;
106 117
	}
107

  
118
	
119
	@Override
108 120
	public String getName() {
109
		return corpus.getName()+ " d="+dist+ " min="+minCooc;
121
		return corpus.getName() + " d=" + dist + " min=" + minCooc;
110 122
	}
111

  
123
	
124
	@Override
112 125
	public CQPCorpus getParent() {
113 126
		return corpus;
114 127
	}
115

  
128
	
116 129
	public String getSymbol() {
117 130
		return symbol;
118 131
	}
119

  
132
	
120 133
	public int getNNodes() {
121 134
		return nNodes;
122 135
	}
123

  
136
	
124 137
	public int getNEdges() {
125 138
		return nEdges;
126 139
	}
127

  
140
	
128 141
	private void sendToR() throws RWorkspaceException {
129 142
		if (symbol != null) return;
130

  
131
		this.symbol = prefixR+(QueryCooccurrence.noCoocMatrix ++);
143
		
144
		this.symbol = prefixR + (QueryCooccurrence.noCoocMatrix++);
132 145
		RWorkspace rw = RWorkspace.getRWorkspaceInstance();
133
		rw.eval("rm("+symbol+")");
146
		rw.eval("rm(" + symbol + ")");
134 147
		rw.addMatrixToWorkspace(symbol, coocs);
135 148
		rw.addVectorToWorkspace("cooclabels", names.toArray(new String[names.size()]));
136
		rw.eval("rownames("+symbol+") <- cooclabels");
137
		rw.eval("colnames("+symbol+") <- cooclabels");
149
		rw.eval("rownames(" + symbol + ") <- cooclabels");
150
		rw.eval("colnames(" + symbol + ") <- cooclabels");
138 151
	}
139

  
140

  
152
	
153
	
141 154
	public LexicalTable toLexicalTable() throws Exception {
142 155
		sendToR();
143 156
		RWorkspace rw = RWorkspace.getRWorkspaceInstance();
144
		rw.eval("LT<-"+this.getSymbol());
157
		rw.eval("LT<-" + this.getSymbol());
145 158
		rw.eval("LT<-LT[rowSums(LT) != 0, ]");
146 159
		rw.eval("LT<-LT[, colSums(LT) != 0]");
147
		rw.eval(this.getSymbol()+"LT<-LT");
160
		rw.eval(this.getSymbol() + "LT<-LT");
148 161
		rw.eval("rm(LT)");
149
		//TODO: use Table fmin preference
162
		// TODO: use Table fmin preference
150 163
		LexicalTable table = new LexicalTable(corpus);
151 164
		table.setUnitProperty(corpus.getProperty("word"));
152
		table.setData(new LexicalTableImpl(this.getSymbol()+"LT"));
165
		table.setData(new LexicalTableImpl(this.getSymbol() + "LT"));
153 166
		return table;
154 167
	}
155

  
168
	
156 169
	public boolean toGraphml(File outfile) throws RWorkspaceException {
157

  
170
		
158 171
		RWorkspace rw = null;
159 172
		try {
160 173
			rw = RWorkspace.getRWorkspaceInstance();
161 174
			rw.eval("library(\"igraph\")");
162 175
			Log.info("Package 'igraph' installed. Now running CoocMatrix");
163
		} catch (Exception e) {
176
		}
177
		catch (Exception e) {
164 178
			Log.printStackTrace(e);
165
			Log.warning("The 'igraph' package is not installed: "+e);
179
			Log.warning("The 'igraph' package is not installed: " + e);
166 180
			boolean install = true;
167 181
			if (install) {
168 182
				Log.warning("Installing 'igraph'");
169 183
				try {
170 184
					rw.eval("install.packages(\"igraph\", dependencies=TRUE, repos=\"http://cran.rstudio.com\");");
171
				} catch(Exception e2) {
185
				}
186
				catch (Exception e2) {
172 187
					Log.severe("Could not install the 'igraph' package");
173 188
					Log.printStackTrace(e2);
174 189
					return false;
175 190
				}
176
			} else {
191
			}
192
			else {
177 193
				System.out.println("Operation canceled by user");
178 194
				return false;
179 195
			}
180 196
		}
181

  
197
		
182 198
		sendToR();
183

  
199
		
184 200
		outfile.delete();
185

  
201
		
186 202
		String orientationMode = "undirected";
187
		//if (oriented) orientationMode = "directed";
188

  
203
		// if (oriented) orientationMode = "directed";
204
		
189 205
		rw.eval("library(igraph)");
190
		rw.eval("g <- graph.adjacency("+symbol+", weighted=T, mode = \""+orientationMode+"\", diag=FALSE)"); // create graph from matrix
206
		rw.eval("g <- graph.adjacency(" + symbol + ", weighted=T, mode = \"" + orientationMode + "\", diag=FALSE)"); // create graph from matrix
191 207
		rw.eval("V(g)$label <- V(g)$name"); // copy names in labels
192
		//rw.eval("g <- set.vertex.attribute(g, \"label\", colnames("+symbol+"))");
193
		//rw.eval("g <- set.vertex.attribute(g, \"color\", value=colors)");
194

  
195
		String path = outfile.getAbsolutePath();//.replaceAll("\\\\", "\\\\")
208
		// rw.eval("g <- set.vertex.attribute(g, \"label\", colnames("+symbol+"))");
209
		// rw.eval("g <- set.vertex.attribute(g, \"color\", value=colors)");
210
		
211
		String path = outfile.getAbsolutePath();// .replaceAll("\\\\", "\\\\")
196 212
		path = path.replace('\\', '/');
197
		rw.eval("write.graph(g, \""+path+"\", format = 'graphml')");
198

  
213
		rw.eval("write.graph(g, \"" + path + "\", format = 'graphml')");
214
		
199 215
		return outfile.exists();
200 216
	}
201

  
217
	
218
	@Override
202 219
	public CQPCorpus getCorpus() {
203 220
		return corpus;
204 221
	}
205

  
222
	
206 223
	public int[][] getCoocs() {
207 224
		return coocs;
208 225
	}
209

  
226
	
210 227
	public ArrayList<CQLQuery> getQueries() {
211 228
		return queries;
212 229
	}
213

  
230
	
214 231
	public java.util.ArrayList<String> getNames() {
215 232
		return names;
216 233
	}
217

  
234
	
218 235
	public int getDist() {
219 236
		return dist;
220 237
	}
221

  
238
	
222 239
	public void printCoocs() {
223
		for (int i = 0 ; i < queries.size() ; i++) {
240
		for (int i = 0; i < queries.size(); i++) {
224 241
			System.out.print(names.get(i));
225
			for (int j = 0 ; j < queries.size() ; j++) {
226
				System.out.print("\t"+coocs[i][j]);
242
			for (int j = 0; j < queries.size(); j++) {
243
				System.out.print("\t" + coocs[i][j]);
227 244
			}
228 245
			System.out.println();
229 246
		}
230 247
	}
231

  
248
	
232 249
	@Override
233 250
	public void clean() {
234 251
		// TODO Auto-generated method stub
235 252
	}
236

  
253
	
254
	@Override
237 255
	public boolean toTxt(File outfile, String encoding, String colseparator,
238 256
			String txtseparator) throws Exception {
239 257
		return toGraphml(outfile);
240 258
	}
241

  
259
	
260
	@Override
242 261
	public String toString() {
243 262
		return getName();
244 263
	}
245

  
264
	
246 265
	@Override
247 266
	public CA toCA() throws Exception {
248 267
		CQPCorpus corpus = this.getCorpus();
249 268
		Property analysisProperty = null;
250 269
		try {
251 270
			analysisProperty = this.getCorpus().getProperty("word"); //$NON-NLS-1$
252
		} catch (CqiClientException e) {
271
		}
272
		catch (CqiClientException e) {
253 273
			// TODO Auto-generated catch block
254 274
			org.txm.utils.logger.Log.printStackTrace(e);
255 275
		}
256 276
		LexicalTable table = this.toLexicalTable();
257 277
		int fmin = table.getFMin();
258

  
278
		
259 279
		CA ca = new CA(table);
260

  
280
		
261 281
		return ca;
262 282
	}
263

  
283
	
264 284
	@Override
265 285
	public Partition getPartition() {
266 286
		return null;
267 287
	}
268

  
288
	
269 289
	/** The WordCloud adapter. */
270 290
	private static IWorkbenchAdapter coocMatrixAdapter = new IWorkbenchAdapter() {
271

  
291
		
272 292
		@Override
273 293
		public Object[] getChildren(Object o) {
274 294
			return new Object[0];
275 295
		}
276

  
296
		
277 297
		@Override
278 298
		public ImageDescriptor getImageDescriptor(Object object) {
279 299
			return IImageKeys.getImageDescriptor(IImageKeys.COOCMATRIX);
280 300
		}
281

  
301
		
282 302
		@Override
283 303
		public String getLabel(Object o) {
284 304
			return ((QueryAutoCooccurrence) o).getName();
285 305
		}
286

  
306
		
287 307
		@Override
288 308
		public Object getParent(Object o) {
289 309
			if (((QueryAutoCooccurrence) o).getPartition() != null) {
290 310
				return ((QueryAutoCooccurrence) o).getPartition();
291
			} else {
311
			}
312
			else {
292 313
				return ((QueryAutoCooccurrence) o).getCorpus();
293 314
			}
294 315
		}
295 316
	};
296

  
317
	
297 318
	@Override
298 319
	public Object getAdapter(Class adapter) {
299 320
		return coocMatrixAdapter;
300 321
	}
301

  
322
	
302 323
	@Override
303 324
	public String getSimpleName() {
304 325
		return "QueryCooccurrence";
305 326
	}
306

  
327
	
307 328
	@Override
308 329
	public String getDetails() {
309 330
		return queries.toString();
310 331
	}
311

  
332
	
312 333
	@Override
313 334
	public boolean canCompute() {
314 335
		return corpus != null;
315 336
	}
316

  
337
	
317 338
	@Override
318 339
	public boolean setParameters(TXMParameters parameters) {
319
		//FIXME: not yet implemented.
340
		// FIXME: not yet implemented.
320 341
		System.err.println("QueryAutoCooccurrence.setParameters(): not yet implemented.");
321 342
		return false;
322 343
	}
323

  
344
	
324 345
	@Override
325 346
	public boolean saveParameters() throws Exception {
326
		//FIXME: not yet implemented.
347
		// FIXME: not yet implemented.
327 348
		System.err.println("QueryAutoCooccurrence.saveParameters(): not yet implemented.");
328 349
		return false;
329 350
	}
330

  
351
	
331 352
	@Override
332 353
	public boolean loadParameters() throws Exception {
333
		//FIXME: not yet implemented.
354
		// FIXME: not yet implemented.
334 355
		System.err.println("QueryAutoCooccurrence.loadParameters(): not yet implemented.");
335 356
		return false;
336 357
	}
337

  
358
	
338 359
	@Override
339 360
	public String getResultType() {
340 361
		return "Query auto cooccurrence";
341 362
	}
342

  
363
	
343 364
}
tmp/org.txm.edition.rcp/src/org/txm/edition/rcp/handlers/OpenEdition.java (revision 2602)
63 63
 * choose one of the text used in the partition @ author mdecorde.
64 64
 */
65 65
public class OpenEdition extends AbstractHandler {
66

  
66
	
67 67
	/** The Constant ID. */
68 68
	public final static String ID = "org.txm.synopticedition.rcp.handlers.OpenEdition"; //$NON-NLS-1$
69

  
69
	
70 70
	/** The lastopenedfile. */
71 71
	public static String lastopenedfile;
72

  
73
	/* (non-Javadoc)
72
	
73
	/*
74
	 * (non-Javadoc)
74 75
	 * @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent)
75 76
	 */
76 77
	@Override
77 78
	public Object execute(ExecutionEvent event) throws ExecutionException {
78

  
79
		
79 80
		IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getCurrentSelection(event);
80 81
		if (selection.getFirstElement() instanceof CQPCorpus) {
81 82
			try {
82 83
				CQPCorpus c = (CQPCorpus) selection.getFirstElement();
83
				//				Shell shell = HandlerUtil.getActiveWorkbenchWindowChecked(event).getShell();
84

  
85
				//EditionSelectorDialog d = new EditionSelectorDialog(shell, c, null);
84
				// Shell shell = HandlerUtil.getActiveWorkbenchWindowChecked(event).getShell();
85
				
86
				// EditionSelectorDialog d = new EditionSelectorDialog(shell, c, null);
86 87
				SynopticEditionEditor editor = null;
87
				//				if (c.getEditionNames().size() > 1 && d.open() == Window.OK) {
88
				//					Object[] rez = d.getResult();
89
				//					String[] rezS = new String[rez.length];
90
				//					for (int i =0 ; i < rez.length ; i++) rezS[i] = rez[i].toString();
91
				//					editor = openEdition(c, rezS);
92
				//				} else 
88
				// if (c.getEditionNames().size() > 1 && d.open() == Window.OK) {
89
				// Object[] rez = d.getResult();
90
				// String[] rezS = new String[rez.length];
91
				// for (int i =0 ; i < rez.length ; i++) rezS[i] = rez[i].toString();
92
				// editor = openEdition(c, rezS);
93
				// } else
93 94
				String[] editionsToOpen = getDefaultEditions(c);
94

  
95
				
95 96
				if (editionsToOpen.length == 0) { // the defaultEdition parameter is not set
96 97
					List<String> editionNames = c.getProject().getEditionNames();
97 98
					if (editionNames.size() > 0) { // use the first edition declared
98 99
						editionsToOpen = new String[1];
99 100
						editionsToOpen[0] = editionNames.get(0);
100 101
						Log.info(NLS.bind(EditionUIMessages.openingWithFirstEditionNoDefaultEditionSetColonP0, editionNames.get(0)));
101
					} else { // no edition in the corpus
102
					}
103
					else { // no edition in the corpus
102 104
						Log.warning(EditionUIMessages.noEditionToOpen);
103 105
						editionsToOpen = new String[0];
104 106
						return false;
105 107
					}
106
				} else {
108
				}
109
				else {
107 110
					Log.info(NLS.bind(EditionUIMessages.openingDefaultEditionsColonP0, StringUtils.join(editionsToOpen, ", ")));
108 111
				}
109

  
112
				
110 113
				editor = openEdition(c, editionsToOpen);
111

  
112
				//				if (editor != null)
113
				//					editor.firstPage();
114
			} catch (Exception e) {
114
				
115
				// if (editor != null)
116
				// editor.firstPage();
117
			}
118
			catch (Exception e) {
115 119
				Log.severe(NLS.bind(EditionUIMessages.errorWhileOpeningEditionColonP0, e));
116 120
				org.txm.utils.logger.Log.printStackTrace(e);
117 121
			}
118
		} else {
122
		}
123
		else {
119 124
			Log.warning(EditionUIMessages.abortingColonSelectionIsNotACorpus);
120 125
		}
121 126
		return null;
122 127
	}
123

  
128
	
124 129
	public static String[] getDefaultEditions(Project p) {
125
		return p.getDefaultEdition().split(","); //$NON-NLS-1$ //$NON-NLS-2$
130
		return p.getDefaultEdition().split(","); //$NON-NLS-1$
126 131
	}
127

  
132
	
128 133
	public static String[] getDefaultEditions(CQPCorpus c) {
129 134
		return getDefaultEditions(c.getProject());
130 135
	}
131

  
136
	
132 137
	/**
133
	 * Open edition, but don't show a page 
138
	 * Open edition, but don't show a page
134 139
	 *
135 140
	 * @param corpus the corpus
136 141
	 * @return the object
......
140 145
	}
141 146
	
142 147
	/**
143
	 * Open edition, but don't show a page 
148
	 * Open edition, but don't show a page
144 149
	 *
145 150
	 * @param corpus the corpus
146 151
	 * @return the object
147 152
	 */
148 153
	public static SynopticEditionEditor openEdition(CQPCorpus corpus, List<String> editions) {
149 154
		String textid = null;
150

  
151
		Log.fine("Opening edition of "+corpus); //$NON-NLS-1$
155
		
156
		Log.fine("Opening edition of " + corpus); //$NON-NLS-1$
152 157
		try {
153 158
			Text text = null;
154 159
			if (corpus instanceof Subcorpus) {
155
				Subcorpus sub = (Subcorpus)corpus;
160
				Subcorpus sub = (Subcorpus) corpus;
156 161
				sub.compute(false);
157 162
				List<Match> matches = sub.getMatches();
158 163
				if (matches.size() > 0) {
159 164
					StructuralUnit text_su = corpus.getStructuralUnit("text"); //$NON-NLS-1$
160 165
					Property text_id = text_su.getProperty("id"); //$NON-NLS-1$
161

  
166
					
162 167
					textid = matches.get(0).getValueForProperty(text_id);
163 168
					if (textid != null) text = corpus.getProject().getText(textid);
164 169
				}
165 170
			}
166
			//			QueryResult result = corpus.query(new Query("<text> []"), "get_edition", false); //$NON-NLS-1$ //$NON-NLS-2$ 
167
			//			StructuralUnit text_su = corpus.getStructuralUnit("text"); //$NON-NLS-1$
168
			//			Property text_id = text_su.getProperty("id"); //$NON-NLS-1$
169

  
170
			// 			if (result.getNMatch() > 0) textid = result.getMatches(0, 1).get(0).getValueForProperty(text_id);
171
			// QueryResult result = corpus.query(new Query("<text> []"), "get_edition", false); //$NON-NLS-1$ //$NON-NLS-2$
172
			// StructuralUnit text_su = corpus.getStructuralUnit("text"); //$NON-NLS-1$
173
			// Property text_id = text_su.getProperty("id"); //$NON-NLS-1$
174
			
175
			// if (result.getNMatch() > 0) textid = result.getMatches(0, 1).get(0).getValueForProperty(text_id);
171 176
			MainCorpus maincorpus = corpus.getMainCorpus();
172

  
173
			//			if (textid != null) text = maincorpus.getText(textid);
174

  
177
			
178
			// if (textid != null) text = maincorpus.getText(textid);
179
			
175 180
			if (text == null) {
176 181
				text = maincorpus.getProject().getFirstText();
177

  
182
				
178 183
				if (text == null) {
179 184
					System.out.println(NLS.bind(EditionUIMessages.couldNotFindFirstTextOfP0IDInTheCorpus, textid));
180 185
					return null;
181 186
				}
182

  
187
				
183 188
				textid = text.getName();
184 189
			}
185

  
186
			//String[] editions = {maincorpus.getDefaultEdition()};
190
			
191
			// String[] editions = {maincorpus.getDefaultEdition()};
187 192
			IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
188 193
			IWorkbenchPage page = window.getActivePage();
189

  
194
			
190 195
			SynopticEditorInput editorInput = new SynopticEditorInput(text, corpus, editions);
191 196
			SynopticEditionEditor editor = (SynopticEditionEditor) page.openEditor(editorInput, SynopticEditionEditor.ID, true);
192

  
197
			
193 198
			return editor;
194

  
195
		} catch (Exception e) {
199
			
200
		}
201
		catch (Exception e) {
196 202
			Log.printStackTrace(e);
197 203
			System.out.println(NLS.bind(EditionUIMessages.errorWhileOpeningEditorColonP0, e));
198 204
			return null;
199 205
		}
200 206
	}
201
}
207
}
tmp/org.txm.index.core/src/org/txm/index/core/functions/___Lexicon2.java (revision 2602)
173 173
	@Override
174 174
	protected boolean _computeLines() throws Exception {
175 175
		if (this.getParent() instanceof MainCorpus) {
176
			return computeWithMainCorpus((MainCorpus) this.getParent(), pProperty, monitor);
176
			return computeWithMainCorpus((MainCorpus) this.getParent(), pProperty, this.splitMonitor(70));
177 177
		}
178 178
		else if (this.getParent() instanceof Subcorpus) {
179
			return computewithSubCorpus((Subcorpus) this.getParent(), pProperty, monitor);
179
			return computewithSubCorpus((Subcorpus) this.getParent(), pProperty, this.splitMonitor(70));
180 180
		}
181 181
		else {
182 182
			Log.severe("Error: Lexicon parent is neither a Maincorpus nor a Subcorpus."); //$NON-NLS-1$
......
198 198
	protected boolean computeWithMainCorpus(MainCorpus corpus, Property property, IProgressMonitor monitor) throws CqiClientException {
199 199
		// System.out.println("in "+this.getCqpId()+" look for cached lexicon "+property);
200 200
		// System.out.println("not found");
201
		this.subTask("Computing lexicon size...");
201
		this.setTask("Computing lexicon size...");
202 202
		Log.finest(IndexCoreMessages.lexicon + corpus.getID());
203 203
		int lexiconSize;
204 204
		try {
......
215 215
		
216 216
		int[] freqs;
217 217
		try {
218
			this.subTask("Computing lexicon frequencies...");
218
			this.setTask("Computing lexicon frequencies...");
219 219
			freqs = CorpusManager.getCorpusManager().getCqiClient().id2Freq(property.getQualifiedName(), ids);
220 220
		}
221 221
		catch (Exception e) {
......
248 248
		int[][] fdist = null;
249 249
		Subcorpus tmp = null;
250 250
		try {
251
			this.subTask("Computing lexicon frequencies...");
251
			this.setTask("Computing lexicon frequencies...");
252 252
			tmp = corpus.createSubcorpus(new CQLQuery("[]"), "S" + corpus.getNextSubcorpusCounter(), true); //$NON-NLS-1$
253 253
			if (tmp != null) {
254 254
				fdist = CorpusManager.getCorpusManager().getCqiClient().fdist1(tmp.getQualifiedCqpId(), 0, ICqiClient.CQI_CONST_FIELD_MATCH, property.getName());
......
343 343
	
344 344
	
345 345
	
346
	@Override
346 347
	public String getDetails() {
347 348
		try {
348 349
			return this.getParent().getName() + " " + this.pProperty.getName(); //$NON-NLS-1$
......
602 603
	 * @param txtseparator the txtseparator
603 604
	 * @return true, if successful
604 605
	 */
606
	@Override
605 607
	@Deprecated
606 608
	public boolean toTxt(File outfile, String encoding, String colseparator, String txtseparator) {
607 609
		// NK: writer declared as class attribute to perform a clean if the operation is interrupted
tmp/org.txm.index.core/src/org/txm/index/core/functions/Lexicon.java (revision 2602)
82 82
			// this.query = new Query("[]"); //$NON-NLS-1$
83 83
			// this.props = new ArrayList<Property>();
84 84
			// this.props.add(property);
85
			Property property = pProperties.get(0);
85
			Property property = this.pProperties.get(0);
86 86
			
87
			CQPLexicon lexicon = CQPLexicon.getLexicon(this.getCorpus(), property, monitor);
87
			CQPLexicon lexicon = CQPLexicon.getLexicon(this.getCorpus(), property, this.splitMonitor(20));
88 88
			lexicon.setProperty(property);
89 89
			lexicon._compute();
90 90
			
tmp/org.txm.index.core/src/org/txm/index/core/functions/PartitionIndex.java (revision 2602)
108 108
			currentpartid++;
109 109
		}
110 110
		
111
		this.worked(30);
112
		
111 113
		setLineCounts();
112 114
		
113 115
		getAllLines();
114 116
		
115 117
		this.filterLines();
116 118
		
117
		this.subTask("Sorting...");
118 119
		
120
		this.worked(30);
121
		
122
		this.setTask("Sorting...");
123
		
119 124
		this.sortLines(SortMode.FREQUNIT, true);
120 125
		
121 126
		this.cut();
122 127
		
128
		this.worked(30);
129
		
123 130
		this.dirty = false;
124 131
		this.pTopIndex = 0;
125 132
		
126
		this.subTask("Index done.");
133
		this.setTask("Index done.");
127 134
		
128 135
		return true;
129 136
	}
tmp/org.txm.index.core/src/org/txm/index/core/functions/Index.java (revision 2602)
188 188
			return false;
189 189
		}
190 190
		// }
191
		
192 191
		this.filterLines();
192
		this.worked(30);
193 193
		
194
		this.subTask("Sorting...");
195
		
194
		this.setTask("Sorting...");
196 195
		this.sortLines(SortMode.FREQUNIT, true);
196
		this.worked(30);
197 197
		
198 198
		this.cut();
199 199
		
200 200
		this.dirty = false;
201 201
		this.pTopIndex = 0;
202 202
		
203
		this.subTask("Index done.");
203
		this.setTask("Index done.");
204 204
		
205 205
		return true;
206 206
	}
tmp/org.txm.cooccurrence.core/src/org/txm/cooccurrence/core/functions/Cooccurrence.java (revision 2602)
259 259
		// FIXME: debug
260 260
		// System.out.println("cooc: "+corpus+" "+query+" "+properties+" "+limit+" "+maxLeft+" "+minLeft+" "+minRight+" "+maxRight+" "+minFreq+" "+minCof+" "+minScore+" "+includeXpivot);
261 261
		
262
		this.subTask(CooccurrenceCoreMessages.info_buildingQueries);
262
		this.setTask(CooccurrenceCoreMessages.info_buildingQueries);
263 263
		
264 264
		// clear data
265 265
		try {
......
283 283
			return false;
284 284
		}
285 285
		
286
		this.subTask(CooccurrenceCoreMessages.info_retreivingMatches);
286
		this.setTask(CooccurrenceCoreMessages.info_retreivingMatches);
287 287
		if (!this.stepGetMatches()) {
288 288
			return false;
289 289
		}
290
		this.worked(10);
290
		this.worked(20);
291 291
		
292
		this.subTask(CooccurrenceCoreMessages.info_buildingLineSignatures);
292
		this.setTask(CooccurrenceCoreMessages.info_buildingLineSignatures);
293 293
		if (!this.stepBuildSignatures()) {
294 294
			return false;
295 295
		}
296
		this.worked(10);
296
		this.worked(20);
297 297
		
298
		this.subTask(CooccurrenceCoreMessages.info_counting);
298
		this.setTask(CooccurrenceCoreMessages.info_counting);
299 299
		if (!this.stepCount()) {
300 300
			return false;
301 301
		}
302
		this.worked(10);
302
		this.worked(20);
303 303
		
304
		this.subTask(CooccurrenceCoreMessages.info_buildingLexicalTable);
304
		this.setTask(CooccurrenceCoreMessages.info_buildingLexicalTable);
305 305
		if (!this.stepBuildLexicalTable()) {
306 306
			return false;
307 307
		}
308 308
		this.worked(10);
309 309
		
310
		this.subTask(CooccurrenceCoreMessages.info_computingSpecificitiesScores);
310
		this.setTask(CooccurrenceCoreMessages.info_computingSpecificitiesScores);
311 311
		if (!this.stepGetScores()) {
312 312
			return false;
313 313
		}
314 314
		
315 315
		this.clearMemory();
316
		this.worked(10);
316
		this.done();
317 317
		
318
		
319 318
		return true;
320 319
	}
321 320
	
......
960 959
				index = new Index(corpus);
961 960
				index.setVisible(false);
962 961
				index.setParameters(new CQLQuery(pCooccurentQueryFilter), pProperties, null, null, null, null);
963
				if (!index.compute(monitor)) {
962
				if (!index.compute(this.splitMonitor(10))) {
964 963
					Log.severe("Cooccurrence internal Index compute failed. Aborting.");
965 964
					return false;
966 965
				}
tmp/org.txm.properties.core/src/org/txm/properties/core/functions/Properties.java (revision 2602)
294 294
	
295 295
	@Override
296 296
	protected boolean _compute() throws Exception {
297
		if (computer._compute(monitor)) {
297
		if (computer._compute(this.splitMonitor(100))) {
298 298
			
299 299
			String txmhome = Toolbox.getTxmHomePath();
300 300
			String filename = computer.getName();
tmp/org.txm.index.rcp/src/org/txm/index/rcp/editors/IndexEditor.java (revision 2602)
164 164
	public void _createPartControl() {
165 165
		
166 166
		
167
		this.index = (Index) this.getResult();
167
		this.index = this.getResult();
168 168
		
169 169
		// Computing listeners
170 170
		ComputeSelectionListener computeSelectionListener = new ComputeSelectionListener(this);
......
214 214
		queryWidget.getQueryWidget().addModifyListener(computeKeyListener);
215 215
		
216 216
		// Word properties selector
217
		propertiesSelector = new PropertiesSelector<WordProperty>(this.getMainParametersComposite(), SWT.NONE);
217
		propertiesSelector = new PropertiesSelector<>(this.getMainParametersComposite(), SWT.NONE);
218 218
		propertiesSelector.setLayoutData(new GridData(GridData.FILL, GridData.FILL, false, false));
219 219
		propertiesSelector.setLayout(new GridLayout(3, false));
220 220
		try {
......
484 484
			lines = index.getLines(from, to);
485 485
		}
486 486
		else {
487
			lines = new ArrayList<Line>();
487
			lines = new ArrayList<>();
488 488
		}
489 489
		
490 490
		navigationArea.setInfoLineText("" + (from + 1), //$NON-NLS-1$
......
527 527
	 */
528 528
	@Override
529 529
	public void setFocus() {
530
		super.setFocus();
530 531
		if (this.queryWidget != null && !this.queryWidget.isDisposed()) {
531 532
			this.queryWidget.setFocus();
532 533
		}
tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Partition.java (revision 2602)
136 136
		Log.fine(NLS.bind(SearchEngineCoreMessages.info_creatingNewPartition, this.getParent(), this.userName));
137 137
		long start = System.currentTimeMillis();
138 138
		
139
		this.subTask("Building parts...");
139
		this.setTask("Building parts...");
140 140
		
141 141
		for (int i = 0; i < pQueries.size(); i++) {
142 142
			String queryS = pQueries.get(i);
......
150 150
			}
151 151
			new Part(this, partName, queryS);
152 152
			
153
			this.worked(1);
154 153
		}
155 154
		long end = System.currentTimeMillis();
156 155
		Log.fine(NLS.bind(SearchEngineCoreMessages.info_partitionCreatedInXMs, this.userName, (end - start)));
tmp/org.txm.lexicaltable.core/src/org/txm/lexicaltable/core/functions/LexicalTable.java (revision 2602)
188 188
		// parts lexicons
189 189
		List<CQPLexicon> partsLexicons = new ArrayList<>();
190 190
		for (int i = 0; i < partition.getPartsCount(); i++) {
191
			partsLexicons.add(CQPLexicon.getLexicon(partition.getParts().get(i), this.property, this.monitor, false));
191
			partsLexicons.add(CQPLexicon.getLexicon(partition.getParts().get(i), this.property, this.splitMonitor(1), false));
192 192
		}
193 193
		
194 194
		// Corpus global lexicon
195
		CQPLexicon corpusLexicon = CQPLexicon.getLexicon(partition.getParent(), this.property, this.monitor, false);
195
		CQPLexicon corpusLexicon = CQPLexicon.getLexicon(partition.getParent(), this.property, this.splitMonitor(1), false);
196 196
		
197 197
		ArrayList<String> filteredForms = new ArrayList<>();
198 198
		// create a copy and filter line with Fmin;
......
351 351
			
352 352
			Subcorpus subcorpus = (Subcorpus) this.parent;
353 353
			CQPCorpus parentCorpus = subcorpus.getCorpusParent();
354
			CQPLexicon l1 = CQPLexicon.getLexicon(parentCorpus, this.property, this.monitor, false);
355
			CQPLexicon l2 = CQPLexicon.getLexicon(subcorpus, this.property, this.monitor, false);
354
			CQPLexicon l1 = CQPLexicon.getLexicon(parentCorpus, this.property, this.splitMonitor(20), false);
355
			CQPLexicon l2 = CQPLexicon.getLexicon(subcorpus, this.property, this.splitMonitor(20), false);
356 356
			
357 357
			this.statsData = new LexicalTableImpl(getNextName(), l1, l2);
358 358
		}
tmp/org.txm.rcp/src/main/java/org/txm/rcp/handlers/export/ExportResult.java (revision 2602)
36 36
import org.eclipse.core.runtime.IProgressMonitor;
37 37
import org.eclipse.core.runtime.IStatus;
38 38
import org.eclipse.core.runtime.Status;
39
import org.eclipse.core.runtime.SubMonitor;
39 40
import org.eclipse.jface.viewers.IStructuredSelection;
40 41
import org.eclipse.osgi.util.NLS;
41 42
import org.eclipse.swt.SWT;
......
51 52
import org.txm.rcp.messages.TXMUIMessages;
52 53
import org.txm.rcp.swt.dialog.LastOpened;
53 54
import org.txm.rcp.utils.JobHandler;
55

  
54 56
/**
55 57
 * Exports a result by calling the function toTxt(File f) then opens or not the result in the text editor according to the preferences.
58
 * 
56 59
 * @author mdecorde, sjacquot
57 60
 */
58 61
public class ExportResult extends AbstractHandler {
59

  
62
	
60 63
	private static final String ID = "org.txm.rcp.commands.function.ExportResult"; //$NON-NLS-1$
64
	
61 65
	/** The selection. */
62 66
	private IStructuredSelection selection;
63

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

  
69
	// private static String lastopenedfile;
70
	
67 71
	/**
68 72
	 * Export a TXM result in a CSV file.
69 73
	 *
......
76 80
		selection = (IStructuredSelection) HandlerUtil.getCurrentSelection(event);
77 81
		final Object s = selection.getFirstElement();
78 82
		Shell shell = HandlerUtil.getActiveWorkbenchWindowChecked(event).getShell();
79

  
80
		//String txmhome = Toolbox.getTxmHomePath();
83
		
84
		// String txmhome = Toolbox.getTxmHomePath();
81 85
		FileDialog dialog = new FileDialog(shell, SWT.SAVE);
82

  
83
		String extensions[] = {"*.csv"}; //$NON-NLS-1$
86
		
87
		String extensions[] = { "*.csv" }; //$NON-NLS-1$
84 88
		if (s instanceof TXMResult) {
85
			extensions = ((TXMResult)s).getExportTXTExtensions(); //$NON-NLS-1$
86
			dialog.setFileName(((TXMResult)s).getValidFileName());
89
			extensions = ((TXMResult) s).getExportTXTExtensions();
90
			dialog.setFileName(((TXMResult) s).getValidFileName());
87 91
		}
88 92
		dialog.setFilterExtensions(extensions);
89

  
93
		
90 94
		if (LastOpened.getFile(ID) != null) {
91 95
			dialog.setFilterPath(LastOpened.getFolder(ID));
92 96
		}
93

  
97
		
94 98
		if (dialog.open() != null) {
95 99
			StatusLine.setMessage(TXMUIMessages.exportingResults);
96 100
			String filepath = dialog.getFilterPath() + "/" + dialog.getFileName(); //$NON-NLS-1$
97 101
			if (!(filepath.endsWith(extensions[0].substring(1))))
98 102
				filepath += extensions[0].substring(1);
99

  
103
			
100 104
			final File outfile = new File(filepath);
101 105
			LastOpened.set(ID, outfile.getParent(), outfile.getName());
102 106
			try {
103 107
				outfile.createNewFile();
104
			} catch (IOException e1) {
108
			}
109
			catch (IOException e1) {
105 110
				System.err.println(NLS.bind(TXMUIMessages.exportColonCantCreateFileP0ColonP1, outfile, e1));
106 111
			}
107 112
			if (!outfile.canWrite()) {
......
112 117
				System.out.println("Error: " + outfile + " is not a file"); //$NON-NLS-1$ //$NON-NLS-2$
113 118
				return null;
114 119
			}
115

  
120
			
116 121
			final String encoding = TBXPreferences.getInstance().getString(TBXPreferences.EXPORT_ENCODING);
117 122
			String _colseparator = TBXPreferences.getInstance().getString(TBXPreferences.EXPORT_COL_SEPARATOR);
118 123
			final String colseparator = _colseparator;
119 124
			String _txtseparator = TBXPreferences.getInstance().getString(TBXPreferences.EXPORT_TXT_SEPARATOR);
120 125
			final String txtseparator = _txtseparator;
121

  
126
			
122 127
			JobHandler jobhandler = new JobHandler(TXMUIMessages.exportingResults) {
128
				
123 129
				@Override
124 130
				protected IStatus run(IProgressMonitor monitor) {
131
					
132
					// convert the monitor into sub-monitor
133
					SubMonitor subMonitor = SubMonitor.convert(monitor, TXMUIMessages.exporting, 100);
134
					
125 135
					try {
126
						this.runInit(monitor);
127
						monitor.beginTask(TXMUIMessages.exporting, 100);
128

  
136
						
137
						this.runInit(subMonitor);
138
						
129 139
						if (s instanceof TXMResult) {
130
							TXMResult r = (TXMResult)s;
140
							TXMResult r = (TXMResult) s;
131 141
							
132 142
							// compute the result if needed
133 143
							if (!r.isAltered()) {
134 144
								r.compute(this);
135 145
							}
136 146
							
137
							r.setCurrentMonitor(this); // Allows Functions to protect themselves from interruption
147
							r.setCurrentMonitor(subMonitor); // Allows Functions to protect themselves from interruption
138 148
							r.toTxt(outfile, encoding, colseparator, txtseparator);
139
						} else {
149
						}
150
						else {
140 151
							System.out.println("Exported object is not a TXMResult result");
141 152
							return Status.CANCEL_STATUS;
142 153
						}
143

  
154
						
144 155
						if (outfile.exists()) {
145 156
							// Open internal editor in the UI thread
146
							if(TBXPreferences.getInstance().getBoolean(TBXPreferences.EXPORT_SHOW))	{
157
							if (TBXPreferences.getInstance().getBoolean(TBXPreferences.EXPORT_SHOW)) {
147 158
								this.syncExec(new Runnable() {
159
									
148 160
									@Override
149 161
									public void run() {
150 162
										EditFile.openfile(outfile.getAbsolutePath());
151 163
									}
152 164
								});
153 165
							}
154

  
166
							
155 167
							System.out.println(NLS.bind("", outfile.getAbsolutePath())); //$NON-NLS-1$
156
						} else {
168
						}
169
						else {
157 170
							System.out.println(NLS.bind(TXMUIMessages.failedToExportResultP0ColonP1, outfile.getAbsolutePath()));
158 171
						}
159
					} catch (ThreadDeath td) {
172
					}
173
					catch (ThreadDeath td) {
160 174
						return Status.CANCEL_STATUS;
161
					} catch (Exception e) {
175
					}
176
					catch (Exception e) {
162 177
						System.out.println(NLS.bind(TXMUIMessages.failedToExportResultP0ColonP1, s, e));
163 178
						org.txm.utils.logger.Log.printStackTrace(e);
164 179
						return Status.CANCEL_STATUS;
165
					} finally {
166
						if (s instanceof TXMResult)
167
							((TXMResult)s).setCurrentMonitor(null);
168
						monitor.done();
180
					}
181
					finally {
182
						if (s instanceof TXMResult) {
183
							((TXMResult) s).setCurrentMonitor(null);
184
						}
185
						subMonitor.done();
169 186
						JobsTimer.stopAndPrint();
170 187
					}
171 188
					return Status.OK_STATUS;
172 189
				}
173 190
			};
174

  
191
			
175 192
			jobhandler.startJob();
176 193
		}
177 194
		return null;
178 195
	}
179
}
196
}
tmp/org.txm.rcp/src/main/java/org/txm/rcp/handlers/export/ExportResultParameters.java (revision 2602)
36 36
import org.eclipse.core.runtime.IProgressMonitor;
37 37
import org.eclipse.core.runtime.IStatus;
38 38
import org.eclipse.core.runtime.Status;
39
import org.eclipse.core.runtime.SubMonitor;
39 40
import org.eclipse.jface.viewers.IStructuredSelection;
40 41
import org.eclipse.osgi.util.NLS;
41 42
import org.eclipse.swt.SWT;
......
51 52
import org.txm.rcp.messages.TXMUIMessages;
52 53
import org.txm.rcp.swt.dialog.LastOpened;
53 54
import org.txm.rcp.utils.JobHandler;
55

  
54 56
// TODO: Auto-generated Javadoc
55 57
/**
56 58
 * export a result of a result by calling the function toTxt(File f) then show
57 59
 * the result in the text editor @ author mdecorde.
58 60
 */
59 61
public class ExportResultParameters extends AbstractHandler {
60

  
62
	
61 63
	private static final String ID = ExportResultParameters.class.getName();
62

  
64
	
63 65
	/**
64 66
	 * Export a TXM result parameters in the preferences format
65 67
	 *
......
75 77
			return null;
76 78
		}
77 79
		Shell shell = HandlerUtil.getActiveWorkbenchWindowChecked(event).getShell();
78

  
79
		//String txmhome = Toolbox.getTxmHomePath();
80
		
81
		// String txmhome = Toolbox.getTxmHomePath();
80 82
		FileDialog dialog = new FileDialog(shell, SWT.SAVE);
81

  
82
		String extensions[] = {"*.parameters"}; //$NON-NLS-1$
83
		
84
		String extensions[] = { "*.parameters" }; //$NON-NLS-1$
83 85
		dialog.setFilterExtensions(extensions);
84
		dialog.setFileName(((TXMResult)s).getValidFileName()+".parameters");
86
		dialog.setFileName(((TXMResult) s).getValidFileName() + ".parameters");
85 87
		if (LastOpened.getFile(ID) != null) {
86 88
			dialog.setFilterPath(LastOpened.getFolder(ID));
87 89
		}
88

  
90
		
89 91
		if (dialog.open() != null) {
90 92
			StatusLine.setMessage(TXMUIMessages.exportingResults);
91 93
			String filepath = dialog.getFilterPath()
92 94
					+ "/" + dialog.getFileName(); //$NON-NLS-1$
93 95
			if (!(filepath.endsWith(extensions[0].substring(1))))
94 96
				filepath += extensions[0].substring(1);
95

  
97
			
96 98
			final File outfile = new File(filepath);
97 99
			LastOpened.set(ID, outfile.getParent(), outfile.getName());
98 100
			try {
99 101
				outfile.createNewFile();
100
			} catch (IOException e1) {
102
			}
103
			catch (IOException e1) {
101 104
				System.err.println(NLS.bind(TXMUIMessages.exportColonCantCreateFileP0ColonP1, outfile, e1));
102 105
			}
103 106
			if (!outfile.canWrite()) {
......
108 111
				System.out.println("Error: " + outfile + " is not a file"); //$NON-NLS-1$ //$NON-NLS-2$
109 112
				return null;
110 113
			}
111

  
114
			
112 115
			JobHandler jobhandler = new JobHandler(TXMUIMessages.exportingResults) {
116
				
113 117
				@Override
114 118
				protected IStatus run(IProgressMonitor monitor) {
119
					
120
					// convert the monitor into sub-monitor
121
					SubMonitor subMonitor = SubMonitor.convert(monitor, TXMUIMessages.exporting, 100);
122
					
115 123
					try {
116
						this.runInit(monitor);
117
						monitor.beginTask(TXMUIMessages.exporting, 100);
118

  
119
							TXMResult r = (TXMResult)s;
120
							if (r.isAltered()) {
121
								System.out.println("Warning: only parameters are exported, manual changes are not transfered.");
122
							} else {
123
								r.compute(this); // refresh result
124
							}
125
							r.setCurrentMonitor(this); // Allows Functions to protect themselves from interruption
126
							if (r.toParametersFile(outfile)) {
127
								System.out.println(NLS.bind("Parameters exported to the {0} file.", outfile));
128
							}
129

  
124
						
125
						this.runInit(subMonitor);
126
						
127
						TXMResult r = (TXMResult) s;
128
						if (r.isAltered()) {
129
							System.out.println("Warning: only parameters are exported, manual changes are not transfered.");
130
						}
131
						else {
132
							r.compute(subMonitor); // refresh result
133
						}
134
						r.setCurrentMonitor(subMonitor); // Allows Functions to protect themselves from interruption
135
						if (r.toParametersFile(outfile)) {
136
							System.out.println(NLS.bind("Parameters exported to the {0} file.", outfile));
137
						}
138
						
130 139
						if (outfile.exists()) {
131 140
							// Open internal editor in the UI thread
132
							if(TBXPreferences.getInstance().getBoolean(TBXPreferences.EXPORT_SHOW))	{
141
							if (TBXPreferences.getInstance().getBoolean(TBXPreferences.EXPORT_SHOW)) {
133 142
								this.syncExec(new Runnable() {
143
									
134 144
									@Override
135 145
									public void run() {
136 146
										EditFile.openfile(outfile.getAbsolutePath());
137 147
									}
138 148
								});
139 149
							}
140

  
150
							
141 151
							System.out.println(NLS.bind("", outfile.getAbsolutePath())); //$NON-NLS-1$
142
						} else {
152
						}
153
						else {
143 154
							System.out.println(NLS.bind(TXMUIMessages.failedToExportResultP0ColonP1, outfile.getAbsolutePath()));
144 155
						}
145
					} catch (ThreadDeath td) {
146
						if (s instanceof TXMResult)
147
							((TXMResult)s).clean();
156
					}
157
					catch (ThreadDeath td) {
158
						if (s instanceof TXMResult) {
159
							((TXMResult) s).clean();
160
						}
148 161
						return Status.CANCEL_STATUS;
149
					} catch (Exception e) {
162
					}
163
					catch (Exception e) {
150 164
						System.out.println(NLS.bind(TXMUIMessages.failedToExportResultP0ColonP1, s, e));
151 165
						org.txm.utils.logger.Log.printStackTrace(e);
152 166
						return Status.CANCEL_STATUS;
153
					} finally {
154
						if (s instanceof TXMResult)
155
							((TXMResult)s).setCurrentMonitor(null);
156
						monitor.done();
167
					}
168
					finally {
169
						if (s instanceof TXMResult) {
170
							((TXMResult) s).setCurrentMonitor(null);
171
						}
172
						subMonitor.done();
157 173
						JobsTimer.stopAndPrint();
158 174
					}
159 175
					return Status.OK_STATUS;
160 176
				}
161 177
			};
162

  
178
			
163 179
			jobhandler.startJob();
164 180
		}
165 181
		return null;
166 182
	}
167
}
183
}
tmp/org.txm.rcp/src/main/java/org/txm/rcp/commands/workspace/UpdateCorpus.java (revision 2602)
6 6
import org.eclipse.core.runtime.IProgressMonitor;
7 7
import org.eclipse.core.runtime.IStatus;
8 8
import org.eclipse.core.runtime.Status;
9
import org.eclipse.core.runtime.SubMonitor;
9 10
import org.eclipse.jface.viewers.ISelection;
10 11
import org.eclipse.jface.viewers.IStructuredSelection;
11 12
import org.eclipse.osgi.util.NLS;
......
87 88
			
88 89
			@Override
89 90
			protected IStatus run(IProgressMonitor monitor) {
90
				project.setCurrentMonitor(monitor);
91
				project.setCurrentMonitor(SubMonitor.convert(monitor));
91 92
				try {
92 93
					if (project.compute(true)) { // TODO children should be recomputed later when the user needs it
93 94
						
tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditor.java (revision 2602)
17 17
import org.eclipse.core.runtime.Platform;
18 18
import org.eclipse.core.runtime.SafeRunner;
19 19
import org.eclipse.core.runtime.Status;
20
import org.eclipse.core.runtime.SubMonitor;
20 21
import org.eclipse.core.runtime.jobs.Job;
21 22
import org.eclipse.jface.action.MenuManager;
22 23
import org.eclipse.jface.dialogs.MessageDialog;
......
39 40
import org.eclipse.swt.widgets.Display;
40 41
import org.eclipse.swt.widgets.Group;
41 42
import org.eclipse.swt.widgets.Menu;
42
import org.eclipse.swt.widgets.ProgressBar;
43 43
import org.eclipse.swt.widgets.Shell;
44 44
import org.eclipse.swt.widgets.Spinner;
45 45
import org.eclipse.swt.widgets.Table;
......
758 758
	@Override
759 759
	public void setFocus() {
760 760
		
761
		this.parent.setFocus();
761 762
		// this.resultArea.setFocus();
762 763
		// FIXME SJ: this code leads to a bug, the focus must not be regiven to the main parameter after each computing of all result editors
763 764
		// if (mainParametersComposite != null && !mainParametersComposite.isDisposed()) {
......
881 882
		// FIXME: SJ: tests to hide/display the result area while computing
882 883
		// this.resultArea.setVisible(false);
883 884
		
884
		this.computingJob = new JobHandler(TXMCoreMessages.bind(TXMUIMessages.computing, this.getResult().getName())) {
885
		this.computingJob = new JobHandler(this.getResult().getComputingStartMessage()) {
885 886
			
886 887
			@Override
887 888
			protected IStatus run(IProgressMonitor monitor) {
888 889
				
889
				// monitor.beginTask("long process simulation test", 10);
890
				// for (int i = 0; i < 12; i++) {
891
				// try {
892
				// Thread.sleep(25);
893
				// }
894
				// catch (InterruptedException e) {
895
				// // TODO Auto-generated catch block
896
				// e.printStackTrace();
897
				// }
898
				// monitor.worked(1);
899
				// }
890
				// convert the monitor into sub-monitor
891
				SubMonitor subMonitor = SubMonitor.convert(monitor);
900 892
				
901
				this.runInit(monitor);
893
				this.runInit(subMonitor);
902 894
				
903 895
				if (isLocked()) {
904 896
					return Status.CANCEL_STATUS;
......
907 899
				try {
908 900
					JobsTimer.start();
909 901
					
910
					// FIXME: SJ: tests
911
					// showBusy(true);
912
					
902
					// update the TXMResult data from Editor fields
913 903
					this.syncExec(new Runnable() {
914 904
						
915 905
						@Override
......
968 958
						return Status.CANCEL_STATUS;
969 959
					}
970 960
					
971
					// computing result
972
					monitor.beginTask(TXMEditor.this.getResult().getComputingStartMessage(), 100);
961
					// compute result
962
					subMonitor.beginTask(TXMEditor.this.getResult().getComputingStartMessage(), 100);
973 963
					
974 964
					notifyExtensions("notifyStartOfCompute"); //$NON-NLS-1$
975 965
					
976
					if (!TXMEditor.this.getResult().compute(monitor)) {
966
					if (!TXMEditor.this.getResult().compute(subMonitor.split(50))) {
977 967
						Log.fine("TXMEditor.compute(): " + TXMEditor.this.getClass().getSimpleName() + ": computing failed.");
978 968
					}
979 969
					
980 970
					notifyExtensions("notifyEndOfCompute"); //$NON-NLS-1$
981 971
					
982
					monitor.worked(50);
972
					// monitor.worked(50);
983 973
					
984
					// refreshing the UI
974
					// refresh the UI (especially update the Editor fields from the TXMResult data
985 975
					this.syncExec(new Runnable() {
986 976
						
987 977
						@Override
......
1018 1008
					Log.printStackTrace(e);
1019 1009
				}
1020 1010
				finally {
1021
					monitor.done();
1011
					subMonitor.done();
1022 1012
					JobsTimer.stopAndPrint();
1023 1013
				}
1024 1014
				return Status.OK_STATUS;
......
1058 1048
		IWorkbenchWindow window = TXMWindows.getActiveWindow();
1059 1049
		IWorkbenchPage page = window.getActivePage();
1060 1050
		try {
1051
			
1052
			// boolean wasAlreadyOpened = true;
1061 1053
			boolean wasAlreadyOpened = SWTEditorsUtils.isOpenEditor(editorInput, editorId);
1062 1054
			// TODO pre-compute result ?
1063 1055
			// if (!wasAlreadyOpened && (RCPPreferences.getInstance().getBoolean(RCPPreferences.AUTO_COMPUTE_ON_EDITOR_OPEN))) {
......
1068 1060
			// since some editor fields need some values of their parent,
1069 1061
			// ensure the parents branch is ready (e.g. Sub-corpus properties in Cooccurrence editor, etc.)
1070 1062
			// show modal blocking cancelable progression dialog
1071
			if (!wasAlreadyOpened) {
1063
			if (!wasAlreadyOpened && !editorInput.getResult().getParent().hasBeenComputedOnce()) {
1072 1064
				try {
1073
					if (!editorInput.getResult().getParent().hasBeenComputedOnce()) {
1074
						AdvancedProgressMonitorDialog dialog = new AdvancedProgressMonitorDialog(window.getShell(), editorInput.getResult().getParent());
1075
						dialog.runComputingProcess(true);
1076
					}
1065
					// AdvancedProgressMonitorDialog dialog = new AdvancedProgressMonitorDialog(window.getShell(), editorInput.getResult().getParent());
1066
					// FIXME: SJ: finally it may be better to call the current result computing? it will do the parents branch computing but
1067
					// the main task stays the compute of the result itself, not the parent
1068
					AdvancedProgressMonitorDialog dialog = new AdvancedProgressMonitorDialog(window.getShell(), editorInput.getResult());
1069
					dialog.runComputingProcess(true);
1077 1070
				}
1078
				// Canceling
1071
				// user canceling case
1079 1072
				catch (InterruptedException e) {
1080
					
1081 1073
					CorporaView.refresh();
1082
					
1083 1074
					return null;
1084 1075
				}
1085 1076
			}
1086 1077
			
1087 1078
			
1088 1079
			// opening the editor
1089
			IEditorPart e = page.openEditor(editorInput, editorId, true, IWorkbenchPage.MATCH_INPUT | IWorkbenchPage.MATCH_ID);
1090
			if (e instanceof TXMEditor) {
1091
				editor = (TXMEditor<? extends TXMResult>) e;
1080
			IEditorPart tmpEditor = page.openEditor(editorInput, editorId, true, IWorkbenchPage.MATCH_INPUT | IWorkbenchPage.MATCH_ID);
... Ce différentiel a été tronqué car il excède la taille maximale pouvant être affichée.

Formats disponibles : Unified diff