package com.revolsys.swing.map.component;
import java.awt.Component;
import java.awt.event.ActionListener;
import javax.swing.ComboBoxEditor;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import org.jdesktop.swingx.autocomplete.ObjectToStringConverter;
import com.revolsys.datatype.DataTypes;
public class SelectMapScaleEditor implements ComboBoxEditor {
final ObjectToStringConverter stringConverter;
final ComboBoxEditor wrapped;
public SelectMapScaleEditor(final ComboBoxEditor editor,
final ObjectToStringConverter stringConverter) {
this.wrapped = editor;
((JTextField)editor.getEditorComponent()).setHorizontalAlignment(SwingConstants.RIGHT);
this.stringConverter = stringConverter;
}
@Override
public void addActionListener(final ActionListener l) {
this.wrapped.addActionListener(l);
}
@Override
public Component getEditorComponent() {
return this.wrapped.getEditorComponent();
}
@Override
public Object getItem() {
try {
final Object item = this.wrapped.getItem();
String string = DataTypes.toString(item);
string = string.replaceAll("((^1:)|([^0-9\\.])+)", "");
final double scale = Double.parseDouble(string);
return this.stringConverter.getPreferredStringForItem(scale);
} catch (final NumberFormatException e) {
return "";
}
}
@Override
public void removeActionListener(final ActionListener l) {
this.wrapped.removeActionListener(l);
}
@Override
public void selectAll() {
this.wrapped.selectAll();
}
@Override
public void setItem(final Object object) {
this.wrapped.setItem(this.stringConverter.getPreferredStringForItem(object));
}
}