/* * Autosave.java - Autosave manager * :tabSize=4:indentSize=4:noTabs=false: * :folding=explicit:collapseFolds=1: * * Copyright (C) 1998, 2003 Slava Pestov * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ package org.gjt.sp.jedit; //{{{ Imports import javax.swing.Timer; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import org.gjt.sp.util.Log; //}}} /** * @author Slava Pestov * @version $Id$ */ class Autosave implements ActionListener { //{{{ setInterval() method public static void setInterval(int interval) { if(interval == 0) { if(timer != null) { timer.stop(); timer = null; } return; } interval *= 1000; if(timer == null) { timer = new Timer(interval,new Autosave()); timer.start(); } else timer.setDelay(interval); } //}}} //{{{ stop() method public static void stop() { if(timer != null) timer.stop(); } //}}} //{{{ actionPerformed() method public void actionPerformed(ActionEvent evt) { if (jEdit.getIntegerProperty("autosave",0) == 0) return; // might come in handy useful some time /* Runtime runtime = Runtime.getRuntime(); int freeMemory = (int)(runtime.freeMemory() / 1024); int totalMemory = (int)(runtime.totalMemory() / 1024); int usedMemory = (totalMemory - freeMemory); Log.log(Log.DEBUG,this,"Java heap: " + usedMemory + "Kb / " + totalMemory + "Kb, " + (usedMemory * 100 / totalMemory) + "%"); */ // save list of open files if(jEdit.getViewCount() != 0 && PerspectiveManager.isPerspectiveDirty()) { PerspectiveManager.setPerspectiveDirty(false); PerspectiveManager.savePerspective(true); } boolean autosaveUntitled = jEdit.getBooleanProperty("autosaveUntitled"); Buffer[] bufferArray = jEdit.getBuffers(); for (Buffer buffer : bufferArray) { if (autosaveUntitled || !buffer.isUntitled()) buffer.autosave(); } // flush log Log.flushStream(); } //}}} //{{{ Private members private static Timer timer; private Autosave() {} //}}} }