package org.aktionmensch.abbrrtf.factory; import java.util.ArrayList; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.google.inject.Inject; import com.vaadin.data.Item; import com.vaadin.server.VaadinService; import com.vaadin.ui.Field; import info.magnolia.ui.api.app.AppController; import info.magnolia.ui.api.app.SubAppContext; import info.magnolia.ui.form.field.definition.RichTextFieldDefinition; import info.magnolia.ui.form.field.factory.RichTextFieldFactory; import info.magnolia.ui.vaadin.richtext.MagnoliaRichTextField; import info.magnolia.ui.vaadin.richtext.MagnoliaRichTextFieldConfig; import info.magnolia.ui.vaadin.richtext.MagnoliaRichTextFieldConfig.ToolbarGroup; public class AbbrRTFFactory extends RichTextFieldFactory { private final String ABBR_PLUGIN_NAME = "abbr"; private final String ABBR_PLUGIN_PATH = "/VAADIN/js/abbr/"; private MagnoliaRichTextField richTextEditor; private static final Logger log = LoggerFactory.getLogger(AbbrRTFFactory.class); @Inject public AbbrRTFFactory(RichTextFieldDefinition definition, Item relatedFieldItem, AppController appController, SubAppContext subAppContext) { super(definition, relatedFieldItem, appController, subAppContext); } protected Field createFieldComponent() { final MagnoliaRichTextFieldConfig config = new MagnoliaRichTextFieldConfig(); List toolbars = new ArrayList(); toolbars.add(new ToolbarGroup("basictyles", new String[] { "Bold", "Italic", "Underline", "SpecialChar", "Abbr" })); toolbars.add(new ToolbarGroup("clipboard", new String[] { "Cut", "Copy", "Paste"})); toolbars.add(new ToolbarGroup("special", new String[] { "Undo", "Redo" })); config.addToolbarLine(toolbars); config.setResizeEnabled(false); String path = VaadinService.getCurrentRequest().getContextPath(); //The following line, if not present, will allow the RichTextField to be displayed but without my plugin //and if present it won't load. config.addPlugin(ABBR_PLUGIN_NAME,path+ ABBR_PLUGIN_PATH); richTextEditor = (MagnoliaRichTextField) super.createFieldComponent(); richTextEditor.setConfig(config); return richTextEditor; } }