org.eclipse.e4.ui.workbench,\
org.eclipse.rap.rwt.client,\
org.argeo.cms.script,\
+org.eclipse.nebula.widgets.richtext;resolution:=optional,\
*
--- /dev/null
+<?xml version="1.0" encoding="ASCII"?>
+<application:Application xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:application="http://www.eclipse.org/ui/2010/UIModel/application" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmi:id="_PjHLwMb4EeiIG7Bq51Btuw" elementId="org.argeo.cms.e4.application">
+ <children xsi:type="basic:TrimmedWindow" xmi:id="_QnyU0Mb4EeiIG7Bq51Btuw" elementId="org.argeo.cms.e4.trimmedwindow.0">
+ <children xsi:type="basic:PartStack" xmi:id="_V9EXcMb4EeiIG7Bq51Btuw" elementId="org.argeo.cms.e4.partstack.0">
+ <children xsi:type="basic:Part" xmi:id="_RVKlIMctEeiIG7Bq51Btuw" elementId="org.argeo.cms.e4.part.docbook" contributionURI="bundleclass://org.argeo.cms.e4/org.argeo.cms.e4.parts.CmsDocBookEditor" label="DocBook">
+ <toolbar xmi:id="_TANxsMctEeiIG7Bq51Btuw" elementId="org.argeo.cms.e4.toolbar.1">
+ <children xsi:type="menu:HandledToolItem" xmi:id="_alIUoMctEeiIG7Bq51Btuw" elementId="org.argeo.cms.e4.handledtoolitem.save" label="Save" command="_vsxg8McmEeiIG7Bq51Btuw"/>
+ </toolbar>
+ </children>
+ <children xsi:type="basic:Part" xmi:id="_fPCGgMcCEeiIG7Bq51Btuw" elementId="org.argeo.cms.e4.part.texteditor" contributionURI="bundleclass://org.argeo.cms.e4/org.argeo.cms.e4.parts.CmsTextEditor" label="Text Editor">
+ <toolbar xmi:id="_jlPucMcmEeiIG7Bq51Btuw" elementId="org.argeo.cms.e4.toolbar.0">
+ <children xsi:type="menu:HandledToolItem" xmi:id="_r3TEMMcmEeiIG7Bq51Btuw" elementId="org.argeo.cms.e4.handledtoolitem.0" command="_vsxg8McmEeiIG7Bq51Btuw"/>
+ </toolbar>
+ </children>
+ <children xsi:type="basic:Part" xmi:id="_cIlegMb4EeiIG7Bq51Btuw" elementId="org.argeo.cms.e4.part.htmleditor" contributionURI="bundleclass://org.argeo.cms.e4.rap/org.argeo.cms.e4.rap.parts.HtmlEditor" label="HTML Editor"/>
+ </children>
+ </children>
+ <handlers xmi:id="_zqabMMcmEeiIG7Bq51Btuw" elementId="org.argeo.cms.e4.handler.0" contributionURI="bundleclass://org.argeo.cms.e4/org.argeo.cms.e4.handlers.SavePart" command="_vsxg8McmEeiIG7Bq51Btuw"/>
+ <commands xmi:id="_vsxg8McmEeiIG7Bq51Btuw" elementId="org.argeo.cms.e4.command.save" commandName="Save"/>
+ <addons xmi:id="_PjHLwcb4EeiIG7Bq51Btuw" elementId="org.eclipse.e4.core.commands.service" contributionURI="bundleclass://org.eclipse.e4.core.commands/org.eclipse.e4.core.commands.CommandServiceAddon"/>
+ <addons xmi:id="_PjHLwsb4EeiIG7Bq51Btuw" elementId="org.eclipse.e4.ui.contexts.service" contributionURI="bundleclass://org.eclipse.e4.ui.services/org.eclipse.e4.ui.services.ContextServiceAddon"/>
+ <addons xmi:id="_PjHLw8b4EeiIG7Bq51Btuw" elementId="org.eclipse.e4.ui.bindings.service" contributionURI="bundleclass://org.eclipse.e4.ui.bindings/org.eclipse.e4.ui.bindings.BindingServiceAddon"/>
+ <addons xmi:id="_PjHLxMb4EeiIG7Bq51Btuw" elementId="org.eclipse.e4.ui.workbench.commands.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.CommandProcessingAddon"/>
+ <addons xmi:id="_PjHLxcb4EeiIG7Bq51Btuw" elementId="org.eclipse.e4.ui.workbench.contexts.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.ContextProcessingAddon"/>
+ <addons xmi:id="_PjHLxsb4EeiIG7Bq51Btuw" elementId="org.eclipse.e4.ui.workbench.bindings.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.swt/org.eclipse.e4.ui.workbench.swt.util.BindingProcessingAddon"/>
+ <addons xmi:id="_PjHLx8b4EeiIG7Bq51Btuw" elementId="org.eclipse.e4.ui.workbench.handler.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.HandlerProcessingAddon"/>
+</application:Application>
public class CmsE4DemoApp extends AbstractRapE4App {
public CmsE4DemoApp() {
setPageTitle("CMS Demo");
- setE4Xmi("org.argeo.cms.e4/e4xmi/cms-demo.e4xmi");
+ setE4Xmi("org.argeo.cms.e4.rap/e4xmi/cms-demo-rap.e4xmi");
setPath("/cms-e4");
}
--- /dev/null
+'Source,Save,Templates,Strike,Subscript,Superscript,CopyFormatting,Outdent,Indent,CreateDiv,JustifyLeft,JustifyCenter,JustifyRight,JustifyBlock,Language,Anchor,Flash,HorizontalRule,Smiley,SpecialChar,PageBreak,Iframe,Format,Font,FontSize,BGColor,TextColor,ShowBlocks,About,Preview,Print,Redo,Replace,Find,Undo,SelectAll,Scayt,Form,Checkbox,Radio,TextField,Textarea,Select,Button,ImageButton,HiddenField,NewPage,PasteFromWord,Blockquote,BidiLtr,BidiRtl'
\ No newline at end of file
--- /dev/null
+CKEDITOR.editorConfig = function( config ) {
+ config.toolbarGroups = [
+ { name: 'document', groups: [ 'mode', 'document', 'doctools' ] },
+ { name: 'styles', groups: [ 'styles' ] },
+ { name: 'editing', groups: [ 'find', 'selection', 'spellchecker', 'editing' ] },
+ { name: 'forms', groups: [ 'forms' ] },
+ { name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] },
+ { name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align', 'bidi', 'paragraph' ] },
+ { name: 'insert', groups: [ 'insert' ] },
+ { name: 'links', groups: [ 'links' ] },
+ { name: 'clipboard', groups: [ 'clipboard', 'undo' ] },
+ { name: 'colors', groups: [ 'colors' ] },
+ { name: 'tools', groups: [ 'tools' ] },
+ { name: 'others', groups: [ 'others' ] },
+ { name: 'about', groups: [ 'about' ] }
+ ];
+
+ config.removeButtons = 'Source,Save,Templates,Strike,Subscript,Superscript,CopyFormatting,Outdent,Indent,CreateDiv,JustifyLeft,JustifyCenter,JustifyRight,JustifyBlock,BidiLtr,BidiRtl,Language,Anchor,Flash,HorizontalRule,Smiley,SpecialChar,PageBreak,Iframe,Format,Font,FontSize,BGColor,TextColor,Maximize,ShowBlocks,About,Preview,Print,Redo,Replace,Find,Undo,SelectAll,Scayt,Form,Checkbox,Radio,TextField,Textarea,Select,Button,ImageButton,HiddenField,NewPage,PasteFromWord,Blockquote';
+};
\ No newline at end of file
--- /dev/null
+[
+ {
+ "name": "document",
+ "groups": [
+ "mode",
+ "document",
+ "doctools"
+ ]
+ },
+ {
+ "name": "styles",
+ "groups": [
+ "styles"
+ ]
+ },
+ {
+ "name": "editing",
+ "groups": [
+ "find",
+ "selection",
+ "spellchecker",
+ "editing"
+ ]
+ },
+ {
+ "name": "forms",
+ "groups": [
+ "forms"
+ ]
+ },
+ {
+ "name": "basicstyles",
+ "groups": [
+ "basicstyles",
+ "cleanup"
+ ]
+ },
+ {
+ "name": "paragraph",
+ "groups": [
+ "list",
+ "indent",
+ "blocks",
+ "align",
+ "bidi",
+ "paragraph"
+ ]
+ },
+ {
+ "name": "insert",
+ "groups": [
+ "insert"
+ ]
+ },
+ {
+ "name": "links",
+ "groups": [
+ "links"
+ ]
+ },
+ {
+ "name": "clipboard",
+ "groups": [
+ "clipboard",
+ "undo"
+ ]
+ },
+ {
+ "name": "colors",
+ "groups": [
+ "colors"
+ ]
+ },
+ {
+ "name": "tools",
+ "groups": [
+ "tools"
+ ]
+ },
+ {
+ "name": "others",
+ "groups": [
+ "others"
+ ]
+ },
+ {
+ "name": "about",
+ "groups": [
+ "about"
+ ]
+ }
+]
\ No newline at end of file
--- /dev/null
+package org.argeo.cms.e4.rap.parts;
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+
+import javax.annotation.PostConstruct;
+
+import org.apache.commons.io.IOUtils;
+import org.argeo.cms.CmsException;
+import org.argeo.cms.util.CmsUtils;
+import org.eclipse.nebula.widgets.richtext.RichTextEditor;
+import org.eclipse.nebula.widgets.richtext.RichTextEditorConfiguration;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.browser.Browser;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+
+public class HtmlEditor {
+
+ @PostConstruct
+ public void createUI(Composite parent) {
+ String toolbarGroups;
+ String removeButtons;
+ try {
+ toolbarGroups = IOUtils.toString(HtmlEditor.class.getResourceAsStream("CkEditor-toolbarGroups.json"),
+ StandardCharsets.UTF_8);
+ removeButtons = IOUtils.toString(HtmlEditor.class.getResourceAsStream("CkEditor-removeButtons.js"),
+ StandardCharsets.UTF_8);
+ } catch (IOException e) {
+ throw new CmsException("Cannot configure toolbar", e);
+ }
+// System.out.println(toolbarGroups);
+// System.out.println(removeButtons);
+ RichTextEditorConfiguration richTextEditorConfig = new RichTextEditorConfiguration();
+ richTextEditorConfig.setOption(RichTextEditorConfiguration.TOOLBAR_GROUPS, toolbarGroups);
+ richTextEditorConfig.setOption(RichTextEditorConfiguration.REMOVE_BUTTONS, removeButtons);
+// richTextEditorConfig.setRemoveStyles(false);
+// richTextEditorConfig.setRemovePasteFromWord(true);
+// richTextEditorConfig.setRemovePasteText(false);
+
+// richTextEditorConfig.setToolbarCollapsible(true);
+// richTextEditorConfig.setToolbarInitialExpanded(false);
+
+ final Display display = parent.getDisplay();
+ Composite composite = new Composite(parent, SWT.NONE);
+// composite.setLayoutData(new Fill);
+ composite.setLayout(new GridLayout());
+ final RichTextEditor richTextEditor = new RichTextEditor(composite, richTextEditorConfig, SWT.BORDER);
+ richTextEditor.setText("<a href='http://googl.com'>Google</a>");
+ GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
+ richTextEditor.setLayoutData(layoutData);
+ richTextEditor.setBackground(new Color(display, 247, 247, 247));
+ Composite toolbar = new Composite(composite, SWT.NONE);
+ toolbar.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
+ toolbar.setLayout(new GridLayout(3, false));
+ Button showContent = new Button(toolbar, SWT.PUSH);
+ showContent.setText("Show Content");
+ showContent.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ showContent(parent, richTextEditor, false);
+ }
+ });
+ Button showSource = new Button(toolbar, SWT.PUSH);
+ showSource.setText("Show Source");
+ showSource.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ showContent(parent, richTextEditor, true);
+ }
+ });
+ Button clearBtn = new Button(toolbar, SWT.NONE);
+ clearBtn.setText("Clear");
+ clearBtn.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ richTextEditor.setText("");
+ }
+ });
+
+ }
+
+ private static void showContent(Composite parent, RichTextEditor editor, boolean source) {
+ int style = SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL;
+ final Shell content = new Shell(parent.getShell(), style);
+ content.setLayout(new GridLayout(1, true));
+ String text = editor.getText();
+ if (source) {
+ content.setText("Rich Text Source");
+ Text viewer = new Text(content, SWT.MULTI | SWT.WRAP);
+ viewer.setLayoutData(new GridData(400, 400));
+ viewer.setText(text);
+ viewer.setEditable(false);
+ } else {
+ content.setText("Rich Text");
+ Browser viewer = new Browser(content, SWT.NONE);
+ viewer.setLayoutData(new GridData(400, 400));
+ viewer.setText(text);
+ viewer.setEnabled(false);
+ }
+ Button ok = new Button(content, SWT.PUSH);
+ ok.setLayoutData(new GridData(SWT.RIGHT, SWT.BOTTOM, false, false));
+ ok.setText("OK");
+ ok.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ content.dispose();
+ }
+ });
+ content.setDefaultButton(ok);
+ content.pack();
+ Display display = parent.getDisplay();
+ int left = (display.getClientArea().width / 2) - (content.getBounds().width / 2);
+ content.setLocation(left, 40);
+ content.open();
+ ok.setFocus();
+ }
+
+}
--- /dev/null
+{
+ "firstName": "John",
+ "lastName": "Smith",
+ "isAlive": true,
+ "age": 27,
+ "address": {
+ "streetAddress": "21 2nd Street",
+ "city": "New York",
+ "state": "NY",
+ "postalCode": "10021-3100"
+ },
+ "phoneNumbers": [
+ {
+ "type": "home",
+ "number": "212 555-1234"
+ },
+ {
+ "type": "office",
+ "number": "646 555-4567"
+ },
+ {
+ "type": "mobile",
+ "number": "123 456-7890"
+ }
+ ],
+ "children": [],
+ "spouse": null
+}
org.eclipse.core.commands.common,\
org.eclipse.jface.window,\
org.argeo.cms.widgets.auth,\
-org.eclipse.nebula.widgets.richtext;resolution:=optional,\
*
+++ /dev/null
-<?xml version="1.0" encoding="ASCII"?>
-<application:Application xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:application="http://www.eclipse.org/ui/2010/UIModel/application" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmi:id="_PjHLwMb4EeiIG7Bq51Btuw" elementId="org.argeo.cms.e4.application">
- <children xsi:type="basic:TrimmedWindow" xmi:id="_QnyU0Mb4EeiIG7Bq51Btuw" elementId="org.argeo.cms.e4.trimmedwindow.0">
- <children xsi:type="basic:PartStack" xmi:id="_V9EXcMb4EeiIG7Bq51Btuw" elementId="org.argeo.cms.e4.partstack.0">
- <children xsi:type="basic:Part" xmi:id="_RVKlIMctEeiIG7Bq51Btuw" elementId="org.argeo.cms.e4.part.docbook" contributionURI="bundleclass://org.argeo.cms.e4/org.argeo.cms.e4.parts.CmsDocBookEditor" label="DocBook">
- <toolbar xmi:id="_TANxsMctEeiIG7Bq51Btuw" elementId="org.argeo.cms.e4.toolbar.1">
- <children xsi:type="menu:HandledToolItem" xmi:id="_alIUoMctEeiIG7Bq51Btuw" elementId="org.argeo.cms.e4.handledtoolitem.save" label="Save" command="_vsxg8McmEeiIG7Bq51Btuw"/>
- </toolbar>
- </children>
- <children xsi:type="basic:Part" xmi:id="_fPCGgMcCEeiIG7Bq51Btuw" elementId="org.argeo.cms.e4.part.texteditor" contributionURI="bundleclass://org.argeo.cms.e4/org.argeo.cms.e4.parts.CmsTextEditor" label="Text Editor">
- <toolbar xmi:id="_jlPucMcmEeiIG7Bq51Btuw" elementId="org.argeo.cms.e4.toolbar.0">
- <children xsi:type="menu:HandledToolItem" xmi:id="_r3TEMMcmEeiIG7Bq51Btuw" elementId="org.argeo.cms.e4.handledtoolitem.0" command="_vsxg8McmEeiIG7Bq51Btuw"/>
- </toolbar>
- </children>
- <children xsi:type="basic:Part" xmi:id="_cIlegMb4EeiIG7Bq51Btuw" elementId="org.argeo.cms.e4.part.htmleditor" contributionURI="bundleclass://org.argeo.cms.e4/org.argeo.cms.e4.parts.HtmlEditor" label="HTML Editor"/>
- </children>
- </children>
- <handlers xmi:id="_zqabMMcmEeiIG7Bq51Btuw" elementId="org.argeo.cms.e4.handler.0" contributionURI="bundleclass://org.argeo.cms.e4/org.argeo.cms.e4.handlers.SavePart" command="_vsxg8McmEeiIG7Bq51Btuw"/>
- <commands xmi:id="_vsxg8McmEeiIG7Bq51Btuw" elementId="org.argeo.cms.e4.command.save" commandName="Save"/>
- <addons xmi:id="_PjHLwcb4EeiIG7Bq51Btuw" elementId="org.eclipse.e4.core.commands.service" contributionURI="bundleclass://org.eclipse.e4.core.commands/org.eclipse.e4.core.commands.CommandServiceAddon"/>
- <addons xmi:id="_PjHLwsb4EeiIG7Bq51Btuw" elementId="org.eclipse.e4.ui.contexts.service" contributionURI="bundleclass://org.eclipse.e4.ui.services/org.eclipse.e4.ui.services.ContextServiceAddon"/>
- <addons xmi:id="_PjHLw8b4EeiIG7Bq51Btuw" elementId="org.eclipse.e4.ui.bindings.service" contributionURI="bundleclass://org.eclipse.e4.ui.bindings/org.eclipse.e4.ui.bindings.BindingServiceAddon"/>
- <addons xmi:id="_PjHLxMb4EeiIG7Bq51Btuw" elementId="org.eclipse.e4.ui.workbench.commands.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.CommandProcessingAddon"/>
- <addons xmi:id="_PjHLxcb4EeiIG7Bq51Btuw" elementId="org.eclipse.e4.ui.workbench.contexts.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.ContextProcessingAddon"/>
- <addons xmi:id="_PjHLxsb4EeiIG7Bq51Btuw" elementId="org.eclipse.e4.ui.workbench.bindings.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench.swt/org.eclipse.e4.ui.workbench.swt.util.BindingProcessingAddon"/>
- <addons xmi:id="_PjHLx8b4EeiIG7Bq51Btuw" elementId="org.eclipse.e4.ui.workbench.handler.model" contributionURI="bundleclass://org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.HandlerProcessingAddon"/>
-</application:Application>
+++ /dev/null
-'Source,Save,Templates,Strike,Subscript,Superscript,CopyFormatting,Outdent,Indent,CreateDiv,JustifyLeft,JustifyCenter,JustifyRight,JustifyBlock,Language,Anchor,Flash,HorizontalRule,Smiley,SpecialChar,PageBreak,Iframe,Format,Font,FontSize,BGColor,TextColor,ShowBlocks,About,Preview,Print,Redo,Replace,Find,Undo,SelectAll,Scayt,Form,Checkbox,Radio,TextField,Textarea,Select,Button,ImageButton,HiddenField,NewPage,PasteFromWord,Blockquote,BidiLtr,BidiRtl'
\ No newline at end of file
+++ /dev/null
-CKEDITOR.editorConfig = function( config ) {
- config.toolbarGroups = [
- { name: 'document', groups: [ 'mode', 'document', 'doctools' ] },
- { name: 'styles', groups: [ 'styles' ] },
- { name: 'editing', groups: [ 'find', 'selection', 'spellchecker', 'editing' ] },
- { name: 'forms', groups: [ 'forms' ] },
- { name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] },
- { name: 'paragraph', groups: [ 'list', 'indent', 'blocks', 'align', 'bidi', 'paragraph' ] },
- { name: 'insert', groups: [ 'insert' ] },
- { name: 'links', groups: [ 'links' ] },
- { name: 'clipboard', groups: [ 'clipboard', 'undo' ] },
- { name: 'colors', groups: [ 'colors' ] },
- { name: 'tools', groups: [ 'tools' ] },
- { name: 'others', groups: [ 'others' ] },
- { name: 'about', groups: [ 'about' ] }
- ];
-
- config.removeButtons = 'Source,Save,Templates,Strike,Subscript,Superscript,CopyFormatting,Outdent,Indent,CreateDiv,JustifyLeft,JustifyCenter,JustifyRight,JustifyBlock,BidiLtr,BidiRtl,Language,Anchor,Flash,HorizontalRule,Smiley,SpecialChar,PageBreak,Iframe,Format,Font,FontSize,BGColor,TextColor,Maximize,ShowBlocks,About,Preview,Print,Redo,Replace,Find,Undo,SelectAll,Scayt,Form,Checkbox,Radio,TextField,Textarea,Select,Button,ImageButton,HiddenField,NewPage,PasteFromWord,Blockquote';
-};
\ No newline at end of file
+++ /dev/null
-[
- {
- "name": "document",
- "groups": [
- "mode",
- "document",
- "doctools"
- ]
- },
- {
- "name": "styles",
- "groups": [
- "styles"
- ]
- },
- {
- "name": "editing",
- "groups": [
- "find",
- "selection",
- "spellchecker",
- "editing"
- ]
- },
- {
- "name": "forms",
- "groups": [
- "forms"
- ]
- },
- {
- "name": "basicstyles",
- "groups": [
- "basicstyles",
- "cleanup"
- ]
- },
- {
- "name": "paragraph",
- "groups": [
- "list",
- "indent",
- "blocks",
- "align",
- "bidi",
- "paragraph"
- ]
- },
- {
- "name": "insert",
- "groups": [
- "insert"
- ]
- },
- {
- "name": "links",
- "groups": [
- "links"
- ]
- },
- {
- "name": "clipboard",
- "groups": [
- "clipboard",
- "undo"
- ]
- },
- {
- "name": "colors",
- "groups": [
- "colors"
- ]
- },
- {
- "name": "tools",
- "groups": [
- "tools"
- ]
- },
- {
- "name": "others",
- "groups": [
- "others"
- ]
- },
- {
- "name": "about",
- "groups": [
- "about"
- ]
- }
-]
\ No newline at end of file
+++ /dev/null
-package org.argeo.cms.e4.parts;
-
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-
-import javax.annotation.PostConstruct;
-
-import org.apache.commons.io.IOUtils;
-import org.argeo.cms.CmsException;
-import org.argeo.cms.util.CmsUtils;
-import org.eclipse.nebula.widgets.richtext.RichTextEditor;
-import org.eclipse.nebula.widgets.richtext.RichTextEditorConfiguration;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.browser.Browser;
-import org.eclipse.swt.events.SelectionAdapter;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-
-public class HtmlEditor {
-
- @PostConstruct
- public void createUI(Composite parent) {
- String toolbarGroups;
- String removeButtons;
- try {
- toolbarGroups = IOUtils.toString(HtmlEditor.class.getResourceAsStream("CkEditor-toolbarGroups.json"),
- StandardCharsets.UTF_8);
- removeButtons = IOUtils.toString(HtmlEditor.class.getResourceAsStream("CkEditor-removeButtons.js"),
- StandardCharsets.UTF_8);
- } catch (IOException e) {
- throw new CmsException("Cannot configure toolbar", e);
- }
-// System.out.println(toolbarGroups);
-// System.out.println(removeButtons);
- RichTextEditorConfiguration richTextEditorConfig = new RichTextEditorConfiguration();
- richTextEditorConfig.setOption(RichTextEditorConfiguration.TOOLBAR_GROUPS, toolbarGroups);
- richTextEditorConfig.setOption(RichTextEditorConfiguration.REMOVE_BUTTONS, removeButtons);
-// richTextEditorConfig.setRemoveStyles(false);
-// richTextEditorConfig.setRemovePasteFromWord(true);
-// richTextEditorConfig.setRemovePasteText(false);
-
-// richTextEditorConfig.setToolbarCollapsible(true);
-// richTextEditorConfig.setToolbarInitialExpanded(false);
-
- final Display display = parent.getDisplay();
- Composite composite = new Composite(parent, SWT.NONE);
-// composite.setLayoutData(new Fill);
- composite.setLayout(new GridLayout());
- final RichTextEditor richTextEditor = new RichTextEditor(composite, richTextEditorConfig, SWT.BORDER);
- richTextEditor.setText("<a href='http://googl.com'>Google</a>");
- GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
- richTextEditor.setLayoutData(layoutData);
- richTextEditor.setBackground(new Color(display, 247, 247, 247));
- Composite toolbar = new Composite(composite, SWT.NONE);
- toolbar.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
- toolbar.setLayout(new GridLayout(3, false));
- Button showContent = new Button(toolbar, SWT.PUSH);
- showContent.setText("Show Content");
- showContent.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- showContent(parent, richTextEditor, false);
- }
- });
- Button showSource = new Button(toolbar, SWT.PUSH);
- showSource.setText("Show Source");
- showSource.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- showContent(parent, richTextEditor, true);
- }
- });
- Button clearBtn = new Button(toolbar, SWT.NONE);
- clearBtn.setText("Clear");
- clearBtn.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- richTextEditor.setText("");
- }
- });
-
- }
-
- private static void showContent(Composite parent, RichTextEditor editor, boolean source) {
- int style = SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL;
- final Shell content = new Shell(parent.getShell(), style);
- content.setLayout(new GridLayout(1, true));
- String text = editor.getText();
- if (source) {
- content.setText("Rich Text Source");
- Text viewer = new Text(content, SWT.MULTI | SWT.WRAP);
- viewer.setLayoutData(new GridData(400, 400));
- viewer.setText(text);
- viewer.setEditable(false);
- } else {
- content.setText("Rich Text");
- Browser viewer = new Browser(content, SWT.NONE);
- viewer.setLayoutData(new GridData(400, 400));
- viewer.setText(text);
- viewer.setEnabled(false);
- }
- Button ok = new Button(content, SWT.PUSH);
- ok.setLayoutData(new GridData(SWT.RIGHT, SWT.BOTTOM, false, false));
- ok.setText("OK");
- ok.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- content.dispose();
- }
- });
- content.setDefaultButton(ok);
- content.pack();
- Display display = parent.getDisplay();
- int left = (display.getClientArea().width / 2) - (content.getBounds().width / 2);
- content.setLocation(left, 40);
- content.open();
- ok.setFocus();
- }
-
-}
+++ /dev/null
-{
- "firstName": "John",
- "lastName": "Smith",
- "isAlive": true,
- "age": 27,
- "address": {
- "streetAddress": "21 2nd Street",
- "city": "New York",
- "state": "NY",
- "postalCode": "10021-3100"
- },
- "phoneNumbers": [
- {
- "type": "home",
- "number": "212 555-1234"
- },
- {
- "type": "office",
- "number": "646 555-4567"
- },
- {
- "type": "mobile",
- "number": "123 456-7890"
- }
- ],
- "children": [],
- "spouse": null
-}