Ir al contenido
Otras versiones

Cargando…

Creación de su propio plugin de formulario con autocompletado

Puede crear su propio formulario con autocompletado.

Condiciones:

  • La nueva clase de valores por defecto del formulario debe implementar la interfaz “AutocompleteFormValues”.
  • La nueva clase de valores por defecto del formulario debe declararse en el paquete “com.openkm.plugin.form.values”.
  • La nueva clase de valores por defecto del formulario debe estar anotada con “@PluginImplementation”.
  • La nueva clase de valores por defecto del formulario debe extender “BasePlugin”.

Interfaz de formulario con autocompletado por defecto:

package com.openkm.plugin.form.values;
import com.openkm.bean.form.FormElement;
import net.xeoh.plugins.base.Plugin;
import java.util.List;
public interface AutocompleteFormValues extends Plugin {
String getName();
void autocompleteFormValues(String uuid, String grpName, List<FormElement> formElementList);
}

La nueva clase debe cargarse en el paquete com.openkm.plugin.form.values, ya que el sistema de plugins de la aplicación intentará cargarla desde allí. Consulte el ejemplo siguiente:

Método Tipo Descripción
autocompleteFormValues(String uuid, String grpName, List formElementList) void El método autocompleta los elementos de formulario del grupo.

Ejemplo de implementación de valores por defecto del formulario

Sección titulada «Ejemplo de implementación de valores por defecto del formulario»
package com.openkm.plugin.form.values;
import com.openkm.bean.form.FormElement;
import com.openkm.bean.form.HorizontalPanel;
import com.openkm.bean.form.Input;
import com.openkm.bean.form.VerticalPanel;
import com.openkm.plugin.BasePlugin;
import net.xeoh.plugins.base.annotations.PluginImplementation;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
@PluginImplementation
public class SampleAutocompleteFormValues extends BasePlugin implements AutocompleteFormValues {
private static final Logger log = LoggerFactory.getLogger(SampleAutocompleteFormValues.class);
@Override
public String getName() {
return "Sample autocomplete form values implementation";
}
@Override
public void autocompleteFormValues(String uuid, String grpName, List<FormElement> formElementList) {
log.info("autocompleteFormValues({}, {}, {})", uuid, grpName, formElementList);
autocomplete(formElementList);
}
private void autocomplete(List<FormElement> formElementList) {
for (FormElement formElement : formElementList) {
if (formElement instanceof Input) {
Input input = (Input) formElement;
if (StringUtils.isEmpty(input.getValue())) {
input.setValue("Autocomplete with name: " + formElement.getName());
}
} else if (formElement instanceof HorizontalPanel) {
HorizontalPanel hPanel = (HorizontalPanel) formElement;
autocomplete(hPanel.getElements());
} else if (formElement instanceof VerticalPanel) {
VerticalPanel vPanel = (VerticalPanel) formElement;
autocomplete(vPanel.getElements());
}
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE property-groups PUBLIC "-//OpenKM//DTD Property Groups 3.10//EN"
"http://www.openkm.com/dtd/property-groups-3.10.dtd">
<property-groups>
<property-group label="Autocomple sample" name="okg:autocomplete" autocompleteValueClassName="com.openkm.plugin.form.values.SampleAutocompleteFormValues">
<input label="Input label first" name="okp:autocomplete.first" type="text"/>
<hpanel name="okp:autocomplete.horizontal1">
<input label="Input label 1" name="okp:autocomplete.input_h1" />
<input label="Input label 2" name="okp:autocomplete.input_h2" />
</hpanel>
</property-group>
</property-groups>