package org.marketcetera.photon.preferences;
import java.util.Map;
import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.window.Window;
import org.eclipse.swt.widgets.Composite;
import org.marketcetera.core.ClassVersion;
import org.marketcetera.photon.Messages;
import org.marketcetera.photon.ui.MapEditor;
import ca.odell.glazedlists.EventList;
@ClassVersion("$Id: CustomFieldsMapEditor.java 16154 2012-07-14 16:34:05Z colin $") //$NON-NLS-1$
public class CustomFieldsMapEditor
extends MapEditor
implements Messages
{
private Pattern allowedKeyPattern;
public CustomFieldsMapEditor(String custom_fields_preference, String label, Composite theFieldEditorParent) {
super(custom_fields_preference, label, theFieldEditorParent);
allowedKeyPattern = Pattern.compile("[0-9]+"); //$NON-NLS-1$
}
@Override
protected boolean isDuplicateKeyAllowed() {
return false;
}
@Override
protected String createMap(EventList<Map.Entry<String, String>> entries) {
return MapEditorUtil.encodeList(entries);
}
@Override
protected EventList<Entry<String, String>> parseString(String stringList) {
return MapEditorUtil.parseString(stringList);
}
@Override
protected Entry<String, String> getNewInputObject() {
MapDialog dialog = new MapDialog(getShell(),
NEW_CUSTOM_FIELD_LABEL.getText(),
KEY_LABEL.getText(),
VALUE_LABEL.getText());
if (dialog.open() == Window.OK) {
Entry<String, String> entry = dialog.getEntry();
if (entry != null) {
String key = entry.getKey();
Matcher matcher = allowedKeyPattern.matcher(key);
if (!matcher.matches()) {
MessageDialog.openInformation(getShell(),
INVALID_CUSTOM_FIELD_KEY.getText(),
CUSTOM_FIELD_INVALID_DIGIT.getText(key));
entry = null;
}
}
return entry;
}
return null;
}
}