Revision 678
org.gvsig.scripting/trunk/org.gvsig.scripting/org.gvsig.scripting.swing/org.gvsig.scripting.swing.api/src/main/java/org/gvsig/scripting/swing/api/SyntaxtHighlightTextComponent.java | ||
---|---|---|
2 | 2 |
|
3 | 3 |
import java.awt.event.ActionListener; |
4 | 4 |
import java.awt.event.KeyListener; |
5 |
import javax.swing.Icon; |
|
5 | 6 |
|
6 | 7 |
import javax.swing.JScrollPane; |
7 | 8 |
import javax.swing.text.JTextComponent; |
... | ... | |
33 | 34 |
|
34 | 35 |
public void discardAllEdits(); |
35 | 36 |
|
37 |
public void removeTrackingIcons(); |
|
38 |
|
|
39 |
public void removeTrackingIcons(String tag); |
|
40 |
|
|
41 |
public void addLineTrackingIcon(String tag, int line, Icon icon, String tip); |
|
42 |
|
|
36 | 43 |
} |
org.gvsig.scripting/trunk/org.gvsig.scripting/org.gvsig.scripting.swing/org.gvsig.scripting.swing.api/src/main/java/org/gvsig/scripting/swing/api/JCodeEditor.java | ||
---|---|---|
24 | 24 |
public int getLineCount(); |
25 | 25 |
|
26 | 26 |
public JTextComponent getJTextComponent(); |
27 |
|
|
28 |
public SyntaxtHighlightTextComponent getSyntaxtHighlightTextComponent(); |
|
27 | 29 |
} |
org.gvsig.scripting/trunk/org.gvsig.scripting/org.gvsig.scripting.swing/org.gvsig.scripting.swing.impl/src/main/java/org/gvsig/scripting/swing/impl/syntaxhighlight/JRSyntaxTextArea.java | ||
---|---|---|
12 | 12 |
import java.util.Arrays; |
13 | 13 |
import java.util.Comparator; |
14 | 14 |
import java.util.HashMap; |
15 |
import java.util.HashSet; |
|
15 | 16 |
import java.util.List; |
16 | 17 |
import java.util.Map; |
18 |
import java.util.Set; |
|
17 | 19 |
import java.util.TreeSet; |
18 | 20 |
import javax.swing.DefaultListCellRenderer; |
19 | 21 |
import javax.swing.Icon; |
... | ... | |
30 | 32 |
import javax.swing.UIManager; |
31 | 33 |
import javax.swing.event.CaretEvent; |
32 | 34 |
import javax.swing.event.CaretListener; |
33 |
import javax.swing.text.Caret;
|
|
35 |
import javax.swing.text.BadLocationException;
|
|
34 | 36 |
import javax.swing.text.JTextComponent; |
35 | 37 |
import org.apache.commons.lang3.StringUtils; |
36 | 38 |
import org.fife.rsta.ui.CollapsibleSectionPanel; |
... | ... | |
46 | 48 |
|
47 | 49 |
import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea; |
48 | 50 |
import org.fife.ui.rsyntaxtextarea.SyntaxConstants; |
51 |
import org.fife.ui.rtextarea.GutterIconInfo; |
|
49 | 52 |
import org.fife.ui.rtextarea.RTextScrollPane; |
50 | 53 |
import org.fife.ui.rtextarea.SearchContext; |
51 | 54 |
import org.fife.ui.rtextarea.SearchEngine; |
... | ... | |
119 | 122 |
|
120 | 123 |
} |
121 | 124 |
|
125 |
private static class IconsTracker { |
|
126 |
|
|
127 |
private Map<String,Set<GutterIconInfo>>iconInfos = new HashMap<>(); |
|
128 |
|
|
129 |
public IconsTracker() { |
|
130 |
|
|
131 |
} |
|
132 |
|
|
133 |
public void add(String tag, GutterIconInfo x) { |
|
134 |
Set<GutterIconInfo> set = this.iconInfos.get(tag); |
|
135 |
if( set == null ) { |
|
136 |
set = new HashSet<>(); |
|
137 |
this.iconInfos.put(tag, set); |
|
138 |
} |
|
139 |
set.add(x); |
|
140 |
} |
|
141 |
|
|
142 |
public void removeAll() { |
|
143 |
this.iconInfos = new HashMap<>(); |
|
144 |
} |
|
145 |
|
|
146 |
public void remove(String tag) { |
|
147 |
this.iconInfos.remove(tag); |
|
148 |
} |
|
149 |
|
|
150 |
public void remove(String tag, GutterIconInfo x) { |
|
151 |
Set<GutterIconInfo> set = this.iconInfos.get(tag); |
|
152 |
if( set == null ) { |
|
153 |
return; |
|
154 |
} |
|
155 |
set.remove(x); |
|
156 |
} |
|
157 |
|
|
158 |
public boolean exists(String tag) { |
|
159 |
return this.iconInfos.containsKey(tag); |
|
160 |
} |
|
161 |
|
|
162 |
public Set<GutterIconInfo> get(String tag) { |
|
163 |
Set<GutterIconInfo> set = this.iconInfos.get(tag); |
|
164 |
return set; |
|
165 |
} |
|
166 |
} |
|
167 |
|
|
122 | 168 |
private final FindToolBar findToolBar; |
123 | 169 |
private final ReplaceToolBar replaceToolBar; |
124 | 170 |
private final CollapsibleSectionPanel csp; |
... | ... | |
156 | 202 |
protected ActionListener updateCaretPosition = null; |
157 | 203 |
protected RSyntaxTextArea textArea = null; |
158 | 204 |
private final RTextScrollPane scrollPanel; |
159 |
private JPanel panel; |
|
160 |
private Map<String, String> contentTypeAlias; |
|
205 |
private final JPanel panel; |
|
206 |
private final Map<String, String> contentTypeAlias; |
|
207 |
private final IconsTracker iconsTracker = new IconsTracker(); |
|
161 | 208 |
|
162 | 209 |
public JRSyntaxTextArea() { |
163 | 210 |
this.contentTypeAlias = new HashMap<>(); |
... | ... | |
167 | 214 |
this.textArea = new RSyntaxTextArea(20, 60); |
168 | 215 |
this.init(); |
169 | 216 |
scrollPanel = new RTextScrollPane(this.textArea); |
217 |
scrollPanel.setIconRowHeaderEnabled(true); |
|
218 |
scrollPanel.setLineNumbersEnabled(true); |
|
219 |
scrollPanel.setFoldIndicatorEnabled(true); |
|
220 |
|
|
170 | 221 |
panel = new JPanel(); |
171 | 222 |
panel.setLayout(new BorderLayout()); |
172 | 223 |
panel.add(scrollPanel, BorderLayout.CENTER); |
... | ... | |
516 | 567 |
return textArea.getSelectedText(); |
517 | 568 |
} |
518 | 569 |
|
570 |
/** |
|
571 |
* |
|
572 |
*/ |
|
519 | 573 |
@Override |
520 | 574 |
public void discardAllEdits() { |
521 | 575 |
this.textArea.discardAllEdits(); |
522 | 576 |
} |
577 |
|
|
578 |
@Override |
|
579 |
public void removeTrackingIcons() { |
|
580 |
this.scrollPanel.getGutter().removeAllTrackingIcons(); |
|
581 |
this.iconsTracker.removeAll(); |
|
582 |
} |
|
583 |
|
|
584 |
@Override |
|
585 |
public void addLineTrackingIcon(String tag, int line, Icon icon, String tip) { |
|
586 |
try { |
|
587 |
GutterIconInfo x = this.scrollPanel.getGutter().addLineTrackingIcon(line,icon,tip); |
|
588 |
this.iconsTracker.add(tag, x); |
|
589 |
} catch (BadLocationException ex) { |
|
590 |
throw new RuntimeException("Can't add tracking icon with tag '"+tag+"' in line '"+line+"', tip='"+tip+"'", ex); |
|
591 |
} |
|
592 |
} |
|
593 |
|
|
594 |
@Override |
|
595 |
public void removeTrackingIcons(String tag) { |
|
596 |
Set<GutterIconInfo> icontags = this.iconsTracker.get(tag); |
|
597 |
if( icontags!=null ) { |
|
598 |
for (GutterIconInfo icontag : icontags) { |
|
599 |
this.scrollPanel.getGutter().removeTrackingIcon(icontag); |
|
600 |
} |
|
601 |
this.iconsTracker.remove(tag); |
|
602 |
} |
|
603 |
} |
|
523 | 604 |
} |
org.gvsig.scripting/trunk/org.gvsig.scripting/org.gvsig.scripting.swing/org.gvsig.scripting.swing.impl/src/main/java/org/gvsig/scripting/swing/impl/syntaxhighlight/JEditorPaneSyntaxHighlighting.java | ||
---|---|---|
2 | 2 |
|
3 | 3 |
import java.awt.event.ActionEvent; |
4 | 4 |
import java.awt.event.ActionListener; |
5 |
import javax.swing.Icon; |
|
5 | 6 |
import javax.swing.JComponent; |
6 | 7 |
|
7 | 8 |
import javax.swing.JEditorPane; |
... | ... | |
130 | 131 |
public JComponent asJComponent() { |
131 | 132 |
return this.getJScrollPane(); |
132 | 133 |
} |
134 |
|
|
135 |
@Override |
|
136 |
public void removeTrackingIcons() { |
|
137 |
} |
|
138 |
|
|
139 |
@Override |
|
140 |
public void addLineTrackingIcon(String tag, int line, Icon icon, String tip) { |
|
141 |
} |
|
142 |
|
|
143 |
@Override |
|
144 |
public void removeTrackingIcons(String tag) { |
|
145 |
} |
|
133 | 146 |
|
134 | 147 |
public class DefaultUpdateCaretPositionActionEvent extends ActionEvent implements UpdateCaretPositionActionEvent { |
135 | 148 |
|
org.gvsig.scripting/trunk/org.gvsig.scripting/org.gvsig.scripting.swing/org.gvsig.scripting.swing.impl/src/main/java/org/gvsig/scripting/swing/impl/composer/DefaultJDialogEditor.java | ||
---|---|---|
19 | 19 |
import org.gvsig.scripting.swing.api.JDialogEditor; |
20 | 20 |
import org.gvsig.scripting.swing.api.JThinG; |
21 | 21 |
import org.gvsig.scripting.swing.api.ScriptingUIManager; |
22 |
import org.gvsig.scripting.swing.api.SyntaxtHighlightTextComponent; |
|
22 | 23 |
|
23 | 24 |
public class DefaultJDialogEditor extends JPanel implements JDialogEditor { |
24 | 25 |
|
... | ... | |
115 | 116 |
public JTextComponent getJTextComponent() { |
116 | 117 |
return this.editorHelper.getCodePanel().getJTextComponent(); |
117 | 118 |
} |
118 |
|
|
119 |
|
|
119 | 120 |
@Override |
121 |
public SyntaxtHighlightTextComponent getSyntaxtHighlightTextComponent() { |
|
122 |
return this.editorHelper.getCodePanel().getSyntaxtHighlightTextComponent(); |
|
123 |
} |
|
124 |
|
|
125 |
@Override |
|
120 | 126 |
public ScriptingScript getScript() { |
121 | 127 |
return (ScriptingScript) this.script; |
122 | 128 |
} |
org.gvsig.scripting/trunk/org.gvsig.scripting/org.gvsig.scripting.swing/org.gvsig.scripting.swing.impl/src/main/java/org/gvsig/scripting/swing/impl/composer/DefaultJCodeEditor.java | ||
---|---|---|
14 | 14 |
import org.gvsig.scripting.ScriptingScript; |
15 | 15 |
import org.gvsig.scripting.swing.api.JCodeEditor; |
16 | 16 |
import org.gvsig.scripting.swing.api.ScriptingUIManager; |
17 |
import org.gvsig.scripting.swing.api.SyntaxtHighlightTextComponent; |
|
17 | 18 |
|
18 | 19 |
public class DefaultJCodeEditor extends JPanel implements JCodeEditor { |
19 | 20 |
|
... | ... | |
94 | 95 |
public JTextComponent getJTextComponent() { |
95 | 96 |
return this.editorHelper.getCodePanel().getJTextComponent(); |
96 | 97 |
} |
97 |
|
|
98 |
|
|
98 | 99 |
@Override |
100 |
public SyntaxtHighlightTextComponent getSyntaxtHighlightTextComponent() { |
|
101 |
return this.editorHelper.getCodePanel().getSyntaxtHighlightTextComponent(); |
|
102 |
} |
|
103 |
|
|
104 |
@Override |
|
99 | 105 |
public void reload() { |
100 | 106 |
|
101 | 107 |
} |
org.gvsig.scripting/trunk/org.gvsig.scripting/org.gvsig.scripting.swing/org.gvsig.scripting.swing.impl/src/main/java/org/gvsig/scripting/swing/impl/composer/JCodePanel.java | ||
---|---|---|
124 | 124 |
|
125 | 125 |
editor.select(initialSelection, finalSelection); |
126 | 126 |
} |
127 |
|
|
128 |
public SyntaxtHighlightTextComponent getSyntaxtHighlightTextComponent() { |
|
129 |
return this.editorText; |
|
130 |
} |
|
127 | 131 |
|
128 | 132 |
public void gotoline(final int line) { |
129 | 133 |
JTextComponent component = getJTextComponent(); |
Also available in: Unified diff