package es.icarto.gvsig.navtableforms;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.swing.JComponent;
import es.icarto.gvsig.navtableforms.ormlite.ORMLite;
import es.icarto.gvsig.navtableforms.ormlite.widgetsdependency.DependencyReader;
import es.icarto.gvsig.navtableforms.ormlite.widgetsdependency.EnabledComponentBasedOnWidgets;
public class DependencyHandler {
private ORMLite ormlite;
private Map<String, JComponent> widgets;
private IValidatableForm form;
private Map<JComponent, EnabledComponentBasedOnWidgets> enabledIfs = new HashMap<JComponent, EnabledComponentBasedOnWidgets>();
public DependencyHandler(ORMLite ormlite,
Map<String, JComponent> widgetsVector, IValidatableForm form) {
this.ormlite = ormlite;
this.widgets = widgetsVector;
this.form = form;
}
public void setListeners() {
for (JComponent comp : widgets.values()) {
if (ormlite.getAppDomain().getDependencyValuesForComponent(
comp.getName()) != null) {
DependencyReader values = ormlite.getAppDomain()
.getDependencyValuesForComponent(comp.getName());
EnabledComponentBasedOnWidgets componentBasedOnWidget = new EnabledComponentBasedOnWidgets(
comp, form);
Map<String, List<String>> conditions = values.getConditions();
for (String component : conditions.keySet()) {
JComponent widget = widgets.get(component);
if (widget != null) {
componentBasedOnWidget.addConditions(widget,
conditions.get(component));
}
}
componentBasedOnWidget.setRemoveDependentValues(true);
componentBasedOnWidget.setListeners();
enabledIfs.put(comp, componentBasedOnWidget);
}
if (ormlite.getAppDomain().isNonEditableComponent(comp.getName()) != null
&& ormlite.getAppDomain().isNonEditableComponent(
comp.getName())) {
widgets.get(comp.getName()).setEnabled(false);
}
}
}
public void removeListeners() {
for (JComponent comp : widgets.values()) {
if (enabledIfs.containsKey(comp)) {
enabledIfs.get(comp).removeListeners();
enabledIfs.remove(comp);
}
}
}
public void fillValues() {
for (JComponent comp : widgets.values()) {
if (enabledIfs.containsKey(comp)) {
enabledIfs.get(comp).fillValues();
}
}
}
}