From: Matthieu C. <kp...@us...> - 2006-05-28 20:08:59
|
Update of /cvsroot/jedit/plugins/minitools/src/gatchan/jedit/minitools/autosave In directory sc8-pr-cvs6.sourceforge.net:/tmp/cvs-serv13032/plugins/minitools/src/gatchan/jedit/minitools/autosave Added Files: AutosaveTool.java Log Message: fist commit --- NEW FILE: AutosaveTool.java --- package gatchan.jedit.minitools.autosave; import org.gjt.sp.jedit.*; import org.gjt.sp.jedit.msg.ViewUpdate; import org.gjt.sp.util.Log; import java.awt.event.*; import java.awt.*; /** * The autosave tool. * * @author Matthieu Casanova * @version $Id: AutosaveTool.java,v 1.1 2006/05/28 20:08:54 kpouer Exp $ */ public class AutosaveTool implements EBComponent { /** The window listener that will save buffers when the Window is deactivated. */ private final WindowListener listener = new MyWindowListener(); /** Instantiate the autosave tool. */ public AutosaveTool() { View[] views = jEdit.getViews(); for (int i = 0; i < views.length; i++) { View view = views[i]; view.addWindowListener(listener); } EditBus.addToBus(this); } /** * Unregister the AutosaveTool from EditBus and remove the WindowListeners. */ public void dispose() { EditBus.removeFromBus(this); View[] views = jEdit.getViews(); for (int i = 0; i < views.length; i++) { View view = views[i]; view.removeWindowListener(listener); } } public void handleMessage(EBMessage message) { if (message instanceof ViewUpdate) { ViewUpdate viewUpdate = (ViewUpdate) message; if (viewUpdate.getWhat() == ViewUpdate.CREATED) viewUpdate.getView().addWindowListener(listener); else if (viewUpdate.getWhat() == ViewUpdate.CLOSED) viewUpdate.getView().removeWindowListener(listener); } } private class MyWindowListener extends WindowAdapter { public void windowDeactivated(WindowEvent e) { Window window = e.getWindow(); Window oppositeWindow = e.getOppositeWindow(); if (window instanceof View) { if (oppositeWindow == null) { Log.log(Log.DEBUG, this, "jEdit lost the focus, saving buffers"); saveBuffers((View) window); } } else { Log.log(Log.ERROR, this, "This is not a View " + window); } } /** * Save all jEdit buffers that needs to except the untitled buffers. * * @param view the view */ private void saveBuffers(View view) { Buffer[] buffers = jEdit.getBuffers(); for (int i = 0; i < buffers.length; i++) { Buffer buffer = buffers[i]; if (buffer.isDirty() && !buffer.isUntitled() && !buffer.isReadOnly()) buffer.save(view, null); } } } } |