Révision 3980

TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/views/corpora/CorpusViewLabelProvider.java (revision 3980)
19 19
	public String getText(Object element) { // cut label if too long
20 20
		
21 21
		String txt = super.getText(element);
22
		if (txt == null || txt.length() == 0) return "no_name";
23
		
22 24
		if (txt != null && txt.length() > TXMEditor.MAX_NAME_LENGTH) {
23 25
			txt = txt.substring(0, TXMEditor.MAX_NAME_LENGTH - 1) + "..."; //$NON-NLS-1$
24 26
		}
TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/actions/CreatePartitionDialog.java (revision 3980)
217 217
		
218 218
		if (selectedTab == simpleTab) { // Simple mode
219 219
			
220
			partition = simplePanel.createPartition(name);
220
			partition = simplePanel.createPartition(name, null);
221 221
		}
222 222
		else if (selectedTab == assistedTab) { // Assisted mode
223 223
			
......
227 227
				Log.info(TXMCoreMessages.bind(TXMUIMessages.noPartitionNameWasSpecifiedTheNameIsP0, name));
228 228
			}
229 229
			
230
			partition = this.compositeForAssisted.createPartition(name);
230
			partition = this.compositeForAssisted.createPartition(name, null);
231 231
		}
232 232
		else if (selectedTab == crossedTab) { // Advanced mode
233 233
			
234
			partition = crossedPanel.createPartition(name);
234
			partition = crossedPanel.createPartition(name, null);
235 235
		}
236 236
		else if (selectedTab == advancedTab) { // Advanced mode
237 237
			
238
			partition = advancedPartitionPanel.createPartition(name);
238
			partition = advancedPartitionPanel.createPartition(name, null);
239 239
		}
240 240
		
241 241
		// Error
TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/structures/CrossedPartitionPanel.java (revision 3980)
23 23
import org.txm.searchengine.cqp.corpus.Subcorpus;
24 24
import org.txm.utils.logger.Log;
25 25

  
26
public class CrossedPartitionPanel extends Composite {
26
public class CrossedPartitionPanel extends Composite implements ParitionParameterGenerator {
27 27

  
28 28
	/** The selected structural unit property. */
29 29
	private List<StructuralUnitProperty> selectedStructuralUnitProperties = new ArrayList<>();
......
83 83
		propertyLabel.setLayoutData(new GridData(GridData.END, GridData.CENTER, false, false));
84 84
		propertyLabel.setToolTipText("Select at least two properties");
85 85
		
86
		propertyCombo = new SuperListViewer(this, SWT.MULTI);
86
		propertyCombo = new SuperListViewer(this, SWT.MULTI|SWT.V_SCROLL);
87 87
		propertyCombo.setLabelProvider(new LabelProvider() {
88 88
			@Override
89 89
			public String getText(Object element) {
......
94 94
				}
95 95
			}
96 96
		});
97
		propertyCombo.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));
97
		GridData gdata = new GridData(GridData.FILL, GridData.FILL, true, true);
98
		gdata.heightHint = 400;
99
		propertyCombo.setLayoutData(gdata);
98 100

  
99 101
		ArrayList<StructuralUnitProperty> all = new ArrayList<>();
100 102
		for (StructuralUnit su : structuralUnitsFinal) {
......
148 150
		return selectedStructuralUnitProperties;
149 151
	}
150 152

  
151
	public Partition createPartition(String name) {
153
	public Partition createPartition(String name, Partition partition) {
152 154
		
153 155
		if (selectedStructuralUnitProperties.size() < 2) {
154 156
			return null;
......
166 168
		String expandTarget = expandText.getText();
167 169
		
168 170
		PartitionQueriesGenerator pqg = new PartitionQueriesGenerator();
169
		Partition partition;
170 171
		try {
171
			partition = pqg.createPartition(corpus, false,
172
			partition = pqg.createPartition(corpus, partition, false,
172 173
					name, partNamePrefix, separator,
173 174
					structuralUnits, structuralUnitProperties,
174 175
					structuralUnitToIgnore, expandTarget);
......
208 209
		 * @throws CqiClientException 
209 210
		 * @throws InterruptedException 
210 211
		 */
211
		public Partition createPartition(CQPCorpus corpus, boolean debug,
212
		public Partition createPartition(CQPCorpus corpus, Partition partition, boolean debug,
212 213
				String partitionName, String partNamePrefix, String separator,
213 214
				List<String> structuralUnits, List<String> structuralUnitProperties,
214 215
				List<String> structuralUnitToIgnore, String expandTarget) throws CqiClientException, InterruptedException 	{
......
266 267

  
267 268
				// Creating the partition
268 269
				if (!DEBUG  && queries.size() == partNames.size()) {
269
					Partition partition = new Partition(corpus);
270
					if (partition == null) {
271
						partition = new Partition(corpus);
272
					} else {
273
						partition.removeAllParts();
274
					}
270 275
					partition.setParameters(PARTITION_NAME, queries, partNames);
271 276
					partition.compute();
272 277
					return partition;
TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/structures/ComplexSubcorpusPanel.java (revision 3980)
59 59
/**
60 60
 * The Class ComplexSubcorpusPanel.
61 61
 */
62
public class ComplexSubcorpusPanel extends Composite {
62
public class ComplexSubcorpusPanel extends Composite implements SubcorpusParameterGenerator {
63 63
	
64 64
	/** The self. */
65 65
	
TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/structures/ParitionParameterGenerator.java (revision 3980)
1
package org.txm.rcp.swt.widget.structures;
2

  
3
import org.txm.searchengine.cqp.corpus.Partition;
4

  
5
public interface ParitionParameterGenerator {
6
	
7
	/**
8
	 * creates or updates a partition
9
	 * @param name
10
	 * @param partition
11
	 * @return
12
	 */
13
	public Partition createPartition(String name, Partition partition);
14
}
0 15

  
TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/structures/SubcorpusParameterGenerator.java (revision 3980)
1
package org.txm.rcp.swt.widget.structures;
2

  
3

  
4
public interface SubcorpusParameterGenerator {
5
	public String getQueryString();
6
	public String getGeneratedName();
7
}
0 8

  
TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/structures/AdvancedPartitionPanel.java (revision 3980)
27 27
import org.txm.utils.io.IOUtils;
28 28
import org.txm.utils.logger.Log;
29 29

  
30
public class AdvancedPartitionPanel extends Composite {
30
public class AdvancedPartitionPanel extends Composite implements ParitionParameterGenerator {
31 31

  
32 32
	// for the "advanced" tab
33 33
	/** The queries. */
......
189 189
	 *
190 190
	 * @return the advance part names
191 191
	 */
192
	private List<String> getAdvancePartNames() {
192
	public List<String> getNames() {
193 193

  
194 194
		ArrayList<String> values = new ArrayList<>();
195 195
		int count = 0;
......
229 229
		return false;
230 230
	}
231 231

  
232
	public Partition createPartition(String name) {
232
	public Partition createPartition(String name, Partition partition) {
233 233

  
234 234
		queriesString.clear();
235 235
		for (QueryWidget query : queries) {
......
237 237
			//query.memorize();
238 238
		}
239 239

  
240
		Partition partition = null;
241

  
242 240
		try {
243 241
			// auto-naming if needed
244 242
			if (name.isEmpty()) {
......
246 244
				Log.info(TXMCoreMessages.bind(TXMUIMessages.noPartitionNameWasSpecifiedTheNameIsP0, name));
247 245
			}
248 246

  
249
			partition = new Partition(this.corpus);
250
			partition.setParameters(name, this.getQueries(), this.getAdvancePartNames());
247
			if (partition == null) {
248
				partition = new Partition(this.corpus);
249
			} else {
250
				partition.removeAllParts();
251
			}
252
			partition.setParameters(name, this.getQueries(), this.getNames());
251 253
		}
252 254
		catch (Exception e) {
253 255
			org.txm.utils.logger.Log.printStackTrace(e);
......
256 258

  
257 259
		return partition;
258 260
	}
261

  
259 262
}
TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/structures/SimplePartitionPanel.java (revision 3980)
20 20
import org.txm.searchengine.cqp.corpus.StructuralUnitProperty;
21 21
import org.txm.utils.logger.Log;
22 22

  
23
public class SimplePartitionPanel extends Composite {
23
public class SimplePartitionPanel extends Composite implements ParitionParameterGenerator {
24 24

  
25 25
	// For the "simple" tab
26 26
	/** The selected structural unit. */
......
238 238
		return selectedStructuralUnitProperty;
239 239
	}
240 240

  
241
	public Partition createPartition(String name) {
241
	public Partition createPartition(String name, Partition partition) {
242 242

  
243
		Partition partition = null;
244

  
245 243
		// Simple mode
246 244

  
247 245
		StructuralUnit structuralUnit = this.structuralUnitsFinal.get(this.structuralUnitsCombo.getSelectionIndex());
......
252 250
				name = property.asFullNameString();
253 251
			}
254 252

  
255
			partition = new Partition(corpus);
253
			if (partition == null) {
254
				partition = new Partition(corpus);
255
			} else {
256
				partition.removeAllParts();
257
			}
256 258
			partition.setParameters(name, property, null);
257 259
		}
258 260
		catch (Exception e) {
TXM/trunk/bundles/org.txm.rcp/src/main/java/org/txm/rcp/swt/widget/PartitionComposer.java (revision 3980)
50 50
import org.txm.core.messages.TXMCoreMessages;
51 51
import org.txm.rcp.IImageKeys;
52 52
import org.txm.rcp.messages.TXMUIMessages;
53
import org.txm.rcp.swt.widget.structures.ParitionParameterGenerator;
53 54
import org.txm.searchengine.cqp.clientExceptions.CqiClientException;
54 55
import org.txm.searchengine.cqp.corpus.CQPCorpus;
55 56
import org.txm.searchengine.cqp.corpus.Partition;
......
63 64
/**
64 65
 * used for assisted mode of partition creation @ author mdecorde.
65 66
 */
66
public class PartitionComposer extends Composite {
67
public class PartitionComposer extends Composite implements ParitionParameterGenerator{
67 68
	
68 69
	/** The self. */
69 70
	PartitionComposer self;
......
595 596
	 *
596 597
	 * @return the partition
597 598
	 */
598
	public Partition createPartition(String name) {
599
	public Partition createPartition(String name, Partition partition) {
599 600
		
600 601
		if (this.parts.size() == 0) {
601 602
			System.out.println(TXMUIMessages.errorColonThisPartitionHasNoPart);
602 603
			return null;
603 604
		}
604
		
605
				
605 606
		List<String> queries = new ArrayList<>();
606 607
		List<String> partnames = new ArrayList<>();
607 608
		for (PartItem part : this.parts) {
......
618 619
		}
619 620
		
620 621
		try {
621
			Partition p = new Partition(corpus);
622
			p.setParameters(name, queries, partnames);
623
			return p;
622
			if (partition == null) {
623
				partition = new Partition(corpus);
624
			} else {
625
				partition.removeAllParts();
626
			}
627
			partition.setParameters(name, queries, partnames);
628
			return partition;
624 629
		}
625 630
		catch (Exception e) {
626 631
			org.txm.utils.logger.Log.printStackTrace(e);
......
637 642
		
638 643
		return this.availableList.getItemCount() > 0;
639 644
	}
640
	
641
	public String getGeneratedName() {
642
		
643
		// TODO Auto-generated method stub
644
		return null;
645
	}
645

  
646 646
}
TXM/trunk/bundles/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/CQPCorpus.java (revision 3980)
1016 1016
		if (virtualProperties == null) {
1017 1017
			virtualProperties = new ArrayList<>();
1018 1018
			virtualProperties.add(new PositionProperty(this));
1019
			// virtualProperties.add(new LengthProperty(this));
1019
			virtualProperties.add(new LengthProperty(this));
1020 1020
		}
1021 1021
		return virtualProperties;
1022 1022
	}
TXM/trunk/bundles/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/WordProperty.java (revision 3980)
3 3
import java.io.IOException;
4 4
import java.util.List;
5 5

  
6
import org.apache.commons.lang.StringUtils;
6 7
import org.txm.searchengine.cqp.clientExceptions.UnexpectedAnswerException;
7 8
import org.txm.searchengine.cqp.corpus.query.CQLQuery;
8 9
import org.txm.searchengine.cqp.corpus.query.MatchUtils;
......
117 118
		return sb.toString();
118 119
	}
119 120
	
121
	public String combine(List<String> values) {
122
		return StringUtils.join(values, " ");
123
	}
124
	
120 125
	/**
121 126
	 * 
122 127
	 * @return all indexed values in the main corpus 
TXM/trunk/bundles/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/LengthProperty.java (revision 3980)
12 12
import org.txm.searchengine.cqp.serverException.CqiServerError;
13 13

  
14 14
/**
15
 * A CQP property at token/word level
15
 * A CQP property at token/word level 
16 16
 * 
17
 * NOT IMPLEMENTED YET: the actual codes needs to accees 
18
 * 
17 19
 * @author mdecorde
18 20
 *
19 21
 */
TXM/trunk/bundles/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/VirtualProperty.java (revision 3980)
58 58
	public String getCQLTest(List<String> values) {
59 59
		return null;
60 60
	}
61
	
62 61
}
63 62

  
TXM/trunk/bundles/org.txm.searchengine.cqp.core/src/org/txm/searchengine/cqp/corpus/Partition.java (revision 3980)
143 143
	public boolean _compute_with_lists(TXMProgressMonitor monitor) throws Exception {
144 144
		
145 145
		if (this.getUserName() == null || this.getUserName().length() == 0) {
146
			this.setUserName("no_name");
146
			this.setUserName("");
147 147
		}
148 148
		
149 149
		Log.finest(NLS.bind(SearchEngineCoreMessages.info_creatingNewPartitionP0OfP1, this.getUserName(), this.getParent()));
......
742 742
	public List<String> getPartNamesParameter() {
743 743
		return pPartNames;
744 744
	}
745

  
746
	public void removeAllParts() {
747
		
748
		for (Part p : getParts()) {
749
			p.delete();
750
		}
751
	}
745 752
}
TXM/trunk/bundles/org.txm.searchengine.cqp.rcp/src/org/txm/searchengine/cqp/rcp/preferences/SubcorpusPreferencePage.java (revision 3980)
37 37
import org.eclipse.jface.util.PropertyChangeEvent;
38 38
import org.eclipse.ui.IWorkbench;
39 39
import org.osgi.service.prefs.Preferences;
40
import org.txm.core.preferences.TBXPreferences;
41
import org.txm.core.preferences.TXMPreferences;
40 42
import org.txm.libs.cqp.CQPLibPreferences;
41 43
import org.txm.rcp.Application;
44
import org.txm.rcp.preferences.RCPPreferences;
42 45
import org.txm.rcp.preferences.TXMPreferencePage;
43 46
import org.txm.rcp.preferences.TXMPreferenceStore;
44 47
import org.txm.searchengine.cqp.core.preferences.SubcorpusPreferences;
......
79 82
		
80 83
		optimized_mode = new BooleanFieldEditor(SubcorpusPreferences.OPTIMIZED_MODE, "Create structured subcorpus using optimized queries", BooleanFieldEditor.DEFAULT, getFieldEditorParent());
81 84
		addField(optimized_mode);
85
		
86
		if (TBXPreferences.getInstance().getBoolean(TBXPreferences.EXPERT_USER)) {
87
			editor_mode = new BooleanFieldEditor(SubcorpusPreferences.EDITORMODE, "Create subcorpus using an editor instead of a dialog", BooleanFieldEditor.DEFAULT, getFieldEditorParent());
88
			addField(editor_mode);
89
		}
82 90
	}
83 91
	
84 92
	/*
TXM/trunk/bundles/org.txm.searchengine.cqp.rcp/src/org/txm/searchengine/cqp/rcp/preferences/PartitionPreferencePage.java (revision 3980)
37 37
import org.eclipse.jface.util.PropertyChangeEvent;
38 38
import org.eclipse.ui.IWorkbench;
39 39
import org.osgi.service.prefs.Preferences;
40
import org.txm.core.preferences.TBXPreferences;
40 41
import org.txm.libs.cqp.CQPLibPreferences;
41 42
import org.txm.rcp.Application;
42 43
import org.txm.rcp.preferences.TXMPreferencePage;
......
52 53
 *
53 54
 */
54 55
public class PartitionPreferencePage extends TXMPreferencePage {
55

  
56
	
56 57
	/** The cqi_server_is_remote. */
57 58
	private BooleanFieldEditor editor_mode;
58

  
59
	
59 60
	/**
60 61
	 * Instantiates a new cQP preference page.
61 62
	 */
62 63
	public PartitionPreferencePage() {
63 64
		super();
64 65
	}
65

  
66
	
66 67
	/**
67 68
	 * Creates the field editors. Field editors are abstractions of the common
68 69
	 * GUI blocks needed to manipulate various types of preferences. Each field
......
70 71
	 */
71 72
	@Override
72 73
	public void createFieldEditors() {
73

  
74
		editor_mode = new BooleanFieldEditor(PartitionPreferences.EDITOR_MODE, "Create partitions using the editor mode", BooleanFieldEditor.DEFAULT, getFieldEditorParent());
75
		addField(editor_mode);
74
		
75
		if (TBXPreferences.getInstance().getBoolean(TBXPreferences.EXPERT_USER)) {
76
			editor_mode = new BooleanFieldEditor(PartitionPreferences.EDITOR_MODE, "Create partitions using the editor mode", BooleanFieldEditor.DEFAULT, getFieldEditorParent());
77
			addField(editor_mode);
78
		}
76 79
	}
77

  
80
	
78 81
	/*
79 82
	 * (non-Javadoc)
80 83
	 * 
TXM/trunk/bundles/org.txm.searchengine.cqp.rcp/src/org/txm/searchengine/cqp/rcp/editor/PartitionEditor.java (revision 3980)
1 1
package org.txm.searchengine.cqp.rcp.editor;
2 2

  
3
import org.apache.commons.lang.StringUtils;
3
import java.util.ArrayList;
4
import java.util.Arrays;
5

  
4 6
import org.eclipse.jface.layout.GridDataFactory;
5 7
import org.eclipse.jface.viewers.CellLabelProvider;
6 8
import org.eclipse.jface.viewers.ISelection;
......
18 20
import org.eclipse.swt.events.SelectionEvent;
19 21
import org.eclipse.swt.events.SelectionListener;
20 22
import org.eclipse.swt.layout.GridData;
23
import org.eclipse.swt.layout.GridLayout;
21 24
import org.eclipse.swt.widgets.Button;
25
import org.eclipse.swt.widgets.Composite;
26
import org.eclipse.swt.widgets.Control;
22 27
import org.eclipse.swt.widgets.Event;
28
import org.eclipse.swt.widgets.Group;
23 29
import org.eclipse.swt.widgets.Label;
24 30
import org.eclipse.swt.widgets.Text;
25 31
import org.txm.core.preferences.TXMPreferences;
26 32
import org.txm.core.results.Parameter;
33
import org.txm.rcp.IImageKeys;
27 34
import org.txm.rcp.editors.TXMEditor;
28 35
import org.txm.rcp.editors.listeners.ComputeKeyListener;
36
import org.txm.rcp.messages.TXMUIMessages;
37
import org.txm.rcp.swt.GLComposite;
29 38
import org.txm.rcp.swt.widget.AssistedQueryWidget;
39
import org.txm.rcp.swt.widget.PartitionComposer;
40
import org.txm.rcp.swt.widget.structures.CrossedPartitionPanel;
41
import org.txm.rcp.swt.widget.structures.SimplePartitionPanel;
30 42
import org.txm.rcp.views.corpora.CorporaView;
31 43
import org.txm.searchengine.cqp.clientExceptions.CqiClientException;
32 44
import org.txm.searchengine.cqp.corpus.Part;
......
34 46
import org.txm.utils.logger.Log;
35 47

  
36 48
public class PartitionEditor extends TXMEditor<Partition> {
37

  
49
	
50
	protected static final String ASSISTANTS_GROUPNAME = "Assistants";
51
	
38 52
	TableViewer partsViewer;
39 53
	TableViewerColumn nameColumn;
40 54
	TableViewerColumn queryColumn;
......
46 60
	
47 61
	private Text partNameWidget;
48 62
	private AssistedQueryWidget queryWidget;
63
	private Group modeGroups;
64
	private Button updateQueryFromAssistance;
65
	private Composite assistantPanel;
49 66
	
50 67
	@Override
51 68
	public void _createPartControl() throws Exception {
......
57 74
		getMainParametersComposite().getLayout().numColumns = 7;
58 75
		
59 76
		Label l = new Label(getMainParametersComposite(), SWT.NONE);
60
		l.setText("Name");
77
		l.setText(TXMUIMessages.name);
61 78
		l.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
62 79
		
63 80
		nameWidget = new Text(getMainParametersComposite(), SWT.BORDER);
64
		nameWidget.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
81
		GridData gdata = new GridData(SWT.LEFT, SWT.CENTER, false, false);
82
		gdata.minimumWidth = 300;
83
		nameWidget.setLayoutData(gdata);
65 84
		nameWidget.addModifyListener(new ModifyListener() {
66 85
			
67 86
			@Override
......
81 100
		miniInfoLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
82 101
		
83 102
		partNameWidget = new Text(getMainParametersComposite(), SWT.BORDER);
84
		partNameWidget.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
103
		gdata = new GridData(SWT.LEFT, SWT.CENTER, false, false);
104
		gdata.minimumWidth = 300;
105
		partNameWidget.setLayoutData(gdata);
85 106
		
86 107
		// [ (v)]
87 108
		// queryWidget = new QueryWidget(queryArea, SWT.DROP_DOWN);
88 109
		queryWidget = new AssistedQueryWidget(getMainParametersComposite(), SWT.DROP_DOWN, getResult().getCorpus());
89
		queryWidget.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
110
		gdata = new GridData(SWT.LEFT, SWT.CENTER, false, false);
111
		gdata.minimumWidth = 400;
112
		queryWidget.setLayoutData(gdata);
90 113
		queryWidget.addKeyListener(new ComputeKeyListener(this) {
91 114
			@Override
92 115
			public void keyPressed(KeyEvent e) {
......
131 154
			public void widgetDefaultSelected(SelectionEvent e) { }
132 155
		});
133 156
		
157
		ArrayList<String> modes = new ArrayList<String>();
158
		final ArrayList<SelectionListener> listeners = new ArrayList<SelectionListener>();
159
		
160
		// MODE TABS
161
		SelectionListener openCloseSelectionListener = new SelectionListener() {
162
			@Override
163
			public void widgetSelected(SelectionEvent e) {
164
				
165
				if (e.getSource() == updateQueryFromAssistance) { // copy query
166
					Control c = modeGroups.getChildren()[0];
167
					
168
					if (c instanceof SimplePartitionPanel) {
169
						
170
						SimplePartitionPanel ssp = (SimplePartitionPanel)c;
171
						ssp.createPartition("", getResult());
172
					} else if (c instanceof CrossedPartitionPanel) {
173
						
174
						CrossedPartitionPanel ssp = (CrossedPartitionPanel)c;
175
						ssp.createPartition("", getResult());
176
					}  else if (c instanceof PartitionComposer) {
177
						
178
						PartitionComposer ssp = (PartitionComposer)c;
179
						ssp.createPartition(nameWidget.getText(), getResult());
180
					}
181
					
182
					compute(false);
183
					
184
					try {
185
						updateEditorFromResult(false);
186
					}
187
					catch (Exception e1) {
188
						// TODO Auto-generated catch block
189
						e1.printStackTrace();
190
					}
191
					
192
				} else {
193
					
194
					for (Control c2 : modeGroups.getChildren()) c2.dispose();
195
					
196
					boolean v = getTopToolbar().isVisible(ASSISTANTS_GROUPNAME);
197
					if (v) { // not visible remove all composites
198
						updateQueryFromAssistance.setEnabled(false);
199
						getTopToolbar().setVisible(ASSISTANTS_GROUPNAME, false);
200
					} else { 
201
						updateQueryFromAssistance.setEnabled(true);
202
						if (modeGroups.getChildren().length  == 0) { // select first mode by default
203
							listeners.get(0).widgetSelected(e);
204
						}
205
					}
206
					
207
					modeGroups.layout(true);
208
					getResultArea().getParent().layout(true);
209
				}
210
			}
211
			
212
			@Override
213
			public void widgetDefaultSelected(SelectionEvent e) {	}
214
		};
215
		
216
		modes.add("Simple");
217
		modes.add("Assisted");
218
		modes.add("Crossed");
219
		
220
		listeners.add(new SelectionListener() { // create alistener to instantiate a new AnnotationArea
221
			
222
			@Override
223
			public void widgetSelected(SelectionEvent e) {
224
				try {
225
					for (Control c : modeGroups.getChildren()) c.dispose(); // clean
226
					
227
					getTopToolbar().setVisible(ASSISTANTS_GROUPNAME, true);
228
					
229
					assistantPanel = new SimplePartitionPanel(modeGroups, SWT.BORDER, getResult().getCorpus());
230
					assistantPanel.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));
231
					
232
					modeGroups.layout(true);
233
					getResultArea().getParent().layout(true);
234
					updateQueryFromAssistance.setEnabled(true);
235
					
236
				} catch (Exception e1) {
237
					// TODO Auto-generated catch block
238
					e1.printStackTrace();
239
				}
240
			}
241
			
242
			@Override
243
			public void widgetDefaultSelected(SelectionEvent e) {}
244
		});
245
		listeners.add(new SelectionListener() { // create alistener to instantiate a new AnnotationArea
246
			
247
			@Override
248
			public void widgetSelected(SelectionEvent e) {
249
				try {
250
					for (Control c : modeGroups.getChildren()) c.dispose(); // clean
251
					
252
					getTopToolbar().setVisible(ASSISTANTS_GROUPNAME, true);
253
					
254
					assistantPanel = new PartitionComposer(modeGroups, SWT.BORDER, getResult().getCorpus());
255
					assistantPanel.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));
256
					
257
					modeGroups.layout(true);
258
					getResultArea().getParent().layout(true);
259
					updateQueryFromAssistance.setEnabled(true);
260
					
261
				} catch (Exception e1) {
262
					// TODO Auto-generated catch block
263
					e1.printStackTrace();
264
				}
265
			}
266
			
267
			@Override
268
			public void widgetDefaultSelected(SelectionEvent e) {}
269
		});
270
		listeners.add(new SelectionListener() { // create alistener to instantiate a new AnnotationArea
271
			
272
			@Override
273
			public void widgetSelected(SelectionEvent e) {
274
				try {
275
					for (Control c : modeGroups.getChildren()) c.dispose(); // clean
276
					
277
					getTopToolbar().setVisible(ASSISTANTS_GROUPNAME, true);
278
					
279
					assistantPanel = new CrossedPartitionPanel(modeGroups, SWT.BORDER, getResult().getCorpus());
280
					assistantPanel.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));
281
					
282
					modeGroups.layout(true);
283
					getResultArea().getParent().layout(true);
284
					updateQueryFromAssistance.setEnabled(true);
285
					
286
				} catch (Exception e1) {
287
					// TODO Auto-generated catch block
288
					e1.printStackTrace();
289
				}
290
			}
291
			
292
			@Override
293
			public void widgetDefaultSelected(SelectionEvent e) {}
294
		});
295
		modeGroups = this.getTopToolbar().installAlternativesGroup(ASSISTANTS_GROUPNAME, ASSISTANTS_GROUPNAME, IImageKeys.ACTION_ASSISTQUERY, null, false, openCloseSelectionListener, modes, listeners);
296
		modeGroups.setLayout(new GridLayout(1, true));
297
		
298
		// RESULT AREA
299
		
300
		GLComposite buttons = new GLComposite(this.getResultArea(), SWT.NONE, "buttons");
301
		buttons.getLayout().numColumns = 10;
302
		buttons.getLayout().horizontalSpacing = 2;
303
		
304
		Button deleteAllButton = new Button(buttons, SWT.PUSH);
305
		deleteAllButton.setText("Clear");
306
		deleteAllButton.addSelectionListener(new SelectionListener() {
307
			
308
			@Override
309
			public void widgetSelected(SelectionEvent e) {
310
				
311
				for (Part p : getResult().getParts()) {
312
					p.delete();
313
				}
314
				
315
				partsViewer.setInput(getResult());
316
				try {
317
					updateEditorFromResult(false);
318
				} catch (Exception e1) {
319
					// TODO Auto-generated catch block
320
					e1.printStackTrace();
321
				}
322
			}
323
			
324
			@Override
325
			public void widgetDefaultSelected(SelectionEvent e) { }
326
		});
327
		
328
		updateQueryFromAssistance = new Button(buttons, SWT.PUSH);
329
		updateQueryFromAssistance.setText("Add parts from from assitant");
330
		updateQueryFromAssistance.addSelectionListener(openCloseSelectionListener);
331
		updateQueryFromAssistance.setEnabled(false);
332
		
134 333
		partsViewer = new TableViewer(this.getResultArea());
135 334
		partsViewer.getTable().setLayoutData(GridDataFactory.fillDefaults().align(GridData.FILL, GridData.FILL).grab(true, true).create());
136 335
		partsViewer.getTable().setHeaderVisible(true);
......
143 342
				if (e.keyCode == SWT.DEL) {
144 343
					ISelection isel = partsViewer.getSelection();
145 344
					IStructuredSelection sel = (IStructuredSelection)isel;
146
					Object o = sel.getFirstElement();
147
					if (o != null && o instanceof Part) {
148
						Part p = (Part)o;
149
						p.delete();
150
						partsViewer.setInput(getResult());
151
						try {
152
							updateEditorFromResult(false);
153
						} catch (Exception e1) {
154
							// TODO Auto-generated catch block
155
							e1.printStackTrace();
345
					for (Object o : sel.toList()) {
346
						if (o != null && o instanceof Part) {
347
							Part p = (Part)o;
348
							p.delete();
156 349
						}
157 350
					}
351
					
352
					partsViewer.setInput(getResult());
353
					try {
354
						updateEditorFromResult(false);
355
					} catch (Exception e1) {
356
						// TODO Auto-generated catch block
357
						e1.printStackTrace();
358
					}
158 359
				}
159 360
			}
160 361
			
......
169 370
				if (inputElement instanceof Partition) {
170 371
					return ((Partition)inputElement).getParts().toArray();
171 372
				}
172
								
373
				
173 374
				return new Object[0];
174 375
			}
175 376
			
......
249 450
		
250 451
		partsViewer.setInput(getResult());
251 452
	}
252

  
453
	
253 454
	/**
254 455
	 * 
255 456
	 * @param event
......
288 489
		return false;
289 490
	}
290 491
	
492
	/**
493
	 * 
494
	 * @return success state
495
	 */
496
	public boolean addMultiParts(ArrayList<String> queries, ArrayList<String> names) {
497
		System.out.println("Add parts: "+queries+" "+names);
498
		
499
		if (queries.size() == 0) {
500
			Log.warning("Error: no queries");
501
			return false;
502
		}
503
		if (names.size() == 0) {
504
			Log.warning("Error: no names.");
505
			return false;
506
		}
507
		if (names.size() != queries.size()) {
508
			Log.warning("Error: names and queries sizes differ.");
509
			return false;
510
		}
511
		try {
512
			for (int i = 0 ; i < names.size() ; i++) {
513
				Part p = new Part(getResult(), names.get(i), queries.get(i));
514
				
515
				if (p.compute() && p.getSize() > 0) { // the part is OK, update the partition parameters
516
					getResult().getQueriesParameter().add(queries.get(i));
517
					getResult().getPartNamesParameter().add(names.get(i));
518
				} else {
519
					p.delete(); // remove bad results
520
				}
521
			}
522
			
523
			compute(false);
524
			
525
			updateEditorFromResult(false);
526
		}
527
		catch (Exception e) {
528
			// TODO Auto-generated catch block
529
			e.printStackTrace();
530
			return false;
531
		}
532
		return true;
533
	}
534
	
291 535
	@Override
292 536
	public void updateResultFromEditor() {
293 537
		// nothing to do
294 538
	}
295

  
539
	
296 540
	@Override
297 541
	public void updateEditorFromResult(boolean update) throws Exception {
298 542
		partsViewer.setInput(getResult());
TXM/trunk/bundles/org.txm.searchengine.cqp.rcp/src/org/txm/searchengine/cqp/rcp/editor/SubcorpusEditor.java (revision 3980)
11 11
import org.eclipse.swt.events.SelectionListener;
12 12
import org.eclipse.swt.layout.GridData;
13 13
import org.eclipse.swt.layout.GridLayout;
14
import org.eclipse.swt.widgets.Button;
15
import org.eclipse.swt.widgets.Composite;
14 16
import org.eclipse.swt.widgets.Control;
15 17
import org.eclipse.swt.widgets.Group;
16 18
import org.eclipse.swt.widgets.Label;
......
27 29
import org.txm.rcp.messages.TXMUIMessages;
28 30
import org.txm.rcp.swt.widget.AssistedChoiceQueryWidget;
29 31
import org.txm.rcp.swt.widget.structures.ComplexSubcorpusPanel;
32
import org.txm.rcp.swt.widget.structures.ContextsSubcorpusPanel;
30 33
import org.txm.rcp.swt.widget.structures.SimpleSubcorpusPanel;
31 34
import org.txm.rcp.views.corpora.CorporaView;
32 35
import org.txm.searchengine.cqp.corpus.Subcorpus;
33 36
import org.txm.searchengine.cqp.corpus.query.Match;
34 37

  
35 38
public class SubcorpusEditor extends TXMEditor<Subcorpus> {
36

  
39
	
37 40
	protected static final String ASSISTANTS_GROUPNAME = "Assistants";
38 41
	private Label nameLabel;
39 42
	@Parameter(key = TXMPreferences.USER_NAME)
40

  
43
	
41 44
	private Text nameText;
42

  
45
	
43 46
	private Label queryLabel;
44

  
47
	
45 48
	@Parameter(key = TXMPreferences.QUERY)
46 49
	private AssistedChoiceQueryWidget queryWidget;
47

  
50
	
48 51
	Label matchesInfo;
49 52
	Text matchStartsEndsInfo;
53
	Composite assistantPanel;
50 54
	private Group modeGroups;
51 55
	private ToolItem refreshQueryButton;
52

  
56
	private Button updateQueryFromAssistance;
57
	
53 58
	@Override
54 59
	public void _createPartControl() throws Exception {
55

  
60
		
56 61
		getSite().getPage().addPartListener(new IPartListener() {
57

  
62
			
58 63
			@Override
59 64
			public void partOpened(IWorkbenchPart part) { }
60

  
65
			
61 66
			@Override
62 67
			public void partDeactivated(IWorkbenchPart part) { }
63

  
68
			
64 69
			@Override
65 70
			public void partClosed(IWorkbenchPart part) {
66 71
				TXMResult r = getResult();
......
69 74
					CorporaView.refresh();
70 75
				}
71 76
			}
72

  
77
			
73 78
			@Override
74 79
			public void partBroughtToTop(IWorkbenchPart part) { }
75

  
80
			
76 81
			@Override
77 82
			public void partActivated(IWorkbenchPart part) { }
78 83
		});
79

  
84
		
80 85
		// 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
				};
86
		ComputeKeyListener computeKeyListener = new ComputeKeyListener(this) {
87
			
88
			@Override
89
			public void keyPressed(KeyEvent e) {
90
				
91
				if (queryWidget.getQuery() == null) return;
92
				if (!queryWidget.getQuery().getSearchEngine().hasMultiLineQueries()) super.keyPressed(e);
93
			}
94
		};
90 95
		
91 96
		getMainParametersComposite().getLayout().numColumns = 4;
92

  
97
		
93 98
		nameLabel = new Label(getMainParametersComposite(), SWT.NONE);
94 99
		nameLabel.setText(TXMUIMessages.name);
95 100
		nameLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
96

  
101
		
97 102
		nameText = new Text(this.getMainParametersComposite(), SWT.BORDER);
98 103
		GridData gdata = new GridData(SWT.FILL, SWT.CENTER, true, false);
99 104
		nameText.setLayoutData(gdata);
100 105
		gdata.widthHint = 150;
101 106
		nameText.addModifyListener(computeKeyListener);
102

  
107
		
103 108
		queryLabel = new Label(getMainParametersComposite(), SWT.NONE);
104 109
		queryLabel.setText(TXMUIMessages.ampQuery);
105 110
		queryLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false));
106

  
111
		
107 112
		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));
113
		gdata = new GridData(SWT.FILL, SWT.FILL, true, true);
114
		gdata.minimumWidth = 400;
115
		queryWidget.setLayoutData(gdata);
109 116
		queryWidget.addKeyListener(computeKeyListener);
110 117
		queryWidget.getQueryWidget().addModifyListener(computeKeyListener);
111

  
118
		
112 119
		ArrayList<String> modes = new ArrayList<String>();
113 120
		final ArrayList<SelectionListener> listeners = new ArrayList<SelectionListener>();
114

  
121
		
115 122
		// MODE TABS
116 123
		SelectionListener openCloseSelectionListener = new SelectionListener() {
117 124
			@Override
118 125
			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
							}
126
				
127
				if (e.getSource() == updateQueryFromAssistance) { // copy query
128
					Control c = modeGroups.getChildren()[0];
129
					if (c instanceof SimpleSubcorpusPanel) {
130
						SimpleSubcorpusPanel ssp = (SimpleSubcorpusPanel)c;
131
						String q = ssp.getQueryString();
132
						if (q.length() > 0) {
133
							queryWidget.setText(q);
134
							nameText.setText(ssp.getGeneratedName());
139 135
						}
140
						for (Control c2 : modeGroups.getChildren()) c2.dispose();
136
					} else if (c instanceof ComplexSubcorpusPanel) {
137
						ComplexSubcorpusPanel ssp = (ComplexSubcorpusPanel)c;
138
						String q = ssp.getQueryString();
139
						if (q.length() > 0) {
140
							queryWidget.setText(q);
141
							nameText.setText(ssp.getGeneratedName());
142
						}
141 143
					}
142
				} else { 
144
				} else {
143 145
					
144
					for (Control c : modeGroups.getChildren()) c.dispose();
146
					for (Control c2 : modeGroups.getChildren()) c2.dispose();
145 147
					
146
					if (modeGroups.getChildren().length  == 0) {
147
						listeners.get(0).widgetSelected(e);
148
					boolean v = getTopToolbar().isVisible(ASSISTANTS_GROUPNAME);
149
					if (v) { // not visible remove all composites
150
						
151
						updateQueryFromAssistance.setEnabled(false);
152
						getTopToolbar().setVisible(ASSISTANTS_GROUPNAME, false);
153
					} else { 
154
						
155
						updateQueryFromAssistance.setEnabled(true);
156
						if (modeGroups.getChildren().length  == 0) { // select first mode by default
157
							listeners.get(0).widgetSelected(e);
158
						}
148 159
					}
160
					
161
					modeGroups.layout(true);
162
					getResultArea().getParent().layout(true);
149 163
				}
150 164
			}
151

  
165
			
152 166
			@Override
153 167
			public void widgetDefaultSelected(SelectionEvent e) {	}
154 168
		};
155

  
169
		
156 170
		modes.add("Simple");
157 171
		modes.add("Assisted");
158

  
172
		modes.add("Contexts");
173
		
159 174
		listeners.add(new SelectionListener() { // create alistener to instantiate a new AnnotationArea
160

  
175
			
161 176
			@Override
162 177
			public void widgetSelected(SelectionEvent e) {
163 178
				try {
164
					for (Control c : modeGroups.getChildren()) c.dispose();
165

  
179
					for (Control c : modeGroups.getChildren()) c.dispose(); // clean
180
					
166 181
					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

  
182
					
183
					assistantPanel = new SimpleSubcorpusPanel(modeGroups, SWT.BORDER, null, getResult().getCorpusParent());
184
					assistantPanel.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));
185
					
171 186
					modeGroups.layout(true);
172 187
					getResultArea().getParent().layout(true);
173

  
188
					updateQueryFromAssistance.setEnabled(true);
189
					
174 190
				} catch (Exception e1) {
175 191
					// TODO Auto-generated catch block
176 192
					e1.printStackTrace();
177 193
				}
178 194
			}
179

  
195
			
180 196
			@Override
181 197
			public void widgetDefaultSelected(SelectionEvent e) {}
182 198
		});
183 199
		listeners.add(new SelectionListener() { // create alistener to instantiate a new AnnotationArea
184

  
200
			
185 201
			@Override
186 202
			public void widgetSelected(SelectionEvent e) {
187 203
				try {
188
					for (Control c : modeGroups.getChildren()) c.dispose();
189

  
204
					for (Control c : modeGroups.getChildren()) c.dispose(); // clean
205
					
190 206
					getTopToolbar().setVisible(ASSISTANTS_GROUPNAME, true);
191

  
192
					ComplexSubcorpusPanel panel = new ComplexSubcorpusPanel(modeGroups, SWT.BORDER, getResult().getCorpusParent());
193
					panel.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));
194

  
207
					
208
					assistantPanel = new ComplexSubcorpusPanel(modeGroups, SWT.BORDER, getResult().getCorpusParent());
209
					assistantPanel.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));
210
					
195 211
					modeGroups.layout(true);
196 212
					getResultArea().getParent().layout(true);
197

  
213
					updateQueryFromAssistance.setEnabled(true);
214
					
198 215
				} catch (Exception e1) {
199 216
					// TODO Auto-generated catch block
200 217
					e1.printStackTrace();
201 218
				}
202 219
			}
203

  
220
			
204 221
			@Override
205 222
			public void widgetDefaultSelected(SelectionEvent e) {}
206 223
		});
224
		listeners.add(new SelectionListener() { // create alistener to instantiate a new AnnotationArea
225
			
226
			@Override
227
			public void widgetSelected(SelectionEvent e) {
228
				try {
229
					for (Control c : modeGroups.getChildren()) c.dispose(); // clean
230
					
231
					getTopToolbar().setVisible(ASSISTANTS_GROUPNAME, true);
232
					
233
					assistantPanel = new ContextsSubcorpusPanel(modeGroups, SWT.BORDER, getResult().getCorpusParent());
234
					assistantPanel.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));
235
					
236
					modeGroups.layout(true);
237
					getResultArea().getParent().layout(true);
238
					updateQueryFromAssistance.setEnabled(true);
239
					
240
				} catch (Exception e1) {
241
					// TODO Auto-generated catch block
242
					e1.printStackTrace();
243
				}
244
			}
245
			
246
			@Override
247
			public void widgetDefaultSelected(SelectionEvent e) {}
248
		});
207 249
		modeGroups = this.getTopToolbar().installAlternativesGroup(ASSISTANTS_GROUPNAME, ASSISTANTS_GROUPNAME, IImageKeys.ACTION_ASSISTQUERY, null, false, openCloseSelectionListener, modes, listeners);
208 250
		modeGroups.setLayout(new GridLayout(1, true));
209

  
251
		
210 252
		// RESULT AREA
211

  
253
		
254
		updateQueryFromAssistance = new Button(this.getResultArea(), SWT.PUSH);
255
		updateQueryFromAssistance.setText("Update query from query assitant");
256
		updateQueryFromAssistance.addSelectionListener(openCloseSelectionListener);
257
		updateQueryFromAssistance.setEnabled(false);
258
		
212 259
		matchesInfo = new Label(this.getResultArea(), SWT.NONE);
213 260
		matchesInfo.setLayoutData(new GridData(GridData.FILL, GridData.BEGINNING, true, false));
214

  
261
		
215 262
		matchStartsEndsInfo = new Text(this.getResultArea(), SWT.BORDER | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
216 263
		matchStartsEndsInfo.setLayoutData(new GridData(GridData.FILL, GridData.BEGINNING, true, true));
217 264
	}
218

  
265
	
219 266
	protected void refreshQuery() {
220 267
		System.out.println("Refresh query...");
221 268
	}
222

  
269
	
223 270
	@Override
224 271
	public void updateResultFromEditor() {
225 272
		// nothing to do
226 273
	}
227

  
274
	
228 275
	@Override
229 276
	public void updateEditorFromResult(boolean update) throws Exception {
230

  
277
		
231 278
		List<? extends org.txm.objects.Match> matches = getResult().getMatches();
232 279
		if (matches == null || matches.size() == 0) {
233

  
280
			
234 281
			if (getResult().hasBeenComputedOnce()) {
235 282
				matchesInfo.setText(NLS.bind("{0} match and {1} token", 0, 0));
236 283
			} else {
237
				matchesInfo.setText("(not computed yes)");
284
				matchesInfo.setText("(not computed yet)");
238 285
			}
239 286
			matchStartsEndsInfo.setText("");
240 287
		} else {
TXM/trunk/bundles/org.txm.searchengine.cqp.rcp/plugin.xml (revision 3980)
99 99
            id="org.txm.searchengine.cqp.rcp.preferences.SubcorpusPreferencePage"
100 100
            name="%page.name.0">
101 101
      </page>
102
      <page
103
            category="org.txm.rcp.preferences.UserPreferencePage"
104
            class="org.txm.searchengine.cqp.rcp.preferences.PartitionPreferencePage"
105
            id="org.txm.searchengine.cqp.rcp.preferences.PartitionPreferencePage"
106
            name="Partition">
107
      </page>
102 108
   </extension>
103 109
   <extension
104 110
         point="org.eclipse.ui.menus">
TXM/trunk/bundles/org.txm.partition.rcp/src/org/txm/partition/rcp/preferences/PartitionPreferencePage.java (revision 3980)
1
// Copyright © 2010-2020 ENS de Lyon., University of Franche-Comté
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.partition.rcp.preferences;
29

  
30
import org.eclipse.jface.preference.BooleanFieldEditor;
31
import org.eclipse.swt.widgets.Composite;
32
import org.eclipse.ui.IWorkbench;
33
import org.txm.chartsengine.rcp.SWTChartsComponentsProvider;
34
import org.txm.core.messages.TXMCoreMessages;
35
import org.txm.partition.core.preferences.PartitionDimensionsPreferences;
36
import org.txm.partition.rcp.messages.PartitionUIMessages;
37
import org.txm.rcp.preferences.TXMPreferencePage;
38
import org.txm.rcp.preferences.TXMPreferenceStore;
39

  
40
/**
41
 * Partition preference page.
42
 * @author mdecorde
43
 * @author sjacquot
44
 *
45
 */
46
public class PartitionPreferencePage extends TXMPreferencePage {
47

  
48
	/**
49
	 * Creates the field editors. Field editors are abstractions of the common
50
	 * GUI blocks needed to manipulate various types of preferences. Each field
51
	 * editor knows how to save and restore itself.
52
	 */
53
	@Override
54
	public void createFieldEditors() {
55
		
56
		// Charts rendering
57
		Composite chartsTab = SWTChartsComponentsProvider.createChartsRenderingPreferencesTabFolderComposite(this.getFieldEditorParent(), PartitionUIMessages.dimensionsChartRendering);
58
		
59
		this.addField(new BooleanFieldEditor(PartitionDimensionsPreferences.CHART_DIMENSIONS_SORT_BY_SIZE, PartitionUIMessages.sortByPartSize, chartsTab));
60
		this.addField(new BooleanFieldEditor(PartitionDimensionsPreferences.CHART_DIMENSIONS_DISPLAY_PARTS_COUNT_IN_TITLE, PartitionUIMessages.displayPartsCountInChartTitle, chartsTab));
61
		
62
		// other shared preferences
63
		SWTChartsComponentsProvider.createChartsRenderingPreferencesFields(this, chartsTab);
64

  
65
	}
66
	
67
	@Override
68
	public void init(IWorkbench workbench) {
69
		this.setPreferenceStore(new TXMPreferenceStore(PartitionDimensionsPreferences.getInstance().getPreferencesNodeQualifier()));
70
		this.setTitle(TXMCoreMessages.common_description);
71
	}
72
}
TXM/trunk/bundles/org.txm.partition.rcp/src/org/txm/partition/rcp/preferences/PartitionDimensionsPreferencePage.java (revision 3980)
1
// Copyright © 2010-2020 ENS de Lyon., University of Franche-Comté
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.partition.rcp.preferences;
29

  
30
import org.eclipse.jface.preference.BooleanFieldEditor;
31
import org.eclipse.swt.widgets.Composite;
32
import org.eclipse.ui.IWorkbench;
33
import org.txm.chartsengine.rcp.SWTChartsComponentsProvider;
34
import org.txm.core.messages.TXMCoreMessages;
35
import org.txm.partition.core.preferences.PartitionDimensionsPreferences;
36
import org.txm.partition.rcp.messages.PartitionUIMessages;
37
import org.txm.rcp.preferences.TXMPreferencePage;
38
import org.txm.rcp.preferences.TXMPreferenceStore;
39

  
40
/**
41
 * Partition preference page.
42
 * @author mdecorde
43
 * @author sjacquot
44
 *
45
 */
46
public class PartitionDimensionsPreferencePage extends TXMPreferencePage {
47

  
48
	/**
49
	 * Creates the field editors. Field editors are abstractions of the common
50
	 * GUI blocks needed to manipulate various types of preferences. Each field
51
	 * editor knows how to save and restore itself.
52
	 */
53
	@Override
54
	public void createFieldEditors() {
55
		
56
		// Charts rendering
57
		Composite chartsTab = SWTChartsComponentsProvider.createChartsRenderingPreferencesTabFolderComposite(this.getFieldEditorParent(), PartitionUIMessages.dimensionsChartRendering);
58
		
59
		this.addField(new BooleanFieldEditor(PartitionDimensionsPreferences.CHART_DIMENSIONS_SORT_BY_SIZE, PartitionUIMessages.sortByPartSize, chartsTab));
60
		this.addField(new BooleanFieldEditor(PartitionDimensionsPreferences.CHART_DIMENSIONS_DISPLAY_PARTS_COUNT_IN_TITLE, PartitionUIMessages.displayPartsCountInChartTitle, chartsTab));
61
		
62
		// other shared preferences
63
		SWTChartsComponentsProvider.createChartsRenderingPreferencesFields(this, chartsTab);
64

  
65
	}
66
	
67
	@Override
68
	public void init(IWorkbench workbench) {
69
		this.setPreferenceStore(new TXMPreferenceStore(PartitionDimensionsPreferences.getInstance().getPreferencesNodeQualifier()));
70
		this.setTitle(TXMCoreMessages.common_description);
71
	}
72
}
0 73

  
TXM/trunk/bundles/org.txm.partition.rcp/OSGI-INF/l10n/bundle.properties (revision 3980)
4 4
command.name=Dimensions
5 5
command.tooltip=Dimensions
6 6
editor.name=Dimensions
7
page.name=Partition
7
page.name=Partition dimensions
TXM/trunk/bundles/org.txm.partition.rcp/OSGI-INF/l10n/bundle_fr.properties (revision 3980)
4 4
command.name=Dimensions
5 5
command.tooltip=Dimensions
6 6
editor.name=Dimensions
7
page.name=Partition
7
page.name=Partition dimensions
TXM/trunk/bundles/org.txm.partition.rcp/plugin.xml (revision 3980)
69 69
         point="org.eclipse.ui.preferencePages">
70 70
      <page
71 71
            category="org.txm.rcp.preferences.UserPreferencePage"
72
            class="org.txm.partition.rcp.preferences.PartitionPreferencePage"
72
            class="org.txm.partition.rcp.preferences.PartitionDimensionsPreferencePage"
73 73
            id="org.txm.rcp.partition.preferences.PartitionPreferencePage"
74 74
            name="%page.name">
75 75
      </page>
TXM/trunk/bundles/org.txm.index.core/src/org/txm/index/core/functions/Line.java (revision 3980)
198 198
	 * @return the string
199 199
	 */
200 200
	public String toString(String separator) {
201
		
201 202
		String rez = ""; //$NON-NLS-1$
202 203
		int len = 0;
203 204
		for (int i = 0; i < properties.size();) {

Formats disponibles : Unified diff