Index: java/src/org/netbeans/modules/java/JavaDataObject.java =================================================================== RCS file: /cvs/java/src/org/netbeans/modules/java/JavaDataObject.java,v retrieving revision 1.198 retrieving revision 1.197.6.4 diff -u -r1.198 -r1.197.6.4 --- java/src/org/netbeans/modules/java/JavaDataObject.java 21 Dec 2004 15:53:43 -0000 1.198 +++ java/src/org/netbeans/modules/java/JavaDataObject.java 3 Jan 2005 15:10:28 -0000 1.197.6.4 @@ -44,6 +44,7 @@ import org.openide.src.nodes.ElementNodeFactory; import org.openide.src.nodes.FilterFactory; import org.openide.text.CloneableEditorSupport; +import org.openide.text.DataEditorSupport; import org.openide.text.EditorSupport; import org.openide.util.*; @@ -139,7 +140,7 @@ ConnectionCookie.class, JavaParser.class, SourceCookie.Editor.class, - SynchronizeCodeCookie.class, + SynchronizeCodeCookie.class }; cookies.add(cookieClasses, this); @@ -187,7 +188,7 @@ parserGlue = new JavaParserGlue(getPrimaryEntry()); if (editorSupport != null) { - parserGlue.cloneableSupportCreated(extractCloneableEditor(editorSupport)); + parserGlue.cloneableSupportCreated(editorSupport); } // initialize connection support -- this can be delayed up to the first commit, @@ -252,23 +253,23 @@ * implementation. */ protected CloneableEditorSupport findCloneableEditorSupport() { - EditorSupport supp = (EditorSupport)getCookie(EditorSupport.class); - return extractCloneableEditor(supp); + return (JavaEditor)getCookie(JavaEditor.class); + //return extractCloneableEditor(supp); } - /** - * Extract CloneableEditorSupport instance from the given EditorSupport. - * The implementation is fragile as it uses package-private member and reflection. - */ - private CloneableEditorSupport extractCloneableEditor(EditorSupport supp) { - try { - java.lang.reflect.Field f = EditorSupport.class.getDeclaredField("del"); // NOI18N - f.setAccessible(true); - return (CloneableEditorSupport)f.get(supp); - } catch (Exception x) { - } - return null; - } +// /** +// * Extract CloneableEditorSupport instance from the given EditorSupport. +// * The implementation is fragile as it uses package-private member and reflection. +// */ +// private CloneableEditorSupport extractCloneableEditor(EditorSupport supp) { +// try { +// java.lang.reflect.Field f = EditorSupport.class.getDeclaredField("del"); // NOI18N +// f.setAccessible(true); +// return (CloneableEditorSupport)f.get(supp); +// } catch (Exception x) { +// } +// return null; +// } /** Attaches a file change listener to the primary (source) file. * Optionally removes the listener from previously used file object. @@ -410,6 +411,14 @@ connectionManager.syncConnections(); } } + + void addSaveCookie(SaveCookie save) { + getCookieSet().add(save); + } + + void removeSaveCookie(SaveCookie save) { + getCookieSet().remove(save); + } public void resumeSupports() { connectionAdapter.attachToModel(getModel()); @@ -556,7 +565,7 @@ * @return the editor support */ protected JavaEditor createJavaEditor () { - JavaEditor je = new JavaEditor (getPrimaryEntry ()); + JavaEditor je = new JavaEditor (this); return je; } @@ -595,7 +604,7 @@ synchronized (this) { editorSupport = createJavaEditor(); if (parserGlue != null) - parserGlue.cloneableSupportCreated(extractCloneableEditor(editorSupport)); + parserGlue.cloneableSupportCreated(editorSupport); } } return editorSupport; @@ -791,7 +800,13 @@ * may be called more than once. */ public Node.Cookie createCookie(Class klass) { - // all execution-related services -> getExecSupport +// if (klass.equals(EditorSupport.class)) { +// ErrorManager.getDefault().log("EditorSupport is deprecated"); +// Thread.dumpStack(); +// return null; +// } + + // all execution-related services -> getExecSupport if (klass == ConnectionCookie.class) { return getConnectionSupport(); } Index: java/src/org/netbeans/modules/java/JavaEditor.java =================================================================== RCS file: /cvs/java/src/org/netbeans/modules/java/JavaEditor.java,v retrieving revision 1.181 retrieving revision 1.181.6.5 diff -u -r1.181 -r1.181.6.5 --- java/src/org/netbeans/modules/java/JavaEditor.java 20 Oct 2004 17:04:54 -0000 1.181 +++ java/src/org/netbeans/modules/java/JavaEditor.java 18 Nov 2004 11:59:19 -0000 1.181.6.5 @@ -46,9 +46,13 @@ import org.openide.DialogDisplayer; import org.openide.NotifyDescriptor; import org.openide.awt.UndoRedo; +import org.openide.cookies.EditorCookie; import org.openide.cookies.LineCookie; +import org.openide.cookies.OpenCookie; +import org.openide.cookies.SaveCookie; +import org.openide.filesystems.FileLock; +import org.openide.filesystems.FileObject; import org.openide.loaders.DataObject; -import org.openide.loaders.MultiDataObject; import org.openide.nodes.Node; import org.openide.nodes.Children; import org.openide.src.SourceElement; @@ -59,6 +63,7 @@ import org.openide.util.actions.SystemAction; import org.openide.windows.*; import org.openide.ErrorManager; +import org.openide.windows.CloneableOpenSupport; /* @@ -71,7 +76,7 @@ * * @author Petr Hamernik */ -public class JavaEditor extends EditorSupport implements PropertyChangeListener { +public class JavaEditor extends DataEditorSupport implements PropertyChangeListener, Node.Cookie, OpenCookie, EditorCookie.Observable { /** The prefix of all magic strings */ final static String MAGIC_PREFIX = "//GEN-"; // NOI18N @@ -185,44 +190,50 @@ /** Create a new Editor support for the given Java source. * @param entry the (primary) file entry representing the Java source file */ - public JavaEditor(MultiDataObject.Entry entry) { - super(entry); + public JavaEditor(DataObject dob) { + super(dob, new JavaEditorEnv(dob)); // add change listener addChangeListener(new JavaEditorChangeListener()); JavaMetamodel.getUndoManager().addPropertyChangeListener(new UndoManagerListener(this)); } - /** Finds data object the editor belongs to. - * @return data object or null - */ - DataObject getDataObject() { - return findDataObject(); + private void changeTimeoutElapsed() { + parseSource(false, true); } - - synchronized UndoRedo.Manager getUndoRedo() { - if (undoRedo == null) { - undoRedo = super.createUndoRedoManager(); - undoRedoPrecreated = true; + + protected boolean notifyModified() { + if (! super.notifyModified()) { + return false; + } + JavaDataObject obj = (JavaDataObject) getDataObject(); + if (obj.getCookie(SaveCookie.class) == null) { + obj.addSaveCookie(new Save()); + obj.setModified(true); } - return undoRedo; + return true; } - protected UndoRedo.Manager createUndoRedoManager() { - if (undoRedoPrecreated) { - undoRedoPrecreated = false; - return undoRedo; + protected void notifyUnmodified() { + super.notifyUnmodified(); + JavaDataObject obj = (JavaDataObject) getDataObject(); + SaveCookie save = (SaveCookie) obj.getCookie(SaveCookie.class); + if (save != null) { + obj.removeSaveCookie(save); + obj.setModified(false); } - undoRedo = super.createUndoRedoManager(); - return undoRedo; } - private void changeTimeoutElapsed() { - parseSource(false, true); + private class Save implements SaveCookie { + public void save() throws IOException { + saveDocument(); + getDataObject().setModified(false); + } } + private void parseSource(boolean force, final boolean refreshAnnotations) { if (force) { - JavaMetamodel.getManager().addModified((JavaDataObject) findDataObject()); + JavaMetamodel.getManager().addModified((JavaDataObject) getDataObject()); } ERROR_ANNOTATION_QUEUE.post(new Runnable() { public void run() { @@ -303,7 +314,7 @@ if (onlyIfRunning && (timer==null || !timer.isRunning())) return; - JavaMetamodel.getManager().addModified((JavaDataObject)findDataObject()); + JavaMetamodel.getManager().addModified((JavaDataObject)getDataObject()); delay = JavaSettings.getDefault().getAutoParsingDelay(); if (delay<=0) @@ -320,18 +331,12 @@ timer.restart(); } - /* Calls superclass. - * @param pos Where to place the caret. - * @return always non null editor - */ - protected EditorSupport.Editor openAt(PositionRef pos) { - EditorSupport.Editor ed = super.openAt(pos); - ed.requestActive(); - return ed; - } - public void openAtPosition(PositionRef begin) { - openAt(begin); + openAt(begin, -1).getComponent().requestActive(); + } + + public void openAt(PositionRef p) { + openAtPosition(p); } public void open() { @@ -409,7 +414,7 @@ result = (Resource) JavaMetamodel.getDefaultRepository().getByMofId(resourceMofId); } if (result == null || !result.isValid()) { - result = JavaMetamodel.getManager().getResource(findDataObject().getPrimaryFile()); + result = JavaMetamodel.getManager().getResource(getDataObject().getPrimaryFile()); if (result==null) return null; resourceMofId = result.refMofId(); @@ -439,7 +444,7 @@ if (filling) { GuardedReader reader = new GuardedReader(stream, false, - Util.getFileEncoding(entry.getFile())); + Util.getFileEncoding(getDataObject().getPrimaryFile())); kit.read(reader, doc, 0); fillSections(reader, doc); newLineType = reader.getNewLineType(); @@ -475,7 +480,7 @@ */ protected void saveFromKitToStream(StyledDocument doc, EditorKit kit, OutputStream stream) throws IOException, BadLocationException { OutputStream os = new NewLineOutputStream(stream, newLineType); - String encoding = Util.getFileEncoding(entry.getFile()); + String encoding = Util.getFileEncoding(getDataObject().getPrimaryFile()); if (sections != null) { ArrayList list = new ArrayList(sections.values()); if (list.size() > 0) { @@ -492,28 +497,28 @@ kit.write(w, doc, 0, doc.getLength()); } - /** Reload the document when changed externally */ - protected Task reloadDocumentTask () { - StyledDocument doc = null; - // PENDING: do not openDocument() to obtain doc, as all text is removed from the - // document, guarded sections are (probably) erased anyway. This causes two passes - // through loadFromStreamToKit! - try { - doc = openDocument(); - } - catch (IOException e) { - // no reload performed in this case - } - - if (doc != null) { - clearSections(); - NbDocument.unmarkGuarded(doc, 0, doc.getLength()); - reloading = true; - return super.reloadDocumentTask (); - } - else - return null; - } +// /** Reload the document when changed externally */ +// protected Task reloadDocumentTask () { +// StyledDocument doc = null; +// // PENDING: do not openDocument() to obtain doc, as all text is removed from the +// // document, guarded sections are (probably) erased anyway. This causes two passes +// // through loadFromStreamToKit! +// try { +// doc = openDocument(); +// } +// catch (IOException e) { +// // no reload performed in this case +// } +// +// if (doc != null) { +// clearSections(); +// NbDocument.unmarkGuarded(doc, 0, doc.getLength()); +// reloading = true; +// return super.reloadDocumentTask (); +// } +// else +// return null; +// } /** Save the document in this thread and start reparsing it. * @exception IOException on I/O error @@ -523,14 +528,6 @@ } /** Save the document in this thread. - * @param parse true if the parser should be started, otherwise false - * @exception IOException on I/O error - */ - protected void saveDocumentIfNecessary(boolean parse) throws IOException { - saveDocument(false); - } - - /** Save the document in this thread. * @param forceSave if true save always, otherwise only when is modified * @exception IOException on I/O error */ @@ -539,7 +536,7 @@ if (!checkCharsetConversion(Util.getFileEncoding(getDataObject().getPrimaryFile()))){ return; } - RepositoryUpdater.getDefault().addFileObjectToSave(findDataObject().getPrimaryFile()); + RepositoryUpdater.getDefault().addFileObjectToSave(getDataObject().getPrimaryFile()); super.saveDocument(); } } @@ -587,7 +584,7 @@ StyledDocument doc = getDocument(); Runnable docRenderer = new Runnable() { public void run() { - LineCookie cookie = (LineCookie)findDataObject().getCookie(LineCookie.class); + LineCookie cookie = (LineCookie)getDataObject().getCookie(LineCookie.class); Line.Set lines = cookie.getLineSet(); for (Iterator i=finalAdded.iterator();i.hasNext();) { @@ -654,21 +651,21 @@ private ClassPath getBootClassPath () { if (this.bootClasspath == null) { - this.bootClasspath = ClassPath.getClassPath (this.entry.getFile(), ClassPath.BOOT); + this.bootClasspath = ClassPath.getClassPath (getDataObject().getPrimaryFile(), ClassPath.BOOT); } return this.bootClasspath; } private ClassPath getLibrariesPath () { if (this.librariesClasspath == null) { - this.librariesClasspath = ClassPath.getClassPath (this.entry.getFile(), ClassPath.COMPILE); + this.librariesClasspath = ClassPath.getClassPath (getDataObject().getPrimaryFile(), ClassPath.COMPILE); } return this.librariesClasspath; } private ClassPath getSourcePath () { if (this.sourceClasspath == null) { - this.sourceClasspath = ClassPath.getClassPath (this.entry.getFile(), ClassPath.SOURCE); + this.sourceClasspath = ClassPath.getClassPath (getDataObject().getPrimaryFile(), ClassPath.SOURCE); } return this.sourceClasspath; } @@ -680,7 +677,7 @@ * @deprecated Please use DataObject services to obtain java hierarchy. */ public SourceElement getSource() { - return ((JavaDataObject)findDataObject()).getSource(); + return ((JavaDataObject)getDataObject()).getSource(); } /** Translate a source element to text. @@ -1126,31 +1123,27 @@ return beginPos; } - // ==================== Misc not-public methods ======================== - - /* A method to create a new component. Overridden in subclasses. - * @return the {@link Editor} for this support - */ - protected CloneableTopComponent createCloneableTopComponent () { - prepareDocument(); - return createJavaEditorComponent(); + protected CloneableEditor createCloneableEditor() { + return new JavaEditorComponent(this); } - /** Method for creation of the java editor component - * - accessible from the innerclass. - */ - JavaEditorComponent createJavaEditorComponent() { - DataObject obj = findDataObject (); - JavaEditorComponent editor = new JavaEditorComponent(obj); - editor.setIcon(obj.getNodeDelegate().getIcon(java.beans.BeanInfo.ICON_COLOR_16x16)); - - // dock into editor mode if possible - Mode editorMode = WindowManager.getDefault().findMode(EDITOR_MODE); - if (editorMode != null) - editorMode.dockInto(editor); - - return editor; - } +// // ==================== Misc not-public methods ======================== +// +// /** Method for creation of the java editor component +// * - accessible from the innerclass. +// */ +// JavaEditorComponent createJavaEditorComponent() { +// DataObject obj = getDataObject (); +// JavaEditorComponent editor = new JavaEditorComponent(this); +// //editor.setIcon(obj.getNodeDelegate().getIcon(java.beans.BeanInfo.ICON_COLOR_16x16)); +// +// // dock into editor mode if possible +// Mode editorMode = WindowManager.getDefault().findMode(EDITOR_MODE); +// //if (editorMode != null) +// // editorMode.dockInto(editor); +// +// return editor; +// } /** Set all sections as invalid. It is called from closeLast method * of the JavaEditorComponent. @@ -1181,13 +1174,34 @@ } return fromWhere; } + + public static class JavaEditorEnv extends DataEditorSupport.Env { + static final long serialVersionUID = -6792511207355520950L; + + public JavaEditorEnv(DataObject obj) { + super(obj); + } + + protected FileObject getFile() { + return getDataObject().getPrimaryFile(); + } + protected FileLock takeLock() throws IOException { + return ((JavaDataObject) getDataObject()).getPrimaryEntry().takeLock(); + } + public CloneableOpenSupport findCloneableOpenSupport() { + // must be sync with cookies.add(EditorCookie.class, factory); + // #12938 XML files do not persist in Source editor + return (CloneableOpenSupport) getDataObject().getCookie(EditorCookie.class); + } + } + /** The real component of the Java editor. * Subclasses should not attempt to work with this; * if they require special editing support, separate windows * should be created by overriding (e.g.) {@link EditorSupport#open}. */ - public static class JavaEditorComponent extends EditorSupport.Editor { + public static class JavaEditorComponent extends CloneableEditor { /** Default delay between cursor movement and updating selected element nodes. */ static final int SELECTED_NODES_DELAY = 1000; @@ -1217,8 +1231,8 @@ } /** Creates new editor */ - public JavaEditorComponent (DataObject obj) { - super(obj); + public JavaEditorComponent (CloneableEditorSupport sup) { + super(sup); initialize(); } @@ -1230,7 +1244,7 @@ void selectElementsAtOffset(final int offset) { elementSelectionPoster.post(new Runnable() { public void run() { - final DataObject d = support.findDataObject(); + final DataObject d = support.getDataObject(); if (!isActiveTC() || d == null || !d.isValid() || d.isTemplate()) { return; } @@ -1361,8 +1375,8 @@ /** Obtain a support for this component */ private void initialize () { - support = (JavaEditor)obj.getCookie(JavaEditor.class); - assert support != null : "jdo.getCookie(JavaEditor.class) returned null for JDO " + obj.getPrimaryFile().getPath(); // NOI18N + support = (JavaEditor) cloneableEditorSupport(); + //assert support != null : "jdo.getCookie(JavaEditor.class) returned null for JDO " + obj.getPrimaryFile().getPath(); // NOI18N timerSelNodes = new Timer(200, new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { @@ -1404,15 +1418,6 @@ timerSelNodes.setInitialDelay(SELECTED_NODES_DELAY); timerSelNodes.restart(); lastCaretOffset = pos; - } - - - /* Is called from the clone method to create new component from this one. - * This implementation only clones the object by calling super.clone method. - * @return the copy of this object - */ - protected CloneableTopComponent createClonedObject () { - return support.createJavaEditorComponent(); } /* This method is called when parent window of this component has focus, Index: java/src/org/netbeans/modules/java/bridge/ElementImpl.java =================================================================== RCS file: /cvs/java/src/org/netbeans/modules/java/bridge/ElementImpl.java,v retrieving revision 1.23 retrieving revision 1.23.2.1 diff -u -r1.23 -r1.23.2.1 --- java/src/org/netbeans/modules/java/bridge/ElementImpl.java 10 Nov 2004 09:07:16 -0000 1.23 +++ java/src/org/netbeans/modules/java/bridge/ElementImpl.java 15 Nov 2004 14:11:22 -0000 1.23.2.1 @@ -46,7 +46,7 @@ import org.netbeans.modules.javacore.jmiimpl.javamodel.TypeClassImpl; import org.openide.ErrorManager; import org.openide.filesystems.FileObject; -import org.openide.text.EditorSupport; +import org.openide.text.CloneableEditorSupport; import org.openide.util.Utilities; /** @@ -868,7 +868,7 @@ public void checkDocument() { JavaDataObject jdo = model.getJavaDataObject(); - EditorSupport edSupport = (EditorSupport) jdo.getCookie (EditorSupport.class); + CloneableEditorSupport edSupport = (CloneableEditorSupport) jdo.getCookie (CloneableEditorSupport.class); if (!edSupport.isDocumentLoaded()) { try { edSupport.openDocument(); Index: java/src/org/netbeans/modules/java/bridge/LangEnvImpl.java =================================================================== RCS file: /cvs/java/src/org/netbeans/modules/java/bridge/LangEnvImpl.java,v retrieving revision 1.3 retrieving revision 1.3.26.1 diff -u -r1.3 -r1.3.26.1 --- java/src/org/netbeans/modules/java/bridge/LangEnvImpl.java 10 Jun 2004 02:26:26 -0000 1.3 +++ java/src/org/netbeans/modules/java/bridge/LangEnvImpl.java 22 Nov 2004 12:39:48 -0000 1.3.26.1 @@ -188,7 +188,7 @@ PositionBounds bounds = JavaMetamodel.getManager().getElementPosition((org.netbeans.jmi.javamodel.Element) refObject); if (bounds == null) return; - ((JavaEditor) jdo.getCookie(JavaEditor.class)).openAtPosition(bounds.getBegin()); + ((JavaEditor) jdo.getCookie(JavaEditor.class)).openAt(bounds.getBegin()); } catch (javax.jmi.reflect.InvalidObjectException e) { } } Index: java/src/org/netbeans/modules/java/ui/nodes/elements/ElementNode.java =================================================================== RCS file: /cvs/java/src/org/netbeans/modules/java/ui/nodes/elements/ElementNode.java,v retrieving revision 1.15 retrieving revision 1.15.4.1 diff -u -r1.15 -r1.15.4.1 --- java/src/org/netbeans/modules/java/ui/nodes/elements/ElementNode.java 28 Oct 2004 13:38:31 -0000 1.15 +++ java/src/org/netbeans/modules/java/ui/nodes/elements/ElementNode.java 22 Nov 2004 12:39:48 -0000 1.15.4.1 @@ -935,7 +935,7 @@ PositionBounds bounds = JavaMetamodel.getManager().getElementPosition(node.element); if (bounds == null) return; - ((JavaEditor) d.getCookie(JavaEditor.class)).openAtPosition(bounds.getBegin()); + ((JavaEditor) d.getCookie(JavaEditor.class)).openAt(bounds.getBegin()); } catch (javax.jmi.reflect.InvalidObjectException e) { } } Index: java/javacore/src/org/netbeans/modules/javacore/jmiimpl/javamodel/ResourceImpl.java =================================================================== RCS file: /cvs/java/javacore/src/org/netbeans/modules/javacore/jmiimpl/javamodel/ResourceImpl.java,v retrieving revision 1.53 retrieving revision 1.50.2.2 diff -u -r1.53 -r1.50.2.2 --- java/javacore/src/org/netbeans/modules/javacore/jmiimpl/javamodel/ResourceImpl.java 6 Dec 2004 15:36:20 -0000 1.53 +++ java/javacore/src/org/netbeans/modules/javacore/jmiimpl/javamodel/ResourceImpl.java 20 Dec 2004 17:57:27 -0000 1.50.2.2 @@ -38,7 +38,7 @@ import org.openide.loaders.DataObject; import org.openide.loaders.DataObjectNotFoundException; import org.openide.loaders.MultiDataObject; -import org.openide.text.EditorSupport; +import org.openide.text.CloneableEditorSupport; import org.openide.text.NbDocument; import org.openide.text.PositionBounds; import org.openide.text.PositionRef; @@ -752,7 +752,7 @@ getDiff(diff); } DataObject dobj = JavaMetamodel.getManager().getDataObject(this); - final EditorSupport editor = (EditorSupport) dobj.getCookie(EditorSupport.class); + final CloneableEditorSupport editor = (CloneableEditorSupport) dobj.getCookie(CloneableEditorSupport.class); StyledDocument doc = null; if (editor != null) { doc = editor.getDocument(); @@ -838,7 +838,7 @@ public void applyDiff(List diff, boolean internalCall, boolean parseAfterApply) { DataObject dobj = JavaMetamodel.getManager().getDataObject(this); - final EditorSupport editor = (EditorSupport) dobj.getCookie(EditorSupport.class); + final CloneableEditorSupport editor = (CloneableEditorSupport) dobj.getCookie(CloneableEditorSupport.class); if (editor!=null) { StyledDocument doc = editor.getDocument(); if (doc != null) { @@ -863,7 +863,7 @@ } } - private void applyDiff(List diff, EditorSupport doc) { + private void applyDiff(List diff, CloneableEditorSupport doc) { List tempDiffs = null; List list = new LinkedList(); try { @@ -959,7 +959,7 @@ private void rollbackDiff() { DataObject dobj = JavaMetamodel.getManager().getDataObject(this); if (rbList != null) { - final EditorSupport editor = (EditorSupport) dobj.getCookie(EditorSupport.class); + final CloneableEditorSupport editor = (CloneableEditorSupport) dobj.getCookie(CloneableEditorSupport.class); StyledDocument doc = editor.getDocument(); final List list = rbList; rbList = null; Index: java/javacore/src/org/netbeans/modules/javacore/parser/ASTProvider.java =================================================================== RCS file: /cvs/java/javacore/src/org/netbeans/modules/javacore/parser/ASTProvider.java,v retrieving revision 1.33 retrieving revision 1.32.6.3 diff -u -r1.33 -r1.32.6.3 --- java/javacore/src/org/netbeans/modules/javacore/parser/ASTProvider.java 16 Nov 2004 15:43:38 -0000 1.33 +++ java/javacore/src/org/netbeans/modules/javacore/parser/ASTProvider.java 3 Jan 2005 15:10:29 -0000 1.32.6.3 @@ -33,7 +33,7 @@ import org.openide.filesystems.FileObject; import org.openide.filesystems.FileUtil; import org.openide.loaders.DataObject; -import org.openide.text.EditorSupport; +import org.openide.text.DataEditorSupport; import org.openide.text.PositionBounds; import org.openide.text.PositionRef; @@ -44,7 +44,7 @@ */ public class ASTProvider implements ParserTokens, ASTreeTypes, ASTContext { DataObject dobj; - private EditorSupport editor; + private DataEditorSupport editor; private ASTree topNode; private Token[] tokens; private String sourceText; @@ -377,7 +377,7 @@ public PositionBounds createBounds(int[] oldOffsets) { if (editor == null) - editor = (EditorSupport) dobj.getCookie(EditorSupport.class); + editor = (DataEditorSupport) dobj.getCookie(EditorCookie.class); int[] offsets = getDocumentOffsets(oldOffsets); Index: form/src/org/netbeans/modules/form/FormEditorSupport.java =================================================================== RCS file: /cvs/form/src/org/netbeans/modules/form/FormEditorSupport.java,v retrieving revision 1.161 retrieving revision 1.159.2.3 diff -u -r1.161 -r1.159.2.3 --- form/src/org/netbeans/modules/form/FormEditorSupport.java 3 Jan 2005 10:36:59 -0000 1.161 +++ form/src/org/netbeans/modules/form/FormEditorSupport.java 3 Jan 2005 15:10:29 -0000 1.159.2.3 @@ -115,7 +115,7 @@ public FormEditorSupport(MultiDataObject.Entry javaEntry, FormDataObject formDataObject) { - super(javaEntry); + super(formDataObject); this.formDataObject = formDataObject; } @@ -163,14 +163,14 @@ /** Overriden from JavaEditor - opens editor at given position and ensures * it is selected in the multiview. */ - protected EditorSupport.Editor openAt(PositionRef pos) { + public void openAt(PositionRef pos) { elementToOpen = JAVA_ELEMENT_INDEX; openCloneableTopComponent(); MultiViewHandler handler = MultiViews.findMultiViewHandler(multiviewTC); handler.requestActive(handler.getPerspectives()[JAVA_ELEMENT_INDEX]); - return super.openAt(pos); + super.openAt(pos); } /** Public method for loading form data from file. Does not open the @@ -241,31 +241,6 @@ throw ioEx; } - /** Save the document in this thread. - * @param parse true if the parser should be started, otherwise false - * @exception IOException on I/O error - */ - protected void saveDocumentIfNecessary(boolean parse) throws IOException { - IOException ioEx = null; - try { - saveFormData(); - super.saveDocumentIfNecessary(parse); - } - catch (PersistenceException ex) { - Throwable t = ex.getOriginalException(); - if (t instanceof IOException) - ioEx = (IOException) t; - else { - ioEx = new IOException("Cannot save the form"); // NOI18N - ErrorManager.getDefault().annotate(ioEx, t != null ? t : ex); - } - } - reportErrors(SAVING); - - if (ioEx != null) - throw ioEx; - } - /** Public method for saving form data to file. Does not save the * source code (document), does not report errors and does not throw * any exceptions. @@ -725,7 +700,7 @@ reloadDocument(); } - protected org.openide.util.Task reloadDocumentTask() { + protected org.openide.util.Task reloadDocument() { MultiViewHandler handler = MultiViews.findMultiViewHandler(multiviewTC); MultiViewPerspective[] mvps = handler.getPerspectives(); int openedElement = 0; @@ -749,7 +724,7 @@ // TODO would be better not to close the form, but just reload // FormModel and update form designer(s) with the new model - org.openide.util.Task docLoadTask = super.reloadDocumentTask(); + org.openide.util.Task docLoadTask = super.reloadDocument(); // after reloading is done, open the form editor again java.awt.EventQueue.invokeLater(new Runnable() { @@ -1154,10 +1129,8 @@ // ------- // window system & multiview - - /** Overriden from JavaEditor. Gets called if java editor is opened first - * via EditCookie. */ - protected CloneableTopComponent createCloneableTopComponent() { + + protected CloneableEditorSupport.Pane createPane() { MultiViewDescription[] descs = new MultiViewDescription[] { new JavaDesc(formDataObject), new FormDesc(formDataObject) }; @@ -1172,7 +1145,7 @@ if (editorMode != null) { editorMode.dockInto(mvtc); } - return mvtc; + return (CloneableEditorSupport.Pane)mvtc; } private static String getMVTCToolTipText(FormDataObject formDataObject) { @@ -1431,7 +1404,7 @@ JavaEditor javaEditor = getJavaEditor(); if (javaEditor != null) { javaEditor.prepareDocument(); - JavaEditorTopComponent editor = new JavaEditorTopComponent(dataObject); + JavaEditorTopComponent editor = new JavaEditorTopComponent((JavaEditor) dataObject.getCookie(JavaEditor.class)); Node[] nodes = editor.getActivatedNodes(); if ((nodes == null) || (nodes.length == 0)) { editor.setActivatedNodes(new Node[] {dataObject.getNodeDelegate()}); @@ -1491,8 +1464,8 @@ super(); } - JavaEditorTopComponent(DataObject dobj) { - super(dobj); + JavaEditorTopComponent(DataEditorSupport s) { + super(s); } public JComponent getToolbarRepresentation() { @@ -1528,10 +1501,10 @@ multiViewObserver = callback; // needed for deserialization... - if (obj instanceof FormDataObject) { // [obj is from EditorSupport.Editor] + if (((DataEditorSupport) cloneableEditorSupport ()).getDataObject() instanceof FormDataObject) { // [obj is from EditorSupport.Editor] // this is used (or misused?) to obtain the deserialized // multiview topcomponent and set it to FormEditorSupport - ((FormDataObject)obj).getFormEditor().setTopComponent( + ((FormDataObject)((DataEditorSupport) cloneableEditorSupport ()).getDataObject()).getFormEditor().setTopComponent( callback.getTopComponent()); } } @@ -1569,7 +1542,7 @@ public void updateName() { super.updateName(); if (multiViewObserver != null) { - FormDataObject formDataObject = (FormDataObject)obj; + FormDataObject formDataObject = (FormDataObject)((DataEditorSupport) cloneableEditorSupport ()).getDataObject(); setDisplayName(getMVTCDisplayName(formDataObject)); } }