1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package net.sourceforge.jivalo.editor;
17
18 import java.awt.Dimension;
19 import java.util.Iterator;
20 import java.util.Map;
21
22 import javax.swing.InputMap;
23 import javax.swing.JTextPane;
24 import javax.swing.KeyStroke;
25 import javax.swing.text.AbstractDocument;
26
27 import net.sourceforge.jivalo.editor.key.CustomKeyBinding;
28 import net.sourceforge.jivalo.editor.syntax.SyntaxHighlightDocumentFilter;
29 import net.sourceforge.jivalo.editor.syntax.SyntaxHighlightings;
30
31 /**
32 * @author <a href="mailto:ivalo@iki.fi">Markku Saarela</a>
33 *
34 */
35 public class TextPane extends JTextPane
36 {
37
38 private static final long serialVersionUID = 1L;
39
40 private String fileSuffix;
41
42 /**
43 * @param keyBindings
44 * @param syntaxHighlightings
45 *
46 */
47 public TextPane(SyntaxHighlightings syntaxHighlightings
48 ,CustomKeyBinding keyBinding)
49 {
50 super();
51
52 addBindings(keyBinding);
53
54 ((AbstractDocument)this.getStyledDocument()).setDocumentFilter(
55 new SyntaxHighlightDocumentFilter( this, syntaxHighlightings ) );
56 }
57
58
59 public boolean getScrollableTracksViewportWidth()
60 {
61 return false;
62 }
63
64 public void setSize( Dimension d )
65 {
66 if ( d.width < getParent().getSize().width )
67 {
68 d.width = getParent().getSize().width;
69 }
70
71 super.setSize( d );
72 }
73
74
75 private void addBindings(CustomKeyBinding keyBinding)
76 {
77
78 if ( keyBinding != null )
79 {
80 InputMap inputMap = this.getInputMap();
81
82 Map keyBindings = keyBinding.getKeyBindings();
83
84 for ( Iterator iter = keyBindings.entrySet().iterator(); iter.hasNext(); )
85 {
86 Map.Entry element = ( Map.Entry ) iter.next();
87
88 inputMap.put(( KeyStroke ) element.getKey()
89 , element.getValue() );
90 }
91 }
92 }
93
94 public String getFileSuffix()
95 {
96 return fileSuffix;
97 }
98
99 public void setFileSuffix( String fileSuffix )
100 {
101 this.fileSuffix = fileSuffix;
102 }
103
104 }