package com.traxel.lumbermill.filter;
import org.apache.log4j.Logger;
import org.jdom.Element;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import de.cismet.beanmill.filter.ListControl;
import de.cismet.beanmill.filter.ListView;
private static final transient Logger LOG = Logger.getLogger(
FilterSetControl.class);
private final HashMap<FilterControl, Filter> filterPerTree;
private final List<FilterControl> allFilterControls;
private final FilterSetView filterSetView;
private final FilterSet filterSet;
private final FilterSetMenu filterSetMenu;
private final TreeControl treeControl;
filterPerTree = new HashMap<FilterControl, Filter>();
filterSetView = new FilterSetView();
filterSet = new FilterSet();
treeControl = new TreeControl();
final List<FilterControl> filterControls = new ArrayList();
filterControls.add(treeControl);
allFilterControls = Collections.unmodifiableList(filterControls);
final JCheckBoxMenuItem[] filterItems = new JCheckBoxMenuItem[allFilterControls.size()];
for (int i = 0; i < allFilterControls.size(); i++) {
final FilterControl fc = allFilterControls.get(i);
final Action action = new FilterCheckBoxAction(fc);
filterItems[i] = new JCheckBoxMenuItem(action);
filterItems[i].setState(true);
apply(fc);
}
filterSetMenu = new FilterSetMenu("Filters", filterItems);
filterSetView.addChangeListener(new ChangeListener() {
@Override
if (LOG.isDebugEnabled()) {
LOG.debug("stateChanged: " + evt);
}
for (final FilterControl fc : filterPerTree.keySet()) {
if (!(fc.getFilter() instanceof Regex)) {
fc.getFilter().setActive(false);
}
}
try {
getActiveComponent().getFilter().setActive(true);
filterSet.fireFilterAdded(null);
} catch (Exception e) {
LOG.warn("could not set active filter", e);
}
}
});
}
return ((FilterView)filterSetView.getSelectedComponent());
}
return filterSetView;
}
return filterSet;
}
public FilterSetMenu () {
return filterSetMenu;
}
return addListView((Element)null);
}
final ListControl lc = new ListControl(filterSet, xml);
apply(lc);
filterSetView.setSelectedComponent((ListView)lc.getFilterView());
return (ListView)lc.getFilterView();
}
apply(new TreeControl());
}
public void addTree(
final Tree tree) {
apply(new TreeControl(tree));
}
private synchronized void apply(
final FilterControl control) {
final Filter filter = control.getFilter();
final FilterView view = control.getFilterView();
filterSetView.addTab(filter.getName(), view.getFilterComponent());
filterSet.add(filter);
filterPerTree.put(control, filter);
}
private synchronized void unapply(
final FilterControl control) {
final Filter filter = control.getFilter();
final FilterView view = control.getFilterView();
filterSetView.remove(view.getFilterComponent());
filterSet.remove(filter);
}
private final FilterControl filterControl;
super(control.getFilter().getName());
filterControl = control;
}
@Override
final JCheckBoxMenuItem item = (JCheckBoxMenuItem)e.getSource();
if (item.getState()) {
apply(filterControl);
} else {
unapply(filterControl);
}
}
}
}