This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 141001
Collapse All | Expand All

(-)5c3bd4fda9bf (+153 lines)
Added Link Here
1
package org.netbeans.modules.gsf.api;
2
3
import java.io.IOException;
4
import java.util.logging.Level;
5
import java.util.logging.Logger;
6
import javax.swing.JEditorPane;
7
import javax.swing.text.Document;
8
import javax.swing.text.JTextComponent;
9
import org.openide.ErrorManager;
10
import org.openide.cookies.EditorCookie;
11
import org.openide.cookies.InstanceCookie;
12
import org.openide.cookies.LineCookie;
13
import org.openide.filesystems.FileObject;
14
import org.openide.filesystems.FileUtil;
15
import org.openide.loaders.DataObject;
16
import org.openide.loaders.DataObjectNotFoundException;
17
import org.openide.text.Line;
18
import org.openide.util.Exceptions;
19
import org.openide.util.Lookup;
20
21
/**
22
 * Provides the FileObject from a Document. Normally this means getting the info
23
 * from the Document's stream, but other implementations might exist.
24
 * 
25
 * @author Emilian Bold
26
 */
27
public abstract class DataLoadersBridge {
28
29
    private static Logger log = Logger.getLogger(DataLoadersBridge.class.getName());
30
31
    public abstract Object createInstance(FileObject file);
32
33
    public abstract Document getDocument(FileObject fo);
34
35
    /**
36
     * @return Text of the given line in the document
37
     */
38
    public abstract String getLine(Document doc, int lineNumber);
39
40
    public abstract JEditorPane[] getOpenedPanes(FileObject fo);
41
42
    public abstract FileObject getFileObject(Document doc);
43
44
    public FileObject getFileObject(JTextComponent text) {
45
        return getFileObject(text.getDocument());
46
    }
47
    //---
48
    private static DataLoadersBridge DEFAULT_ADAPTOR = new DataLoadersBridge() {
49
50
        @Override
51
        public FileObject getFileObject(Document doc) {
52
            Object o = doc.getProperty(Document.StreamDescriptionProperty);
53
            if (o instanceof DataObject) {
54
                return ((DataObject) o).getPrimaryFile();
55
            } else if (o instanceof FileObject) {
56
                return (FileObject) o;
57
            } else if (o != null) {
58
                log.warning("Unable to return FileObject for Document " + doc + ". StreamDescriptionProperty points to non-DataLoader, non-FileObject instace: " + o);
59
            }
60
            return null;
61
        }
62
63
        @Override
64
        public Document getDocument(FileObject file) {
65
            try {
66
                DataObject d = DataObject.find(file);
67
                EditorCookie ec = (EditorCookie) d.getCookie(EditorCookie.class);
68
69
                if (ec == null) {
70
                    return null;
71
                }
72
                return ec.getDocument();
73
            } catch (IOException e) {
74
                Logger.global.log(Level.INFO, "SemanticHighlighter: Cannot find DataObject for file: " + FileUtil.getFileDisplayName(file), e);
75
                return null;
76
            }
77
        }
78
79
        @Override
80
        public JEditorPane[] getOpenedPanes(FileObject fo) {
81
            DataObject dobj;
82
            try {
83
                dobj = DataObject.find(fo);
84
            } catch (DataObjectNotFoundException ex) {
85
                return new JEditorPane[0];
86
            }
87
88
            EditorCookie editorCookie = dobj.getCookie(EditorCookie.class);
89
90
            if (editorCookie == null) {
91
                return new JEditorPane[0];
92
            }
93
94
            return editorCookie.getOpenedPanes();
95
        }
96
97
        @Override
98
        public Object createInstance(FileObject file) {
99
            assert file.getExt().equals("instance"); // NOI18N
100
            // Construct the service lazily using the instance cookie on the provided data object
101
            try {
102
                DataObject dobj = DataObject.find(file);
103
                InstanceCookie ic = dobj.getCookie(InstanceCookie.class);
104
                return ic.instanceCreate();
105
            } catch (ClassNotFoundException e) {
106
                ErrorManager.getDefault().notify(e);
107
            } catch (DataObjectNotFoundException e) {
108
                ErrorManager.getDefault().notify(e);
109
            } catch (IOException e) {
110
                ErrorManager.getDefault().notify(e);
111
            }
112
            return null;
113
        }
114
115
        @Override
116
        public FileObject getPrimaryFile(FileObject fileObject) {
117
            try {
118
                DataObject dobj = DataObject.find(fileObject);
119
120
                if (dobj != null) {
121
                    return dobj.getPrimaryFile();
122
                }
123
                return null;
124
            } catch (DataObjectNotFoundException ex) {
125
                Exceptions.printStackTrace(ex);
126
                return null;
127
            }
128
        }
129
130
        @Override
131
        public String getLine(Document doc, int lineNumber) {
132
            DataObject dObj = (DataObject) doc.getProperty(doc.StreamDescriptionProperty);
133
            LineCookie lc = dObj.getCookie(LineCookie.class);
134
            Line line = lc.getLineSet().getCurrent(lineNumber);
135
            
136
            return line.getText();
137
        }
138
    };
139
    private static DataLoadersBridge instance = null;
140
141
    public synchronized static DataLoadersBridge getDefault() {
142
        if (instance == null) {
143
            instance = Lookup.getDefault().lookup(DataLoadersBridge.class);
144
            //TODO: listen on the lookup ? Seems too much
145
            if (instance == null) {
146
                instance = DEFAULT_ADAPTOR;
147
            }
148
        }
149
        return instance;
150
    }
151
152
    public abstract FileObject getPrimaryFile(FileObject fileObject);
153
}
(-)a/gsf/src/org/netbeans/modules/editor/gsfret/EditRegionsImpl.java (-19 / +2 lines)
Lines 36-45 Link Here
36
import org.netbeans.modules.gsf.api.OffsetRange;
36
import org.netbeans.modules.gsf.api.OffsetRange;
37
import org.netbeans.modules.gsf.Language;
37
import org.netbeans.modules.gsf.Language;
38
import org.netbeans.modules.gsf.LanguageRegistry;
38
import org.netbeans.modules.gsf.LanguageRegistry;
39
import org.openide.cookies.EditorCookie;
39
import org.netbeans.modules.gsf.api.DataLoadersBridge;
40
import org.openide.filesystems.FileObject;
40
import org.openide.filesystems.FileObject;
41
import org.openide.loaders.DataObject;
42
import org.openide.loaders.DataObjectNotFoundException;
43
import org.openide.util.Exceptions;
41
import org.openide.util.Exceptions;
44
42
45
43
Lines 68-89 Link Here
68
        }
66
        }
69
67
70
        // Update caret listener
68
        // Update caret listener
71
        DataObject dobj;
69
        JEditorPane[] panes = DataLoadersBridge.getDefault().getOpenedPanes(fo);
72
73
        try {
74
            dobj = DataObject.find(fo);
75
        }
76
        catch (DataObjectNotFoundException ex){
77
            return;
78
        }
79
80
        EditorCookie editorCookie = dobj.getCookie(EditorCookie.class);
81
82
        if (editorCookie == null) {
83
            return;
84
        }
85
86
        JEditorPane[] panes = editorCookie.getOpenedPanes();
87
70
88
        if ((panes == null) || (panes.length == 0)) {
71
        if ((panes == null) || (panes.length == 0)) {
89
            return;
72
            return;
(-)a/gsf/src/org/netbeans/modules/editor/gsfret/InstantRenameAction.java (-4 / +2 lines)
Lines 62-71 Link Here
62
import org.netbeans.editor.Utilities;
62
import org.netbeans.editor.Utilities;
63
import org.netbeans.modules.gsf.Language;
63
import org.netbeans.modules.gsf.Language;
64
import org.netbeans.modules.gsf.LanguageRegistry;
64
import org.netbeans.modules.gsf.LanguageRegistry;
65
import org.netbeans.modules.gsf.api.DataLoadersBridge;
65
import org.netbeans.modules.refactoring.api.ui.RefactoringActionsFactory;
66
import org.netbeans.modules.refactoring.api.ui.RefactoringActionsFactory;
66
import org.openide.ErrorManager;
67
import org.openide.ErrorManager;
67
import org.openide.cookies.EditorCookie;
68
import org.openide.cookies.EditorCookie;
68
import org.openide.loaders.DataObject;
69
import org.openide.nodes.Node;
69
import org.openide.nodes.Node;
70
import org.openide.util.Lookup;
70
import org.openide.util.Lookup;
71
import org.openide.util.NbBundle;
71
import org.openide.util.NbBundle;
Lines 106-114 Link Here
106
                return;
106
                return;
107
            }
107
            }
108
108
109
            DataObject od =
109
            Source js = Source.forFileObject(DataLoadersBridge.getDefault().getFileObject(target));
110
                (DataObject)target.getDocument().getProperty(Document.StreamDescriptionProperty);
111
            Source js = Source.forFileObject(od.getPrimaryFile());
112
            final boolean[] wasResolved = new boolean[1];
110
            final boolean[] wasResolved = new boolean[1];
113
            final String[] message = new String[1];
111
            final String[] message = new String[1];
114
            final Set<OffsetRange>[] changePoints = new Set[1];
112
            final Set<OffsetRange>[] changePoints = new Set[1];
(-)a/gsf/src/org/netbeans/modules/editor/gsfret/InstantRenamePerformer.java (-8 / +5 lines)
Lines 66-78 Link Here
66
import org.netbeans.editor.BaseDocument;
66
import org.netbeans.editor.BaseDocument;
67
import org.netbeans.editor.BaseKit;
67
import org.netbeans.editor.BaseKit;
68
import org.netbeans.lib.editor.util.swing.MutablePositionRegion;
68
import org.netbeans.lib.editor.util.swing.MutablePositionRegion;
69
import org.netbeans.modules.gsf.api.DataLoadersBridge;
69
import org.netbeans.modules.gsf.api.OffsetRange;
70
import org.netbeans.modules.gsf.api.OffsetRange;
70
import org.netbeans.spi.editor.highlighting.HighlightsLayer;
71
import org.netbeans.spi.editor.highlighting.HighlightsLayerFactory;
72
import org.netbeans.spi.editor.highlighting.HighlightsLayerFactory.Context;
73
import org.netbeans.spi.editor.highlighting.ZOrder;
74
import org.netbeans.spi.editor.highlighting.support.OffsetsBag;
71
import org.netbeans.spi.editor.highlighting.support.OffsetsBag;
75
import org.openide.loaders.DataObject;
72
import org.openide.filesystems.FileObject;
76
import org.openide.text.NbDocument;
73
import org.openide.text.NbDocument;
77
74
78
/**
75
/**
Lines 334-343 Link Here
334
        if (bag == null) {
331
        if (bag == null) {
335
            doc.putProperty(InstantRenamePerformer.class, bag = new OffsetsBag(doc));
332
            doc.putProperty(InstantRenamePerformer.class, bag = new OffsetsBag(doc));
336
            
333
            
337
            Object stream = doc.getProperty(Document.StreamDescriptionProperty);
334
            Object stream = DataLoadersBridge.getDefault().getFileObject(doc);
338
            
335
            
339
            if (stream instanceof DataObject) {
336
            if (stream instanceof FileObject) {
340
                Logger.getLogger("TIMER").log(Level.FINE, "Instant Rename Highlights Bag", new Object[] {((DataObject) stream).getPrimaryFile(), bag}); //NOI18N
337
                Logger.getLogger("TIMER").log(Level.FINE, "Instant Rename Highlights Bag", new Object[] {(FileObject) stream, bag}); //NOI18N
341
            }
338
            }
342
        }
339
        }
343
        
340
        
(-)a/gsf/src/org/netbeans/modules/gsf/Language.java (-19 / +1 lines)
Lines 40-46 Link Here
40
 */
40
 */
41
package org.netbeans.modules.gsf;
41
package org.netbeans.modules.gsf;
42
42
43
import java.io.IOException;
44
import java.util.ArrayList;
43
import java.util.ArrayList;
45
import java.util.List;
44
import java.util.List;
46
import javax.swing.Action;
45
import javax.swing.Action;
Lines 60-70 Link Here
60
import org.netbeans.modules.gsf.spi.DefaultLanguageConfig;
59
import org.netbeans.modules.gsf.spi.DefaultLanguageConfig;
61
import org.netbeans.modules.gsfret.editor.semantic.ColoringManager;
60
import org.netbeans.modules.gsfret.editor.semantic.ColoringManager;
62
import org.netbeans.modules.gsfret.hints.infrastructure.GsfHintsManager;
61
import org.netbeans.modules.gsfret.hints.infrastructure.GsfHintsManager;
63
import org.openide.ErrorManager;
64
import org.openide.cookies.InstanceCookie;
65
import org.openide.filesystems.FileObject;
62
import org.openide.filesystems.FileObject;
66
import org.openide.loaders.DataObject;
67
import org.openide.loaders.DataObjectNotFoundException;
68
63
69
64
70
/**
65
/**
Lines 282-301 Link Here
282
    
277
    
283
    // XXX This is crying out for generics!
278
    // XXX This is crying out for generics!
284
    private Object createInstance(FileObject file) {
279
    private Object createInstance(FileObject file) {
285
        assert file.getExt().equals("instance"); // NOI18N
280
        return DataLoadersBridge.getDefault().createInstance(file);
286
        // Construct the service lazily using the instance cookie on the provided data object
287
        try {
288
            DataObject dobj = DataObject.find(file);
289
            InstanceCookie ic = dobj.getCookie(InstanceCookie.class);
290
            return ic.instanceCreate();
291
        } catch (ClassNotFoundException e) {
292
            ErrorManager.getDefault().notify(e);
293
        } catch (DataObjectNotFoundException e) {
294
            ErrorManager.getDefault().notify(e);
295
        } catch (IOException e) {
296
            ErrorManager.getDefault().notify(e);
297
        }
298
        return null;
299
    }
281
    }
300
    
282
    
301
    @Override
283
    @Override
(-)a/gsf/src/org/netbeans/modules/gsfret/editor/fold/GsfFoldManager.java (-3 / +3 lines)
Lines 78-84 Link Here
78
import org.openide.filesystems.FileObject;
78
import org.openide.filesystems.FileObject;
79
import org.netbeans.modules.gsf.Language;
79
import org.netbeans.modules.gsf.Language;
80
import org.netbeans.modules.gsf.LanguageRegistry;
80
import org.netbeans.modules.gsf.LanguageRegistry;
81
import org.openide.loaders.DataObject;
81
import org.netbeans.modules.gsf.api.DataLoadersBridge;
82
82
83
/**
83
/**
84
 * This file is originally from Retouche, the Java Support 
84
 * This file is originally from Retouche, the Java Support 
Lines 210-220 Link Here
210
210
211
    public synchronized void initFolds(FoldHierarchyTransaction transaction) {
211
    public synchronized void initFolds(FoldHierarchyTransaction transaction) {
212
        Document doc = operation.getHierarchy().getComponent().getDocument();
212
        Document doc = operation.getHierarchy().getComponent().getDocument();
213
        DataObject od = (DataObject) doc.getProperty(Document.StreamDescriptionProperty);
213
        FileObject od = DataLoadersBridge.getDefault().getFileObject(doc);
214
        
214
        
215
        if (od != null) {
215
        if (od != null) {
216
            currentFolds = new HashMap<FoldInfo, Fold>();
216
            currentFolds = new HashMap<FoldInfo, Fold>();
217
            task = JavaElementFoldTask.getTask(od.getPrimaryFile());
217
            task = JavaElementFoldTask.getTask(od);
218
            task.setGsfFoldManager(GsfFoldManager.this);
218
            task.setGsfFoldManager(GsfFoldManager.this);
219
        }
219
        }
220
    }
220
    }
(-)a/gsf/src/org/netbeans/modules/gsfret/editor/hyperlink/GoToSupport.java (-4 / +2 lines)
Lines 68-79 Link Here
68
import org.netbeans.modules.gsf.GsfHtmlFormatter;
68
import org.netbeans.modules.gsf.GsfHtmlFormatter;
69
import org.netbeans.modules.gsf.Language;
69
import org.netbeans.modules.gsf.Language;
70
import org.netbeans.modules.gsf.LanguageRegistry;
70
import org.netbeans.modules.gsf.LanguageRegistry;
71
import org.netbeans.modules.gsf.api.DataLoadersBridge;
71
import org.netbeans.modules.gsfret.editor.completion.GsfCompletionProvider;
72
import org.netbeans.modules.gsfret.editor.completion.GsfCompletionProvider;
72
import org.netbeans.napi.gsfret.source.SourceUtils;
73
import org.netbeans.napi.gsfret.source.SourceUtils;
73
import org.openide.awt.HtmlBrowser;
74
import org.openide.awt.HtmlBrowser;
74
import org.openide.awt.StatusDisplayer;
75
import org.openide.awt.StatusDisplayer;
75
import org.openide.filesystems.FileObject;
76
import org.openide.filesystems.FileObject;
76
import org.openide.loaders.DataObject;
77
import org.openide.util.Exceptions;
77
import org.openide.util.Exceptions;
78
import org.openide.util.NbBundle;
78
import org.openide.util.NbBundle;
79
79
Lines 266-274 Link Here
266
    }
266
    }
267
    
267
    
268
    private static FileObject getFileObject(Document doc) {
268
    private static FileObject getFileObject(Document doc) {
269
        DataObject od = (DataObject)doc.getProperty(Document.StreamDescriptionProperty);
269
        return DataLoadersBridge.getDefault().getFileObject(doc);
270
271
        return (od != null) ? od.getPrimaryFile() : null;
272
    }
270
    }
273
271
274
    public int[] getHyperlinkSpan(Document doc, int offset) {
272
    public int[] getHyperlinkSpan(Document doc, int offset) {
(-)a/gsf/src/org/netbeans/modules/gsfret/editor/semantic/MarkOccurrencesHighlighter.java (-20 / +6 lines)
Lines 41-47 Link Here
41
package org.netbeans.modules.gsfret.editor.semantic;
41
package org.netbeans.modules.gsfret.editor.semantic;
42
42
43
import java.awt.Color;
43
import java.awt.Color;
44
import java.io.IOException;
45
import java.util.ArrayList;
44
import java.util.ArrayList;
46
import java.util.Collections;
45
import java.util.Collections;
47
import java.util.List;
46
import java.util.List;
Lines 61-74 Link Here
61
import org.netbeans.modules.gsf.Language;
60
import org.netbeans.modules.gsf.Language;
62
import org.netbeans.modules.gsf.LanguageRegistry;
61
import org.netbeans.modules.gsf.LanguageRegistry;
63
import org.netbeans.modules.gsf.api.ColoringAttributes.Coloring;
62
import org.netbeans.modules.gsf.api.ColoringAttributes.Coloring;
63
import org.netbeans.modules.gsf.api.DataLoadersBridge;
64
import org.netbeans.modules.gsf.api.annotations.NonNull;
64
import org.netbeans.modules.gsf.api.annotations.NonNull;
65
import org.netbeans.modules.gsfret.hints.infrastructure.Pair;
65
import org.netbeans.modules.gsfret.hints.infrastructure.Pair;
66
import org.netbeans.spi.editor.highlighting.support.OffsetsBag;
66
import org.netbeans.spi.editor.highlighting.support.OffsetsBag;
67
import org.openide.ErrorManager;
67
import org.openide.ErrorManager;
68
import org.openide.cookies.EditorCookie;
69
import org.openide.filesystems.FileObject;
68
import org.openide.filesystems.FileObject;
70
import org.openide.filesystems.FileUtil;
71
import org.openide.loaders.DataObject;
72
import org.openide.util.NbBundle;
69
import org.openide.util.NbBundle;
73
70
74
/**
71
/**
Lines 93-110 Link Here
93
    public static final Color ES_COLOR = new Color( 175, 172, 102 ); // new Color(244, 164, 113);
90
    public static final Color ES_COLOR = new Color( 175, 172, 102 ); // new Color(244, 164, 113);
94
    
91
    
95
    public Document getDocument() {
92
    public Document getDocument() {
96
        try {
93
        return DataLoadersBridge.getDefault().getDocument(file);
97
            DataObject d = DataObject.find(file);
98
            EditorCookie ec = (EditorCookie) d.getCookie(EditorCookie.class);
99
            
100
            if (ec == null)
101
                return null;
102
            
103
            return ec.getDocument();
104
        } catch (IOException e) {
105
            Logger.global.log(Level.INFO, "SemanticHighlighter: Cannot find DataObject for file: " + FileUtil.getFileDisplayName(file), e);
106
            return null;
107
        }
108
    }
94
    }
109
    
95
    
110
    public void run(CompilationInfo info) {
96
    public void run(CompilationInfo info) {
Lines 224-230 Link Here
224
        if (bag == null) {
210
        if (bag == null) {
225
            doc.putProperty(MarkOccurrencesHighlighter.class, bag = new OffsetsBag(doc, false));
211
            doc.putProperty(MarkOccurrencesHighlighter.class, bag = new OffsetsBag(doc, false));
226
            
212
            
227
            Object stream = doc.getProperty(Document.StreamDescriptionProperty);
228
            final OffsetsBag bagFin = bag;
213
            final OffsetsBag bagFin = bag;
229
            DocumentListener l = new DocumentListener() {
214
            DocumentListener l = new DocumentListener() {
230
                public void insertUpdate(DocumentEvent e) {
215
                public void insertUpdate(DocumentEvent e) {
Lines 238-246 Link Here
238
            
223
            
239
            doc.addDocumentListener(l);
224
            doc.addDocumentListener(l);
240
            
225
            
241
            if (stream instanceof DataObject) {
226
            Object stream = DataLoadersBridge.getDefault().getFileObject(doc);
242
                Logger.getLogger("TIMER").log(Level.FINE, "MarkOccurrences Highlights Bag", new Object[] {((DataObject) stream).getPrimaryFile(), bag}); //NOI18N
227
            if (stream instanceof FileObject) {
243
                Logger.getLogger("TIMER").log(Level.FINE, "MarkOccurrences Highlights Bag Listener", new Object[] {((DataObject) stream).getPrimaryFile(), l}); //NOI18N
228
                Logger.getLogger("TIMER").log(Level.FINE, "MarkOccurrences Highlights Bag", new Object[] {(FileObject) stream, bag}); //NOI18N
229
                Logger.getLogger("TIMER").log(Level.FINE, "MarkOccurrences Highlights Bag Listener", new Object[] {(FileObject) stream, l}); //NOI18N
244
            }
230
            }
245
        }
231
        }
246
        
232
        
(-)a/gsf/src/org/netbeans/modules/gsfret/editor/semantic/SemanticHighlighter.java (-16 / +2 lines)
Lines 40-46 Link Here
40
 */
40
 */
41
package org.netbeans.modules.gsfret.editor.semantic;
41
package org.netbeans.modules.gsfret.editor.semantic;
42
42
43
import java.io.IOException;
44
import java.util.ArrayList;
43
import java.util.ArrayList;
45
import java.util.HashMap;
44
import java.util.HashMap;
46
import java.util.List;
45
import java.util.List;
Lines 57-71 Link Here
57
import org.netbeans.modules.gsf.api.ColoringAttributes;
56
import org.netbeans.modules.gsf.api.ColoringAttributes;
58
import org.netbeans.napi.gsfret.source.CompilationInfo;
57
import org.netbeans.napi.gsfret.source.CompilationInfo;
59
import org.netbeans.modules.gsf.api.ColoringAttributes.Coloring;
58
import org.netbeans.modules.gsf.api.ColoringAttributes.Coloring;
59
import org.netbeans.modules.gsf.api.DataLoadersBridge;
60
import org.netbeans.modules.gsf.api.EditHistory;
60
import org.netbeans.modules.gsf.api.EditHistory;
61
import org.netbeans.modules.gsf.api.OffsetRange;
61
import org.netbeans.modules.gsf.api.OffsetRange;
62
import org.netbeans.modules.gsf.api.ParserResult;
62
import org.netbeans.modules.gsf.api.ParserResult;
63
import org.netbeans.modules.gsf.api.SemanticAnalyzer;
63
import org.netbeans.modules.gsf.api.SemanticAnalyzer;
64
import org.openide.ErrorManager;
64
import org.openide.ErrorManager;
65
import org.openide.cookies.EditorCookie;
66
import org.openide.filesystems.FileObject;
65
import org.openide.filesystems.FileObject;
67
import org.openide.filesystems.FileUtil;
68
import org.openide.loaders.DataObject;
69
66
70
67
71
/**
68
/**
Lines 87-104 Link Here
87
    }
84
    }
88
85
89
    public Document getDocument() {
86
    public Document getDocument() {
90
        try {
87
        return DataLoadersBridge.getDefault().getDocument(file);
91
            DataObject d = DataObject.find(file);
92
            EditorCookie ec = (EditorCookie) d.getCookie(EditorCookie.class);
93
            
94
            if (ec == null)
95
                return null;
96
            
97
            return ec.getDocument();
98
        } catch (IOException e) {
99
            Logger.global.log(Level.INFO, "SemanticHighlighter: Cannot find DataObject for file: " + FileUtil.getFileDisplayName(file), e);
100
            return null;
101
        }
102
    }
88
    }
103
    
89
    
104
    public @Override void run(CompilationInfo info) {
90
    public @Override void run(CompilationInfo info) {
(-)a/gsf/src/org/netbeans/modules/gsfret/hints/GsfHintsProvider.java (-24 / +3 lines)
Lines 41-47 Link Here
41
41
42
package org.netbeans.modules.gsfret.hints;
42
package org.netbeans.modules.gsfret.hints;
43
43
44
import java.io.IOException;
45
import java.util.ArrayList;
44
import java.util.ArrayList;
46
import java.util.Collections;
45
import java.util.Collections;
47
import java.util.List;
46
import java.util.List;
Lines 55-63 Link Here
55
import org.netbeans.spi.editor.hints.Severity;
54
import org.netbeans.spi.editor.hints.Severity;
56
import org.openide.ErrorManager;
55
import org.openide.ErrorManager;
57
import org.openide.filesystems.FileObject;
56
import org.openide.filesystems.FileObject;
58
import org.openide.filesystems.FileUtil;
59
import org.openide.loaders.DataObject;
60
import org.openide.text.Line;
61
import java.util.EnumMap;
57
import java.util.EnumMap;
62
import java.util.Set;
58
import java.util.Set;
63
import java.util.logging.Level;
59
import java.util.logging.Level;
Lines 69-74 Link Here
69
import org.netbeans.modules.gsf.api.HintsProvider;
65
import org.netbeans.modules.gsf.api.HintsProvider;
70
import org.netbeans.modules.gsf.api.ParserResult;
66
import org.netbeans.modules.gsf.api.ParserResult;
71
import org.netbeans.modules.gsf.LanguageRegistry;
67
import org.netbeans.modules.gsf.LanguageRegistry;
68
import org.netbeans.modules.gsf.api.DataLoadersBridge;
72
import org.netbeans.modules.gsf.api.Hint;
69
import org.netbeans.modules.gsf.api.Hint;
73
import org.netbeans.modules.gsf.api.RuleContext;
70
import org.netbeans.modules.gsf.api.RuleContext;
74
import org.netbeans.modules.gsfret.hints.infrastructure.GsfHintsManager;
71
import org.netbeans.modules.gsfret.hints.infrastructure.GsfHintsManager;
Lines 77-84 Link Here
77
import org.netbeans.spi.editor.hints.ErrorDescription;
74
import org.netbeans.spi.editor.hints.ErrorDescription;
78
import org.netbeans.spi.editor.hints.ErrorDescriptionFactory;
75
import org.netbeans.spi.editor.hints.ErrorDescriptionFactory;
79
import org.netbeans.spi.editor.hints.HintsController;
76
import org.netbeans.spi.editor.hints.HintsController;
80
import org.openide.cookies.EditorCookie;
81
import org.openide.cookies.LineCookie;
82
import org.openide.text.NbDocument;
77
import org.openide.text.NbDocument;
83
78
84
79
Lines 197-230 Link Here
197
    }
192
    }
198
    
193
    
199
    public Document getDocument() {
194
    public Document getDocument() {
200
        try {
195
        return DataLoadersBridge.getDefault().getDocument(file);
201
            DataObject d = DataObject.find(file);
202
            EditorCookie ec = d.getCookie(EditorCookie.class);
203
            
204
            if (ec == null) {
205
                return null;
206
            }
207
            
208
            return ec.getDocument();
209
        } catch (IOException e) {
210
            Logger.getLogger(GsfHintsProvider.class.getName()).log(Level.INFO, "GsfHintsProvider: Cannot find DataObject for file: " + FileUtil.getFileDisplayName(file), e);
211
            return null;
212
        }
213
    }
196
    }
214
    
197
    
215
    private Position[] getLine(CompilationInfo info, Error d, final Document doc, int startOffset, int endOffset) {
198
    private Position[] getLine(CompilationInfo info, Error d, final Document doc, int startOffset, int endOffset) {
216
        StyledDocument sdoc = (StyledDocument) doc;
199
        StyledDocument sdoc = (StyledDocument) doc;
217
        DataObject dObj = (DataObject)doc.getProperty(doc.StreamDescriptionProperty );
218
        LineCookie lc = dObj.getCookie(LineCookie.class);
219
        int lineNumber = NbDocument.findLineNumber(sdoc, startOffset);
200
        int lineNumber = NbDocument.findLineNumber(sdoc, startOffset);
220
        int lineOffset = NbDocument.findLineOffset(sdoc, lineNumber);
201
        int lineOffset = NbDocument.findLineOffset(sdoc, lineNumber);
221
        Line line = lc.getLineSet().getCurrent(lineNumber);
202
        String text = DataLoadersBridge.getDefault().getLine(doc, lineNumber);
222
        
203
        
223
        boolean rangePrepared = false;
204
        boolean rangePrepared = false;
224
        
205
        
225
        if (!rangePrepared) {
206
        if (!rangePrepared) {
226
            String text = line.getText();
227
            
228
            int column = 0;
207
            int column = 0;
229
            int length = text.length();
208
            int length = text.length();
230
            
209
            
(-)a/gsf/src/org/netbeans/modules/gsfret/hints/infrastructure/GsfHintsManager.java (-20 / +6 lines)
Lines 39-45 Link Here
39
39
40
package org.netbeans.modules.gsfret.hints.infrastructure;
40
package org.netbeans.modules.gsfret.hints.infrastructure;
41
41
42
import java.io.IOException;
43
import java.util.ArrayList;
42
import java.util.ArrayList;
44
import java.util.Collection;
43
import java.util.Collection;
45
import java.util.Collections;
44
import java.util.Collections;
Lines 64-69 Link Here
64
import org.netbeans.modules.gsf.api.HintSeverity;
63
import org.netbeans.modules.gsf.api.HintSeverity;
65
import org.netbeans.modules.gsf.api.Hint;
64
import org.netbeans.modules.gsf.api.Hint;
66
import org.netbeans.modules.gsf.api.CompilationInfo;
65
import org.netbeans.modules.gsf.api.CompilationInfo;
66
import org.netbeans.modules.gsf.api.DataLoadersBridge;
67
import org.netbeans.modules.gsf.api.HintsProvider;
67
import org.netbeans.modules.gsf.api.HintsProvider;
68
import org.netbeans.modules.gsf.api.OffsetRange;
68
import org.netbeans.modules.gsf.api.OffsetRange;
69
import org.netbeans.modules.gsf.api.ParserResult;
69
import org.netbeans.modules.gsf.api.ParserResult;
Lines 77-88 Link Here
77
import org.netbeans.spi.editor.hints.ErrorDescriptionFactory;
77
import org.netbeans.spi.editor.hints.ErrorDescriptionFactory;
78
import org.netbeans.spi.editor.hints.HintsController;
78
import org.netbeans.spi.editor.hints.HintsController;
79
import org.netbeans.spi.options.OptionsPanelController;
79
import org.netbeans.spi.options.OptionsPanelController;
80
import org.openide.cookies.InstanceCookie;
81
import org.openide.filesystems.FileObject;
80
import org.openide.filesystems.FileObject;
82
import org.openide.filesystems.FileSystem;
81
import org.openide.filesystems.FileSystem;
83
import org.openide.filesystems.Repository;
82
import org.openide.filesystems.Repository;
84
import org.openide.loaders.DataObject;
85
import org.openide.util.Exceptions;
86
83
87
/**
84
/**
88
 *
85
 *
Lines 450-472 Link Here
450
    }
447
    }
451
    
448
    
452
    private static Rule instantiateRule( FileObject fileObject ) {
449
    private static Rule instantiateRule( FileObject fileObject ) {
453
        try {
450
        Object instance = DataLoadersBridge.getDefault().createInstance(fileObject);
454
            DataObject dobj = DataObject.find(fileObject);
451
        if (instance instanceof Rule) {
455
            InstanceCookie ic = dobj.getCookie( InstanceCookie.class );
452
            return (Rule) instance;
456
            Object instance = ic.instanceCreate();
453
        } else {
457
            
454
            return null;
458
            if (instance instanceof Rule) {
459
                return (Rule) instance;
460
            } else {
461
                return null;
462
            }
463
        } catch( IOException e ) {
464
            LOG.log(Level.INFO, null, e);
465
        } catch ( ClassNotFoundException e ) {
466
            LOG.log(Level.INFO, null, e);
467
        }
455
        }
468
469
        return null;
470
    }
456
    }
471
    
457
    
472
    public final ErrorDescription createDescription(Hint desc, RuleContext context, 
458
    public final ErrorDescription createDescription(Hint desc, RuleContext context, 
(-)a/gsf/src/org/netbeans/modules/gsfret/navigation/actions/OpenAction.java (-25 / +7 lines)
Lines 41-68 Link Here
41
41
42
package org.netbeans.modules.gsfret.navigation.actions;
42
package org.netbeans.modules.gsfret.navigation.actions;
43
43
44
import java.awt.Container;
45
import java.awt.Point;
46
import java.beans.PropertyChangeEvent;
47
import java.beans.PropertyChangeListener;
48
import java.util.List;
49
import javax.swing.JEditorPane;
50
import org.openide.awt.*;
51
import org.openide.awt.StatusDisplayer;
52
import org.openide.cookies.*;
53
import org.openide.cookies.EditorCookie;
54
import org.openide.filesystems.FileObject;
44
import org.openide.filesystems.FileObject;
55
import org.openide.loaders.DataObject;
56
import org.openide.nodes.*;
57
import org.openide.text.PositionBounds;
58
import org.openide.util.*;
45
import org.openide.util.*;
59
import javax.swing.*;
46
import javax.swing.*;
60
import java.awt.event.*;
47
import java.awt.event.*;
48
import org.netbeans.modules.gsf.api.DataLoadersBridge;
61
import org.netbeans.modules.gsf.api.ElementHandle;
49
import org.netbeans.modules.gsf.api.ElementHandle;
62
import org.netbeans.napi.gsfret.source.Source;
50
import org.netbeans.napi.gsfret.source.Source;
63
import org.netbeans.napi.gsfret.source.UiUtils;
51
import org.netbeans.napi.gsfret.source.UiUtils;
64
import org.openide.loaders.DataObjectNotFoundException;
65
import org.openide.windows.TopComponent;
66
52
67
/**
53
/**
68
 * This file is originally from Retouche, the Java Support 
54
 * This file is originally from Retouche, the Java Support 
Lines 95-113 Link Here
95
            return;
81
            return;
96
        }
82
        }
97
        ElementHandle handle = elementHandle;
83
        ElementHandle handle = elementHandle;
98
        try {
84
        FileObject primaryFile = DataLoadersBridge.getDefault().getPrimaryFile(fileObject);
99
            DataObject activeFile = DataObject.find(fileObject);
100
85
101
            if ((activeFile != null) && (handle != null)) {
86
        if ((primaryFile != null) && (handle != null)) {
102
                Source js =
87
            Source js =
103
                    Source.forFileObject(activeFile.getPrimaryFile());
88
                    Source.forFileObject(primaryFile);
104
89
105
                if (js != null) {
90
            if (js != null) {
106
                    UiUtils.open(js, handle);
91
                UiUtils.open(js, handle);
107
                }
108
            }
92
            }
109
        } catch (DataObjectNotFoundException dnfe) {
110
            Exceptions.printStackTrace(dnfe);
111
        }
93
        }
112
    }
94
    }
113
95
(-)a/gsf/src/org/netbeans/modules/gsfret/source/ActivatedDocumentListener.java (-16 / +4 lines)
Lines 42-62 Link Here
42
42
43
import java.beans.PropertyChangeEvent;
43
import java.beans.PropertyChangeEvent;
44
import java.beans.PropertyChangeListener;
44
import java.beans.PropertyChangeListener;
45
import java.io.IOException;
46
import javax.swing.text.Document;
47
import javax.swing.text.JTextComponent;
45
import javax.swing.text.JTextComponent;
48
import org.netbeans.api.editor.EditorRegistry;
46
import org.netbeans.api.editor.EditorRegistry;
49
import org.openide.filesystems.FileObject;
50
import org.openide.loaders.DataObject;
51
import org.openide.util.Exceptions;
52
47
53
import java.io.IOException;
48
import java.io.IOException;
54
import javax.swing.text.Document;
49
import javax.swing.text.Document;
50
import org.netbeans.modules.gsf.api.DataLoadersBridge;
55
import org.netbeans.modules.gsfpath.api.classpath.ClassPath;
51
import org.netbeans.modules.gsfpath.api.classpath.ClassPath;
56
import org.netbeans.napi.gsfret.source.Source;
52
import org.netbeans.napi.gsfret.source.Source;
57
import org.netbeans.modules.gsfret.source.usages.RepositoryUpdater;
53
import org.netbeans.modules.gsfret.source.usages.RepositoryUpdater;
58
import org.openide.filesystems.FileObject;
54
import org.openide.filesystems.FileObject;
59
import org.openide.loaders.DataObject;
60
import org.openide.util.Exceptions;
55
import org.openide.util.Exceptions;
61
56
62
/**
57
/**
Lines 98-116 Link Here
98
            return;
93
            return;
99
        }
94
        }
100
        
95
        
101
        Object sourceProperty = active.getProperty(Document.StreamDescriptionProperty);
96
        FileObject activeFile = DataLoadersBridge.getDefault().getFileObject(active);
102
        
97
        
103
        if (!(sourceProperty instanceof DataObject)) {
98
        if(activeFile==null){
99
            //could be
104
            return;
100
            return;
105
        }
101
        }
106
        
107
        DataObject source = (DataObject) sourceProperty;
108
        
109
        if (source == null) {
110
            return;
111
        }
112
        
113
        FileObject activeFile = source.getPrimaryFile();
114
        
102
        
115
        if (lastValidFile == activeFile) {
103
        if (lastValidFile == activeFile) {
116
            return;
104
            return;
(-)a/gsf/src/org/netbeans/napi/gsfret/source/ModificationResult.java (-8 / +3 lines)
Lines 48-57 Link Here
48
import javax.swing.text.Document;
48
import javax.swing.text.Document;
49
import org.netbeans.api.queries.FileEncodingQuery;
49
import org.netbeans.api.queries.FileEncodingQuery;
50
import org.netbeans.editor.BaseDocument;
50
import org.netbeans.editor.BaseDocument;
51
import org.openide.cookies.EditorCookie;
51
import org.netbeans.modules.gsf.api.DataLoadersBridge;
52
import org.openide.filesystems.FileObject;
52
import org.openide.filesystems.FileObject;
53
import org.openide.filesystems.FileUtil;
53
import org.openide.filesystems.FileUtil;
54
import org.openide.loaders.DataObject;
55
import org.openide.text.PositionRef;
54
import org.openide.text.PositionRef;
56
55
57
/**
56
/**
Lines 101-114 Link Here
101
    }
100
    }
102
    
101
    
103
    private void commit(final FileObject fo, final List<Difference> differences, Writer out) throws IOException {
102
    private void commit(final FileObject fo, final List<Difference> differences, Writer out) throws IOException {
104
        DataObject dObj = DataObject.find(fo);
105
        EditorCookie ec = dObj != null ? dObj.getCookie(org.openide.cookies.EditorCookie.class) : null;
106
        // if editor cookie was found and user does not provided his own
103
        // if editor cookie was found and user does not provided his own
107
        // writer where he wants to see changes, commit the changes to 
104
        // writer where he wants to see changes, commit the changes to 
108
        // found document.
105
        // found document.
109
        if (ec != null && out == null) {
106
        Document doc = DataLoadersBridge.getDefault().getDocument(fo);
110
            Document doc = ec.getDocument();
107
        if (doc != null && out == null) {
111
            if (doc != null) {
112
                if (doc instanceof BaseDocument)
108
                if (doc instanceof BaseDocument)
113
                    ((BaseDocument)doc).atomicLock();
109
                    ((BaseDocument)doc).atomicLock();
114
                try {
110
                try {
Lines 139-145 Link Here
139
                        ((BaseDocument)doc).atomicUnlock();
135
                        ((BaseDocument)doc).atomicUnlock();
140
                }
136
                }
141
                return;
137
                return;
142
            }
143
        }
138
        }
144
        InputStream ins = null;
139
        InputStream ins = null;
145
        ByteArrayOutputStream baos = null;           
140
        ByteArrayOutputStream baos = null;           
(-)a/gsf/src/org/netbeans/napi/gsfret/source/Source.java (-3 / +4 lines)
Lines 99-104 Link Here
99
import org.netbeans.napi.gsfret.source.ModificationResult.Difference;
99
import org.netbeans.napi.gsfret.source.ModificationResult.Difference;
100
import org.netbeans.modules.gsf.Language;
100
import org.netbeans.modules.gsf.Language;
101
import org.netbeans.modules.gsf.LanguageRegistry;
101
import org.netbeans.modules.gsf.LanguageRegistry;
102
import org.netbeans.modules.gsf.api.DataLoadersBridge;
102
import org.netbeans.modules.gsf.api.EditHistory;
103
import org.netbeans.modules.gsf.api.EditHistory;
103
import org.netbeans.modules.gsf.api.IncrementalEmbeddingModel;
104
import org.netbeans.modules.gsf.api.IncrementalEmbeddingModel;
104
import org.netbeans.modules.gsf.api.IncrementalParser;
105
import org.netbeans.modules.gsf.api.IncrementalParser;
Lines 348-356 Link Here
348
        Reference<Source> ref = (Reference<Source>)doc.getProperty(Source.class);
349
        Reference<Source> ref = (Reference<Source>)doc.getProperty(Source.class);
349
        Source js = ref != null ? ref.get() : null;
350
        Source js = ref != null ? ref.get() : null;
350
        if (js == null) {
351
        if (js == null) {
351
            DataObject dObj = (DataObject)doc.getProperty(Document.StreamDescriptionProperty);
352
            FileObject fo = DataLoadersBridge.getDefault().getFileObject(doc);
352
            if (dObj != null)
353
            if (fo != null)
353
                js = forFileObject(dObj.getPrimaryFile());
354
                js = forFileObject(fo);
354
        }
355
        }
355
        return js;
356
        return js;
356
    }
357
    }
(-)a/gsf/src/org/netbeans/napi/gsfret/source/support/EditorAwareSourceTaskFactory.java (-3 lines)
Lines 44-56 Link Here
44
import java.util.List;
44
import java.util.List;
45
import javax.swing.event.ChangeEvent;
45
import javax.swing.event.ChangeEvent;
46
import javax.swing.event.ChangeListener;
46
import javax.swing.event.ChangeListener;
47
import javax.swing.text.Document;
48
import javax.swing.text.JTextComponent;
49
import org.netbeans.napi.gsfret.source.Phase;
47
import org.netbeans.napi.gsfret.source.Phase;
50
import org.netbeans.napi.gsfret.source.Source.Priority;
48
import org.netbeans.napi.gsfret.source.Source.Priority;
51
import org.netbeans.napi.gsfret.source.SourceTaskFactory;
49
import org.netbeans.napi.gsfret.source.SourceTaskFactory;
52
import org.openide.filesystems.FileObject;
50
import org.openide.filesystems.FileObject;
53
import org.openide.loaders.DataObject;
54
51
55
/**
52
/**
56
 * This file is originally from Retouche, the Java Support 
53
 * This file is originally from Retouche, the Java Support 
(-)a/gsf/src/org/netbeans/napi/gsfret/source/support/OpenedEditors.java (-18 / +2 lines)
Lines 43-49 Link Here
43
import java.beans.PropertyChangeEvent;
43
import java.beans.PropertyChangeEvent;
44
import java.beans.PropertyChangeListener;
44
import java.beans.PropertyChangeListener;
45
import java.util.ArrayList;
45
import java.util.ArrayList;
46
import java.util.Arrays;
47
import java.util.Collection;
46
import java.util.Collection;
48
import java.util.Collections;
47
import java.util.Collections;
49
import java.util.HashMap;
48
import java.util.HashMap;
Lines 55-69 Link Here
55
import javax.swing.JEditorPane;
54
import javax.swing.JEditorPane;
56
import javax.swing.event.ChangeEvent;
55
import javax.swing.event.ChangeEvent;
57
import javax.swing.event.ChangeListener;
56
import javax.swing.event.ChangeListener;
58
import javax.swing.text.Document;
59
import javax.swing.text.JTextComponent;
57
import javax.swing.text.JTextComponent;
60
import org.netbeans.api.editor.EditorRegistry;
58
import org.netbeans.api.editor.EditorRegistry;
61
import org.netbeans.editor.Registry;
62
import org.netbeans.modules.gsf.LanguageRegistry;
59
import org.netbeans.modules.gsf.LanguageRegistry;
60
import org.netbeans.modules.gsf.api.DataLoadersBridge;
63
import org.netbeans.napi.gsfret.source.Source;
61
import org.netbeans.napi.gsfret.source.Source;
64
import org.openide.filesystems.FileObject;
62
import org.openide.filesystems.FileObject;
65
import org.openide.filesystems.FileUtil;
66
import org.openide.loaders.DataObject;
67
import org.openide.util.Parameters;
63
import org.openide.util.Parameters;
68
64
69
/**
65
/**
Lines 163-181 Link Here
163
    }
159
    }
164
160
165
    static FileObject getFileObject(JTextComponent pane) {
161
    static FileObject getFileObject(JTextComponent pane) {
166
        Object source = pane.getDocument().getProperty(Document.StreamDescriptionProperty);
162
        return DataLoadersBridge.getDefault().getFileObject(pane);
167
        
168
        if (!(source instanceof DataObject)) {
169
            return null;
170
        }
171
        
172
        DataObject file = (DataObject) source;
173
        
174
        if (file != null) {
175
            return file.getPrimaryFile();
176
        }
177
178
        return null;
179
    }
163
    }
180
164
181
    /**Checks if the given file is supported. See {@link #filterSupportedMIMETypes}
165
    /**Checks if the given file is supported. See {@link #filterSupportedMIMETypes}

Return to bug 141001