package sk.stuba.fiit.perconik.core.ui.preferences;
import java.util.Map;
import org.eclipse.swt.widgets.Shell;
import sk.stuba.fiit.perconik.core.Listener;
import sk.stuba.fiit.perconik.core.persistence.data.ListenerPersistenceData;
import sk.stuba.fiit.perconik.core.preferences.ListenerPreferences;
import sk.stuba.fiit.perconik.utilities.configuration.Options;
public final class ListenerOptionsDialog extends AbstractOptionsDialog<ListenerPreferences, ListenerPersistenceData> {
public ListenerOptionsDialog(final Shell parent) {
super(parent);
}
@Override
String name() {
return "listener";
}
@Override
ListenerPreferences defaultPreferences() {
return ListenerPreferences.getDefault();
}
@Override
Options options(final ListenerPreferences preferences, final ListenerPersistenceData registration) {
return preferences.getListenerConfigurationData().get(registration.getListenerClass());
}
@Override
void apply() {
ListenerPreferences preferences = this.getPreferences();
ListenerPersistenceData registration = this.getRegistration();
Map<Class<? extends Listener>, Options> data = preferences.getListenerConfigurationData();
Class<? extends Listener> implementation = registration.getListenerClass();
Options options = writeToOptions(this.options(preferences, registration), this.customOptions());
preferences.setListenerConfigurationData(updateData(data, implementation, options));
}
@Override
void load(final ListenerPreferences preferences, final ListenerPersistenceData registration) {
this.setListenerPreferences(preferences);
this.setListenerRegistration(registration);
}
public void setListenerPreferences(final ListenerPreferences preferences) {
this.setPreferences(preferences);
}
public void setListenerRegistration(final ListenerPersistenceData registration) {
this.setRegistration(registration);
this.updateStatusBy(registration.getListener());
this.map = readFromOptions(this.options(this.defaultPreferences(), registration), this.options(this.getPreferences(), registration));
}
public ListenerPreferences getListenerPreferences() {
return this.getPreferences();
}
public ListenerPersistenceData getListenerRegistration() {
return this.getRegistration();
}
}