package org.freeplane.core.resources; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Properties; import java.util.Vector; import org.freeplane.core.resources.components.IPropertyControl; import org.freeplane.core.resources.components.PropertyBean; public class OptionPanelController { private Vector<IPropertyControl> propertyControls = new Vector<IPropertyControl>(); private List<ActionListener> list = new ArrayList<ActionListener>(); private List<PropertyLoadListener> loadListener = new ArrayList<PropertyLoadListener>(); public void addPropertyLoadListener(PropertyLoadListener listener){ loadListener.add(listener); } public void addButtonListener(ActionListener listener) { list.add(listener); } public void actionPerformed(ActionEvent e) { for(ActionListener listener : list) { listener.actionPerformed(e); } } public void setCurrentPropertyControls(final Vector<IPropertyControl> props) { this.propertyControls = props; for(PropertyLoadListener listener : loadListener){ listener.propertiesLoaded(props); } } public IPropertyControl getPropertyControl(String name){ for(IPropertyControl control : this.propertyControls){ if(control.getName() != null && control.getName().equals(name)){ return control; } } return null; } public Properties getCurrentOptionProperties() { final Properties p = new Properties(); Vector<IPropertyControl> controls = this.propertyControls; for (final IPropertyControl control : controls) { if (control instanceof PropertyBean) { final PropertyBean bean = (PropertyBean) control; final String value = bean.getValue(); if (value != null) { p.setProperty(bean.getName(), value); } } } return p; } public interface PropertyLoadListener { public void propertiesLoaded(Collection<IPropertyControl> properties); } }