Project

General

Profile

Download (2.41 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy 
4
* http://www.e-taxonomy.eu
5
* 
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9

    
10
package eu.etaxonomy.taxeditor.editor.name.container;
11

    
12
import org.apache.log4j.Logger;
13
import org.eclipse.jface.text.TextViewer;
14
import org.eclipse.swt.custom.StyledText;
15
import org.eclipse.swt.events.ModifyEvent;
16
import org.eclipse.swt.events.ModifyListener;
17
import org.eclipse.ui.forms.IManagedForm;
18
import org.eclipse.ui.forms.widgets.ScrolledForm;
19

    
20
/**
21
 * Checks whether the ScrolledForm a TextViewer is on needs to be
22
 *  redrawn because of a new line break or the removal of an existing
23
 *  one ...
24
 *  <p>
25
 *  ... in theory, anyway. Until I figure out how to detect a word wrap,
26
 *   the ScrolledForm is redrawn with every modify event.
27
 *
28
 * @author p.ciardelli
29
 * @created 19.05.2008
30
 * @version 1.0
31
 */
32
public class LineWrapSupport {
33
	private static final Logger logger = Logger
34
			.getLogger(LineWrapSupport.class);
35
	
36
	ModifyListener listener = new LineWrapListener();
37
	int lineCount;
38

    
39
	private StyledText textWidget;
40
	private ScrolledForm scrolledForm;
41

    
42
//	private TextViewer viewer;
43
	
44
	/**
45
	 * <p>Constructor for LineWrapSupport.</p>
46
	 *
47
	 * @param viewer a {@link org.eclipse.jface.text.TextViewer} object.
48
	 * @param form a {@link org.eclipse.ui.forms.IManagedForm} object.
49
	 */
50
//	public TextViewer getViewer() {
51
//		return viewer;
52
//	}
53
	public LineWrapSupport(TextViewer viewer, IManagedForm form) {
54
		
55
		if (viewer == null) {
56
			throw new IllegalArgumentException(
57
					"The provided TextViewer object is null.");
58
		}
59
		
60
//		this.viewer = viewer;
61
		
62
		textWidget = viewer.getTextWidget();
63
		textWidget.addModifyListener(listener);
64
				
65
		this.lineCount = textWidget.getLinePixel(textWidget.getLineCount());
66
		this.scrolledForm = form.getForm();
67
		
68
		logger.trace(this.getClass().getSimpleName() + " created");
69
	}
70
	
71
	/**
72
	 * Redraws the scrolledForm if a line wrap is detected. 
73
	 */
74
	private void checkLineCount() {
75

    
76
		boolean lineWrapDetected = true;
77
		if (lineWrapDetected ) {
78
			scrolledForm.getBody().layout();
79
		}
80
	}
81
	
82
	/**
83
	 * Calls <code>checkLineCount()</code> on a modify event.
84
	 * 
85
	 * @author p.ciardelli
86
	 * @created 21.05.2008
87
	 * @version 1.0
88
	 */
89
	class LineWrapListener implements ModifyListener {
90

    
91
		public void modifyText(ModifyEvent e) {
92
			checkLineCount();
93
		}
94
	}
95
}
(14-14/19)