/*
JMeld is a visual diff and merge tool.
Copyright (C) 2007 Kees Kuip
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301 USA
*/
package org.jmeld.settings;
import org.jmeld.settings.util.*;
import org.jmeld.ui.util.*;
import org.jmeld.util.*;
import org.jmeld.util.conf.*;
import javax.xml.bind.annotation.*;
import java.util.*;
@XmlAccessorType(XmlAccessType.NONE)
public class FilterSettings
extends AbstractConfigurationElement
{
@XmlElement
private List<Filter> filters;
public FilterSettings()
{
filters = new ArrayList<Filter>();
}
public void init(JMeldSettings parent)
{
super.init(parent);
for (Filter f : filters)
{
f.init(parent);
}
initDefault();
}
public void addFilter(Filter filter)
{
filter.init(configuration);
filters.add(filter);
fireChanged();
}
public void removeFilter(Filter filter)
{
filters.remove(filter);
fireChanged();
}
public List<Filter> getFilters()
{
return filters;
}
public Filter getFilter(String name)
{
for (Filter f : filters)
{
if (ObjectUtil.equals(f.getName(), name))
{
return f;
}
}
return null;
}
private void initDefault()
{
Filter filter;
if (getFilter("default") != null)
{
return;
}
filter = new Filter("default");
filter.addRule(new FilterRule("Temporary files", FilterRule.Rule.excludes,
"**/*~", true));
filter.addRule(new FilterRule("Temporary files", FilterRule.Rule.excludes,
"**/#*#", true));
filter.addRule(new FilterRule("Temporary files", FilterRule.Rule.excludes,
"**/.#*", true));
filter.addRule(new FilterRule("Temporary files", FilterRule.Rule.excludes,
"**/%*%", true));
filter.addRule(new FilterRule("Temporary files", FilterRule.Rule.excludes,
"**/._*", true));
filter.addRule(new FilterRule("Versioncontrol", FilterRule.Rule.excludes,
"**/.svn", true));
filter.addRule(new FilterRule("Versioncontrol", FilterRule.Rule.excludes,
"**/.svn/**", true));
filter.addRule(new FilterRule("Versioncontrol", FilterRule.Rule.excludes,
"**/CVS", true));
filter.addRule(new FilterRule("Versioncontrol", FilterRule.Rule.excludes,
"**/CVS/**", true));
filter.addRule(new FilterRule("Versioncontrol", FilterRule.Rule.excludes,
"**/SCCS", true));
filter.addRule(new FilterRule("Versioncontrol", FilterRule.Rule.excludes,
"**/SCCS/**", true));
filter.addRule(new FilterRule("Versioncontrol", FilterRule.Rule.excludes,
"**/vssver.scc", true));
filter.addRule(new FilterRule("Versioncontrol", FilterRule.Rule.excludes,
"**/.SYNC", true));
filter.addRule(new FilterRule("Mac", FilterRule.Rule.excludes,
"**/.DS_Store", true));
filter.addRule(new FilterRule("Media", FilterRule.Rule.excludes, "**/.jpg",
true));
filter.addRule(new FilterRule("Media", FilterRule.Rule.excludes, "**/.gif",
true));
filter.addRule(new FilterRule("Media", FilterRule.Rule.excludes, "**/.png",
true));
filter.addRule(new FilterRule("Media", FilterRule.Rule.excludes, "**/.wav",
true));
filter.addRule(new FilterRule("Media", FilterRule.Rule.excludes, "**/.mp3",
true));
filter.addRule(new FilterRule("Media", FilterRule.Rule.excludes, "**/.ogg",
true));
filter.addRule(new FilterRule("Media", FilterRule.Rule.excludes, "**/.xcf",
true));
filter.addRule(new FilterRule("Media", FilterRule.Rule.excludes, "**/.xpm",
true));
filter.addRule(new FilterRule("Binaries", FilterRule.Rule.excludes,
"**/.pyc", true));
filter.addRule(new FilterRule("Binaries", FilterRule.Rule.excludes,
"**/.a", true));
filter.addRule(new FilterRule("Binaries", FilterRule.Rule.excludes,
"**/.obj", true));
filter.addRule(new FilterRule("Binaries", FilterRule.Rule.excludes,
"**/.o", true));
filter.addRule(new FilterRule("Binaries", FilterRule.Rule.excludes,
"**/.so", true));
filter.addRule(new FilterRule("Binaries", FilterRule.Rule.excludes,
"**/.la", true));
filter.addRule(new FilterRule("Binaries", FilterRule.Rule.excludes,
"**/.lib", true));
filter.addRule(new FilterRule("Binaries", FilterRule.Rule.excludes,
"**/.dll", true));
filter.addRule(new FilterRule("Java", FilterRule.Rule.excludes,
"**/*.class", true));
filter.addRule(new FilterRule("Java", FilterRule.Rule.excludes, "**/*.jar",
true));
addFilter(filter);
}
}