Révision 2550
tmp/org.txm.rcp/src/main/java/org/txm/rcp/actions/CreateSubcorpusDialog.java (revision 2550) | ||
---|---|---|
30 | 30 |
import java.util.List; |
31 | 31 |
|
32 | 32 |
import org.eclipse.jface.dialogs.Dialog; |
33 |
import org.eclipse.jface.dialogs.IDialogConstants; |
|
33 | 34 |
import org.eclipse.jface.dialogs.MessageDialog; |
34 | 35 |
import org.eclipse.swt.SWT; |
35 | 36 |
import org.eclipse.swt.events.SelectionEvent; |
... | ... | |
168 | 169 |
// First tab |
169 | 170 |
TabItem simpleTab = new TabItem(tabFolder, SWT.NONE); |
170 | 171 |
simpleTab.setText(TXMUIMessages.simple); |
171 |
simplePanel = new SimpleSubcorpusPanel(tabFolder, SWT.NONE, this, corpus); |
|
172 |
simplePanel = new SimpleSubcorpusPanel(tabFolder, SWT.NONE, this.getButton(IDialogConstants.OK_ID), corpus);
|
|
172 | 173 |
simpleTab.setControl(simplePanel); |
173 | 174 |
|
174 | 175 |
// Second tab: assisted mode |
... | ... | |
229 | 230 |
|
230 | 231 |
@Override |
231 | 232 |
public Button getButton(int id) { |
232 |
return this.getButton(id);
|
|
233 |
return super.getButton(id);
|
|
233 | 234 |
} |
234 | 235 |
|
235 | 236 |
/* |
tmp/org.txm.rcp/src/main/java/org/txm/rcp/editors/TXMEditorToolBar.java (revision 2550) | ||
---|---|---|
200 | 200 |
public void widgetSelected(SelectionEvent e) { |
201 | 201 |
if (e.doit) { |
202 | 202 |
setVisible(groupTitle, openCloseButton.getSelection()); |
203 |
selectionListener.widgetSelected(e); |
|
203 | 204 |
} |
204 | 205 |
} |
205 | 206 |
|
... | ... | |
208 | 209 |
}); |
209 | 210 |
|
210 | 211 |
org.txm.rcp.swt.listeners.DropdownSelectionListener listenerOne = openCloseButton.getDropDownListener(); |
211 |
listenerOne.setDefaultSelectionListener(selectionListener); |
|
212 |
//listenerOne.setDefaultSelectionListener(selectionListener);
|
|
212 | 213 |
for (int i = 0 ; i < modes.size() && i < modeSelectionListeners.size(); i++) { |
213 | 214 |
MenuItem item1 = new MenuItem(listenerOne.getMenu(), SWT.PUSH); |
214 | 215 |
item1.setText(modes.get(i)); |
... | ... | |
334 | 335 |
c.setEnabled(enabled); |
335 | 336 |
} |
336 | 337 |
} |
337 |
|
|
338 |
|
|
339 |
public boolean isVisible(String id) { |
|
340 |
if (!groups.containsKey(id)) return false; |
|
341 |
|
|
342 |
if (groups.get(id).isDisposed()) return false; |
|
343 |
|
|
344 |
return groups.get(id).isVisible(); |
|
345 |
} |
|
338 | 346 |
} |
tmp/org.txm.rcp/src/main/java/org/txm/rcp/swt/toolbar/DropDownCheckToolItem.java (revision 2550) | ||
---|---|---|
53 | 53 |
return; // drop down clicked |
54 | 54 |
} |
55 | 55 |
selected = !selected; |
56 |
if (closeIcon != null) { |
|
57 |
if (getSelection()) { |
|
58 |
setImage(closeIcon); |
|
59 |
} else { |
|
60 |
setImage(openIcon); |
|
61 |
} |
|
62 |
} |
|
56 |
updateIcon(); |
|
63 | 57 |
} |
64 | 58 |
|
65 | 59 |
@Override |
... | ... | |
70 | 64 |
this.addSelectionListener(listener); |
71 | 65 |
} |
72 | 66 |
|
67 |
public void updateIcon() { |
|
68 |
if (closeIcon != null) { |
|
69 |
if (getSelection()) { |
|
70 |
setImage(closeIcon); |
|
71 |
} else { |
|
72 |
setImage(openIcon); |
|
73 |
} |
|
74 |
} |
|
75 |
} |
|
76 |
|
|
73 | 77 |
public boolean getSelection() { |
74 | 78 |
return selected; |
75 | 79 |
} |
... | ... | |
80 | 84 |
|
81 | 85 |
public void setSelection(boolean selected) { |
82 | 86 |
this.selected = selected; |
87 |
updateIcon(); |
|
83 | 88 |
} |
84 | 89 |
|
85 | 90 |
@Override |
tmp/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/structures/SimpleSubcorpusPanel.java (revision 2550) | ||
---|---|---|
14 | 14 |
import org.eclipse.swt.events.SelectionListener; |
15 | 15 |
import org.eclipse.swt.layout.GridData; |
16 | 16 |
import org.eclipse.swt.layout.GridLayout; |
17 |
import org.eclipse.swt.widgets.Button; |
|
17 | 18 |
import org.eclipse.swt.widgets.Combo; |
18 | 19 |
import org.eclipse.swt.widgets.Composite; |
19 | 20 |
import org.eclipse.swt.widgets.Label; |
... | ... | |
24 | 25 |
import org.txm.searchengine.cqp.corpus.CQPCorpus; |
25 | 26 |
import org.txm.searchengine.cqp.corpus.StructuralUnit; |
26 | 27 |
import org.txm.searchengine.cqp.corpus.StructuralUnitProperty; |
28 |
import org.txm.searchengine.cqp.corpus.query.CQLQuery; |
|
29 |
import org.txm.searchengine.cqp.corpus.query.SubcorpusCQLQuery; |
|
27 | 30 |
import org.txm.utils.logger.Log; |
28 | 31 |
|
29 | 32 |
public class SimpleSubcorpusPanel extends Composite { |
... | ... | |
36 | 39 |
Combo structuralUnitsCombo; |
37 | 40 |
Combo propertyCombo; |
38 | 41 |
ListViewer valueCombo; |
39 |
|
|
42 |
|
|
40 | 43 |
List<StructuralUnit> structuralUnitsFinal; |
41 |
private CreateSubcorpusDialog dialog;
|
|
44 |
private Button validationButton;
|
|
42 | 45 |
private CQPCorpus corpus; |
43 | 46 |
|
44 |
public SimpleSubcorpusPanel(Composite parent, int style, CreateSubcorpusDialog dialog, CQPCorpus corpus) {
|
|
47 |
public SimpleSubcorpusPanel(Composite parent, int style, Button validationButton, CQPCorpus corpus) {
|
|
45 | 48 |
super(parent, style); |
46 | 49 |
|
47 |
this.dialog = dialog;
|
|
50 |
this.validationButton = validationButton;
|
|
48 | 51 |
this.corpus = corpus; |
49 | 52 |
|
50 | 53 |
GridLayout layout = new GridLayout(2, false); |
... | ... | |
71 | 74 |
|
72 | 75 |
valueCombo = new ListViewer(this, SWT.MULTI |SWT.V_SCROLL | SWT.BORDER | SWT.VIRTUAL); |
73 | 76 |
valueCombo.setContentProvider(new ArrayContentProvider()); |
74 |
// valueCombo.setLabelProvider(new LabelProvider() { |
|
75 |
// |
|
76 |
// @Override |
|
77 |
// public String getText(Object element) { |
|
78 |
// return Activator.getSomeService().key2Value((Integer) element); |
|
79 |
// } |
|
80 |
// |
|
81 |
// }); |
|
77 |
// valueCombo.setLabelProvider(new LabelProvider() {
|
|
78 |
//
|
|
79 |
// @Override
|
|
80 |
// public String getText(Object element) {
|
|
81 |
// return Activator.getSomeService().key2Value((Integer) element);
|
|
82 |
// }
|
|
83 |
//
|
|
84 |
// });
|
|
82 | 85 |
GridData data = new GridData(GridData.FILL,GridData.FILL, true, false); |
83 | 86 |
data.heightHint = 100; |
84 | 87 |
valueCombo.getList().setLayoutData(data); |
85 |
|
|
86 | 88 |
|
89 |
|
|
87 | 90 |
// Load StructuralUnit |
88 | 91 |
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
89 | 92 |
List<StructuralUnit> structuralUnits = null; |
... | ... | |
108 | 111 |
} |
109 | 112 |
|
110 | 113 |
if (structuralUnitsCombo.getItemCount() == 0) { |
111 |
dialog.getButton(IDialogConstants.OK_ID).setEnabled(false); |
|
114 |
if(validationButton != null) { |
|
115 |
validationButton.setEnabled(false); |
|
116 |
} |
|
112 | 117 |
} else { |
113 | 118 |
String[] items = structuralUnitsCombo.getItems(); |
114 | 119 |
structuralUnitsCombo.select(0); |
... | ... | |
165 | 170 |
selectedValues = ((IStructuredSelection)sel).toList(); |
166 | 171 |
} |
167 | 172 |
} |
168 |
|
|
173 |
|
|
169 | 174 |
@Override |
170 | 175 |
public void widgetDefaultSelected(SelectionEvent e) { |
171 | 176 |
// TODO Auto-generated method stub |
172 |
|
|
177 |
|
|
173 | 178 |
} |
174 | 179 |
}); |
175 | 180 |
|
... | ... | |
196 | 201 |
|
197 | 202 |
|
198 | 203 |
valueCombo.setInput(values); |
199 |
|
|
204 |
|
|
200 | 205 |
if (valueCombo.getList().getItemCount() > 0) { |
201 | 206 |
valueCombo.getList().select(0); |
202 | 207 |
selectedValues = new ArrayList<String>(); |
... | ... | |
242 | 247 |
} |
243 | 248 |
reloadValues(); |
244 | 249 |
} |
250 |
|
|
251 |
public String getQueryString() { |
|
252 |
String regexp = ""; //$NON-NLS-1$ |
|
253 |
for (String v : selectedValues) { |
|
254 |
regexp += CQLQuery.addBackSlash(v) + "|"; //$NON-NLS-1$ |
|
255 |
} |
|
256 |
regexp = regexp.substring(0, regexp.length() - 1); |
|
257 |
|
|
258 |
SubcorpusCQLQuery query = new SubcorpusCQLQuery(this.selectedStructuralUnit, this.selectedStructuralUnitProperty, regexp, selectedValues); |
|
259 |
|
|
260 |
return query.getQueryString(); |
|
261 |
} |
|
245 | 262 |
|
246 | 263 |
} |
tmp/org.txm.rcp/src/main/java/org/txm/rcp/swt/listeners/DropdownSelectionListener.java (revision 2550) | ||
---|---|---|
34 | 34 |
menu.setVisible(true); |
35 | 35 |
event.doit = false; |
36 | 36 |
} else { |
37 |
defaultListener.widgetSelected(event); |
|
37 |
if (defaultListener != null) { |
|
38 |
defaultListener.widgetSelected(event); |
|
39 |
} |
|
38 | 40 |
} |
39 | 41 |
} |
40 | 42 |
} |
tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Subcorpus.java (revision 2550) | ||
---|---|---|
112 | 112 |
* {@link CQPCorpus#createSubcorpus(CQLQuery, String)} |
113 | 113 |
*/ |
114 | 114 |
@Override |
115 |
protected boolean _compute() throws Exception { |
|
115 |
protected boolean __compute() throws Exception { |
|
116 |
if (pID == null || pID.length() == 0) { |
|
117 |
pID = subcorpusNamePrefix + getNextSubcorpusCounter().toString(); |
|
118 |
} |
|
119 |
|
|
116 | 120 |
if (this.pQuery != null) { |
117 | 121 |
this.qresult = null; // reset |
122 |
String parent_id = this.getCorpusParent().getQualifiedCqpId(); |
|
123 |
CorpusManager.getCorpusManager().getCqiClient().cqpQuery(parent_id, this.pID, CQLQuery.fixQuery(this.pQuery.getQueryString())); |
|
118 | 124 |
|
119 |
CorpusManager.getCorpusManager().getCqiClient().cqpQuery(this.getCorpusParent().getQualifiedCqpId(), this.pID, CQLQuery.fixQuery(this.pQuery.getQueryString())); |
|
120 |
|
|
121 | 125 |
this.qresult = new QueryResult(this.pID, this.userName, this.getCorpusParent(), this.pQuery); // getCorpusParent().query(pQuery, this.pID, true); |
122 | 126 |
} |
123 | 127 |
return qresult != null; |
... | ... | |
134 | 138 |
} |
135 | 139 |
// created directly from a query |
136 | 140 |
else { |
137 |
return TXMCoreMessages.bind(SearchEngineCoreMessages.info_computingTheP0SubCorpusOfP1CommaQueryP2, this.getSimpleName(), this.getParent().getName(), this.getQuery().getQueryString());
|
|
141 |
return TXMCoreMessages.bind(SearchEngineCoreMessages.info_computingTheP0SubCorpusOfP1CommaQueryP2, this.getSimpleName(), this.getParent().getName(), this.getQuery()); |
|
138 | 142 |
} |
139 | 143 |
} |
140 | 144 |
|
141 |
|
|
142 | 145 |
/* |
143 | 146 |
* retro compatibility method for import.xml file |
144 | 147 |
* @see org.txm.searchengine.cqp.corpus.Corpus#getLocale() |
... | ... | |
198 | 201 |
|
199 | 202 |
@Override |
200 | 203 |
public boolean canCompute() { |
201 |
return pID != null && userName != null && (pQuery != null || qresult != null); |
|
204 |
return userName != null && userName.length() > 0 && |
|
205 |
((pQuery != null && pQuery.getQueryString().length() > 0 ) || qresult != null); |
|
202 | 206 |
} |
203 | 207 |
|
204 | 208 |
/* |
... | ... | |
249 | 253 |
|
250 | 254 |
@Override |
251 | 255 |
public List<Match> getMatches() { |
256 |
if (qresult == null) { // not computed |
|
257 |
return new ArrayList<>(); |
|
258 |
} |
|
252 | 259 |
try { |
253 | 260 |
return qresult.getMatches(); |
254 | 261 |
} |
tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Part.java (revision 2550) | ||
---|---|---|
78 | 78 |
} |
79 | 79 |
|
80 | 80 |
@Override |
81 |
protected boolean _compute() throws Exception { |
|
81 |
protected boolean __compute() throws Exception {
|
|
82 | 82 |
|
83 | 83 |
try { |
84 |
super._compute(); |
|
84 |
super.__compute();
|
|
85 | 85 |
} |
86 | 86 |
catch (Exception e) { |
87 | 87 |
try { |
tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Partition.java (revision 2550) | ||
---|---|---|
106 | 106 |
* @param parent |
107 | 107 |
* @throws NullPointerException |
108 | 108 |
*/ |
109 |
public Partition(CQPCorpus parent) throws NullPointerException {
|
|
109 |
public Partition(CQPCorpus parent) { |
|
110 | 110 |
super(parent); |
111 | 111 |
} |
112 | 112 |
|
... | ... | |
118 | 118 |
super(parametersNodePath); |
119 | 119 |
} |
120 | 120 |
|
121 |
|
|
122 | 121 |
/** |
123 | 122 |
* Computes the Partition using a list of queries. |
124 | 123 |
* |
tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/CQPCorpus.java (revision 2550) | ||
---|---|---|
226 | 226 |
*/ |
227 | 227 |
protected String lang = null; |
228 | 228 |
|
229 |
/** The corpus lexical units properties. */ |
|
229 |
/** stores The corpus lexical units properties. */
|
|
230 | 230 |
protected List<WordProperty> lexicalUnitsProperties; |
231 | 231 |
|
232 | 232 |
/** The size in token */ |
... | ... | |
675 | 675 |
return createSubcorpus(query, subcorpusName); |
676 | 676 |
} |
677 | 677 |
|
678 |
protected final boolean _compute() throws Exception { |
|
679 |
//reset the internal variable that store information |
|
680 |
|
|
681 |
lexicalUnitsProperties = null; |
|
682 |
size = -1; |
|
683 |
nbtext = -1; |
|
684 |
textEndLimits = null; |
|
685 |
textids = null; |
|
686 |
structuralUnits = null; |
|
687 |
symbol = null; |
|
688 |
textIdStructuralUnitProperty = null; |
|
689 |
textLimits = null; |
|
690 |
textStructuralUnit = null; |
|
691 |
wordProperty = null; |
|
692 |
|
|
693 |
|
|
694 |
return __compute(); |
|
695 |
} |
|
696 |
|
|
697 |
protected abstract boolean __compute() throws Exception; |
|
698 |
|
|
678 | 699 |
/** |
679 | 700 |
* Create a subcorpus from a structural unit, a property on this structural unit |
680 | 701 |
* and a value for this property. |
tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/MainCorpus.java (revision 2550) | ||
---|---|---|
115 | 115 |
} |
116 | 116 |
|
117 | 117 |
@Override |
118 |
protected boolean _compute() throws Exception { |
|
118 |
protected boolean __compute() throws Exception {
|
|
119 | 119 |
|
120 | 120 |
if (!CQPSearchEngine.isInitialized()) { |
121 | 121 |
Log.warning("** TXM can't load MainCorpus when CQP search engine is not ready."); |
tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/core/preferences/PartitionPreferences.java (revision 2550) | ||
---|---|---|
1 |
package org.txm.searchengine.cqp.core.preferences; |
|
2 |
|
|
3 |
import org.osgi.service.prefs.Preferences; |
|
4 |
import org.txm.core.preferences.TXMPreferences; |
|
5 |
|
|
6 |
public class PartitionPreferences extends TXMPreferences { |
|
7 |
|
|
8 |
public static String EDITORMODE = "editor_mode"; |
|
9 |
|
|
10 |
public PartitionPreferences() { |
|
11 |
// TODO Auto-generated constructor stub |
|
12 |
} |
|
13 |
|
|
14 |
/** |
|
15 |
* Gets the instance. |
|
16 |
* @return the instance |
|
17 |
*/ |
|
18 |
public static TXMPreferences getInstance() { |
|
19 |
if (!TXMPreferences.instances.containsKey(PartitionPreferences.class)) { |
|
20 |
new PartitionPreferences(); |
|
21 |
} |
|
22 |
return TXMPreferences.instances.get(PartitionPreferences.class); |
|
23 |
} |
|
24 |
|
|
25 |
@Override |
|
26 |
public void initializeDefaultPreferences() { |
|
27 |
super.initializeDefaultPreferences(); |
|
28 |
|
|
29 |
Preferences preferences = this.getDefaultPreferencesNode(); |
|
30 |
|
|
31 |
preferences.putBoolean(EDITORMODE, false); |
|
32 |
} |
|
33 |
} |
|
0 | 34 |
tmp/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/core/preferences/SubcorpusPreferences.java (revision 2550) | ||
---|---|---|
1 |
package org.txm.searchengine.cqp.core.preferences; |
|
2 |
|
|
3 |
import org.osgi.service.prefs.Preferences; |
|
4 |
import org.txm.core.preferences.TXMPreferences; |
|
5 |
|
|
6 |
public class SubcorpusPreferences extends TXMPreferences { |
|
7 |
|
|
8 |
public static String EDITORMODE = "editor_mode"; |
|
9 |
|
|
10 |
public SubcorpusPreferences() { |
|
11 |
// TODO Auto-generated constructor stub |
|
12 |
} |
|
13 |
|
|
14 |
/** |
|
15 |
* Gets the instance. |
|
16 |
* @return the instance |
|
17 |
*/ |
|
18 |
public static TXMPreferences getInstance() { |
|
19 |
if (!TXMPreferences.instances.containsKey(SubcorpusPreferences.class)) { |
|
20 |
new SubcorpusPreferences(); |
|
21 |
} |
|
22 |
return TXMPreferences.instances.get(SubcorpusPreferences.class); |
|
23 |
} |
|
24 |
|
|
25 |
@Override |
|
26 |
public void initializeDefaultPreferences() { |
|
27 |
super.initializeDefaultPreferences(); |
|
28 |
|
|
29 |
Preferences preferences = this.getDefaultPreferencesNode(); |
|
30 |
|
|
31 |
preferences.putBoolean(EDITORMODE, false); |
|
32 |
} |
|
33 |
} |
|
0 | 34 |
tmp/org.txm.searchengine.cqp.core/plugin.xml (revision 2550) | ||
---|---|---|
12 | 12 |
<initializer |
13 | 13 |
class="org.txm.searchengine.cqp.CQPPreferences"> |
14 | 14 |
</initializer> |
15 |
<initializer |
|
16 |
class="org.txm.searchengine.cqp.core.preferences.SubcorpusPreferences"> |
|
17 |
</initializer> |
|
18 |
<initializer |
|
19 |
class="org.txm.searchengine.cqp.core.preferences.PartitionPreferences"> |
|
20 |
</initializer> |
|
15 | 21 |
</extension> |
16 | 22 |
|
17 | 23 |
|
tmp/org.txm.searchengine.cqp.core/META-INF/MANIFEST.MF (revision 2550) | ||
---|---|---|
1 | 1 |
Manifest-Version: 1.0 |
2 |
Export-Package: org.txm.importer.cwb,org.txm.searchengine.cqp,org.txm. |
|
3 |
searchengine.cqp.clientExceptions,org.txm.searchengine.cqp.core.funct |
|
4 |
ions.preview,org.txm.searchengine.cqp.core.functions.selection,org.tx |
|
5 |
m.searchengine.cqp.core.functions.summary,org.txm.searchengine.cqp.co |
|
6 |
re.messages,org.txm.searchengine.cqp.core.tests,org.txm.searchengine. |
|
7 |
cqp.corpus,org.txm.searchengine.cqp.corpus.query,org.txm.searchengine |
|
8 |
.cqp.serverException |
|
2 |
Export-Package: org.txm.importer.cwb, |
|
3 |
org.txm.searchengine.cqp, |
|
4 |
org.txm.searchengine.cqp.clientExceptions, |
|
5 |
org.txm.searchengine.cqp.core.functions.preview, |
|
6 |
org.txm.searchengine.cqp.core.functions.selection, |
|
7 |
org.txm.searchengine.cqp.core.functions.summary, |
|
8 |
org.txm.searchengine.cqp.core.messages, |
|
9 |
org.txm.searchengine.cqp.core.preferences, |
|
10 |
org.txm.searchengine.cqp.core.tests, |
|
11 |
org.txm.searchengine.cqp.corpus, |
|
12 |
org.txm.searchengine.cqp.corpus.query, |
|
13 |
org.txm.searchengine.cqp.serverException |
|
9 | 14 |
Bundle-SymbolicName: org.txm.searchengine.cqp.core;singleton:=true |
10 | 15 |
Bundle-Version: 1.1.0.qualifier |
11 | 16 |
Bundle-Name: %Bundle-Name |
tmp/org.txm.annotation.rcp/src/org/txm/annotation/rcp/editor/AnnotationExtension.java (revision 2550) | ||
---|---|---|
109 | 109 |
SelectionListener openCloseSelectionListener = new SelectionListener() { |
110 | 110 |
@Override |
111 | 111 |
public void widgetSelected(SelectionEvent e) { |
112 |
if (annotationAreas.size() > 0) { |
|
113 |
return; // do nothing |
|
112 |
if (editor.getTopToolbar().isVisible(GROUP_NAME)) { |
|
113 |
if (annotationAreas.size() == 0) { |
|
114 |
openDefaultAnnotationMode(e); |
|
115 |
} |
|
114 | 116 |
} else { |
115 |
openDefaultAnnotationMode(e); |
|
117 |
for (AnnotationArea a : annotationAreas) { |
|
118 |
a.close(); |
|
119 |
} |
|
120 |
annotationAreas.clear(); |
|
116 | 121 |
} |
117 | 122 |
} |
118 | 123 |
|
tmp/org.txm.searchengine.cqp.rcp/plugin.xml (revision 2550) | ||
---|---|---|
25 | 25 |
</commandParameter> |
26 | 26 |
</command> |
27 | 27 |
<command |
28 |
defaultHandler="org.txm.searchengine.cqp.rcp.handlers.base.CreateSubCorpus"
|
|
28 |
defaultHandler="org.txm.searchengine.cqp.rcp.handlers.base.ComputeSubCorpus"
|
|
29 | 29 |
id="org.txm.searchengine.cqp.rcp.handlers.base.CreateSubCorpus" |
30 | 30 |
name="%command.name"> |
31 | 31 |
<commandParameter |
... | ... | |
33 | 33 |
name="%commandParameter.name.0" |
34 | 34 |
optional="true"> |
35 | 35 |
</commandParameter> |
36 |
<commandParameter |
|
37 |
id="edit" |
|
38 |
name="edit" |
|
39 |
optional="true"> |
|
40 |
</commandParameter> |
|
36 | 41 |
</command> |
37 | 42 |
<command |
38 | 43 |
defaultHandler="org.txm.searchengine.cqp.rcp.handlers.base.Substraction" |
... | ... | |
155 | 160 |
</visibleWhen> |
156 | 161 |
</command> |
157 | 162 |
<command |
163 |
commandId="org.txm.searchengine.cqp.rcp.handlers.base.CreateSubCorpus" |
|
164 |
icon="icons/functions/subcorpus.png" |
|
165 |
label="Edit..." |
|
166 |
style="push"> |
|
167 |
<visibleWhen |
|
168 |
checkEnabled="false"> |
|
169 |
<reference |
|
170 |
definitionId="OneCorpusSelected"> |
|
171 |
</reference> |
|
172 |
</visibleWhen> |
|
173 |
<parameter |
|
174 |
name="edit" |
|
175 |
value="true"> |
|
176 |
</parameter> |
|
177 |
</command> |
|
178 |
<command |
|
158 | 179 |
commandId="org.txm.searchengine.cqp.rcp.handlers.base.ComputePartition" |
159 | 180 |
icon="icons/functions/partition.png" |
160 | 181 |
style="push"> |
... | ... | |
292 | 313 |
id="org.txm.searchengine.cqp.rcp.preferences.CQPPreferencePage" |
293 | 314 |
name="CQP"> |
294 | 315 |
</page> |
316 |
<page |
|
317 |
category="org.txm.rcp.preferences.UserPreferencePage" |
|
318 |
class="org.txm.searchengine.cqp.rcp.preferences.SubcorpusPreferencePage" |
|
319 |
id="org.txm.searchengine.cqp.rcp.preferences.SubcorpusPreferencePage" |
|
320 |
name="Subcorpus"> |
|
321 |
</page> |
|
322 |
<page |
|
323 |
category="org.txm.rcp.preferences.UserPreferencePage" |
|
324 |
class="org.txm.searchengine.cqp.rcp.preferences.PartitionPreferencePage" |
|
325 |
id="org.txm.searchengine.cqp.rcp.preferences.PartitionPreferencePage" |
|
326 |
name="Partition"> |
|
327 |
</page> |
|
295 | 328 |
</extension> |
296 | 329 |
<extension |
297 | 330 |
point="org.eclipse.core.runtime.adapters"> |
... | ... | |
345 | 378 |
</with> |
346 | 379 |
</definition> |
347 | 380 |
</extension> |
381 |
<extension |
|
382 |
point="org.eclipse.ui.editors"> |
|
383 |
<editor |
|
384 |
class="org.txm.searchengine.cqp.rcp.editor.SubcorpusEditor" |
|
385 |
default="false" |
|
386 |
icon="icons/functions/subcorpus.png" |
|
387 |
id="org.txm.searchengine.cqp.rcp.editor.SubcorpusEditor" |
|
388 |
name="Subcorpus"> |
|
389 |
</editor> |
|
390 |
<editor |
|
391 |
class="org.txm.searchengine.cqp.rcp.editor.PartitionEditor" |
|
392 |
default="false" |
|
393 |
icon="icons/functions/partition.png" |
|
394 |
id="org.txm.searchengine.cqp.rcp.editor.PartitionEditor" |
|
395 |
name="Partition"> |
|
396 |
</editor> |
|
397 |
</extension> |
|
348 | 398 |
|
349 | 399 |
</plugin> |
tmp/org.txm.searchengine.cqp.rcp/META-INF/MANIFEST.MF (revision 2550) | ||
---|---|---|
1 | 1 |
Manifest-Version: 1.0 |
2 |
Export-Package: org.txm.searchengine.cqp.rcp.adapters,org.txm.searchen |
|
3 |
gine.cqp.rcp.handlers.base,org.txm.searchengine.cqp.rcp.messages,org. |
|
4 |
txm.searchengine.cqp.rcp.preferences |
|
2 |
Export-Package: org.txm.searchengine.cqp.rcp.adapters, |
|
3 |
org.txm.searchengine.cqp.rcp.dialogs, |
|
4 |
org.txm.searchengine.cqp.rcp.editor, |
|
5 |
org.txm.searchengine.cqp.rcp.handlers.base, |
|
6 |
org.txm.searchengine.cqp.rcp.messages, |
|
7 |
org.txm.searchengine.cqp.rcp.preferences |
|
5 | 8 |
Bundle-SymbolicName: org.txm.searchengine.cqp.rcp;singleton:=true |
6 | 9 |
Bundle-Version: 1.0.0.qualifier |
7 | 10 |
Bundle-Name: %Bundle-Name |
tmp/org.txm.searchengine.cqp.rcp/src/org/txm/searchengine/cqp/rcp/handlers/base/CreateSubCorpus.java (revision 2550) | ||
---|---|---|
1 |
// Copyright © 2010-2013 ENS de Lyon. |
|
2 |
// Copyright © 2007-2010 ENS de Lyon, CNRS, INRP, University of |
|
3 |
// Lyon 2, University of Franche-Comté, University of Nice |
|
4 |
// Sophia Antipolis, University of Paris 3. |
|
5 |
// |
|
6 |
// The TXM platform is free software: you can redistribute it |
|
7 |
// and/or modify it under the terms of the GNU General Public |
|
8 |
// License as published by the Free Software Foundation, |
|
9 |
// either version 2 of the License, or (at your option) any |
|
10 |
// later version. |
|
11 |
// |
|
12 |
// The TXM platform is distributed in the hope that it will be |
|
13 |
// useful, but WITHOUT ANY WARRANTY; without even the implied |
|
14 |
// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR |
|
15 |
// PURPOSE. See the GNU General Public License for more |
|
16 |
// details. |
|
17 |
// |
|
18 |
// You should have received a copy of the GNU General |
|
19 |
// Public License along with the TXM platform. If not, see |
|
20 |
// http://www.gnu.org/licenses. |
|
21 |
// |
|
22 |
// |
|
23 |
// |
|
24 |
// $LastChangedDate:$ |
|
25 |
// $LastChangedRevision:$ |
|
26 |
// $LastChangedBy:$ |
|
27 |
// |
|
28 |
package org.txm.searchengine.cqp.rcp.handlers.base; |
|
29 |
|
|
30 |
import org.eclipse.core.commands.AbstractHandler; |
|
31 |
import org.eclipse.core.commands.ExecutionEvent; |
|
32 |
import org.eclipse.core.commands.ExecutionException; |
|
33 |
import org.eclipse.core.runtime.IProgressMonitor; |
|
34 |
import org.eclipse.core.runtime.IStatus; |
|
35 |
import org.eclipse.core.runtime.Status; |
|
36 |
import org.eclipse.jface.viewers.IStructuredSelection; |
|
37 |
import org.eclipse.jface.window.Window; |
|
38 |
import org.eclipse.osgi.util.NLS; |
|
39 |
import org.eclipse.swt.widgets.Shell; |
|
40 |
import org.eclipse.ui.IWorkbenchWindow; |
|
41 |
import org.eclipse.ui.handlers.HandlerUtil; |
|
42 |
import org.txm.Toolbox; |
|
43 |
import org.txm.rcp.JobsTimer; |
|
44 |
import org.txm.rcp.actions.CreateSubcorpusDialog; |
|
45 |
import org.txm.rcp.messages.TXMUIMessages; |
|
46 |
import org.txm.rcp.utils.JobHandler; |
|
47 |
import org.txm.rcp.views.corpora.CorporaView; |
|
48 |
import org.txm.searchengine.cqp.CQPSearchEngine; |
|
49 |
import org.txm.searchengine.cqp.clientExceptions.CqiClientException; |
|
50 |
import org.txm.searchengine.cqp.core.messages.CQPSearchEngineCoreMessages; |
|
51 |
import org.txm.searchengine.cqp.corpus.CQPCorpus; |
|
52 |
import org.txm.searchengine.cqp.corpus.Subcorpus; |
|
53 |
import org.txm.searchengine.cqp.corpus.query.CQLQuery; |
|
54 |
import org.txm.utils.logger.Log; |
|
55 |
|
|
56 |
// TODO: Auto-generated Javadoc |
|
57 |
/** |
|
58 |
* Command which creates a subcorpus from a Corpus @ author mdecorde. |
|
59 |
*/ |
|
60 |
public class CreateSubCorpus extends AbstractHandler { |
|
61 |
|
|
62 |
/** The selection. */ |
|
63 |
private IStructuredSelection selection; |
|
64 |
|
|
65 |
/* |
|
66 |
* (non-Javadoc) |
|
67 |
* @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent) |
|
68 |
*/ |
|
69 |
@Override |
|
70 |
public Object execute(ExecutionEvent event) throws ExecutionException { |
|
71 |
|
|
72 |
selection = (IStructuredSelection) HandlerUtil.getCurrentSelection(event); |
|
73 |
if (selection == null) { |
|
74 |
System.out.println(TXMUIMessages.noSelectionForColon + HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().getActiveEditor()); |
|
75 |
return null; |
|
76 |
} |
|
77 |
Object firstElement = selection.getFirstElement(); |
|
78 |
|
|
79 |
if (!(firstElement instanceof CQPCorpus)) { |
|
80 |
System.out.println(TXMUIMessages.selectionIsNotACorpusColon + firstElement); |
|
81 |
return null; |
|
82 |
} |
|
83 |
|
|
84 |
final CQPCorpus corpus = (CQPCorpus) firstElement; |
|
85 |
Shell shell = HandlerUtil.getActiveWorkbenchWindowChecked(event).getShell(); |
|
86 |
final CreateSubcorpusDialog d = new CreateSubcorpusDialog(shell, corpus); |
|
87 |
int code = d.open(); |
|
88 |
if (code == Window.OK) { |
|
89 |
JobHandler jobhandler = new JobHandler(NLS.bind(TXMUIMessages.creatingASubcorpusOnP0, corpus.getName())) { |
|
90 |
|
|
91 |
@Override |
|
92 |
protected IStatus run(IProgressMonitor monitor) { |
|
93 |
this.runInit(monitor); |
|
94 |
JobsTimer.start(); |
|
95 |
try { |
|
96 |
monitor.beginTask(TXMUIMessages.creatingASubcorpusInTheSearchEngine, 100); |
|
97 |
final Subcorpus subcorpus; |
|
98 |
|
|
99 |
if (d.isAdvancedSelected() || d.isAssistedSelected()) { |
|
100 |
CQLQuery q = new CQLQuery(d.getQuery()); |
|
101 |
|
|
102 |
// System.out.println(NLS.bind(TXMUIMessages.computeSubCorpusOnP0QueryColonP1, corpus.getName(), q.getQueryString())); |
|
103 |
|
|
104 |
subcorpus = corpus.createSubcorpus(q, d.getName()); |
|
105 |
} |
|
106 |
else { |
|
107 |
// System.out.println(NLS.bind(TXMUIMessages.computeSubCorpusOnP0StructsColonP1AmpPropsP2ColonP3, |
|
108 |
// new Object[] { corpus.getName(), d.getStructuralUnit(), |
|
109 |
// d.getStructuralUnitProperty(), d.getValues() })); |
|
110 |
|
|
111 |
// Escape regex char of prop values |
|
112 |
// List<String> values = d.getValues(); |
|
113 |
// for(int i = 0 ; i < values.size() ; i++) |
|
114 |
// values.set(i, Query.addBackSlash(values.get(i))); |
|
115 |
|
|
116 |
subcorpus = corpus.createSubcorpus( |
|
117 |
d.getStructuralUnit(), d.getStructuralUnitProperty(), |
|
118 |
d.getValues(), d.getName()); |
|
119 |
} |
|
120 |
|
|
121 |
if (subcorpus == null) { |
|
122 |
monitor.done(); |
|
123 |
Log.severe(TXMUIMessages.errorColonSubcorpusWasNotCreated); |
|
124 |
return Status.CANCEL_STATUS; |
|
125 |
} |
|
126 |
|
|
127 |
// System.out.println(NLS.bind(TXMUIMessages.doneColonP0Created, subcorpus.getName())); |
|
128 |
monitor.worked(50); |
|
129 |
|
|
130 |
monitor.subTask(TXMUIMessages.refreshingCorpora); |
|
131 |
syncExec(new Runnable() { |
|
132 |
|
|
133 |
@Override |
|
134 |
public void run() { |
|
135 |
CorporaView.refresh(); |
|
136 |
// System.out.println("expand"); |
|
137 |
CorporaView.expand(subcorpus.getParent()); |
|
138 |
} |
|
139 |
}); |
|
140 |
|
|
141 |
monitor.worked(100); |
|
142 |
} |
|
143 |
catch (ThreadDeath td) { |
|
144 |
return Status.CANCEL_STATUS; |
|
145 |
} |
|
146 |
catch (CqiClientException e) { |
|
147 |
org.txm.utils.logger.Log.printStackTrace(e); |
|
148 |
Log.severe(e.toString()); |
|
149 |
|
|
150 |
try { |
|
151 |
System.out.println(NLS.bind(CQPSearchEngineCoreMessages.lastCQPErrorColon, CQPSearchEngine.getCqiClient().getLastCQPError())); |
|
152 |
} |
|
153 |
catch (Exception e1) { |
|
154 |
System.out.println(TXMUIMessages.failedToGetLastCQPErrorColon + e1); |
|
155 |
org.txm.utils.logger.Log.printStackTrace(e1); |
|
156 |
} |
|
157 |
} |
|
158 |
finally { |
|
159 |
monitor.done(); |
|
160 |
JobsTimer.stopAndPrint(); |
|
161 |
} |
|
162 |
return Status.OK_STATUS; |
|
163 |
} |
|
164 |
}; |
|
165 |
jobhandler.startJob(); |
|
166 |
} |
|
167 |
return null; |
|
168 |
} |
|
169 |
|
|
170 |
} |
tmp/org.txm.searchengine.cqp.rcp/src/org/txm/searchengine/cqp/rcp/handlers/base/ComputeSubCorpus.java (revision 2550) | ||
---|---|---|
1 |
// Copyright © 2010-2013 ENS de Lyon. |
|
2 |
// Copyright © 2007-2010 ENS de Lyon, CNRS, INRP, University of |
|
3 |
// Lyon 2, University of Franche-Comté, University of Nice |
|
4 |
// Sophia Antipolis, University of Paris 3. |
|
5 |
// |
|
6 |
// The TXM platform is free software: you can redistribute it |
|
7 |
// and/or modify it under the terms of the GNU General Public |
|
8 |
// License as published by the Free Software Foundation, |
|
9 |
// either version 2 of the License, or (at your option) any |
|
10 |
// later version. |
|
11 |
// |
|
12 |
// The TXM platform is distributed in the hope that it will be |
|
13 |
// useful, but WITHOUT ANY WARRANTY; without even the implied |
|
14 |
// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR |
|
15 |
// PURPOSE. See the GNU General Public License for more |
|
16 |
// details. |
|
17 |
// |
|
18 |
// You should have received a copy of the GNU General |
|
19 |
// Public License along with the TXM platform. If not, see |
|
20 |
// http://www.gnu.org/licenses. |
|
21 |
// |
|
22 |
// |
|
23 |
// |
|
24 |
// $LastChangedDate:$ |
|
25 |
// $LastChangedRevision:$ |
|
26 |
// $LastChangedBy:$ |
|
27 |
// |
|
28 |
package org.txm.searchengine.cqp.rcp.handlers.base; |
|
29 |
|
|
30 |
import org.eclipse.core.commands.AbstractHandler; |
|
31 |
import org.eclipse.core.commands.ExecutionEvent; |
|
32 |
import org.eclipse.core.commands.ExecutionException; |
|
33 |
import org.eclipse.core.runtime.IProgressMonitor; |
|
34 |
import org.eclipse.core.runtime.IStatus; |
|
35 |
import org.eclipse.core.runtime.Status; |
|
36 |
import org.eclipse.jface.viewers.IStructuredSelection; |
|
37 |
import org.eclipse.jface.window.Window; |
|
38 |
import org.eclipse.osgi.util.NLS; |
|
39 |
import org.eclipse.swt.widgets.Shell; |
|
40 |
import org.eclipse.ui.handlers.HandlerUtil; |
|
41 |
import org.txm.rcp.JobsTimer; |
|
42 |
import org.txm.rcp.actions.CreateSubcorpusDialog; |
|
43 |
import org.txm.rcp.editors.TXMEditor; |
|
44 |
import org.txm.rcp.messages.TXMUIMessages; |
|
45 |
import org.txm.rcp.utils.JobHandler; |
|
46 |
import org.txm.rcp.views.corpora.CorporaView; |
|
47 |
import org.txm.searchengine.cqp.CQPSearchEngine; |
|
48 |
import org.txm.searchengine.cqp.clientExceptions.CqiClientException; |
|
49 |
import org.txm.searchengine.cqp.core.messages.CQPSearchEngineCoreMessages; |
|
50 |
import org.txm.searchengine.cqp.core.preferences.SubcorpusPreferences; |
|
51 |
import org.txm.searchengine.cqp.corpus.CQPCorpus; |
|
52 |
import org.txm.searchengine.cqp.corpus.Subcorpus; |
|
53 |
import org.txm.searchengine.cqp.corpus.query.CQLQuery; |
|
54 |
import org.txm.searchengine.cqp.rcp.editor.SubcorpusEditor; |
|
55 |
import org.txm.utils.logger.Log; |
|
56 |
|
|
57 |
/** |
|
58 |
* Command which creates a subcorpus from a Corpus @ author mdecorde. |
|
59 |
*/ |
|
60 |
public class ComputeSubCorpus extends AbstractHandler { |
|
61 |
|
|
62 |
/** The selection. */ |
|
63 |
private IStructuredSelection selection; |
|
64 |
|
|
65 |
/* |
|
66 |
* (non-Javadoc) |
|
67 |
* @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent) |
|
68 |
*/ |
|
69 |
@Override |
|
70 |
public Object execute(ExecutionEvent event) throws ExecutionException { |
|
71 |
if (SubcorpusPreferences.getInstance().getBoolean(SubcorpusPreferences.EDITORMODE)) { |
|
72 |
return execute_editor(event); |
|
73 |
} else { |
|
74 |
return execute_dialog(event); |
|
75 |
} |
|
76 |
} |
|
77 |
|
|
78 |
public Object execute_editor(ExecutionEvent event) throws ExecutionException { |
|
79 |
|
|
80 |
selection = (IStructuredSelection) HandlerUtil.getCurrentSelection(event); |
|
81 |
if (selection == null) { |
|
82 |
System.out.println(TXMUIMessages.noSelectionForColon + HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().getActiveEditor()); |
|
83 |
return null; |
|
84 |
} |
|
85 |
|
|
86 |
String edit = event.getParameter("edit"); //$NON-NLS-1$ |
|
87 |
|
|
88 |
Object firstElement = selection.getFirstElement(); |
|
89 |
Subcorpus sub = null; |
|
90 |
if (firstElement instanceof CQPCorpus) { |
|
91 |
if (firstElement instanceof Subcorpus && "true".equals(edit)) { |
|
92 |
sub = (Subcorpus) firstElement; |
|
93 |
} else { |
|
94 |
sub = new Subcorpus((CQPCorpus)firstElement); |
|
95 |
} |
|
96 |
} |
|
97 |
return TXMEditor.openEditor(sub , SubcorpusEditor.class.getName()); |
|
98 |
} |
|
99 |
|
|
100 |
/* |
|
101 |
* (non-Javadoc) |
|
102 |
* @see org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands.ExecutionEvent) |
|
103 |
*/ |
|
104 |
public Object execute_dialog(ExecutionEvent event) throws ExecutionException { |
|
105 |
|
|
106 |
selection = (IStructuredSelection) HandlerUtil.getCurrentSelection(event); |
|
107 |
if (selection == null) { |
|
108 |
System.out.println(TXMUIMessages.noSelectionForColon + HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().getActiveEditor()); |
|
109 |
return null; |
|
110 |
} |
|
111 |
Object firstElement = selection.getFirstElement(); |
|
112 |
|
|
113 |
if (!(firstElement instanceof CQPCorpus)) { |
|
114 |
System.out.println(TXMUIMessages.selectionIsNotACorpusColon + firstElement); |
|
115 |
return null; |
|
116 |
} |
|
117 |
|
|
118 |
final CQPCorpus corpus = (CQPCorpus) firstElement; |
|
119 |
Shell shell = HandlerUtil.getActiveWorkbenchWindowChecked(event).getShell(); |
|
120 |
final CreateSubcorpusDialog d = new CreateSubcorpusDialog(shell, corpus); |
|
121 |
int code = d.open(); |
|
122 |
if (code == Window.OK) { |
|
123 |
JobHandler jobhandler = new JobHandler(NLS.bind(TXMUIMessages.creatingASubcorpusOnP0, corpus.getName())) { |
|
124 |
|
|
125 |
@Override |
|
126 |
protected IStatus run(IProgressMonitor monitor) { |
|
127 |
this.runInit(monitor); |
|
128 |
JobsTimer.start(); |
|
129 |
try { |
|
130 |
monitor.beginTask(TXMUIMessages.creatingASubcorpusInTheSearchEngine, 100); |
|
131 |
final Subcorpus subcorpus; |
|
132 |
|
|
133 |
if (d.isAdvancedSelected() || d.isAssistedSelected()) { |
|
134 |
CQLQuery q = new CQLQuery(d.getQuery()); |
|
135 |
|
|
136 |
// System.out.println(NLS.bind(TXMUIMessages.computeSubCorpusOnP0QueryColonP1, corpus.getName(), q.getQueryString())); |
|
137 |
|
|
138 |
subcorpus = corpus.createSubcorpus(q, d.getName()); |
|
139 |
} |
|
140 |
else { |
|
141 |
// System.out.println(NLS.bind(TXMUIMessages.computeSubCorpusOnP0StructsColonP1AmpPropsP2ColonP3, |
|
142 |
// new Object[] { corpus.getName(), d.getStructuralUnit(), |
|
143 |
// d.getStructuralUnitProperty(), d.getValues() })); |
|
144 |
|
|
145 |
// Escape regex char of prop values |
|
146 |
// List<String> values = d.getValues(); |
|
147 |
// for(int i = 0 ; i < values.size() ; i++) |
|
148 |
// values.set(i, Query.addBackSlash(values.get(i))); |
|
149 |
|
|
150 |
subcorpus = corpus.createSubcorpus( |
|
151 |
d.getStructuralUnit(), d.getStructuralUnitProperty(), |
|
152 |
d.getValues(), d.getName()); |
|
153 |
} |
|
154 |
|
|
155 |
if (subcorpus == null) { |
|
156 |
monitor.done(); |
|
157 |
Log.severe(TXMUIMessages.errorColonSubcorpusWasNotCreated); |
|
158 |
return Status.CANCEL_STATUS; |
|
159 |
} |
|
160 |
|
|
161 |
// System.out.println(NLS.bind(TXMUIMessages.doneColonP0Created, subcorpus.getName())); |
|
162 |
monitor.worked(50); |
|
163 |
|
|
164 |
monitor.subTask(TXMUIMessages.refreshingCorpora); |
|
165 |
syncExec(new Runnable() { |
|
166 |
|
|
167 |
@Override |
|
168 |
public void run() { |
|
169 |
CorporaView.refresh(); |
|
170 |
// System.out.println("expand"); |
|
171 |
CorporaView.expand(subcorpus.getParent()); |
|
172 |
} |
|
173 |
}); |
|
174 |
|
|
175 |
monitor.worked(100); |
|
176 |
} |
|
177 |
catch (ThreadDeath td) { |
|
178 |
return Status.CANCEL_STATUS; |
|
179 |
} |
|
180 |
catch (CqiClientException e) { |
|
181 |
org.txm.utils.logger.Log.printStackTrace(e); |
|
182 |
Log.severe(e.toString()); |
|
183 |
|
|
184 |
try { |
|
185 |
System.out.println(NLS.bind(CQPSearchEngineCoreMessages.lastCQPErrorColon, CQPSearchEngine.getCqiClient().getLastCQPError())); |
|
186 |
} |
|
187 |
catch (Exception e1) { |
|
188 |
System.out.println(TXMUIMessages.failedToGetLastCQPErrorColon + e1); |
|
189 |
org.txm.utils.logger.Log.printStackTrace(e1); |
|
190 |
} |
|
191 |
} |
|
192 |
finally { |
|
193 |
monitor.done(); |
|
194 |
JobsTimer.stopAndPrint(); |
|
195 |
} |
|
196 |
return Status.OK_STATUS; |
|
197 |
} |
|
198 |
}; |
|
199 |
jobhandler.startJob(); |
|
200 |
} |
|
201 |
return null; |
|
202 |
} |
|
203 |
|
|
204 |
} |
|
0 | 205 |
tmp/org.txm.searchengine.cqp.rcp/src/org/txm/searchengine/cqp/rcp/handlers/base/ComputePartition.java (revision 2550) | ||
---|---|---|
43 | 43 |
import org.eclipse.ui.handlers.HandlerUtil; |
44 | 44 |
import org.txm.rcp.JobsTimer; |
45 | 45 |
import org.txm.rcp.actions.CreatePartitionDialog; |
46 |
import org.txm.rcp.editors.TXMEditor; |
|
46 | 47 |
import org.txm.rcp.messages.TXMUIMessages; |
47 | 48 |
import org.txm.rcp.utils.JobHandler; |
48 | 49 |
import org.txm.rcp.views.corpora.CorporaView; |
50 |
import org.txm.searchengine.cqp.core.preferences.PartitionPreferences; |
|
49 | 51 |
import org.txm.searchengine.cqp.corpus.CQPCorpus; |
50 | 52 |
import org.txm.searchengine.cqp.corpus.Part; |
51 | 53 |
import org.txm.searchengine.cqp.corpus.Partition; |
54 |
import org.txm.searchengine.cqp.corpus.Subcorpus; |
|
55 |
import org.txm.searchengine.cqp.rcp.editor.PartitionEditor; |
|
56 |
import org.txm.searchengine.cqp.rcp.editor.SubcorpusEditor; |
|
52 | 57 |
import org.txm.utils.logger.Log; |
53 | 58 |
|
54 | 59 |
/** |
... | ... | |
72 | 77 |
*/ |
73 | 78 |
@Override |
74 | 79 |
public Object execute(ExecutionEvent event) throws ExecutionException { |
80 |
if (PartitionPreferences.getInstance().getBoolean(PartitionPreferences.EDITORMODE)) { |
|
81 |
return execute_editor(event); |
|
82 |
} else { |
|
83 |
return execute_dialog(event); |
|
84 |
} |
|
85 |
} |
|
86 |
|
|
87 |
/* |
|
88 |
* (non-Javadoc) |
|
89 |
* @see |
|
90 |
* org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands |
|
91 |
* .ExecutionEvent) |
|
92 |
*/ |
|
93 |
public Object execute_editor(ExecutionEvent event) throws ExecutionException { |
|
75 | 94 |
selection = (IStructuredSelection) HandlerUtil.getCurrentSelection(event); |
95 |
if (selection == null) { |
|
96 |
System.out.println(TXMUIMessages.noSelectionForColon + HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().getActiveEditor()); |
|
97 |
return null; |
|
98 |
} |
|
99 |
Object firstElement = selection.getFirstElement(); |
|
100 |
Partition part = null; |
|
101 |
if (firstElement instanceof CQPCorpus) { |
|
102 |
part = new Partition((CQPCorpus)firstElement); |
|
103 |
} else if (firstElement instanceof Partition) { |
|
104 |
part = (Partition)firstElement; |
|
105 |
} |
|
106 |
return TXMEditor.openEditor(part , PartitionEditor.class.getName()); |
|
107 |
} |
|
108 |
/* |
|
109 |
* (non-Javadoc) |
|
110 |
* @see |
|
111 |
* org.eclipse.core.commands.AbstractHandler#execute(org.eclipse.core.commands |
|
112 |
* .ExecutionEvent) |
|
113 |
*/ |
|
114 |
public Object execute_dialog(ExecutionEvent event) throws ExecutionException { |
|
115 |
selection = (IStructuredSelection) HandlerUtil.getCurrentSelection(event); |
|
76 | 116 |
|
77 | 117 |
final CQPCorpus corpus = (CQPCorpus) selection.getFirstElement(); |
78 | 118 |
Shell shell = HandlerUtil.getActiveWorkbenchWindowChecked(event).getShell(); |
tmp/org.txm.searchengine.cqp.rcp/src/org/txm/searchengine/cqp/rcp/preferences/SubcorpusPreferencePage.java (revision 2550) | ||
---|---|---|
1 |
// Copyright © 2010-2013 ENS de Lyon. |
|
2 |
// Copyright © 2007-2010 ENS de Lyon, CNRS, INRP, University of |
|
3 |
// Lyon 2, University of Franche-Comté, University of Nice |
|
4 |
// Sophia Antipolis, University of Paris 3. |
|
5 |
// |
|
6 |
// The TXM platform is free software: you can redistribute it |
|
7 |
// and/or modify it under the terms of the GNU General Public |
|
8 |
// License as published by the Free Software Foundation, |
|
9 |
// either version 2 of the License, or (at your option) any |
|
10 |
// later version. |
|
11 |
// |
|
12 |
// The TXM platform is distributed in the hope that it will be |
|
13 |
// useful, but WITHOUT ANY WARRANTY; without even the implied |
|
14 |
// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR |
|
15 |
// PURPOSE. See the GNU General Public License for more |
|
16 |
// details. |
|
17 |
// |
|
18 |
// You should have received a copy of the GNU General |
|
19 |
// Public License along with the TXM platform. If not, see |
|
20 |
// http://www.gnu.org/licenses. |
|
21 |
// |
|
22 |
// |
|
23 |
// |
|
24 |
// $LastChangedDate:$ |
|
25 |
// $LastChangedRevision:$ |
|
26 |
// $LastChangedBy:$ |
|
27 |
// |
|
28 |
package org.txm.searchengine.cqp.rcp.preferences; |
|
29 |
|
|
30 |
|
|
31 |
import org.eclipse.jface.preference.BooleanFieldEditor; |
|
32 |
import org.eclipse.jface.preference.DirectoryFieldEditor; |
|
33 |
import org.eclipse.jface.preference.FieldEditor; |
|
34 |
import org.eclipse.jface.preference.FileFieldEditor; |
|
35 |
import org.eclipse.jface.preference.IntegerFieldEditor; |
|
36 |
import org.eclipse.jface.preference.StringFieldEditor; |
|
37 |
import org.eclipse.jface.util.PropertyChangeEvent; |
|
38 |
import org.eclipse.ui.IWorkbench; |
|
39 |
import org.osgi.service.prefs.Preferences; |
|
40 |
import org.txm.libs.cqp.CQPLibPreferences; |
|
41 |
import org.txm.rcp.Application; |
|
42 |
import org.txm.rcp.preferences.TXMPreferencePage; |
|
43 |
import org.txm.rcp.preferences.TXMPreferenceStore; |
|
44 |
import org.txm.searchengine.cqp.core.preferences.SubcorpusPreferences; |
|
45 |
import org.txm.searchengine.cqp.rcp.messages.CQPUIMessages; |
|
46 |
|
|
47 |
/** |
|
48 |
* CQP search engine preferences page. |
|
49 |
* |
|
50 |
* @author mdecorde |
|
51 |
* @author sjacquot |
|
52 |
* |
|
53 |
*/ |
|
54 |
public class SubcorpusPreferencePage extends TXMPreferencePage { |
|
55 |
|
|
56 |
/** The cqi_server_is_remote. */ |
|
57 |
private BooleanFieldEditor editor_mode; |
|
58 |
|
|
59 |
/** |
|
60 |
* Instantiates a new cQP preference page. |
|
61 |
*/ |
|
62 |
public SubcorpusPreferencePage() { |
|
63 |
super(); |
|
64 |
} |
|
65 |
|
|
66 |
/** |
|
67 |
* Creates the field editors. Field editors are abstractions of the common |
|
68 |
* GUI blocks needed to manipulate various types of preferences. Each field |
|
69 |
* editor knows how to save and restore itself. |
|
70 |
*/ |
|
71 |
@Override |
|
72 |
public void createFieldEditors() { |
|
73 |
|
|
74 |
editor_mode = new BooleanFieldEditor(SubcorpusPreferences.EDITORMODE, "Create subcorpus using the editor mode", BooleanFieldEditor.DEFAULT, getFieldEditorParent()); |
|
75 |
addField(editor_mode); |
|
76 |
} |
|
77 |
|
|
78 |
/* |
|
79 |
* (non-Javadoc) |
|
80 |
* |
|
81 |
* @see |
|
82 |
* org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench) |
|
83 |
*/ |
|
84 |
@Override |
|
85 |
public void init(IWorkbench workbench) { |
|
86 |
this.setPreferenceStore(new TXMPreferenceStore(new SubcorpusPreferences().getPreferencesNodeQualifier())); |
|
87 |
} |
|
88 |
} |
|
0 | 89 |
tmp/org.txm.searchengine.cqp.rcp/src/org/txm/searchengine/cqp/rcp/preferences/PartitionPreferencePage.java (revision 2550) | ||
---|---|---|
1 |
// Copyright © 2010-2013 ENS de Lyon. |
|
2 |
// Copyright © 2007-2010 ENS de Lyon, CNRS, INRP, University of |
|
3 |
// Lyon 2, University of Franche-Comté, University of Nice |
|
4 |
// Sophia Antipolis, University of Paris 3. |
|
5 |
// |
|
6 |
// The TXM platform is free software: you can redistribute it |
|
7 |
// and/or modify it under the terms of the GNU General Public |
|
8 |
// License as published by the Free Software Foundation, |
|
9 |
// either version 2 of the License, or (at your option) any |
|
10 |
// later version. |
|
11 |
// |
|
12 |
// The TXM platform is distributed in the hope that it will be |
|
13 |
// useful, but WITHOUT ANY WARRANTY; without even the implied |
|
14 |
// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR |
|
15 |
// PURPOSE. See the GNU General Public License for more |
|
16 |
// details. |
|
17 |
// |
|
18 |
// You should have received a copy of the GNU General |
|
19 |
// Public License along with the TXM platform. If not, see |
|
20 |
// http://www.gnu.org/licenses. |
|
21 |
// |
|
22 |
// |
|
23 |
// |
|
24 |
// $LastChangedDate:$ |
|
25 |
// $LastChangedRevision:$ |
|
26 |
// $LastChangedBy:$ |
|
27 |
// |
|
28 |
package org.txm.searchengine.cqp.rcp.preferences; |
|
29 |
|
|
30 |
|
|
31 |
import org.eclipse.jface.preference.BooleanFieldEditor; |
|
32 |
import org.eclipse.jface.preference.DirectoryFieldEditor; |
|
33 |
import org.eclipse.jface.preference.FieldEditor; |
|
34 |
import org.eclipse.jface.preference.FileFieldEditor; |
|
35 |
import org.eclipse.jface.preference.IntegerFieldEditor; |
|
36 |
import org.eclipse.jface.preference.StringFieldEditor; |
|
37 |
import org.eclipse.jface.util.PropertyChangeEvent; |
|
38 |
import org.eclipse.ui.IWorkbench; |
|
39 |
import org.osgi.service.prefs.Preferences; |
|
40 |
import org.txm.libs.cqp.CQPLibPreferences; |
|
41 |
import org.txm.rcp.Application; |
|
42 |
import org.txm.rcp.preferences.TXMPreferencePage; |
|
43 |
import org.txm.rcp.preferences.TXMPreferenceStore; |
|
44 |
import org.txm.searchengine.cqp.core.preferences.PartitionPreferences; |
|
45 |
import org.txm.searchengine.cqp.rcp.messages.CQPUIMessages; |
|
46 |
|
|
47 |
/** |
|
48 |
* CQP search engine preferences page. |
|
49 |
* |
|
50 |
* @author mdecorde |
|
51 |
* @author sjacquot |
|
52 |
* |
|
53 |
*/ |
|
54 |
public class PartitionPreferencePage extends TXMPreferencePage { |
|
55 |
|
|
56 |
/** The cqi_server_is_remote. */ |
|
57 |
private BooleanFieldEditor editor_mode; |
|
58 |
|
|
59 |
/** |
|
60 |
* Instantiates a new cQP preference page. |
|
61 |
*/ |
|
62 |
public PartitionPreferencePage() { |
|
63 |
super(); |
|
64 |
} |
|
65 |
|
|
66 |
/** |
|
67 |
* Creates the field editors. Field editors are abstractions of the common |
|
68 |
* GUI blocks needed to manipulate various types of preferences. Each field |
|
69 |
* editor knows how to save and restore itself. |
|
70 |
*/ |
|
71 |
@Override |
|
72 |
public void createFieldEditors() { |
|
73 |
|
|
74 |
editor_mode = new BooleanFieldEditor(PartitionPreferences.EDITORMODE, "Create partitions using the editor mode", BooleanFieldEditor.DEFAULT, getFieldEditorParent()); |
|
75 |
addField(editor_mode); |
|
76 |
} |
|
77 |
|
|
78 |
/* |
|
79 |
* (non-Javadoc) |
|
80 |
* |
|
81 |
* @see |
|
82 |
* org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench) |
|
83 |
*/ |
|
84 |
@Override |
|
85 |
public void init(IWorkbench workbench) { |
|
86 |
this.setPreferenceStore(new TXMPreferenceStore(new PartitionPreferences().getPreferencesNodeQualifier())); |
|
87 |
} |
|
88 |
} |
|
0 | 89 |
tmp/org.txm.searchengine.cqp.rcp/src/org/txm/searchengine/cqp/rcp/editor/SubcorpusEditor.java (revision 2550) | ||
---|---|---|
1 |
package org.txm.searchengine.cqp.rcp.editor; |
|
2 |
|
|
3 |
import java.util.ArrayList; |
|
4 |
import java.util.List; |
|
5 |
|
|
6 |
import org.apache.commons.lang.StringUtils; |
|
7 |
import org.eclipse.osgi.util.NLS; |
|
8 |
import org.eclipse.swt.SWT; |
|
9 |
import org.eclipse.swt.events.KeyEvent; |
|
10 |
import org.eclipse.swt.events.SelectionEvent; |
|
11 |
import org.eclipse.swt.events.SelectionListener; |
|
12 |
import org.eclipse.swt.layout.GridData; |
|
13 |
import org.eclipse.swt.layout.GridLayout; |
|
14 |
import org.eclipse.swt.widgets.Control; |
|
15 |
import org.eclipse.swt.widgets.Group; |
|
16 |
import org.eclipse.swt.widgets.Label; |
|
17 |
import org.eclipse.swt.widgets.Text; |
|
18 |
import org.eclipse.swt.widgets.ToolItem; |
|
19 |
import org.eclipse.ui.IPartListener; |
|
20 |
import org.eclipse.ui.IWorkbenchPart; |
|
21 |
import org.txm.core.preferences.TXMPreferences; |
|
22 |
import org.txm.core.results.Parameter; |
|
23 |
import org.txm.core.results.TXMResult; |
|
24 |
import org.txm.rcp.IImageKeys; |
|
25 |
import org.txm.rcp.editors.TXMEditor; |
|
26 |
import org.txm.rcp.editors.listeners.ComputeKeyListener; |
|
27 |
import org.txm.rcp.messages.TXMUIMessages; |
|
28 |
import org.txm.rcp.swt.widget.AssistedChoiceQueryWidget; |
|
29 |
import org.txm.rcp.swt.widget.ComplexSubcorpusPanel; |
|
30 |
import org.txm.rcp.swt.widget.structures.SimpleSubcorpusPanel; |
|
31 |
import org.txm.rcp.views.corpora.CorporaView; |
|
32 |
import org.txm.searchengine.cqp.corpus.Subcorpus; |
|
33 |
import org.txm.searchengine.cqp.corpus.query.Match; |
|
34 |
|
|
35 |
public class SubcorpusEditor extends TXMEditor<Subcorpus> { |
|
36 |
|
|
37 |
protected static final String ASSISTANTS_GROUPNAME = "Assistants"; |
|
38 |
private Label nameLabel; |
|
39 |
@Parameter(key = TXMPreferences.USER_NAME) |
|
40 |
|
|
41 |
private Text nameText; |
|
42 |
|
|
43 |
private Label queryLabel; |
|
44 |
|
|
45 |
@Parameter(key = TXMPreferences.QUERY) |
|
46 |
private AssistedChoiceQueryWidget queryWidget; |
|
47 |
|
|
48 |
Label matchesInfo; |
|
49 |
Text matchStartsEndsInfo; |
|
50 |
private Group modeGroups; |
|
51 |
private ToolItem refreshQueryButton; |
|
52 |
|
|
53 |
@Override |
|
54 |
public void _createPartControl() throws Exception { |
|
55 |
|
|
56 |
getSite().getPage().addPartListener(new IPartListener() { |
|
57 |
|
|
58 |
@Override |
|
59 |
public void partOpened(IWorkbenchPart part) { } |
|
60 |
|
|
61 |
@Override |
|
62 |
public void partDeactivated(IWorkbenchPart part) { } |
|
63 |
|
|
64 |
@Override |
|
65 |
public void partClosed(IWorkbenchPart part) { |
|
66 |
TXMResult r = getResult(); |
|
67 |
if (!r.hasBeenComputedOnce()) { |
|
68 |
r.delete(); |
|
69 |
CorporaView.refresh(); |
|
70 |
} |
|
71 |
} |
|
72 |
|
|
73 |
@Override |
|
74 |
public void partBroughtToTop(IWorkbenchPart part) { } |
|
75 |
|
|
76 |
@Override |
|
77 |
public void partActivated(IWorkbenchPart part) { } |
|
78 |
}); |
|
79 |
|
|
80 |
// Modified computing listeners to manage multi lines query widgets |
|
81 |
ComputeKeyListener computeKeyListener = new ComputeKeyListener(this) { |
|
82 |
|
|
83 |
@Override |
|
84 |
public void keyPressed(KeyEvent e) { |
|
85 |
|
|
86 |
if (queryWidget.getQuery() == null) return; |
|
87 |
if (!queryWidget.getQuery().getSearchEngine().hasMultiLineQueries()) super.keyPressed(e); |
|
88 |
} |
|
89 |
}; |
|
90 |
|
|
91 |
getMainParametersComposite().getLayout().numColumns = 4; |
|
92 |
|
|
93 |
nameLabel = new Label(getMainParametersComposite(), SWT.NONE); |
|
94 |
nameLabel.setText(TXMUIMessages.name); |
|
95 |
nameLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false)); |
|
96 |
|
|
97 |
nameText = new Text(this.getMainParametersComposite(), SWT.BORDER); |
|
98 |
GridData gdata = new GridData(SWT.FILL, SWT.CENTER, true, false); |
|
99 |
nameText.setLayoutData(gdata); |
|
100 |
gdata.widthHint = 150; |
|
101 |
nameText.addModifyListener(computeKeyListener); |
|
102 |
|
|
103 |
queryLabel = new Label(getMainParametersComposite(), SWT.NONE); |
|
104 |
queryLabel.setText(TXMUIMessages.ampQuery); |
|
105 |
queryLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false)); |
|
106 |
|
|
107 |
queryWidget = new AssistedChoiceQueryWidget(this.getMainParametersComposite(), SWT.BORDER|SWT.DROP_DOWN | SWT.MULTI | SWT.WRAP | SWT.V_SCROLL, getResult()); |
|
108 |
queryWidget.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, true)); |
|
109 |
queryWidget.addKeyListener(computeKeyListener); |
|
110 |
queryWidget.getQueryWidget().addModifyListener(computeKeyListener); |
|
111 |
|
|
112 |
ArrayList<String> modes = new ArrayList<String>(); |
|
113 |
final ArrayList<SelectionListener> listeners = new ArrayList<SelectionListener>(); |
|
114 |
|
|
115 |
// MODE TABS |
|
116 |
SelectionListener openCloseSelectionListener = new SelectionListener() { |
|
117 |
@Override |
|
118 |
public void widgetSelected(SelectionEvent e) { |
|
119 |
|
|
120 |
boolean v = getTopToolbar().isVisible(ASSISTANTS_GROUPNAME); |
|
121 |
if (!v) { // not visible remove all composites |
|
122 |
if (modeGroups.getChildren().length > 0) { |
|
123 |
Control c = modeGroups.getChildren()[0]; |
|
124 |
if (c instanceof SimpleSubcorpusPanel) { |
|
125 |
SimpleSubcorpusPanel ssp = (SimpleSubcorpusPanel)c; |
|
126 |
String q = ssp.getQueryString(); |
|
127 |
if (q.length() > 0) { |
|
128 |
queryWidget.setText(q); |
|
129 |
} |
|
130 |
} else if (c instanceof ComplexSubcorpusPanel) { |
|
131 |
ComplexSubcorpusPanel ssp = (ComplexSubcorpusPanel)c; |
|
132 |
GridData gdata = new GridData(GridData.FILL, GridData.FILL, true, true); |
|
133 |
ssp.setLayoutData(gdata); |
|
134 |
gdata.heightHint = 600; |
|
135 |
String q = ssp.getQueryString(); |
|
136 |
if (q.length() > 0) { |
|
137 |
queryWidget.setText(q); |
|
138 |
} |
|
139 |
} |
|
140 |
for (Control c2 : modeGroups.getChildren()) c2.dispose(); |
|
141 |
} |
|
142 |
} else { |
|
143 |
|
|
144 |
for (Control c : modeGroups.getChildren()) c.dispose(); |
|
145 |
|
|
146 |
if (modeGroups.getChildren().length == 0) { |
|
147 |
listeners.get(0).widgetSelected(e); |
|
148 |
} |
|
149 |
} |
|
150 |
} |
|
151 |
|
|
152 |
@Override |
|
153 |
public void widgetDefaultSelected(SelectionEvent e) { } |
|
154 |
}; |
|
155 |
|
|
156 |
modes.add("Simple"); |
|
157 |
modes.add("Assisted"); |
|
158 |
|
|
159 |
listeners.add(new SelectionListener() { // create alistener to instantiate a new AnnotationArea |
|
160 |
|
|
161 |
@Override |
|
162 |
public void widgetSelected(SelectionEvent e) { |
|
163 |
try { |
|
164 |
for (Control c : modeGroups.getChildren()) c.dispose(); |
|
165 |
|
|
166 |
getTopToolbar().setVisible(ASSISTANTS_GROUPNAME, true); |
|
167 |
|
|
168 |
SimpleSubcorpusPanel panel = new SimpleSubcorpusPanel(modeGroups, SWT.BORDER, null, getResult().getCorpusParent()); |
|
169 |
panel.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true)); |
|
170 |
|
|
171 |
modeGroups.layout(true); |
|
172 |
getResultArea().getParent().layout(true); |
|
173 |
|
|
174 |
} catch (Exception e1) { |
|
175 |
// TODO Auto-generated catch block |
|
176 |
e1.printStackTrace(); |
|
177 |
} |
|
178 |
} |
|
179 |
|
|
180 |
@Override |
Formats disponibles : Unified diff