/*
* AllBufferSet.java - All buffer matcher
* :tabSize=4:indentSize=4:noTabs=false:
* :folding=explicit:collapseFolds=1:
*
* Copyright (C) 1999, 2000, 2001 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.search;
//{{{ Imports
import java.awt.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
import org.gjt.sp.jedit.*;
import org.gjt.sp.util.Log;
import org.gjt.sp.util.StandardUtilities;
//}}}
/**
* A file set for searching all open buffers in a view.
* @author Slava Pestov
* @version $Id$
*/
public class AllBufferSet extends BufferListSet
{
//{{{ AllBufferSet constructor
/**
* Creates a view buffer set.
* @param glob The filename glob
* @param view The view to check for open buffers
* @since jEdit 5.1pre1
*/
public AllBufferSet(String glob, View view)
{
this.glob = glob;
this.view = view;
} //}}}
//{{{ getView() method
/** @since jEdit 5.1pre1 */
public View getView()
{
return view;
}//}}}
//{{{ getFileFilter() method
/**
* Returns the filename filter.
* @since jEdit 2.7pre3
*/
public String getFileFilter()
{
return glob;
} //}}}
//{{{ getCode() method
/**
* Returns the BeanShell code that will recreate this file set.
* @since jEdit 2.7pre3
*/
@Override
public String getCode()
{
return "new AllBufferSet(\"" + StandardUtilities.charsToEscapes(glob)
+ "\", view)";
} //}}}
//{{{ Instance variables
private String glob;
private View view;
//}}}
//{{{ _getFiles() method
@Override
protected String[] _getFiles(Component comp)
{
Buffer[] buffers = view.getBuffers();
List<String> returnValue = new ArrayList<String>(buffers.length);
Pattern filter;
try
{
filter = Pattern.compile(StandardUtilities.globToRE(glob),
Pattern.CASE_INSENSITIVE);
}
catch(Exception e)
{
Log.log(Log.ERROR,this, "Error compiling Glob Pattern: " + glob, e);
return null;
}
for (Buffer buffer : buffers)
{
if (filter.matcher(buffer.getName()).matches())
returnValue.add(buffer.getPath());
}
return returnValue.toArray(new String[returnValue.size()]);
} //}}}
}