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 199416
Collapse All | Expand All

(-)a/java.source/nbproject/project.xml (-1 / +10 lines)
Lines 85-90 Link Here
85
                    </run-dependency>
85
                    </run-dependency>
86
                </dependency>
86
                </dependency>
87
                <dependency>
87
                <dependency>
88
                    <code-name-base>org.netbeans.core.multiview</code-name-base>
89
                    <build-prerequisite/>
90
                    <compile-dependency/>
91
                    <run-dependency>
92
                        <release-version>1</release-version>
93
                        <specification-version>1.24</specification-version>
94
                    </run-dependency>
95
                </dependency>
96
                <dependency>
88
                    <code-name-base>org.netbeans.libs.javacapi</code-name-base>
97
                    <code-name-base>org.netbeans.libs.javacapi</code-name-base>
89
                    <build-prerequisite/>
98
                    <build-prerequisite/>
90
                    <compile-dependency/>
99
                    <compile-dependency/>
Lines 334-340 Link Here
334
                    <build-prerequisite/>
343
                    <build-prerequisite/>
335
                    <compile-dependency/>
344
                    <compile-dependency/>
336
                    <run-dependency>
345
                    <run-dependency>
337
                        <specification-version>7.0</specification-version>
346
                        <specification-version>7.26</specification-version>
338
                    </run-dependency>
347
                    </run-dependency>
339
                </dependency>
348
                </dependency>
340
                <dependency>
349
                <dependency>
(-)a/java.source/src/org/netbeans/modules/java/Bundle.properties (+2 lines)
Lines 67-69 Link Here
67
TP_NeedsCompileBadge=Needs to be compiled.
67
TP_NeedsCompileBadge=Needs to be compiled.
68
TP_ExecutableBadge=Contains main class.
68
TP_ExecutableBadge=Contains main class.
69
TXT_OpenClassFile= Open Class File
69
TXT_OpenClassFile= Open Class File
70
71
CTL_SourceTabCaption=&Source
(-)a/java.source/src/org/netbeans/modules/java/JavaDataObject.java (-136 / +17 lines)
Lines 48-58 Link Here
48
import com.sun.source.tree.CompilationUnitTree;
48
import com.sun.source.tree.CompilationUnitTree;
49
import com.sun.source.tree.Tree;
49
import com.sun.source.tree.Tree;
50
import java.io.IOException;
50
import java.io.IOException;
51
import javax.swing.event.DocumentEvent;
52
import javax.swing.event.DocumentListener;
53
import javax.swing.text.Document;
54
import javax.swing.text.EditorKit;
55
import javax.swing.text.StyledDocument;
56
import org.netbeans.api.java.source.Task;
51
import org.netbeans.api.java.source.Task;
57
import org.netbeans.api.java.source.JavaSource;
52
import org.netbeans.api.java.source.JavaSource;
58
import org.netbeans.api.java.source.JavaSource.Phase;
53
import org.netbeans.api.java.source.JavaSource.Phase;
Lines 60-103 Link Here
60
import org.netbeans.api.java.source.TreeUtilities;
55
import org.netbeans.api.java.source.TreeUtilities;
61
import org.netbeans.api.java.source.WorkingCopy;
56
import org.netbeans.api.java.source.WorkingCopy;
62
import org.netbeans.api.java.source.TreeMaker;
57
import org.netbeans.api.java.source.TreeMaker;
63
import org.openide.cookies.EditCookie;
58
import org.netbeans.core.spi.multiview.MultiViewElement;
64
import org.openide.cookies.EditorCookie;
59
import org.netbeans.core.spi.multiview.text.MultiViewEditorElement;
65
import org.openide.cookies.OpenCookie;
66
import org.openide.cookies.PrintCookie;
67
import org.openide.cookies.SaveCookie;
68
import org.openide.filesystems.FileLock;
69
import org.openide.filesystems.FileObject;
60
import org.openide.filesystems.FileObject;
70
import org.openide.loaders.DataFolder;
61
import org.openide.loaders.DataFolder;
71
import org.openide.loaders.DataObject;
62
import org.openide.loaders.DataObject;
72
import org.openide.loaders.DataObjectExistsException;
63
import org.openide.loaders.DataObjectExistsException;
73
import org.openide.loaders.MultiDataObject;
64
import org.openide.loaders.MultiDataObject;
74
import org.openide.loaders.MultiFileLoader;
65
import org.openide.loaders.MultiFileLoader;
75
import org.openide.loaders.SaveAsCapable;
76
import org.openide.nodes.CookieSet;
77
import org.openide.nodes.Node;
66
import org.openide.nodes.Node;
78
import org.openide.nodes.Node.Cookie;
79
import org.openide.text.CloneableEditor;
80
import org.openide.text.CloneableEditorSupport;
81
import org.openide.text.DataEditorSupport;
82
import org.openide.util.Lookup;
67
import org.openide.util.Lookup;
83
import org.openide.windows.CloneableOpenSupport;
68
import org.openide.windows.TopComponent;
84
69
85
public final class JavaDataObject extends MultiDataObject {
70
public final class JavaDataObject extends MultiDataObject {
86
    
71
    
87
    private JavaEditorSupport jes;
88
    
89
    public JavaDataObject(FileObject pf, MultiFileLoader loader) throws DataObjectExistsException {
72
    public JavaDataObject(FileObject pf, MultiFileLoader loader) throws DataObjectExistsException {
90
        super(pf, loader);
73
        super(pf, loader);
91
        getCookieSet().assign( SaveAsCapable.class, new SaveAsCapable() {
74
        registerEditor("text/x-java", true);
92
            public void saveAs( FileObject folder, String fileName ) throws IOException {
93
                createJavaEditorSupport().saveAs( folder, fileName );
94
            }
95
        });
96
        getCookieSet().add(JavaEditorSupport.class, new CookieSet.Factory() {
97
            public <T extends Cookie> T createCookie(Class<T> klass) {
98
                return klass.cast(createJavaEditorSupport ());
99
            }
100
        });
101
    }
75
    }
102
76
103
    public @Override Node createNodeDelegate() {
77
    public @Override Node createNodeDelegate() {
Lines 105-114 Link Here
105
    }
79
    }
106
80
107
    @Override
81
    @Override
108
    public Lookup getLookup() {
82
    protected int associateLookup() {
109
        return getCookieSet().getLookup();
83
        return 1;
110
    }
84
    }
111
    
85
112
    protected DataObject handleCopyRename(DataFolder df, String name, String ext) throws IOException {
86
    protected DataObject handleCopyRename(DataFolder df, String name, String ext) throws IOException {
113
        FileObject fo = getPrimaryEntry ().copyRename (df.getPrimaryFile (), name, ext);
87
        FileObject fo = getPrimaryEntry ().copyRename (df.getPrimaryFile (), name, ext);
114
        DataObject dob = DataObject.find( fo );
88
        DataObject dob = DataObject.find( fo );
Lines 116-224 Link Here
116
        return dob;
90
        return dob;
117
    }
91
    }
118
    
92
    
119
    private synchronized JavaEditorSupport createJavaEditorSupport () {
93
    @MultiViewElement.Registration(
120
        if (jes == null) {
94
        displayName="#CTL_SourceTabCaption",
121
            jes = new JavaEditorSupport (this);
95
        iconBase="org/netbeans/modules/java/resources/class.gif",
122
        }
96
        persistenceType=TopComponent.PERSISTENCE_ONLY_OPENED,
123
        return jes;
97
        preferredID="java.source",
124
    }            
98
        mimeType="text/x-java",
125
    
99
        position=2000
126
    public static final class JavaEditorSupport extends DataEditorSupport implements OpenCookie, EditCookie, EditorCookie, PrintCookie, EditorCookie.Observable {
100
    )
127
        
101
    public static MultiViewEditorElement createMultiViewEditorElement(Lookup context) {
128
        private static final class Environment extends DataEditorSupport.Env {
102
        return new MultiViewEditorElement(context);
129
            
130
            private static final long serialVersionUID = -1;
131
            
132
            private transient SaveSupport saveCookie = null;
133
134
            private final class SaveSupport implements SaveCookie {
135
                public void save() throws java.io.IOException {
136
                    ((JavaEditorSupport)findCloneableOpenSupport()).saveDocument();
137
                    getDataObject().setModified(false);
138
                }
139
            }
140
            
141
            public Environment(JavaDataObject obj) {
142
                super(obj);
143
            }
144
            
145
            protected FileObject getFile() {
146
                return this.getDataObject().getPrimaryFile();
147
            }
148
            
149
            protected FileLock takeLock() throws java.io.IOException {
150
                return ((MultiDataObject)this.getDataObject()).getPrimaryEntry().takeLock();
151
            }
152
            
153
            public @Override CloneableOpenSupport findCloneableOpenSupport() {
154
                return (CloneableEditorSupport) ((JavaDataObject)this.getDataObject()).getCookie(EditorCookie.class);
155
            }
156
            
157
            
158
            public void addSaveCookie() {
159
                JavaDataObject javaData = (JavaDataObject) this.getDataObject();
160
                if (javaData.getCookie(SaveCookie.class) == null) {
161
                    if (this.saveCookie == null)
162
                        this.saveCookie = new SaveSupport();
163
                    javaData.getCookieSet().add(this.saveCookie);
164
                    javaData.setModified(true);
165
                }
166
            }
167
            
168
            public void removeSaveCookie() {
169
                JavaDataObject javaData = (JavaDataObject) this.getDataObject();
170
                if (javaData.getCookie(SaveCookie.class) != null) {
171
                    javaData.getCookieSet().remove(this.saveCookie);
172
                    javaData.setModified(false);
173
                }
174
175
            }
176
        }
177
        
178
        public JavaEditorSupport(JavaDataObject dataObject) {
179
            super(dataObject, new Environment(dataObject));
180
            setMIMEType("text/x-java"); // NOI18N
181
        }
182
        
183
        
184
        protected boolean notifyModified() {
185
            if (!super.notifyModified())
186
                return false;
187
            ((Environment)this.env).addSaveCookie();
188
            return true;
189
        }
190
        
191
        
192
        protected @Override void notifyUnmodified() {
193
            super.notifyUnmodified();
194
            ((Environment)this.env).removeSaveCookie();
195
        }
196
197
        protected @Override CloneableEditor createCloneableEditor() {
198
            return new JavaEditor(this);
199
        }
200
201
        @Override
202
        protected boolean asynchronousOpen() {
203
            return true;
204
        }
205
        
206
        public @Override boolean close(boolean ask) {
207
            return super.close(ask);
208
        }
209
    }
210
    
211
    private static final class JavaEditor extends CloneableEditor {
212
        
213
        private static final long serialVersionUID = -1;        
214
        
215
        public JavaEditor() {
216
        }
217
        
218
        public JavaEditor(JavaEditorSupport sup) {
219
            super(sup);
220
        }
221
        
222
    }
103
    }
223
    
104
    
224
    /**
105
    /**

Return to bug 199416