001: /*
002: * Copyright (c) 2000, Jacob Smullyan.
003: *
004: * This is part of SkunkDAV, a WebDAV client. See http://skunkdav.sourceforge.net/
005: * for the latest version.
006: *
007: * SkunkDAV is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License as published
009: * by the Free Software Foundation; either version 2, or (at your option)
010: * any later version.
011: *
012: * SkunkDAV is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * General Public License for more details.
016: *
017: * You should have received a copy of the GNU General Public License
018: * along with SkunkDAV; see the file COPYING. If not, write to the Free
019: * Software Foundation, 59 Temple Place - Suite 330, Boston, MA
020: * 02111-1307, USA.
021: */
022:
023: package org.skunk.dav.client.gui.editor;
024:
025: import org.skunk.dav.client.DAVFile;
026: import org.skunk.dav.client.gui.Buffer;
027: import javax.swing.JComponent;
028:
029: /**
030: * an extension of the <code>Buffer</code> interface for
031: * buffers that enable the user to modify the contents
032: * of a <code>DAVFile</code>.
033: *
034: * @author Jacob Smullyan
035: */
036: public interface DAVEditor extends Buffer {
037: /**
038: * @return the file contents of the editor.
039: */
040: byte[] getResourceBody();
041:
042: /**
043: * sets the file contents of the editor.
044: * @param the new contents
045: */
046: void setResourceBody(byte[] resourceBody);
047:
048: /**
049: * @return the DAVFile upon which this editor is operating.
050: */
051: DAVFile getDAVFile();
052:
053: /**
054: * sets the editor's DAVFile
055: * @param file the new file
056: */
057: void setDAVFile(DAVFile file);
058:
059: /**
060: * @return the name of the resource upon which the editor is operating
061: */
062: String getResourceName();
063:
064: /**
065: * sets the resource name
066: * @param resourceName the new resource name
067: */
068: void setResourceName(String resourceName);
069:
070: /**
071: * @return whether the contents of the file have been
072: * changed in the editor since the last load or save.
073: */
074: boolean isDirty();
075:
076: /**
077: * sets the dirty flag on the editor.
078: * @param dirty the new value of the dirty flag
079: */
080: void setDirty(boolean dirty);
081:
082: /**
083: * @return whether the editor will accept input
084: */
085: boolean isWriteable();
086:
087: /**
088: * sets the writeable flag on the editor
089: * @param writeable the new value of the writeable flag
090: */
091: void setWriteable(boolean writeable);
092:
093: /**
094: * saves the file being edited.
095: */
096: void save();
097:
098: /**
099: * saves the file being edited, prompting the user for a new filename.
100: */
101: void saveAs();
102:
103: /**
104: * saves the file being edited to the given filename.
105: * @param filename the new filename
106: */
107: void saveAs(String filename);
108:
109: /**
110: * loads the contents of the editor's DAVFile into the editor.
111: * @throws CannotLoadException if it cannot load the file.
112: */
113: void load() throws CannotLoadException;
114:
115: /**
116: * adds an EditListener.
117: * @param ed the edit listener
118: */
119: void addEditListener(EditListener ed);
120:
121: /**
122: * removes an EditListener.
123: * @param ed the edit listener
124: */
125: void removeEditListener(EditListener ed);
126:
127: /**
128: * @return the undo manager for this editor. May be null.
129: */
130: DAVEditorUndoManager getUndoManager();
131: }
132:
133: /* $Log: DAVEditor.java,v $
134: /* Revision 1.8 2000/12/19 22:06:15 smulloni
135: /* adding documentation.
136: /*
137: /* Revision 1.7 2000/12/08 05:50:30 smulloni
138: /* fixed MessageCatalogEditor. The spi features are now a special build option,
139: /* and editors are loaded through reflection.
140: /*
141: /* Revision 1.6 2000/12/03 23:53:26 smulloni
142: /* added license and copyright preamble to java files.
143: /*
144: /* Revision 1.5 2000/12/03 20:40:06 smulloni
145: /* reconciling the minos.skunk.org cvs repository with sourceforge.
146: /*
147: /* Revision 1.5 2000/12/01 22:54:14 smullyan
148: /* added undo and basic editing functionality to text editor; defined some
149: /* keybindings in an inflexible way that will have to be changed soon.
150: /*
151: /* Revision 1.4 2000/11/20 23:30:23 smullyan
152: /* more editor integration work.
153: /*
154: /* Revision 1.3 2000/11/17 20:25:07 smullyan
155: /* new SaveAction; a StateMonitor being added to handle application state.
156: /*
157: /* Revision 1.2 2000/11/15 20:17:05 smullyan
158: /* added a Buffer interface, which is a wrapper around a displayable component.
159: /*
160: /* Revision 1.1 2000/11/14 23:14:39 smullyan
161: /* first cut at editing framework
162: /* */
|