Révision 858
tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/KRAnnotation.java (revision 858) | ||
---|---|---|
122 | 122 |
private ConcordanceAnnotations annotations = null; |
123 | 123 |
|
124 | 124 |
ConcordanceEditor editor; |
125 |
private AnnotationExtension ext; |
|
126 | 125 |
|
127 | 126 |
public KRAnnotation() { |
128 | 127 |
|
... | ... | |
133 | 132 |
} |
134 | 133 |
|
135 | 134 |
@Override |
135 |
public boolean allowMultipleAnnotations() { |
|
136 |
return true; |
|
137 |
} |
|
138 |
|
|
139 |
@Override |
|
136 | 140 |
public boolean install(TXMEditor<? extends TXMResult> txmeditor, AnnotationExtension ext, Composite parent) throws Exception { |
137 | 141 |
|
138 |
this.ext = ext; |
|
142 |
this.extension = ext;
|
|
139 | 143 |
this.editor = (ConcordanceEditor)txmeditor; |
140 | 144 |
this.concordance = this.editor.getConcordance(); |
141 | 145 |
this.corpus = concordance.getCorpus(); |
... | ... | |
146 | 150 |
|
147 | 151 |
// RESULT |
148 | 152 |
|
149 |
int position = 3; // after keyword column
|
|
153 |
int position = 3+extension.getNumberOfAnnotationArea(); // after keyword column and previous annotation columns
|
|
150 | 154 |
TableViewerColumn annotationColumnViewer = new TableViewerColumn(viewer, SWT.CENTER, position); |
151 | 155 |
annotationColumn = annotationColumnViewer.getColumn(); |
152 | 156 |
annotationColumn.setText(ConcordanceUIMessages.ConcordancesEditor_15); |
... | ... | |
541 | 545 |
@Override |
542 | 546 |
public void widgetDefaultSelected(SelectionEvent e) { } |
543 | 547 |
}); |
544 |
|
|
548 |
|
|
549 |
Button closeButton = new Button(annotationArea, SWT.PUSH); |
|
550 |
closeButton.setToolTipText("Close the toolbar without saving"); |
|
551 |
closeButton.setImage(IImageKeys.getImage(IImageKeys.ACTION_DELETE)); |
|
552 |
closeButton.setLayoutData(new GridData(GridData.END, GridData.CENTER, true, false)); |
|
553 |
closeButton.addSelectionListener(new SelectionListener() { |
|
554 |
|
|
555 |
@Override |
|
556 |
public void widgetSelected(SelectionEvent e) { |
|
557 |
extension.removeAnnotationArea(KRAnnotation.this); |
|
558 |
} |
|
559 |
|
|
560 |
@Override |
|
561 |
public void widgetDefaultSelected(SelectionEvent e) {} |
|
562 |
}); |
|
563 |
|
|
545 | 564 |
updateAnnotationWidgetStates(); |
546 | 565 |
editor.layout(true); |
547 | 566 |
|
... | ... | |
853 | 872 |
|
854 | 873 |
@Override |
855 | 874 |
protected void _close() { |
856 |
annotationColumn.dispose(); |
|
875 |
if (!annotationColumn.isDisposed()) annotationColumn.dispose(); |
|
876 |
if (!annotationArea.isDisposed()) { |
|
877 |
annotationArea.dispose(); |
|
878 |
} |
|
879 |
extension.layout(); |
|
857 | 880 |
} |
858 | 881 |
|
859 | 882 |
@Override |
tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/WordAnnotationToolbar.java (revision 858) | ||
---|---|---|
111 | 111 |
|
112 | 112 |
protected Concordance concordance; |
113 | 113 |
private Corpus corpus; |
114 |
private AnnotationExtension ext; |
|
115 | 114 |
|
116 | 115 |
public String getName() { |
117 | 116 |
return "Word properties"; |
118 | 117 |
} |
118 |
|
|
119 |
@Override |
|
120 |
public boolean allowMultipleAnnotations() { |
|
121 |
return true; |
|
122 |
} |
|
119 | 123 |
|
120 | 124 |
public WordAnnotationToolbar() { |
121 | 125 |
} |
... | ... | |
316 | 320 |
@Override |
317 | 321 |
public boolean install(TXMEditor<? extends TXMResult> txmeditor, AnnotationExtension ext, Composite parent) throws Exception { |
318 | 322 |
|
319 |
this.ext = ext; |
|
323 |
this.extension = ext;
|
|
320 | 324 |
this.editor = (ConcordanceEditor)txmeditor; |
321 | 325 |
this.concordance = this.editor.getConcordance(); |
322 | 326 |
this.corpus = concordance.getCorpus(); |
... | ... | |
327 | 331 |
|
328 | 332 |
// RESULT |
329 | 333 |
|
330 |
int position = 3; // after keyword column
|
|
334 |
int position = 3+extension.getNumberOfAnnotationArea(); // after keyword column and previous annotation columns
|
|
331 | 335 |
TableViewerColumn annotationColumnViewer = new TableViewerColumn(viewer, SWT.CENTER, position); |
332 | 336 |
annotationColumn = annotationColumnViewer.getColumn(); |
333 | 337 |
annotationColumn.setText("Property"); |
... | ... | |
572 | 576 |
@Override |
573 | 577 |
public void widgetDefaultSelected(SelectionEvent e) { } |
574 | 578 |
}); |
579 |
|
|
580 |
Button closeButton = new Button(annotationArea, SWT.PUSH); |
|
581 |
closeButton.setToolTipText("Close the toolbar without saving"); |
|
582 |
closeButton.setImage(IImageKeys.getImage(IImageKeys.ACTION_DELETE)); |
|
583 |
closeButton.setLayoutData(new GridData(GridData.END, GridData.CENTER, true, false)); |
|
584 |
closeButton.addSelectionListener(new SelectionListener() { |
|
585 |
|
|
586 |
@Override |
|
587 |
public void widgetSelected(SelectionEvent e) { |
|
588 |
extension.removeAnnotationArea(WordAnnotationToolbar.this); |
|
589 |
} |
|
590 |
|
|
591 |
@Override |
|
592 |
public void widgetDefaultSelected(SelectionEvent e) {} |
|
593 |
}); |
|
575 | 594 |
|
576 | 595 |
updateAnnotationWidgetStates(); |
577 | 596 |
editor.layout(true); |
... | ... | |
639 | 658 |
|
640 | 659 |
@Override |
641 | 660 |
protected void _close() { |
642 |
annotationColumn.dispose(); |
|
661 |
if (!annotationColumn.isDisposed()) annotationColumn.dispose(); |
|
662 |
if (!annotationArea.isDisposed()) annotationArea.dispose(); |
|
663 |
extension.layout(); |
|
643 | 664 |
} |
644 | 665 |
|
645 | 666 |
@Override |
tmp/org.txm.annotation.kr.rcp/src/org/txm/annotation/kr/rcp/concordance/SimpleKRAnnotation.java (revision 858) | ||
---|---|---|
108 | 108 |
|
109 | 109 |
private ConcordanceAnnotations annotations = null; |
110 | 110 |
private Button addTypedValueLink; |
111 |
private AnnotationExtension ext; |
|
112 | 111 |
|
113 | 112 |
@Override |
114 | 113 |
public String getName() { |
115 | 114 |
return "Tag Annotation"; |
116 | 115 |
} |
117 |
|
|
116 |
|
|
118 | 117 |
@Override |
118 |
public boolean allowMultipleAnnotations() { |
|
119 |
return true; |
|
120 |
} |
|
121 |
|
|
122 |
@Override |
|
119 | 123 |
public boolean install(TXMEditor<? extends TXMResult> txmeditor, AnnotationExtension ext, Composite parent) throws Exception { |
120 | 124 |
|
121 |
this.ext = ext; |
|
125 |
this.extension = ext;
|
|
122 | 126 |
this.editor = (ConcordanceEditor)txmeditor; |
123 | 127 |
this.concordance = this.editor.getConcordance(); |
124 | 128 |
this.corpus = concordance.getCorpus(); |
... | ... | |
129 | 133 |
|
130 | 134 |
// RESULT |
131 | 135 |
|
132 |
int position = 3; // after keyword column
|
|
136 |
int position = 3+extension.getNumberOfAnnotationArea(); // after keyword column and previous annotation columns
|
|
133 | 137 |
TableViewerColumn annotationColumnViewer = new TableViewerColumn(viewer, SWT.CENTER, position); |
134 | 138 |
annotationColumn = annotationColumnViewer.getColumn(); |
135 | 139 |
annotationColumn.setText(ConcordanceUIMessages.ConcordancesEditor_15); |
... | ... | |
338 | 342 |
public void widgetDefaultSelected(SelectionEvent e) { } |
339 | 343 |
}); |
340 | 344 |
|
345 |
Button closeButton = new Button(annotationArea, SWT.PUSH); |
|
346 |
closeButton.setToolTipText("Close the toolbar without saving"); |
|
347 |
closeButton.setImage(IImageKeys.getImage(IImageKeys.ACTION_DELETE)); |
|
348 |
closeButton.setLayoutData(new GridData(GridData.END, GridData.CENTER, true, false)); |
|
349 |
closeButton.addSelectionListener(new SelectionListener() { |
|
350 |
|
|
351 |
@Override |
|
352 |
public void widgetSelected(SelectionEvent e) { |
|
353 |
extension.removeAnnotationArea(SimpleKRAnnotation.this); |
|
354 |
} |
|
355 |
|
|
356 |
@Override |
|
357 |
public void widgetDefaultSelected(SelectionEvent e) {} |
|
358 |
}); |
|
359 |
|
|
341 | 360 |
updateAnnotationWidgetStates(); |
342 | 361 |
editor.layout(true); |
343 | 362 |
|
... | ... | |
647 | 666 |
|
648 | 667 |
@Override |
649 | 668 |
protected void _close() { |
650 |
annotationColumn.dispose(); |
|
669 |
if (!annotationColumn.isDisposed()) annotationColumn.dispose(); |
|
670 |
if (!annotationArea.isDisposed()) annotationArea.dispose(); |
|
671 |
extension.layout(); |
|
651 | 672 |
} |
652 | 673 |
|
653 | 674 |
@Override |
tmp/org.txm.annotation.rcp/src/org/txm/annotation/rcp/editor/AnnotationArea.java (revision 858) | ||
---|---|---|
75 | 75 |
return editor; |
76 | 76 |
} |
77 | 77 |
|
78 |
public boolean allowMultipleAnnotations() { |
|
79 |
return false; |
|
80 |
} |
|
81 |
|
|
78 | 82 |
/** |
79 | 83 |
* Called BEFORE the TXMResult is computed |
80 | 84 |
* |
tmp/org.txm.annotation.rcp/src/org/txm/annotation/rcp/editor/AnnotationExtension.java (revision 858) | ||
---|---|---|
20 | 20 |
public class AnnotationExtension extends TXMEditorExtension<TXMResult> { |
21 | 21 |
|
22 | 22 |
/** The annotation area. */ |
23 |
protected AnnotationArea annotationArea;
|
|
23 |
protected ArrayList<AnnotationArea> annotationAreas = new ArrayList<AnnotationArea>();
|
|
24 | 24 |
|
25 | 25 |
private Group controlArea; |
26 | 26 |
private SelectionListener defaultListener; |
... | ... | |
31 | 31 |
public String getName() { |
32 | 32 |
return "Annotation"; |
33 | 33 |
} |
34 |
|
|
34 |
|
|
35 | 35 |
/** |
36 | 36 |
* use this to enable/disable the button |
37 | 37 |
* @return |
... | ... | |
76 | 76 |
public void widgetSelected(SelectionEvent e) { |
77 | 77 |
try { |
78 | 78 |
Object o = celement.createExecutableExtension("class"); //$NON-NLS-1$ |
79 |
AnnotationArea aa = (AnnotationArea)o; |
|
80 |
|
|
81 |
if (annotationArea!= null && annotationArea.getClass() == aa.getClass()) { |
|
82 |
return; // already opened |
|
83 |
} |
|
84 |
|
|
85 |
if (annotationArea != null) { |
|
86 |
annotationArea.close(); |
|
87 |
annotationArea = null; |
|
88 |
} |
|
89 |
System.out.println("Starting "+aa.getName()); |
|
90 |
|
|
91 |
aa.install(editor, AnnotationExtension.this, controlArea); |
|
92 |
|
|
93 |
editor.getTopToolbar().setVisible("annotation", true); |
|
94 |
annotationArea = aa; |
|
95 |
editor.refresh(false); // refresh the concordance display |
|
79 |
openAnnotationMode(o); |
|
96 | 80 |
} catch (Exception e1) { |
97 | 81 |
// TODO Auto-generated catch block |
98 | 82 |
e1.printStackTrace(); |
... | ... | |
114 | 98 |
SelectionListener openCloseSelectionListener = new SelectionListener() { |
115 | 99 |
@Override |
116 | 100 |
public void widgetSelected(SelectionEvent e) { |
117 |
if (annotationArea != null) {
|
|
101 |
if (annotationAreas.size() > 0) {
|
|
118 | 102 |
return; // do nothing |
119 | 103 |
} else { |
120 | 104 |
openDefaultAnnotationMode(e); |
... | ... | |
127 | 111 |
|
128 | 112 |
defaultListener = listeners.get(0); |
129 | 113 |
String defaultMode = modes.get(0); |
130 |
controlArea = editor.getTopToolbar().installAlternativesGroup("annotation", "annotation tools: "+defaultMode,
|
|
114 |
controlArea = editor.getTopToolbar().installAlternativesGroup("Annotation", "annotation tools: "+defaultMode,
|
|
131 | 115 |
"platform:/plugin/org.txm.rcp/icons/functions/pencil_open.png", |
132 | 116 |
"platform:/plugin/org.txm.rcp/icons/functions/pencil_close.png", false, |
133 | 117 |
openCloseSelectionListener, modes, listeners); |
... | ... | |
139 | 123 |
|
140 | 124 |
@Override |
141 | 125 |
public void widgetSelected(SelectionEvent e) { |
142 |
if (annotationArea != null) { |
|
143 |
annotationArea.save(); |
|
126 |
if (annotationAreas != null) { |
|
127 |
for (AnnotationArea aa : annotationAreas) { |
|
128 |
aa.save(); |
|
129 |
} |
|
144 | 130 |
} |
145 | 131 |
} |
146 | 132 |
|
... | ... | |
150 | 136 |
saveButton.setEnabled(false); |
151 | 137 |
} |
152 | 138 |
|
139 |
protected void openAnnotationMode(Object o) throws Exception { |
|
140 |
AnnotationArea aa = (AnnotationArea)o; |
|
141 |
if (!aa.allowMultipleAnnotations()) { |
|
142 |
for (AnnotationArea a : annotationAreas) { |
|
143 |
if (a.getClass().equals(aa.getClass())) { |
|
144 |
return; // already opened |
|
145 |
} |
|
146 |
} |
|
147 |
|
|
148 |
for (AnnotationArea a : annotationAreas) { |
|
149 |
a.close(); |
|
150 |
} |
|
151 |
annotationAreas.clear(); |
|
152 |
} |
|
153 |
|
|
154 |
System.out.println("Starting "+aa.getName()); |
|
155 |
|
|
156 |
aa.install(editor, AnnotationExtension.this, controlArea); |
|
157 |
|
|
158 |
editor.getTopToolbar().setVisible("annotation", true); |
|
159 |
annotationAreas.add(aa); |
|
160 |
editor.refresh(false); // refresh the concordance display |
|
161 |
} |
|
162 |
|
|
163 |
public void removeAnnotationArea(AnnotationArea aa) { |
|
164 |
annotationAreas.remove(aa); |
|
165 |
aa._close(); |
|
166 |
if (annotationAreas.size() == 0) { |
|
167 |
editor.getTopToolbar().setVisible("Annotation", false); |
|
168 |
} |
|
169 |
} |
|
170 |
|
|
153 | 171 |
protected void openDefaultAnnotationMode(SelectionEvent e) { |
154 | 172 |
defaultListener.widgetSelected(e); |
155 | 173 |
} |
156 | 174 |
|
157 | 175 |
@Override |
158 | 176 |
public void notifyStartOfCompute() throws Exception { |
159 |
if (annotationArea != null) {
|
|
160 |
annotationArea.notifyStartOfCompute();
|
|
177 |
for (AnnotationArea aa : annotationAreas) {
|
|
178 |
aa.notifyStartOfCompute(); |
|
161 | 179 |
} |
162 | 180 |
} |
163 | 181 |
|
164 | 182 |
@Override |
165 | 183 |
public void notifyEndOfCompute() throws Exception { |
166 |
if (annotationArea != null) {
|
|
167 |
annotationArea.notifyEndOfCompute();
|
|
184 |
for (AnnotationArea aa : annotationAreas) {
|
|
185 |
aa.notifyEndOfCompute(); |
|
168 | 186 |
} |
169 | 187 |
} |
170 | 188 |
|
171 | 189 |
|
172 | 190 |
public boolean isAnnotationEnable() { |
173 |
return annotationArea != null; |
|
191 |
return annotationAreas != null;
|
|
174 | 192 |
} |
175 | 193 |
|
176 | 194 |
@Override |
177 | 195 |
public void notifyEndOfRefresh() throws Exception { |
178 |
if (annotationArea != null) {
|
|
179 |
annotationArea.notifyEndOfRefresh();
|
|
196 |
for (AnnotationArea aa : annotationAreas) {
|
|
197 |
aa.notifyEndOfRefresh(); |
|
180 | 198 |
} |
181 | 199 |
} |
182 | 200 |
|
183 | 201 |
@Override |
184 | 202 |
public void notifyStartOfCreatePartControl() throws Exception { |
185 |
if (annotationArea != null) {
|
|
186 |
annotationArea.notifyStartOfCreatePartControl();
|
|
203 |
for (AnnotationArea aa : annotationAreas) {
|
|
204 |
aa.notifyStartOfCreatePartControl(); |
|
187 | 205 |
} |
188 | 206 |
} |
189 | 207 |
|
190 | 208 |
@Override |
191 | 209 |
public void notifyStartOfRefresh() throws Exception { |
192 |
if (annotationArea != null) {
|
|
193 |
annotationArea.notifyStartOfRefresh();
|
|
210 |
for (AnnotationArea aa : annotationAreas) {
|
|
211 |
aa.notifyStartOfRefresh(); |
|
194 | 212 |
} |
195 | 213 |
} |
196 | 214 |
|
197 | 215 |
@Override |
198 | 216 |
public boolean isDirty() throws Exception { |
199 |
if (annotationArea != null) { |
|
200 |
return annotationArea.isDirty(); |
|
217 |
boolean dirty = false; |
|
218 |
for (AnnotationArea aa : annotationAreas) { |
|
219 |
dirty = dirty || aa.isDirty(); |
|
201 | 220 |
} |
202 |
return false;
|
|
221 |
return dirty;
|
|
203 | 222 |
} |
204 | 223 |
|
205 | 224 |
@Override |
206 | 225 |
public void notifydoSave() throws Exception { |
207 |
if (annotationArea != null) {
|
|
208 |
annotationArea.save();
|
|
226 |
for (AnnotationArea aa : annotationAreas) {
|
|
227 |
aa.save(); |
|
209 | 228 |
} |
210 | 229 |
} |
211 | 230 |
|
212 | 231 |
@Override |
213 | 232 |
public void notifyDispose() throws Exception { |
214 |
if (annotationArea != null) {
|
|
215 |
annotationArea._close();
|
|
233 |
for (AnnotationArea aa : annotationAreas) {
|
|
234 |
aa._close(); |
|
216 | 235 |
} |
217 | 236 |
} |
237 |
|
|
238 |
public void layout() { |
|
239 |
if (!controlArea.isDisposed()) { |
|
240 |
editor.layout(true); |
|
241 |
} |
|
242 |
} |
|
243 |
|
|
244 |
public int getNumberOfAnnotationArea() { |
|
245 |
return annotationAreas.size(); |
|
246 |
} |
|
218 | 247 |
} |
Formats disponibles : Unified diff