Frontend UI hello world sample
Description
Section titled “Description”Sample
Section titled “Sample”Create a new GWT module
Section titled “Create a new GWT module”Create a file called HelloWorld.gwt.xml in src/main/java/com/openkm/extension/frontend
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE module SYSTEM "http://google-web-toolkit.googlecode.com/svn/releases/2.0/distro-source/core/src/gwt-module.dtd"><module> <!-- Inherit the core Web Toolkit stuff --> <inherits name='com.google.gwt.user.User'/> <inherits name="com.google.gwt.http.HTTP"/></module>Add the module to the OpenKM frontend UI
Section titled “Add the module to the OpenKM frontend UI”Edit Customization.gwt.xml in src/main/java/com/openkm/extension/frontend and add the new module
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE module SYSTEM "http://google-web-toolkit.googlecode.com/svn/releases/2.0/distro-source/core/src/gwt-module.dtd"><module> <!-- Inherit the extension widgets --> <inherits name="com.openkm.extension.frontend.HelloWorld"/></module>Create a new widget
Section titled “Create a new widget”Create a file called HelloWorld.java in src/main/java/com/openkm/extension/frontend/client
package com.openkm.extension.frontend.client;
import com.google.gwt.event.dom.client.ClickEvent;import com.google.gwt.event.dom.client.ClickHandler;import com.google.gwt.user.client.Window;import com.google.gwt.user.client.ui.Button;import com.google.gwt.user.client.ui.HTML;import com.google.gwt.user.client.ui.VerticalPanel;import com.openkm.frontend.client.extension.communicator.GeneralCommunicator;import com.openkm.frontend.client.extension.communicator.TabDocumentCommunicator;import com.openkm.frontend.client.extension.event.HasDocumentEvent;import com.openkm.frontend.client.extension.event.HasDocumentEvent.DocumentEventConstant;import com.openkm.frontend.client.extension.event.HasLanguageEvent;import com.openkm.frontend.client.extension.event.HasLanguageEvent.LanguageEventConstant;import com.openkm.frontend.client.extension.event.handler.DocumentHandlerExtension;import com.openkm.frontend.client.extension.event.handler.LanguageHandlerExtension;import com.openkm.frontend.client.extension.widget.tabdocument.TabDocumentExtension;
public class HelloWorld extends TabDocumentExtension implements DocumentHandlerExtension, LanguageHandlerExtension {
Button refresh; VerticalPanel vPanel;
public HelloWorld() { HTML html = new HTML("Hello Word"); refresh = new Button("refresh UI"); refresh.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { GeneralCommunicator.refreshUI(); } });
vPanel = new VerticalPanel(); vPanel.add(html); vPanel.add(refresh);
refresh.setStyleName("okm-Input");
initWidget(vPanel); }
@Override public String getTabText() { return "Hello tab"; }
@Override public void onChange(DocumentEventConstant event) { if (event.equals(HasDocumentEvent.DOCUMENT_CHANGED)) { Window.alert("document changed - " + event.getType()); } else if (event.equals(HasDocumentEvent.KEYWORD_ADDED)) { Window.alert("keyword added - " + event.getType()); } else if (event.equals(HasDocumentEvent.KEYWORD_REMOVED)) { Window.alert("keyword removed - " + event.getType()); } else if (event.equals(HasDocumentEvent.CATEGORY_ADDED)) { Window.alert("category added - " + event.getType()); } else if (event.equals(HasDocumentEvent.CATEGORY_REMOVED)) { Window.alert("category removed - " + event.getType()); } else if (event.equals(HasDocumentEvent.TAB_CHANGED)) { Window.alert("tab changed - " + event.getType() + " - actual tab " + TabDocumentCommunicator.getSelectedTab()); } else if (event.equals(HasDocumentEvent.PANEL_RESIZED)) { Window.alert("panel resized - " + event.getType()); } else if (event.equals(HasDocumentEvent.SECURITY_CHANGED)) { Window.alert("security changed - " + event.getType()); } else if (event.equals(HasDocumentEvent.NOTE_ADDED)) { Window.alert("note added - " + event.getType()); } }
@Override public void onChange(LanguageEventConstant event) { if (event.equals(HasLanguageEvent.LANGUAGE_CHANGED)) { Window.alert("language changed"); } }}Use the widget in OpenKM
Section titled “Use the widget in OpenKM”Edit Customization.java, the OpenKM class, and add the HelloWorld widget:
package com.openkm.extension.frontend.client;
import java.util.ArrayList;import java.util.List;
public class Customization {
/** * getExtensionWidgets */ public static List<Object> getExtensionWidgets(List<String> uuidList) { List<Object> extensions = new ArrayList<>();
// add here your widget extensions extensions.add(new HelloWorld());
return extensions; }
}Results
Section titled “Results”Compile the project, log in to OpenKM and you’ll see something like this:
