package org.orienteer.core.component.visualizer; import com.orientechnologies.orient.core.metadata.schema.OProperty; import com.orientechnologies.orient.core.metadata.schema.OType; import com.orientechnologies.orient.core.record.impl.ODocument; import org.apache.wicket.Component; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.model.IModel; import org.orienteer.core.component.property.DisplayMode; import org.orienteer.core.component.property.OLocalizationEditPanel; import org.orienteer.core.util.LocalizeFunction; import ru.ydn.wicket.wicketorientdb.model.DynamicPropertyValueModel; import ru.ydn.wicket.wicketorientdb.model.FunctionModel; /** * {@link IVisualizer} to display and modify documents localizations in Orienteer. */ public class LocalizationVisualizer extends AbstractSimpleVisualizer { public LocalizationVisualizer() { super("localization", false, OType.EMBEDDEDMAP); } @Override public <V> Component createComponent(String id, DisplayMode mode, IModel<ODocument> documentModel, IModel<OProperty> propertyModel, IModel<V> valueModel) { switch (mode) { case VIEW: return new Label(id, new FunctionModel<Object, String>(new DynamicPropertyValueModel<Object>(documentModel, propertyModel), LocalizeFunction.getInstance())); case EDIT: return new OLocalizationEditPanel<V>(id, documentModel, propertyModel).setType(String.class); default: return null; } } }