/*
* Created by Mike de Roode
*/
package nl.fontys.sofa.limo.view.node.property.editor;
import java.awt.Component;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.beans.PropertyEditorSupport;
import java.util.Map;
import nl.fontys.sofa.limo.domain.component.leg.Leg;
import nl.fontys.sofa.limo.view.util.LIMOResourceBundle;
import nl.fontys.sofa.limo.view.wizard.leg.multimode.MultimodeLegTablePanel;
/**
* This class is the Property Editor for the {@code Map<Leg, Double> }attribute of a
* MultiModeLeg. It enables you to change the legs with the build in property
* window of NetBeans Platform.
*
* @author Mike
*/
public class MultiModeLegPropertyEditor extends PropertyEditorSupport implements PropertyChangeListener {
private MultiModeLegTableEditor editor;
@Override
public String getAsText() {
Map<Leg, Double> legs = (Map<Leg, Double>) getValue();
if (legs == null) {
return LIMOResourceBundle.getString("NUMBER_OF", LIMOResourceBundle.getString("LEGS"), 0);
}
return LIMOResourceBundle.getString("NUMBER_OF", LIMOResourceBundle.getString("LEGS"), legs.size());
}
@Override
public void setAsText(String s) {
}
@Override
public boolean supportsCustomEditor() {
return true;
}
@Override
public Component getCustomEditor() {
if (editor == null) {
editor = new MultiModeLegTableEditor((Map<Leg, Double>) getValue());
editor.addPropertyChangeListener(this);
}
return editor;
}
@Override
public void propertyChange(PropertyChangeEvent evt) {
setValue(((MultiModeLegTableEditor) getCustomEditor()).getLegModel().getMap());
}
private class MultiModeLegTableEditor extends MultimodeLegTablePanel {
public MultiModeLegTableEditor(Map<Leg, Double> legs) {
super();
getLegModel().addLegs(legs);
}
}
}