org.openide.loaders.DefaultES Maven / Gradle / Ivy
Go to download
The NetBeans Platform is a generic base for desktop applications. It provides the services common
to almost all large desktop applications: window management, menus, settings and storage, an update
manager, and file access. Get a head start by reusing these standard components, allowing you to
concentrate fully on your application's business logic.
The newest version!
/*
* Sun Public License Notice
*
* The contents of this file are subject to the Sun Public License
* Version 1.0 (the "License"). You may not use this file except in
* compliance with the License. A copy of the License is available at
* http://www.sun.com/
*
* The Original Code is NetBeans. The Initial Developer of the Original
* Code is Sun Microsystems, Inc. Portions Copyright 1997-2004 Sun
* Microsystems, Inc. All Rights Reserved.
*/
package org.openide.loaders;
import java.io.IOException;
import org.openide.cookies.CloseCookie;
import org.openide.cookies.EditCookie;
import org.openide.cookies.EditorCookie;
import org.openide.cookies.OpenCookie;
import org.openide.cookies.PrintCookie;
import org.openide.cookies.SaveCookie;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileLock;
import org.openide.loaders.DataObject;
import org.openide.loaders.MultiDataObject;
import org.openide.nodes.CookieSet;
import org.openide.nodes.Node.Cookie;
import org.openide.text.DataEditorSupport;
import org.openide.windows.CloneableOpenSupport;
/**
* Basic editor support.
*
* @author Jaroslav Tulach
*/
final class DefaultES extends DataEditorSupport
implements OpenCookie, EditCookie, EditorCookie.Observable, PrintCookie, CloseCookie {
/** SaveCookie for this support instance. The cookie is adding/removing
* data object's cookie set depending on if modification flag was set/unset. */
private final SaveCookie saveCookie = new SaveCookie() {
/** Implements SaveCookie
interface. */
public void save() throws IOException {
DefaultES.this.saveDocument();
}
};
private CookieSet set;
/** Constructor.
* @param obj data object to work on
* @param set set to add/remove save cookie from
*/
DefaultES (DefaultDataObject obj, MultiDataObject.Entry entry, CookieSet set) {
super(obj, new Environment(obj, entry));
this.set = set;
setMIMEType("text/plain"); // NOI18N
}
/**
* Overrides superclass method. Adds adding of save cookie if the document has been marked modified.
* @return true if the environment accepted being marked as modified
* or false if it has refused and the document should remain unmodified
*/
protected boolean notifyModified () {
if (!super.notifyModified())
return false;
addSaveCookie();
return true;
}
/** Overrides superclass method. Adds removing of save cookie. */
protected void notifyUnmodified () {
super.notifyUnmodified();
removeSaveCookie();
}
/** Helper method. Adds save cookie to the data object. */
private void addSaveCookie() {
DataObject obj = getDataObject();
// Adds save cookie to the data object.
if(obj.getCookie(SaveCookie.class) == null) {
set.add(saveCookie);
obj.setModified(true);
}
}
/** Helper method. Removes save cookie from the data object. */
private void removeSaveCookie() {
DataObject obj = getDataObject();
// Remove save cookie from the data object.
Cookie cookie = obj.getCookie(SaveCookie.class);
if(cookie != null && cookie.equals(saveCookie)) {
set.remove(saveCookie);
obj.setModified(false);
}
}
/** Nested class. Environment for this support. Extends
* DataEditorSupport.Env
abstract class.
*/
private static class Environment extends DataEditorSupport.Env {
private static final long serialVersionUID = 5451434321155443431L;
private MultiDataObject.Entry entry;
/** Constructor. */
public Environment(DataObject obj, MultiDataObject.Entry entry) {
super(obj);
this.entry = entry;
}
/** Implements abstract superclass method. */
protected FileObject getFile() {
return entry.getFile();
}
/** Implements abstract superclass method.*/
protected FileLock takeLock() throws IOException {
return entry.takeLock();
}
/**
* Overrides superclass method.
* @return text editor support (instance of enclosing class)
*/
public CloneableOpenSupport findCloneableOpenSupport() {
DataObject obj = getDataObject ();
if (obj instanceof DefaultDataObject) {
return (DefaultES)((DefaultDataObject)obj).getCookie (DefaultES.class, true);
} else {
return (DefaultES)getDataObject().getCookie(DefaultES.class);
}
}
} // End of nested Environment class.
}