package org.docear.plugin.services;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.net.URL;
import java.util.Collection;
import org.docear.plugin.services.communications.CommunicationsController;
import org.freeplane.core.resources.OptionPanelController;
import org.freeplane.core.resources.OptionPanelController.PropertyLoadListener;
import org.freeplane.core.resources.components.BooleanProperty;
import org.freeplane.core.resources.components.IPropertyControl;
import org.freeplane.features.mode.Controller;
import org.freeplane.features.mode.ModeController;
import org.freeplane.features.mode.mindmapmode.MModeController;
public class ServicePreferences {
ServicePreferences(ModeController modeController) {
addPropertiesToOptionPanel(modeController);
}
private void addPropertiesToOptionPanel(ModeController modeController) {
final URL preferences = this.getClass().getResource("preferences.xml");
if (preferences == null)
throw new RuntimeException("cannot open preferences");
if(modeController instanceof MModeController) {
((MModeController) modeController).getOptionPanelBuilder().load(preferences);
}
final OptionPanelController optionController = Controller.getCurrentController().getOptionPanelController();
optionController.addPropertyLoadListener(new PropertyLoadListener() {
public void propertiesLoaded(Collection<IPropertyControl> properties) {
for(IPropertyControl property : properties){
if(property != null && property.getName() != null && property.getName().equalsIgnoreCase(CommunicationsController.DOCEAR_USE_PROXY)){
((IPropertyControl) optionController.getPropertyControl(CommunicationsController.DOCEAR_PROXY_HOST)).setEnabled(((BooleanProperty)property).getBooleanValue());
((IPropertyControl) optionController.getPropertyControl(CommunicationsController.DOCEAR_PROXY_PORT)).setEnabled(((BooleanProperty)property).getBooleanValue());
}
}
((BooleanProperty) optionController.getPropertyControl(CommunicationsController.DOCEAR_USE_PROXY))
.addPropertyChangeListener(new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
((IPropertyControl) optionController.getPropertyControl(CommunicationsController.DOCEAR_PROXY_HOST)).setEnabled(Boolean.parseBoolean(evt.getNewValue().toString()));
((IPropertyControl) optionController.getPropertyControl(CommunicationsController.DOCEAR_PROXY_PORT)).setEnabled(Boolean.parseBoolean(evt.getNewValue().toString()));
}
});
}
});
}
}