Revision 678

View differences:

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