package com.digiarea.closure.preferences.model.bind;
import java.util.ResourceBundle;
import javafx.util.Callback;
import com.digiarea.closure.preferences.model.controller.PreferenceClosureController;
import com.digiarea.closure.preferences.model.controller.PreferenceEditorsController;
import com.digiarea.closure.preferences.model.controller.PreferenceVariablesController;
import com.digiarea.closure.preferences.model.controller.PreferencesController;
public class ControllerFactory implements Callback<Class<?>, Object> {
@Override
public Object call(Class<?> clazz) {
if (clazz == PreferenceVariablesController.class) {
if (preferenceVariablesController == null) {
preferenceVariablesController = new PreferenceVariablesController(modelFacade, bundle);
}
return preferenceVariablesController;
} else if (clazz == PreferencesController.class) {
if (preferencesController == null) {
preferencesController = new PreferencesController(modelFacade, bundle);
}
return preferencesController;
} else if (clazz == PreferenceEditorsController.class) {
if (preferenceEditorsController == null) {
preferenceEditorsController = new PreferenceEditorsController(modelFacade, bundle);
}
return preferenceEditorsController;
} else if (clazz == PreferenceClosureController.class) {
if (preferenceClosureController == null) {
preferenceClosureController = new PreferenceClosureController(modelFacade, bundle);
}
return preferenceClosureController;
} else {
return null;
}
}
public ControllerFactory(ModelFacade modelFacade, ResourceBundle bundle) {
modelFacade.setFactory(this);
this.modelFacade = modelFacade;
this.bundle = bundle;
}
private ModelFacade modelFacade = null;
private ResourceBundle bundle = null;
private PreferenceClosureController preferenceClosureController = null;
private PreferenceEditorsController preferenceEditorsController = null;
private PreferencesController preferencesController = null;
private PreferenceVariablesController preferenceVariablesController = null;
}