[kune-commits] r1126 - in trunk/src:
main/java/org/ourproject/kune/app/client
main/java/org/ourproject/kune/blogs/client
main/java/org/ourproject/kune/chat/client
main/java/org/ourproject/kune/docs/client
main/java/org/ourproject/kune/gallery/client
main/java/org/ourproject/kune/platf/client/actions/ui
main/java/org/ourproject/kune/platf/client/app
main/java/org/ourproject/kune/platf/client/services
main/java/org/ourproject/kune/platf/client/ui/rte
main/java/org/ourproject/kune/platf/client/ui/rte/basic
main/java/org/ourproject/kune/platf/client/ui/rte/saving
main/java/org/ourproject/kune/wiki/client
main/java/org/ourproject/kune/workspace/client
main/java/org/ourproject/kune/workspace/client/editor
main/java/org/ourproject/kune/workspace/client/hello
test/java/org/ourproject/kune/platf/client/ui/rte/saving
vjrj
vjrj at ourproject.org
Fri Jun 12 00:14:10 CEST 2009
Author: vjrj
Date: 2009-06-12 00:14:06 +0200 (Fri, 12 Jun 2009)
New Revision: 1126
Added:
trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditor.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorPanel.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorPresenter.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorView.java
trunk/src/main/java/org/ourproject/kune/workspace/client/editor/ContentEditorPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/editor/ContentEditorPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/editor/ContentEditorView.java
Removed:
trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEActionSndToolbar.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEActionTopToolbar.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorNew.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorPanelNew.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorPresenterNew.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorViewNew.java
Modified:
trunk/src/main/java/org/ourproject/kune/app/client/KuneEntryPoint.java
trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java
trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineDefault.java
trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java
trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientActions.java
trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractButtonGui.java
trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/MenuDescriptor.java
trunk/src/main/java/org/ourproject/kune/platf/client/app/Application.java
trunk/src/main/java/org/ourproject/kune/platf/client/app/ApplicationDefault.java
trunk/src/main/java/org/ourproject/kune/platf/client/services/PlatformModule.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/TestRTEDialog.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditor.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPanel.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPresenter.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorView.java
trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientActions.java
trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java
trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceModule.java
trunk/src/main/java/org/ourproject/kune/workspace/client/editor/ContentEditor.java
trunk/src/main/java/org/ourproject/kune/workspace/client/hello/HelloWorldModule.java
trunk/src/test/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPresenterTest.java
Log:
Complete - task ContentEditor action extensible
Incomplete - task Hello World updated and Application Boot improved
Modified: trunk/src/main/java/org/ourproject/kune/app/client/KuneEntryPoint.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/client/KuneEntryPoint.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/app/client/KuneEntryPoint.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -28,7 +28,6 @@
import org.ourproject.kune.wiki.client.WikiClientModule;
import org.ourproject.kune.workspace.client.RegistryModule;
import org.ourproject.kune.workspace.client.WorkspaceModule;
-import org.ourproject.kune.workspace.client.hello.HelloWorldModule;
import com.allen_sauer.gwt.log.client.Log;
import com.calclab.emiteuimodule.client.EmiteUIModule;
@@ -56,8 +55,5 @@
Suco.install(new CoreModule(), new RegistryModule(), new PlatformModule(), new EmiteUIModule(),
new DocumentClientModule(), new BlogClientModule(), new WikiClientModule(), new GalleryClientModule(),
new ChatClientModule(), new WorkspaceModule());
-
- // We install our HelloWorldModule
- Suco.install(new HelloWorldModule());
}
}
Modified: trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -70,8 +70,8 @@
final String[] containersNoRoot = { TYPE_BLOG };
final String[] contents = { TYPE_POST, TYPE_UPLOADEDFILE };
- String parentMenuTitle = i18n.t("Post");
- String parentMenuTitleCtx = i18n.t("Blog");
+ final String parentMenuTitle = i18n.t("Post");
+ final String parentMenuTitleCtx = i18n.t("Blog");
createNewContainerAction(TYPE_BLOG, "images/nav/blog_add.png", i18n.t("New blog"), parentMenuTitleCtx,
i18n.t("New"), i18n.t("New blog"), Position.ctx, TYPE_ROOT);
Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineDefault.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineDefault.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -52,6 +52,7 @@
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DeferredCommand;
import com.google.gwt.user.client.Window;
+import com.google.gwt.user.client.Window.ClosingEvent;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.widgets.Button;
import com.gwtext.client.widgets.ToolbarButton;
@@ -110,8 +111,8 @@
login(user.getChatName(), user.getChatPassword());
}
});
- application.onApplicationStop(new Listener0() {
- public void onEvent() {
+ application.onClosing(new Listener<ClosingEvent>() {
+ public void onEvent(final ClosingEvent event) {
stop();
}
});
@@ -139,7 +140,7 @@
public boolean isBuddie(final XmppURI jid) {
if (roster != null) {
- for (RosterItem item : roster) {
+ for (final RosterItem item : roster) {
if (item.getJID().equalsNoResource(jid)) {
return true;
}
@@ -168,7 +169,7 @@
if (subject != null) {
DeferredCommand.addCommand(new Command() {
public void execute() {
- RoomUI roomUI = (RoomUI) room.getData(ChatUI.class);
+ final RoomUI roomUI = (RoomUI) room.getData(ChatUI.class);
if (roomUI != null) {
roomUI.setSubject(subject);
}
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -70,8 +70,8 @@
final String[] containersNoRoot = { TYPE_FOLDER };
final String[] contents = { TYPE_DOCUMENT, TYPE_UPLOADEDFILE };
- String parentMenuTitle = i18n.t("File");
- String parentMenuTitleCtx = i18n.t("Folder");
+ final String parentMenuTitle = i18n.t("File");
+ final String parentMenuTitleCtx = i18n.t("Folder");
createNewContainerAction(TYPE_FOLDER, "images/nav/folder_add.png", i18n.t("New folder"), parentMenuTitleCtx,
i18n.t("New"), i18n.t("New folder"), Position.ctx, TYPE_ROOT, TYPE_FOLDER);
Modified: trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientActions.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientActions.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -69,8 +69,8 @@
final String[] containersNoRoot = { TYPE_ALBUM };
final String[] contents = { TYPE_UPLOADEDFILE };
- String parentMenuTitle = i18n.t("File");
- String parentMenuTitleCtx = i18n.t("Album");
+ final String parentMenuTitle = i18n.t("File");
+ final String parentMenuTitleCtx = i18n.t("Album");
createNewContainerAction(TYPE_ALBUM, "images/nav/gallery_add.png", i18n.t("New sub-album"), parentMenuTitleCtx,
i18n.t("New"), i18n.t("New sub-album"), Position.ctx, TYPE_ALBUM);
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractButtonGui.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractButtonGui.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/AbstractButtonGui.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -67,7 +67,11 @@
@Override
protected void setIcon(final ImageResource imageResource) {
if (imageResource != null) {
- button.setIconCls(ImgConstants.CSS_SUFFIX + imageResource.getName());
+ if (action.getValue(Action.NAME) == null) {
+ button.setIconCls(ImgConstants.CSS_SUFFIX + imageResource.getName());
+ } else {
+ button.setIcon(ImgConstants.PATH_PREFIX + imageResource.getName() + ".png");
+ }
}
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/MenuDescriptor.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/MenuDescriptor.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ui/MenuDescriptor.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -27,6 +27,10 @@
this(new BaseAction(text, null, icon));
}
+ public MenuDescriptor(final String text, final String tooltip) {
+ this(new BaseAction(text, tooltip, null));
+ }
+
public MenuDescriptor(final String text, final String tooltip, final ImageResource icon) {
this(new BaseAction(text, tooltip, icon));
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/app/Application.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/app/Application.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/app/Application.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -19,13 +19,15 @@
*/
package org.ourproject.kune.platf.client.app;
+import com.calclab.suco.client.events.Listener;
import com.calclab.suco.client.events.Listener0;
+import com.google.gwt.user.client.Window.ClosingEvent;
public interface Application {
- void onApplicationStart(Listener0 listener);
+ void onClosing(Listener<ClosingEvent> listener);
- void onApplicationStop(Listener0 listener);
+ void onStarting(Listener0 listener);
void start();
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/app/ApplicationDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/app/ApplicationDefault.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/app/ApplicationDefault.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -27,7 +27,9 @@
import org.ourproject.kune.platf.client.utils.PrefetchUtilities;
import com.allen_sauer.gwt.log.client.Log;
+import com.calclab.suco.client.events.Event;
import com.calclab.suco.client.events.Event0;
+import com.calclab.suco.client.events.Listener;
import com.calclab.suco.client.events.Listener0;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DeferredCommand;
@@ -40,30 +42,30 @@
public class ApplicationDefault implements Application {
private final Session session;
- private final Event0 onAppStart;
- private final Event0 onAppStop;
+ private final Event0 onAppStarting;
+ private final Event<ClosingEvent> onAppClosing;
public ApplicationDefault(final Session session) {
this.session = session;
- this.onAppStart = new Event0("onApplicationStart");
- this.onAppStop = new Event0("onApplicationStop");
+ this.onAppStarting = new Event0("onAppStarting");
+ this.onAppClosing = new Event<ClosingEvent>("onAppClossing");
Window.addWindowClosingHandler(new ClosingHandler() {
public void onWindowClosing(final ClosingEvent event) {
- stop();
+ stop(event);
}
});
}
- public void onApplicationStart(final Listener0 listener) {
- onAppStart.add(listener);
+ public void onClosing(final Listener<ClosingEvent> listener) {
+ onAppClosing.add(listener);
}
- public void onApplicationStop(final Listener0 listener) {
- onAppStop.add(listener);
+ public void onStarting(final Listener0 listener) {
+ onAppStarting.add(listener);
}
public void start() {
- onAppStart.fire();
+ onAppStarting.fire();
PrefetchUtilities.preFetchImpImages();
getInitData();
final Timer prefetchTimer = new Timer() {
@@ -98,7 +100,7 @@
});
}
- private void stop() {
- onAppStop.fire();
+ private void stop(final ClosingEvent event) {
+ onAppClosing.fire(event);
}
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/services/PlatformModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/services/PlatformModule.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/services/PlatformModule.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -19,11 +19,8 @@
\*/
package org.ourproject.kune.platf.client.services;
-import org.ourproject.kune.platf.client.actions.ActionManager;
-import org.ourproject.kune.platf.client.actions.toolbar.ActionToolbarPanel;
import org.ourproject.kune.platf.client.actions.ui.BasicGuiBinding;
import org.ourproject.kune.platf.client.actions.ui.GuiBindingsRegister;
-import org.ourproject.kune.platf.client.actions.ui.TestButton;
import org.ourproject.kune.platf.client.app.Application;
import org.ourproject.kune.platf.client.app.ApplicationComponentGroup;
import org.ourproject.kune.platf.client.app.ApplicationDefault;
@@ -57,11 +54,9 @@
import org.ourproject.kune.platf.client.ui.palette.SimplePalettePanel;
import org.ourproject.kune.platf.client.ui.palette.SimplePalettePresenter;
import org.ourproject.kune.platf.client.ui.rte.TestRTEDialog;
-import org.ourproject.kune.platf.client.ui.rte.basic.RTEActionSndToolbar;
-import org.ourproject.kune.platf.client.ui.rte.basic.RTEActionTopToolbar;
-import org.ourproject.kune.platf.client.ui.rte.basic.RTEditorNew;
-import org.ourproject.kune.platf.client.ui.rte.basic.RTEditorPanelNew;
-import org.ourproject.kune.platf.client.ui.rte.basic.RTEditorPresenterNew;
+import org.ourproject.kune.platf.client.ui.rte.basic.RTEditor;
+import org.ourproject.kune.platf.client.ui.rte.basic.RTEditorPanel;
+import org.ourproject.kune.platf.client.ui.rte.basic.RTEditorPresenter;
import org.ourproject.kune.platf.client.ui.rte.edithtml.EditHtmlDialog;
import org.ourproject.kune.platf.client.ui.rte.edithtml.EditHtmlDialogPanel;
import org.ourproject.kune.platf.client.ui.rte.edithtml.EditHtmlDialogPresenter;
@@ -119,7 +114,6 @@
import org.ourproject.kune.platf.client.ui.rte.saving.RTESavingEditorPresenter;
import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
import org.ourproject.kune.platf.client.utils.TimerWrapper;
-import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
import com.calclab.suco.client.events.Listener0;
import com.calclab.suco.client.ioc.decorator.NoDecoration;
@@ -289,22 +283,6 @@
}
});
- register(NoDecoration.class, new Factory<RTEActionTopToolbar>(RTEActionTopToolbar.class) {
- @Override
- public RTEActionTopToolbar create() {
- final ActionToolbarPanel<Object> panel = new ActionToolbarPanel<Object>(p(ActionManager.class));
- final RTEActionTopToolbar toolbar = new RTEActionTopToolbar(panel);
- return toolbar;
- }
- }, new Factory<RTEActionSndToolbar>(RTEActionSndToolbar.class) {
- @Override
- public RTEActionSndToolbar create() {
- final ActionToolbarPanel<Object> panel = new ActionToolbarPanel<Object>(p(ActionManager.class), true);
- final RTEActionSndToolbar toolbar = new RTEActionSndToolbar(panel);
- return toolbar;
- }
- });
-
register(Singleton.class, new Factory<TimerWrapper>(TimerWrapper.class) {
@Override
public TimerWrapper create() {
@@ -333,14 +311,32 @@
}
});
- register(NoDecoration.class,new Factory<RTEditorNew>(RTEditorNew.class) {
+ register(Singleton.class, new Factory<ImgResources>(ImgResources.class) {
@Override
- public RTEditorNew create() {
- final RTEditorPresenterNew presenter = new RTEditorPresenterNew(i(I18nTranslationService.class),
+ public ImgResources create() {
+ final ImgResources instance = GWT.create(ImgResources.class);
+ StyleInjector.injectStylesheet(instance.css().getText());
+ return instance;
+ }
+ });
+
+ register(Singleton.class, new Factory<RTEImgResources>(RTEImgResources.class) {
+ @Override
+ public RTEImgResources create() {
+ final RTEImgResources instance = GWT.create(RTEImgResources.class);
+ StyleInjector.injectStylesheet(instance.css().getText());
+ return instance;
+ }
+ });
+
+ register(NoDecoration.class,new Factory<RTEditor>(RTEditor.class) {
+ @Override
+ public RTEditor create() {
+ final RTEditorPresenter presenter = new RTEditorPresenter(i(I18nTranslationService.class),
i(Session.class), i(RTEImgResources.class), p(InsertLinkDialog.class),
p(ColorWebSafePalette.class), p(EditHtmlDialog.class), p(InsertImageDialog.class),
p(InsertMediaDialog.class), p(InsertTableDialog.class), p(InsertSpecialCharDialog.class), i(DeferredCommandWrapper.class));
- final RTEditorPanelNew panel = new RTEditorPanelNew(presenter, i(I18nUITranslationService.class),
+ final RTEditorPanel panel = new RTEditorPanel(presenter, i(I18nUITranslationService.class),
i(GlobalShortcutRegister.class), i(GuiBindingsRegister.class));
presenter.init(panel);
return presenter;
@@ -348,10 +344,14 @@
}, new Factory<RTESavingEditor>(RTESavingEditor.class) {
@Override
public RTESavingEditor create() {
- final RTESavingEditorPresenter presenter = new RTESavingEditorPresenter(i(RTEditorNew.class), true,
- i(I18nTranslationService.class), i(StateManager.class), i(DeferredCommandWrapper.class),
- i(RTEImgResources.class), i(TimerWrapper.class));
- final RTESavingEditorPanel panel = new RTESavingEditorPanel();
+ final RTESavingEditorPresenter presenter = new RTESavingEditorPresenter(i(I18nTranslationService.class),
+ i(Session.class), i(RTEImgResources.class), p(InsertLinkDialog.class),
+ p(ColorWebSafePalette.class), p(EditHtmlDialog.class), p(InsertImageDialog.class),
+ p(InsertMediaDialog.class), p(InsertTableDialog.class), p(InsertSpecialCharDialog.class), i(DeferredCommandWrapper.class), true,
+ i(StateManager.class),
+ i(TimerWrapper.class));
+ final RTESavingEditorPanel panel = new RTESavingEditorPanel(presenter, i(I18nUITranslationService.class),
+ i(GlobalShortcutRegister.class), i(GuiBindingsRegister.class));
presenter.init(panel);
return presenter;
}
@@ -371,24 +371,6 @@
}
});
- register(Singleton.class, new Factory<ImgResources>(ImgResources.class) {
- @Override
- public ImgResources create() {
- final ImgResources instance = GWT.create(ImgResources.class);
- StyleInjector.injectStylesheet(instance.css().getText());
- return instance;
- }
- });
-
- register(Singleton.class, new Factory<RTEImgResources>(RTEImgResources.class) {
- @Override
- public RTEImgResources create() {
- final RTEImgResources instance = GWT.create(RTEImgResources.class);
- StyleInjector.injectStylesheet(instance.css().getText());
- return instance;
- }
- });
-
registerDecorator(EditHtmlGroup.class, new EditHtmlGroup(container));
register(Singleton.class, new Factory<EditHtmlDialog>(EditHtmlDialog.class) {
@@ -548,21 +530,16 @@
}
});
- register(Singleton.class, new Factory<TestButton>(TestButton.class) {
- @Override
- public TestButton create() {
- final TestButton btn = new TestButton(i(WorkspaceSkeleton.class), i(GuiBindingsRegister.class), i(ImgResources.class));
- return btn;
- }
- });
-
-
- // i(TestButton.class);
-
i(ApplicationComponentGroup.class).createAll();
i(ToolGroup.class).createAll();
i(Application.class).start();
- //i(HelloWorld.class);
+ // We install our HelloWorldModule
+ //Suco.install(new HelloWorldModule());
+
+ // And because nobody use this module, we get the class (to force the
+ // creation of the
+ // Helloworld instance):
+ //i(HelloWorld.class);
}
}
\ No newline at end of file
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/TestRTEDialog.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/TestRTEDialog.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/TestRTEDialog.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -2,8 +2,7 @@
import org.ourproject.kune.platf.client.actions.ui.ComplexToolbar;
import org.ourproject.kune.platf.client.ui.dialogs.BasicDialog;
-import org.ourproject.kune.platf.client.ui.rte.basic.RTEditorNew;
-import org.ourproject.kune.platf.client.ui.rte.basic.RTEditorPanelNew;
+import org.ourproject.kune.platf.client.ui.rte.basic.RTEditorPanel;
import org.ourproject.kune.platf.client.ui.rte.saving.RTESavingEditor;
import com.google.gwt.user.client.ui.VerticalPanel;
@@ -20,10 +19,9 @@
dialog = new BasicDialog("Testing RTE", false, false, 650, 200);
final VerticalPanel vp = new VerticalPanel();
- final RTEditorNew basicEditor = editor.getBasicEditor();
- vp.add((ComplexToolbar) basicEditor.getTopBar());
- vp.add((ComplexToolbar) basicEditor.getSndBar());
- final RTEditorPanelNew editorPanel = (RTEditorPanelNew) basicEditor.getEditorArea();
+ vp.add((ComplexToolbar) editor.getTopBar());
+ vp.add((ComplexToolbar) editor.getSndBar());
+ final RTEditorPanel editorPanel = (RTEditorPanel) editor.getEditorArea();
vp.add(editorPanel);
vp.setWidth("100%");
dialog.add(vp);
@@ -38,11 +36,11 @@
}
public void setExtended(final boolean extended) {
- editor.getBasicEditor().setExtended(extended);
+ editor.setExtended(extended);
}
public void show() {
- editor.getBasicEditor().attach();
+ editor.attach();
dialog.show();
}
}
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEActionSndToolbar.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEActionSndToolbar.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEActionSndToolbar.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -1,13 +0,0 @@
-package org.ourproject.kune.platf.client.ui.rte.basic;
-
-import org.ourproject.kune.platf.client.actions.toolbar.ActionToolbar;
-import org.ourproject.kune.platf.client.actions.toolbar.ActionToolbarPresenter;
-import org.ourproject.kune.platf.client.actions.toolbar.ActionToolbarView;
-
-public class RTEActionSndToolbar extends ActionToolbarPresenter<Object> implements ActionToolbar<Object> {
-
- public RTEActionSndToolbar(ActionToolbarView<Object> toolbar) {
- super(toolbar);
- }
-
-}
\ No newline at end of file
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEActionTopToolbar.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEActionTopToolbar.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEActionTopToolbar.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -1,13 +0,0 @@
-package org.ourproject.kune.platf.client.ui.rte.basic;
-
-import org.ourproject.kune.platf.client.actions.toolbar.ActionToolbar;
-import org.ourproject.kune.platf.client.actions.toolbar.ActionToolbarPresenter;
-import org.ourproject.kune.platf.client.actions.toolbar.ActionToolbarView;
-
-public class RTEActionTopToolbar extends ActionToolbarPresenter<Object> implements ActionToolbar<Object> {
-
- public RTEActionTopToolbar(ActionToolbarView<Object> toolbar) {
- super(toolbar);
- }
-
-}
\ No newline at end of file
Copied: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditor.java (from rev 1123, trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorNew.java)
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorNew.java 2009-06-09 18:56:54 UTC (rev 1123)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditor.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -0,0 +1,233 @@
+package org.ourproject.kune.platf.client.ui.rte.basic;
+
+import org.ourproject.kune.platf.client.View;
+import org.ourproject.kune.platf.client.actions.AbstractAction;
+import org.ourproject.kune.platf.client.actions.KeyStroke;
+import org.ourproject.kune.platf.client.actions.ui.GuiActionDescCollection;
+import org.ourproject.kune.platf.client.actions.ui.GuiActionDescrip;
+import org.ourproject.kune.platf.client.actions.ui.GuiAddCondition;
+import org.ourproject.kune.platf.client.actions.ui.MenuDescriptor;
+
+import com.calclab.suco.client.events.Listener0;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The Interface RTEditor.
+ */
+public interface RTEditor {
+
+ /**
+ * The TOPBAR location used in {@link GuiActionDescrip#setLocation(String)}
+ * for put the actions in the correct position
+ */
+ String TOPBAR = "rte-topbar";
+
+ /**
+ * The SNDBAR location used in {@link GuiActionDescrip#setLocation(String)}
+ * for put the actions in the correct position
+ */
+ String SNDBAR = "rte-sndbar";
+
+ /**
+ * The LINKCTX location used in {@link GuiActionDescrip#setLocation(String)}
+ * for put the actions in the links context menu
+ */
+ String LINKCTX = "rte-linkctx";
+
+ /**
+ * Adds a action description
+ *
+ * @param action
+ * the action
+ */
+ void addAction(GuiActionDescrip action);
+
+ /**
+ * Adds some action descriptions
+ *
+ * @param actions
+ * the actions
+ */
+ void addActionCollection(GuiActionDescCollection actions);
+
+ /**
+ * Adds some action descriptions
+ *
+ * @param action
+ * the action
+ */
+ void addActions(GuiActionDescrip... actions);
+
+ /**
+ * Adds the on edit listener (fired when the user do some edit).
+ *
+ * @param listener
+ * the listener
+ */
+ void addOnEditListener(Listener0 listener);
+
+ /**
+ * Attach (used for lazy action loading)
+ */
+ void attach();
+
+ /**
+ * Detach.
+ */
+ void detach();
+
+ /**
+ * Gets the basic add condition (if the editor is of "basic" type).
+ *
+ * @return the basic add condition
+ */
+ GuiAddCondition getBasicAddCondition();
+
+ /**
+ * Gets the "Edit" menu.
+ *
+ * @return the edits the menu
+ */
+ MenuDescriptor getEditMenu();
+
+ /**
+ * Gets the editor area (used for gui layout)
+ *
+ * @return the editor area
+ */
+ View getEditorArea();
+
+ /**
+ * Gets the extended add condition (editor can be a extended editor)
+ *
+ * @return the extended add condition
+ */
+ GuiAddCondition getExtendedAddCondition();
+
+ /**
+ * Gets the file menu.
+ *
+ * @return the file menu
+ */
+ MenuDescriptor getFileMenu();
+
+ /**
+ * Gets the format menu descriptor.
+ *
+ * @return the format menu
+ */
+ MenuDescriptor getFormatMenu();
+
+ /**
+ * Gets the html of the text area.
+ *
+ * @return the html
+ */
+ String getHtml();
+
+ /**
+ * Gets the insert menu descriptor.
+ *
+ * @return the insert menu
+ */
+ MenuDescriptor getInsertMenu();
+
+ /**
+ * Gets the link ctx menu descriptor.
+ *
+ * @return the link ctx menu
+ */
+ MenuDescriptor getLinkCtxMenu();
+
+ /**
+ * Gets the second bar of the editor.
+ *
+ * @return the snd bar
+ */
+ View getSndBar();
+
+ /**
+ * Gets the text of the text area (not the html).
+ *
+ * @return the text
+ */
+ String getText();
+
+ /**
+ * Gets the top bar.
+ *
+ * @return the top bar
+ */
+ View getTopBar();
+
+ /**
+ * Reset.
+ */
+ void reset();
+
+ /**
+ * Sets an action shortcut.
+ *
+ * @param key
+ * the key
+ * @param action
+ * the action
+ */
+ void setActionShortcut(KeyStroke key, AbstractAction action);
+
+ /**
+ * Sets some action shortcut, some principal, other similar (used when some
+ * UI buttons do the same action).
+ *
+ * @param key
+ * the key
+ * @param mainAction
+ * the main action
+ * @param actions
+ * the actions
+ */
+ void setActionShortcut(KeyStroke key, AbstractAction mainAction, AbstractAction... actions);
+
+ /**
+ * Sets that editor must be extended type (if browser permit it).
+ *
+ * @param extended
+ * the new extended
+ */
+ void setExtended(boolean extended);
+
+ /**
+ * Sets the focus on text editor.
+ *
+ * @param focus
+ * the new focus
+ */
+ void setFocus(boolean focus);
+
+ /**
+ * Sets the html of the editor.
+ *
+ * @param html
+ * the new html
+ */
+ void setHtml(String html);
+
+ /**
+ * We can define some location ("topbar", "second bar", etc) to action
+ * descriptors.
+ *
+ * @param location
+ * the location
+ * @param descripts
+ * the descripts
+ */
+ void setLocation(String location, GuiActionDescrip... descripts);
+
+ /**
+ * Sets the text of the editor.
+ *
+ * @param text
+ * the new text
+ */
+ void setText(String text);
+}
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorNew.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorNew.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorNew.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -1,66 +0,0 @@
-package org.ourproject.kune.platf.client.ui.rte.basic;
-
-import org.ourproject.kune.platf.client.View;
-import org.ourproject.kune.platf.client.actions.AbstractAction;
-import org.ourproject.kune.platf.client.actions.KeyStroke;
-import org.ourproject.kune.platf.client.actions.ui.GuiActionDescCollection;
-import org.ourproject.kune.platf.client.actions.ui.GuiActionDescrip;
-import org.ourproject.kune.platf.client.actions.ui.GuiAddCondition;
-import org.ourproject.kune.platf.client.actions.ui.MenuDescriptor;
-
-import com.calclab.suco.client.events.Listener0;
-
-public interface RTEditorNew {
-
- String TOPBAR = "rte-topbar";
- String SNDBAR = "rte-sndbar";
- String LINKCTX = "rte-linkctx";
-
- void addAction(GuiActionDescrip action);
-
- void addActions(GuiActionDescCollection actions);
-
- void addOnEditListener(Listener0 listener);
-
- void attach();
-
- void detach();
-
- GuiAddCondition getBasicAddCondition();
-
- MenuDescriptor getEditMenu();
-
- View getEditorArea();
-
- GuiAddCondition getExtendedAddCondition();
-
- MenuDescriptor getFileMenu();
-
- MenuDescriptor getFormatMenu();
-
- String getHtml();
-
- MenuDescriptor getInsertMenu();
-
- MenuDescriptor getLinkCtxMenu();
-
- View getSndBar();
-
- String getText();
-
- View getTopBar();
-
- void reset();
-
- void setActionShortcut(KeyStroke key, AbstractAction action);
-
- void setActionShortcut(KeyStroke key, AbstractAction mainAction, AbstractAction... actions);
-
- void setExtended(boolean extended);
-
- void setFocus(boolean focus);
-
- void setHtml(String html);
-
- void setText(String text);
-}
Copied: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorPanel.java (from rev 1124, trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorPanelNew.java)
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorPanelNew.java 2009-06-10 14:37:53 UTC (rev 1124)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorPanel.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -0,0 +1,518 @@
+package org.ourproject.kune.platf.client.ui.rte.basic;
+
+import java.util.Date;
+
+import org.cobogw.gwt.user.client.CSS;
+import org.ourproject.kune.platf.client.View;
+import org.ourproject.kune.platf.client.actions.AbstractAction;
+import org.ourproject.kune.platf.client.actions.ActionEvent;
+import org.ourproject.kune.platf.client.actions.ui.AbstractComplexGuiItem;
+import org.ourproject.kune.platf.client.actions.ui.ComplexToolbar;
+import org.ourproject.kune.platf.client.actions.ui.GuiActionDescCollection;
+import org.ourproject.kune.platf.client.actions.ui.GuiActionDescrip;
+import org.ourproject.kune.platf.client.actions.ui.GuiBindingsRegister;
+import org.ourproject.kune.platf.client.errors.UIException;
+import org.ourproject.kune.platf.client.i18n.I18nUITranslationService;
+import org.ourproject.kune.platf.client.shortcuts.GlobalShortcutRegister;
+import org.ourproject.kune.platf.client.ui.noti.NotifyUser;
+import org.ourproject.kune.platf.client.ui.rte.RichTextArea;
+import org.ourproject.kune.platf.client.ui.rte.RichTextArea.BasicFormatter;
+import org.ourproject.kune.platf.client.ui.rte.RichTextArea.ExtendedFormatter;
+import org.ourproject.kune.platf.client.ui.rte.RichTextArea.FontSize;
+import org.ourproject.kune.platf.client.ui.rte.RichTextArea.Justification;
+import org.ourproject.kune.platf.client.ui.rte.insertlink.LinkExecutableUtils;
+import org.ourproject.kune.platf.client.ui.rte.insertlink.LinkInfo;
+import org.xwiki.gwt.dom.client.DocumentFragment;
+import org.xwiki.gwt.dom.client.Range;
+import org.xwiki.gwt.dom.client.Selection;
+
+import com.allen_sauer.gwt.log.client.Log;
+import com.google.gwt.dom.client.Element;
+import com.google.gwt.dom.client.Node;
+import com.google.gwt.event.dom.client.BlurEvent;
+import com.google.gwt.event.dom.client.BlurHandler;
+import com.google.gwt.event.dom.client.FocusEvent;
+import com.google.gwt.event.dom.client.FocusHandler;
+import com.google.gwt.event.dom.client.KeyCodes;
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.DeferredCommand;
+import com.google.gwt.user.client.Event;
+
+public class RTEditorPanel extends AbstractComplexGuiItem implements RTEditorView, FocusHandler, BlurHandler {
+
+ private static final Element NO_ELEMENT = null;
+ private final I18nUITranslationService i18n;
+ private final BasicFormatter basic;
+ private final ExtendedFormatter extended;
+ private final RTEditorPresenter presenter;
+ private final GlobalShortcutRegister globalShortcutReg;
+ private final RTELinkPopup linkCtxMenu;
+ private final RichTextArea rta;
+ private final ComplexToolbar topBar;
+ private final ComplexToolbar sndBar;
+
+ public RTEditorPanel(final RTEditorPresenter presenter, final I18nUITranslationService i18n,
+ final GlobalShortcutRegister globalShortcutReg, final GuiBindingsRegister bindReg) {
+ super();
+ this.presenter = presenter;
+ this.i18n = i18n;
+ this.globalShortcutReg = globalShortcutReg;
+ rta = new RichTextArea();
+ basic = rta.getBasicFormatter();
+ extended = rta.getExtendedFormatter();
+ topBar = new ComplexToolbar(bindReg);
+ sndBar = new ComplexToolbar(bindReg);
+ sndBar.setNormalStyle();
+ rta.addFocusHandler(this);
+ rta.addBlurHandler(this);
+ linkCtxMenu = new RTELinkPopup();
+ initWidget(rta);
+ setWidth("96%");
+ setHeight("100%");
+ }
+
+ public void addActions(final GuiActionDescCollection items) {
+ super.addAll(items);
+ for (final GuiActionDescrip item : items) {
+ final String location = item.getLocation();
+ if (location == null) {
+ throw new UIException("Unknown location in action item: " + item);
+ }
+ if (location.equals(RTEditor.TOPBAR)) {
+ topBar.add(item);
+ } else if (location.equals(RTEditor.SNDBAR)) {
+ sndBar.add(item);
+ } else if (location.equals(RTEditor.LINKCTX)) {
+ linkCtxMenu.add(item);
+ } else {
+ throw new UIException("Unknown location in action item: " + item);
+ }
+ }
+ }
+
+ public void adjustSize(final int height) {
+ setHeight(Integer.toString(height));
+ }
+
+ public boolean canBeBasic() {
+ return basic != null;
+ }
+
+ public boolean canBeExtended() {
+ return extended != null;
+ }
+
+ public void copy() {
+ extended.copy();
+ }
+
+ public void createLink(final String url) {
+ extended.createLink(url);
+ }
+
+ public void cut() {
+ extended.cut();
+ }
+
+ public void delete() {
+ extended.delete();
+ }
+
+ public void focus() {
+ setFocus(true);
+ }
+
+ public String getFont() {
+ final Element currentElement = getCurrentElement();
+ return currentElement == NO_ELEMENT ? "" : currentElement.getStyle().getProperty(CSS.A.FONT_FAMILY);
+ }
+
+ public String getFontSize() {
+ final Element currentElement = getCurrentElement();
+ return currentElement == NO_ELEMENT ? "" : currentElement.getStyle().getProperty("size");
+ }
+
+ public String getHTML() {
+ return rta.getHTML();
+ }
+
+ public LinkInfo getLinkInfoIfHref() {
+ LinkInfo linkinfo = null;
+ final org.xwiki.gwt.dom.client.Element selectedAnchor = selectAndGetLink();
+ if (selectedAnchor == null) {
+ linkinfo = new LinkInfo(getSelectionText());
+ } else {
+ linkinfo = LinkInfo.parse(selectedAnchor);
+ }
+ Log.debug("Link info: " + linkinfo);
+ return linkinfo;
+ }
+
+ public void getRangeInfo() {
+ // Selection selection = getSelection();
+ // String info = "range count: " + selection.getRangeCount() +
+ // "<br/>focus offset: " + selection.getFocusOffset()
+ // + "<br/>anchor offset:" + selection.getAnchorOffset() +
+ // "<br/>range 0 as html: "
+ // + selection.getRangeAt(0).toHTML();
+ // NotifyUser.info(info);
+ final String info = "range count: " + getFstRange().getCommonAncestorContainer().getFirstChild().getNodeName();
+ NotifyUser.info(info);
+ }
+
+ public String getSelectionText() {
+ return getFstRange().cloneContents().getInnerText();
+ }
+
+ public View getSndBar() {
+ return sndBar;
+ }
+
+ public String getText() {
+ return rta.getText();
+ }
+
+ public View getTopBar() {
+ return topBar;
+ }
+
+ public void hideLinkCtxMenu() {
+ linkCtxMenu.hide();
+ }
+
+ public void insertBlockquote() {
+ final DocumentFragment extracted = getFstRange().cloneContents();
+ // delete();
+ insertHtml("<blockquote>" + extracted.getInnerHTML() + "</blockquote>");
+ focus();
+ }
+
+ public void insertComment(final String author) {
+ createCommentAndSelectIt(author, null);
+ }
+
+ public void insertCommentNotUsingSelection(final String author) {
+ getFstRange().collapse(false);
+ createCommentAndSelectIt(author, null);
+ focus();
+ }
+
+ public void insertCommentUsingSelection(final String author) {
+ final DocumentFragment extracted = getFstRange().cloneContents();
+ extended.delete();
+ final String comment = extracted.getInnerText();
+ createCommentAndSelectIt(author, comment);
+ focus();
+ }
+
+ public void insertHorizontalRule() {
+ extended.insertHorizontalRule();
+ }
+
+ public void insertHtml(final String html) {
+ extended.insertHtml(html);
+ }
+
+ public void insertImage(final String url) {
+ extended.insertImage(url);
+ }
+
+ public void insertOrderedList() {
+ extended.insertOrderedList();
+ }
+
+ public void insertUnorderedList() {
+ extended.insertUnorderedList();
+ }
+
+ public boolean isAnythingSelected() {
+ return !rta.getDocument().getSelection().isCollapsed();
+ }
+
+ public boolean isBold() {
+ return basic.isBold();
+ }
+
+ public boolean isCollapsed() {
+ return getFstRange().isCollapsed();
+ }
+
+ public boolean isCtxMenuVisible() {
+ return linkCtxMenu.isVisible();
+ }
+
+ public boolean isItalic() {
+ return basic.isItalic();
+ }
+
+ public boolean isLink() {
+ boolean isLink = false;
+ if (isAttached() && LinkExecutableUtils.getSelectedAnchor(rta) != null) {
+ isLink = true;
+ }
+ return isLink;
+ }
+
+ public boolean isStrikethrough() {
+ return extended.isStrikethrough();
+ }
+
+ public boolean isSubscript() {
+ return basic.isSubscript();
+ }
+
+ public boolean isSuperscript() {
+ return basic.isSuperscript();
+ }
+
+ public boolean isUnderlined() {
+ return basic.isUnderlined();
+ }
+
+ public void justifyCenter() {
+ basic.setJustification(Justification.CENTER);
+ }
+
+ public void justifyLeft() {
+ basic.setJustification(Justification.LEFT);
+ }
+
+ public void justifyRight() {
+ basic.setJustification(Justification.RIGHT);
+ }
+
+ public void leftIndent() {
+ extended.leftIndent();
+ }
+
+ public void onBlur(final BlurEvent event) {
+ presenter.onLostFocus();
+ }
+
+ @Override
+ public void onBrowserEvent(final Event event) {
+ switch (DOM.eventGetType(event)) {
+ case Event.ONCLICK:
+ updateStatus();
+ updateLinkInfo();
+ super.onBrowserEvent(event);
+ break;
+ case Event.ONKEYPRESS:
+ final AbstractAction rtaActionItem = super.getAction(event);
+ // FIXME
+ // final Action actionItem = rtaActionItem == null ?
+ // globalShortcutReg.get(event) : rtaActionItem;
+ final AbstractAction actionItem = rtaActionItem == null ? null : rtaActionItem;
+ if (actionItem == null) {
+ super.onBrowserEvent(event);
+ updateStatus();
+ updateLinkInfo();
+ if (isAnEditionKey(event.getKeyCode())) {
+ fireEdit();
+ }
+ } else {
+ updateStatus();
+ fireEdit();
+ event.stopPropagation();
+ event.preventDefault();
+ actionItem.actionPerformed(new ActionEvent(this, event));
+ updateStatus();
+ }
+ break;
+ default:
+ // Rest of events
+ super.onBrowserEvent(event);
+ updateStatus();
+ }
+ }
+
+ public void onFocus(final FocusEvent event) {
+ presenter.onEditorFocus();
+ }
+
+ public void paste() {
+ extended.paste();
+ }
+
+ public void redo() {
+ extended.redo();
+ }
+
+ public void removeFormat() {
+ extended.removeFormat();
+ }
+
+ public void rightIndent() {
+ extended.rightIndent();
+ }
+
+ public void selectAll() {
+ basic.selectAll();
+ }
+
+ public void selectLink() {
+ selectAndGetLink();
+ }
+
+ public void setBackColor(final String color) {
+ basic.setBackColor(color);
+ }
+
+ public void setFocus(final boolean focused) {
+ rta.setFocus(focused);
+ }
+
+ public void setFontName(final String name) {
+ basic.setFontName(name);
+ }
+
+ public void setFontSize(final FontSize size) {
+ basic.setFontSize(size);
+ }
+
+ public void setForeColor(final String color) {
+ basic.setForeColor(color);
+ }
+
+ public void setHTML(final String html) {
+ rta.setHTML(html);
+ }
+
+ public void setText(final String text) {
+ rta.setText(text);
+ }
+
+ public void showLinkCtxMenu() {
+ DeferredCommand.addCommand(new Command() {
+ public void execute() {
+ final org.xwiki.gwt.dom.client.Element selectedAnchor = LinkExecutableUtils.getSelectedAnchor(rta);
+ if (selectedAnchor != null) {
+ linkCtxMenu.show(RTEditorPanel.this.getAbsoluteLeft() + selectedAnchor.getAbsoluteLeft(),
+ RTEditorPanel.this.getAbsoluteTop() + selectedAnchor.getAbsoluteTop() + 20);
+ }
+ }
+ });
+
+ }
+
+ public void toggleBold() {
+ basic.toggleBold();
+ }
+
+ public void toggleItalic() {
+ basic.toggleItalic();
+ }
+
+ public void toggleStrikethrough() {
+ extended.toggleStrikethrough();
+ }
+
+ public void toggleSubscript() {
+ basic.toggleSubscript();
+ }
+
+ public void toggleSuperscript() {
+ basic.toggleSuperscript();
+ }
+
+ public void toggleUnderline() {
+ basic.toggleUnderline();
+ }
+
+ public void undo() {
+ extended.undo();
+ }
+
+ public void unlink() {
+ extended.removeLink();
+ }
+
+ protected void fireEdit() {
+ presenter.fireOnEdit();
+ }
+
+ protected Element getElement(final Node inputNode) {
+ Node node = inputNode;
+ if (node.getNodeType() != Node.ELEMENT_NODE) {
+ node = node.getParentNode();
+ }
+ if (node == null || node.getNodeType() != Node.ELEMENT_NODE) {
+ return null;
+ }
+ return Element.as(node);
+ }
+
+ private void createCommentAndSelectIt(final String author, final String comment) {
+ final Element commentEl = createCommentElement(author, comment);
+ final Range innerCommentRange = rta.getDocument().createRange();
+ getFstRange().insertNode(commentEl);
+ innerCommentRange.selectNodeContents(commentEl.getFirstChild());
+ getSelection().addRange(innerCommentRange);
+ fireEdit();
+ }
+
+ private Element createCommentElement(final String userName, final String insertComment) {
+ final String time = i18n.formatDateWithLocale(new Date(), true);
+ final Element span = rta.getDocument().createSpanElement();
+ final String comment = insertComment == null ? i18n.t("type your comment here") : insertComment;
+ span.setInnerHTML("<em>" + comment + "</em> -" + userName + " " + time);
+ DOM.setElementProperty(span.<com.google.gwt.user.client.Element> cast(), "className", "k-rte-comment");
+ // insertHtml(" " + span.getString() + " ");
+ return span;
+ }
+
+ private Element getCurrentElement() {
+ if (getSelection().getRangeCount() > 0) {
+ return getElement(getSelection().getRangeAt(0).getStartContainer());
+ } else {
+ return NO_ELEMENT;
+ }
+ }
+
+ private Range getFstRange() {
+ return getSelection().getRangeAt(0);
+ }
+
+ private Selection getSelection() {
+ return rta.getDocument().getSelection();
+ }
+
+ private boolean isAnEditionKey(final int keyCode) {
+ switch (keyCode) { // NOPMD by vjrj on 5/06/09 19:14
+ case KeyCodes.KEY_HOME:
+ case KeyCodes.KEY_END:
+ case KeyCodes.KEY_UP:
+ case KeyCodes.KEY_DOWN:
+ case KeyCodes.KEY_LEFT:
+ case KeyCodes.KEY_RIGHT:
+ case KeyCodes.KEY_PAGEDOWN:
+ case KeyCodes.KEY_PAGEUP:
+ case KeyCodes.KEY_ESCAPE:
+ return false;
+ default:
+ return true;
+ }
+ }
+
+ private org.xwiki.gwt.dom.client.Element selectAndGetLink() {
+ final org.xwiki.gwt.dom.client.Element selectedAnchor = LinkExecutableUtils.getSelectedAnchor(rta);
+ if (selectedAnchor != null) {
+ final Range range = rta.getDocument().createRange();
+ range.selectNode(selectedAnchor);
+ getSelection().addRange(range);
+ }
+ return selectedAnchor;
+ }
+
+ private void updateLinkInfo() {
+ presenter.updateLinkInfo();
+ }
+
+ /**
+ * Updates the status of all the stateful buttons.
+ */
+ private void updateStatus() {
+ presenter.updateStatus();
+ }
+}
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorPanelNew.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorPanelNew.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorPanelNew.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -1,518 +0,0 @@
-package org.ourproject.kune.platf.client.ui.rte.basic;
-
-import java.util.Date;
-
-import org.cobogw.gwt.user.client.CSS;
-import org.ourproject.kune.platf.client.View;
-import org.ourproject.kune.platf.client.actions.AbstractAction;
-import org.ourproject.kune.platf.client.actions.ActionEvent;
-import org.ourproject.kune.platf.client.actions.ui.AbstractComplexGuiItem;
-import org.ourproject.kune.platf.client.actions.ui.ComplexToolbar;
-import org.ourproject.kune.platf.client.actions.ui.GuiActionDescCollection;
-import org.ourproject.kune.platf.client.actions.ui.GuiActionDescrip;
-import org.ourproject.kune.platf.client.actions.ui.GuiBindingsRegister;
-import org.ourproject.kune.platf.client.errors.UIException;
-import org.ourproject.kune.platf.client.i18n.I18nUITranslationService;
-import org.ourproject.kune.platf.client.shortcuts.GlobalShortcutRegister;
-import org.ourproject.kune.platf.client.ui.noti.NotifyUser;
-import org.ourproject.kune.platf.client.ui.rte.RichTextArea;
-import org.ourproject.kune.platf.client.ui.rte.RichTextArea.BasicFormatter;
-import org.ourproject.kune.platf.client.ui.rte.RichTextArea.ExtendedFormatter;
-import org.ourproject.kune.platf.client.ui.rte.RichTextArea.FontSize;
-import org.ourproject.kune.platf.client.ui.rte.RichTextArea.Justification;
-import org.ourproject.kune.platf.client.ui.rte.insertlink.LinkExecutableUtils;
-import org.ourproject.kune.platf.client.ui.rte.insertlink.LinkInfo;
-import org.xwiki.gwt.dom.client.DocumentFragment;
-import org.xwiki.gwt.dom.client.Range;
-import org.xwiki.gwt.dom.client.Selection;
-
-import com.allen_sauer.gwt.log.client.Log;
-import com.google.gwt.dom.client.Element;
-import com.google.gwt.dom.client.Node;
-import com.google.gwt.event.dom.client.BlurEvent;
-import com.google.gwt.event.dom.client.BlurHandler;
-import com.google.gwt.event.dom.client.FocusEvent;
-import com.google.gwt.event.dom.client.FocusHandler;
-import com.google.gwt.event.dom.client.KeyCodes;
-import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.DeferredCommand;
-import com.google.gwt.user.client.Event;
-
-public class RTEditorPanelNew extends AbstractComplexGuiItem implements RTEditorViewNew, FocusHandler, BlurHandler {
-
- private static final Element NO_ELEMENT = null;
- private final I18nUITranslationService i18n;
- private final BasicFormatter basic;
- private final ExtendedFormatter extended;
- private final RTEditorPresenterNew presenter;
- private final GlobalShortcutRegister globalShortcutReg;
- private final RTELinkPopup linkCtxMenu;
- private final RichTextArea rta;
- private final ComplexToolbar topBar;
- private final ComplexToolbar sndBar;
-
- public RTEditorPanelNew(final RTEditorPresenterNew presenter, final I18nUITranslationService i18n,
- final GlobalShortcutRegister globalShortcutReg, final GuiBindingsRegister bindReg) {
- super();
- this.presenter = presenter;
- this.i18n = i18n;
- this.globalShortcutReg = globalShortcutReg;
- rta = new RichTextArea();
- basic = rta.getBasicFormatter();
- extended = rta.getExtendedFormatter();
- topBar = new ComplexToolbar(bindReg);
- sndBar = new ComplexToolbar(bindReg);
- sndBar.setNormalStyle();
- rta.addFocusHandler(this);
- rta.addBlurHandler(this);
- linkCtxMenu = new RTELinkPopup();
- initWidget(rta);
- setWidth("96%");
- setHeight("100%");
- }
-
- public void addActions(final GuiActionDescCollection items) {
- super.addAll(items);
- for (final GuiActionDescrip item : items) {
- final String location = item.getLocation();
- if (location == null) {
- throw new UIException("Unknown location in action item: " + item);
- }
- if (location.equals(RTEditorNew.TOPBAR)) {
- topBar.add(item);
- } else if (location.equals(RTEditorNew.SNDBAR)) {
- sndBar.add(item);
- } else if (location.equals(RTEditorNew.LINKCTX)) {
- linkCtxMenu.add(item);
- } else {
- throw new UIException("Unknown location in action item: " + item);
- }
- }
- }
-
- public void adjustSize(final int height) {
- setHeight(Integer.toString(height));
- }
-
- public boolean canBeBasic() {
- return basic != null;
- }
-
- public boolean canBeExtended() {
- return extended != null;
- }
-
- public void copy() {
- extended.copy();
- }
-
- public void createLink(final String url) {
- extended.createLink(url);
- }
-
- public void cut() {
- extended.cut();
- }
-
- public void delete() {
- extended.delete();
- }
-
- public void focus() {
- setFocus(true);
- }
-
- public String getFont() {
- final Element currentElement = getCurrentElement();
- return currentElement == NO_ELEMENT ? "" : currentElement.getStyle().getProperty(CSS.A.FONT_FAMILY);
- }
-
- public String getFontSize() {
- final Element currentElement = getCurrentElement();
- return currentElement == NO_ELEMENT ? "" : currentElement.getStyle().getProperty("size");
- }
-
- public String getHTML() {
- return rta.getHTML();
- }
-
- public LinkInfo getLinkInfoIfHref() {
- LinkInfo linkinfo = null;
- final org.xwiki.gwt.dom.client.Element selectedAnchor = selectAndGetLink();
- if (selectedAnchor == null) {
- linkinfo = new LinkInfo(getSelectionText());
- } else {
- linkinfo = LinkInfo.parse(selectedAnchor);
- }
- Log.debug("Link info: " + linkinfo);
- return linkinfo;
- }
-
- public void getRangeInfo() {
- // Selection selection = getSelection();
- // String info = "range count: " + selection.getRangeCount() +
- // "<br/>focus offset: " + selection.getFocusOffset()
- // + "<br/>anchor offset:" + selection.getAnchorOffset() +
- // "<br/>range 0 as html: "
- // + selection.getRangeAt(0).toHTML();
- // NotifyUser.info(info);
- final String info = "range count: " + getFstRange().getCommonAncestorContainer().getFirstChild().getNodeName();
- NotifyUser.info(info);
- }
-
- public String getSelectionText() {
- return getFstRange().cloneContents().getInnerText();
- }
-
- public View getSndBar() {
- return sndBar;
- }
-
- public String getText() {
- return rta.getText();
- }
-
- public View getTopBar() {
- return topBar;
- }
-
- public void hideLinkCtxMenu() {
- linkCtxMenu.hide();
- }
-
- public void insertBlockquote() {
- final DocumentFragment extracted = getFstRange().cloneContents();
- // delete();
- insertHtml("<blockquote>" + extracted.getInnerHTML() + "</blockquote>");
- focus();
- }
-
- public void insertComment(final String author) {
- createCommentAndSelectIt(author, null);
- }
-
- public void insertCommentNotUsingSelection(final String author) {
- getFstRange().collapse(false);
- createCommentAndSelectIt(author, null);
- focus();
- }
-
- public void insertCommentUsingSelection(final String author) {
- final DocumentFragment extracted = getFstRange().cloneContents();
- extended.delete();
- final String comment = extracted.getInnerText();
- createCommentAndSelectIt(author, comment);
- focus();
- }
-
- public void insertHorizontalRule() {
- extended.insertHorizontalRule();
- }
-
- public void insertHtml(final String html) {
- extended.insertHtml(html);
- }
-
- public void insertImage(final String url) {
- extended.insertImage(url);
- }
-
- public void insertOrderedList() {
- extended.insertOrderedList();
- }
-
- public void insertUnorderedList() {
- extended.insertUnorderedList();
- }
-
- public boolean isAnythingSelected() {
- return !rta.getDocument().getSelection().isCollapsed();
- }
-
- public boolean isBold() {
- return basic.isBold();
- }
-
- public boolean isCollapsed() {
- return getFstRange().isCollapsed();
- }
-
- public boolean isCtxMenuVisible() {
- return linkCtxMenu.isVisible();
- }
-
- public boolean isItalic() {
- return basic.isItalic();
- }
-
- public boolean isLink() {
- boolean isLink = false;
- if (isAttached() && LinkExecutableUtils.getSelectedAnchor(rta) != null) {
- isLink = true;
- }
- return isLink;
- }
-
- public boolean isStrikethrough() {
- return extended.isStrikethrough();
- }
-
- public boolean isSubscript() {
- return basic.isSubscript();
- }
-
- public boolean isSuperscript() {
- return basic.isSuperscript();
- }
-
- public boolean isUnderlined() {
- return basic.isUnderlined();
- }
-
- public void justifyCenter() {
- basic.setJustification(Justification.CENTER);
- }
-
- public void justifyLeft() {
- basic.setJustification(Justification.LEFT);
- }
-
- public void justifyRight() {
- basic.setJustification(Justification.RIGHT);
- }
-
- public void leftIndent() {
- extended.leftIndent();
- }
-
- public void onBlur(final BlurEvent event) {
- presenter.onLostFocus();
- }
-
- @Override
- public void onBrowserEvent(final Event event) {
- switch (DOM.eventGetType(event)) {
- case Event.ONCLICK:
- updateStatus();
- updateLinkInfo();
- super.onBrowserEvent(event);
- break;
- case Event.ONKEYPRESS:
- final AbstractAction rtaActionItem = super.getAction(event);
- // FIXME
- // final Action actionItem = rtaActionItem == null ?
- // globalShortcutReg.get(event) : rtaActionItem;
- final AbstractAction actionItem = rtaActionItem == null ? null : rtaActionItem;
- if (actionItem == null) {
- super.onBrowserEvent(event);
- updateStatus();
- updateLinkInfo();
- if (isAnEditionKey(event.getKeyCode())) {
- fireEdit();
- }
- } else {
- updateStatus();
- fireEdit();
- event.stopPropagation();
- event.preventDefault();
- actionItem.actionPerformed(new ActionEvent(this, event));
- updateStatus();
- }
- break;
- default:
- // Rest of events
- super.onBrowserEvent(event);
- updateStatus();
- }
- }
-
- public void onFocus(final FocusEvent event) {
- presenter.onEditorFocus();
- }
-
- public void paste() {
- extended.paste();
- }
-
- public void redo() {
- extended.redo();
- }
-
- public void removeFormat() {
- extended.removeFormat();
- }
-
- public void rightIndent() {
- extended.rightIndent();
- }
-
- public void selectAll() {
- basic.selectAll();
- }
-
- public void selectLink() {
- selectAndGetLink();
- }
-
- public void setBackColor(final String color) {
- basic.setBackColor(color);
- }
-
- public void setFocus(final boolean focused) {
- rta.setFocus(focused);
- }
-
- public void setFontName(final String name) {
- basic.setFontName(name);
- }
-
- public void setFontSize(final FontSize size) {
- basic.setFontSize(size);
- }
-
- public void setForeColor(final String color) {
- basic.setForeColor(color);
- }
-
- public void setHTML(final String html) {
- rta.setHTML(html);
- }
-
- public void setText(final String text) {
- rta.setText(text);
- }
-
- public void showLinkCtxMenu() {
- DeferredCommand.addCommand(new Command() {
- public void execute() {
- final org.xwiki.gwt.dom.client.Element selectedAnchor = LinkExecutableUtils.getSelectedAnchor(rta);
- if (selectedAnchor != null) {
- linkCtxMenu.show(RTEditorPanelNew.this.getAbsoluteLeft() + selectedAnchor.getAbsoluteLeft(),
- RTEditorPanelNew.this.getAbsoluteTop() + selectedAnchor.getAbsoluteTop() + 20);
- }
- }
- });
-
- }
-
- public void toggleBold() {
- basic.toggleBold();
- }
-
- public void toggleItalic() {
- basic.toggleItalic();
- }
-
- public void toggleStrikethrough() {
- extended.toggleStrikethrough();
- }
-
- public void toggleSubscript() {
- basic.toggleSubscript();
- }
-
- public void toggleSuperscript() {
- basic.toggleSuperscript();
- }
-
- public void toggleUnderline() {
- basic.toggleUnderline();
- }
-
- public void undo() {
- extended.undo();
- }
-
- public void unlink() {
- extended.removeLink();
- }
-
- protected void fireEdit() {
- presenter.fireOnEdit();
- }
-
- protected Element getElement(final Node inputNode) {
- Node node = inputNode;
- if (node.getNodeType() != Node.ELEMENT_NODE) {
- node = node.getParentNode();
- }
- if (node == null || node.getNodeType() != Node.ELEMENT_NODE) {
- return null;
- }
- return Element.as(node);
- }
-
- private void createCommentAndSelectIt(final String author, final String comment) {
- final Element commentEl = createCommentElement(author, comment);
- final Range innerCommentRange = rta.getDocument().createRange();
- getFstRange().insertNode(commentEl);
- innerCommentRange.selectNodeContents(commentEl.getFirstChild());
- getSelection().addRange(innerCommentRange);
- fireEdit();
- }
-
- private Element createCommentElement(final String userName, final String insertComment) {
- final String time = i18n.formatDateWithLocale(new Date(), true);
- final Element span = rta.getDocument().createSpanElement();
- final String comment = insertComment == null ? i18n.t("type your comment here") : insertComment;
- span.setInnerHTML("<em>" + comment + "</em> -" + userName + " " + time);
- DOM.setElementProperty(span.<com.google.gwt.user.client.Element> cast(), "className", "k-rte-comment");
- // insertHtml(" " + span.getString() + " ");
- return span;
- }
-
- private Element getCurrentElement() {
- if (getSelection().getRangeCount() > 0) {
- return getElement(getSelection().getRangeAt(0).getStartContainer());
- } else {
- return NO_ELEMENT;
- }
- }
-
- private Range getFstRange() {
- return getSelection().getRangeAt(0);
- }
-
- private Selection getSelection() {
- return rta.getDocument().getSelection();
- }
-
- private boolean isAnEditionKey(final int keyCode) {
- switch (keyCode) { // NOPMD by vjrj on 5/06/09 19:14
- case KeyCodes.KEY_HOME:
- case KeyCodes.KEY_END:
- case KeyCodes.KEY_UP:
- case KeyCodes.KEY_DOWN:
- case KeyCodes.KEY_LEFT:
- case KeyCodes.KEY_RIGHT:
- case KeyCodes.KEY_PAGEDOWN:
- case KeyCodes.KEY_PAGEUP:
- case KeyCodes.KEY_ESCAPE:
- return false;
- default:
- return true;
- }
- }
-
- private org.xwiki.gwt.dom.client.Element selectAndGetLink() {
- final org.xwiki.gwt.dom.client.Element selectedAnchor = LinkExecutableUtils.getSelectedAnchor(rta);
- if (selectedAnchor != null) {
- final Range range = rta.getDocument().createRange();
- range.selectNode(selectedAnchor);
- getSelection().addRange(range);
- }
- return selectedAnchor;
- }
-
- private void updateLinkInfo() {
- presenter.updateLinkInfo();
- }
-
- /**
- * Updates the status of all the stateful buttons.
- */
- private void updateStatus() {
- presenter.updateStatus();
- }
-}
Copied: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorPresenter.java (from rev 1125, trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorPresenterNew.java)
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorPresenterNew.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorPresenter.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -0,0 +1,1201 @@
+package org.ourproject.kune.platf.client.ui.rte.basic;
+
+import static org.ourproject.kune.platf.client.actions.AbstractExtendedAction.NO_ICON;
+import static org.ourproject.kune.platf.client.actions.AbstractExtendedAction.NO_TEXT;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.ourproject.kune.platf.client.View;
+import org.ourproject.kune.platf.client.actions.AbstractAction;
+import org.ourproject.kune.platf.client.actions.AbstractExtendedAction;
+import org.ourproject.kune.platf.client.actions.Action;
+import org.ourproject.kune.platf.client.actions.ActionEvent;
+import org.ourproject.kune.platf.client.actions.InputMap;
+import org.ourproject.kune.platf.client.actions.KeyStroke;
+import org.ourproject.kune.platf.client.actions.ui.ButtonDescriptor;
+import org.ourproject.kune.platf.client.actions.ui.GuiActionDescCollection;
+import org.ourproject.kune.platf.client.actions.ui.GuiActionDescrip;
+import org.ourproject.kune.platf.client.actions.ui.GuiAddCondition;
+import org.ourproject.kune.platf.client.actions.ui.MenuCheckItemDescriptor;
+import org.ourproject.kune.platf.client.actions.ui.MenuDescriptor;
+import org.ourproject.kune.platf.client.actions.ui.MenuItemDescriptor;
+import org.ourproject.kune.platf.client.actions.ui.MenuRadioItemDescriptor;
+import org.ourproject.kune.platf.client.actions.ui.MenuSeparatorDescriptor;
+import org.ourproject.kune.platf.client.actions.ui.PushButtonDescriptor;
+import org.ourproject.kune.platf.client.actions.ui.ToolbarSeparatorDescriptor;
+import org.ourproject.kune.platf.client.actions.ui.ToolbarSeparatorDescriptor.Type;
+import org.ourproject.kune.platf.client.i18n.I18nTranslationService;
+import org.ourproject.kune.platf.client.shortcuts.Keyboard;
+import org.ourproject.kune.platf.client.state.Session;
+import org.ourproject.kune.platf.client.ui.noti.NotifyUser;
+import org.ourproject.kune.platf.client.ui.palette.ColorWebSafePalette;
+import org.ourproject.kune.platf.client.ui.rte.RichTextArea;
+import org.ourproject.kune.platf.client.ui.rte.edithtml.EditHtmlDialog;
+import org.ourproject.kune.platf.client.ui.rte.img.RTEImgResources;
+import org.ourproject.kune.platf.client.ui.rte.insertimg.ImageInfo;
+import org.ourproject.kune.platf.client.ui.rte.insertimg.InsertImageDialog;
+import org.ourproject.kune.platf.client.ui.rte.insertlink.InsertLinkDialog;
+import org.ourproject.kune.platf.client.ui.rte.insertlink.LinkInfo;
+import org.ourproject.kune.platf.client.ui.rte.insertmedia.InsertMediaDialog;
+import org.ourproject.kune.platf.client.ui.rte.insertspecialchar.InsertSpecialCharDialog;
+import org.ourproject.kune.platf.client.ui.rte.inserttable.InsertTableDialog;
+import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
+
+import com.allen_sauer.gwt.log.client.Log;
+import com.calclab.suco.client.events.Event0;
+import com.calclab.suco.client.events.Listener;
+import com.calclab.suco.client.events.Listener0;
+import com.calclab.suco.client.ioc.Provider;
+import com.google.gwt.libideas.resources.client.ImageResource;
+import com.google.gwt.user.client.Event;
+
+public class RTEditorPresenter implements RTEditor {
+
+ public class BackgroundColorAction extends AbstractExtendedAction {
+
+ public BackgroundColorAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ createPalette();
+ final Event event = actionEvent.getEvent();
+ palette.show(event.getClientX(), event.getClientY(), new Listener<String>() {
+ public void onEvent(final String color) {
+ palette.hide();
+ view.setBackColor(color);
+ fireOnEdit();
+ }
+ });
+ }
+ }
+
+ public class BlockquoteAction extends AbstractExtendedAction {
+ public BlockquoteAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ view.focus();
+ view.insertBlockquote();
+ fireOnEdit();
+ }
+ }
+
+ public class BoldAction extends AbstractExtendedAction {
+ public BoldAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ view.toggleBold();
+ fireOnEdit();
+ }
+ }
+
+ public class CommentAction extends AbstractExtendedAction {
+ public CommentAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ deferred.addCommand(new Listener0() {
+ public void onEvent() {
+ view.focus();
+ final String author = session.isLogged() ? session.getCurrentUser().getShortName()
+ : i18n.t("anonymous user");
+ if (view.isAnythingSelected()) {
+ NotifyUser.askConfirmation(i18n.t("Insert a comment"),
+ i18n.t("Include the selected text in the comment?"), new Listener0() {
+ public void onEvent() {
+ // include selection in
+ // comment
+ view.insertCommentUsingSelection(author);
+ }
+ }, new Listener0() {
+ public void onEvent() {
+ // not include selection in
+ // comment;
+ view.insertCommentNotUsingSelection(author);
+ }
+ });
+ } else {
+ // Nothing selected > create comment in
+ // insertion point
+ view.insertComment(author);
+ }
+ }
+ });
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return session.isLogged();
+ }
+ }
+
+ public class CopyAction extends AbstractExtendedAction {
+ public CopyAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ view.copy();
+ }
+ }
+
+ public class CreateOrEditLinkAction extends AbstractExtendedAction {
+ public CreateOrEditLinkAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ deferred.addCommand(new Listener0() {
+ private InsertLinkDialog insLinkDialog;
+
+ public void onEvent() {
+ if (insLinkListener == null) {
+ insLinkListener = new Listener<LinkInfo>() {
+ public void onEvent(final LinkInfo linkInfo) {
+ final String link = linkInfo.toString();
+ Log.debug("Link: " + link);
+ view.focus();
+ view.insertHtml(link);
+ fireOnEdit();
+ }
+ };
+ }
+ final LinkInfo linkInfo = view.getLinkInfoIfHref();
+
+ if (insLinkDialog == null) {
+ insLinkDialog = insLinkDialogPv.get();
+ }
+ insLinkDialog.setLinkInfo(linkInfo);
+ insLinkDialog.setOnCreateLink(insLinkListener);
+ insLinkDialog.show();
+ hideLinkCtxMenu();
+ final String href = linkInfo.getHref();
+ if (href.length() > 0) {
+ if (href.startsWith("mailto")) {
+ insLinkDialog.activateTab(2);
+ } else {
+ insLinkDialog.activateTab(1);
+ }
+ }
+ }
+ });
+ }
+ }
+
+ public class CutAction extends AbstractExtendedAction {
+ public CutAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ view.cut();
+ fireOnEdit();
+ }
+ }
+
+ public class DecreaseIndentAction extends AbstractExtendedAction {
+ public DecreaseIndentAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ view.leftIndent();
+ fireOnEdit();
+ }
+ }
+
+ public class DevInfoAction extends AbstractExtendedAction {
+ public DevInfoAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ deferred.addCommand(new Listener0() {
+ public void onEvent() {
+ view.getRangeInfo();
+ }
+ });
+ }
+ }
+
+ public class EditHtmlAction extends AbstractExtendedAction {
+ private EditHtmlDialog editHtmlDialog;
+
+ public EditHtmlAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ if (updHtmlListener == null) {
+ updHtmlListener = new Listener<String>() {
+ public void onEvent(final String html) {
+ view.setHTML(html);
+ fireOnEdit();
+ }
+ };
+ }
+ if (editHtmlDialog == null) {
+ editHtmlDialog = editHtmlDialogPv.get();
+ }
+ editHtmlDialog.setUpdateListener(updHtmlListener);
+ editHtmlDialog.show();
+ hideLinkCtxMenu();
+ editHtmlDialog.setHtml(view.getHTML());
+ }
+ }
+
+ public class FontAction extends AbstractExtendedAction {
+ public static final String FONT_NAME = "fontname";
+
+ public FontAction(final String fontName, final String tooltip, final ImageResource icon) {
+ super("<span style=\"font-family: " + fontName + "\">" + fontName + "</span>", tooltip, icon);
+ super.putValue(FONT_NAME, fontName);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ final String fontName = getFontName();
+ view.setFontName(fontName);
+ fontMenu.setText(fontName);
+ fireOnEdit();
+ }
+
+ private String getFontName() {
+ return (String) super.getValue(FONT_NAME);
+ }
+ }
+
+ public class FontColorAction extends AbstractExtendedAction {
+ public FontColorAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ createPalette();
+ final Event event = actionEvent.getEvent();
+ palette.show(event.getClientX(), event.getClientY(), new Listener<String>() {
+ public void onEvent(final String color) {
+ palette.hide();
+ view.setForeColor(color);
+ fireOnEdit();
+ }
+ });
+ hideLinkCtxMenu();
+ }
+ }
+
+ public class FontSizeAction extends AbstractExtendedAction {
+ private final int fontSize;
+
+ public FontSizeAction(final String fontSizeName, final int fontSize, final String tooltip,
+ final ImageResource icon) {
+ super("<font size=\"" + (fontSize + 1) + "\">" + fontSizeName + "</font>", tooltip, icon);
+ this.fontSize = fontSize;
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ view.setFontSize(FONT_SIZES[fontSize]);
+ fireOnEdit();
+ // fontSizeMenu.setText(fontSizeName);
+ }
+ }
+
+ public class HrAction extends AbstractExtendedAction {
+ public HrAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ view.focus();
+ view.insertHorizontalRule();
+ fireOnEdit();
+ }
+ }
+
+ public class ImgAction extends AbstractExtendedAction {
+ public ImgAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ deferred.addCommand(new Listener0() {
+ private InsertImageDialog insImgDialog;
+
+ public void onEvent() {
+ if (insImgListener == null) {
+ insImgListener = new Listener<ImageInfo>() {
+ public void onEvent(final ImageInfo imageInfo) {
+ Log.debug("Image: " + imageInfo);
+ view.focus();
+ view.insertHtml(imageInfo.toString());
+ fireOnEdit();
+ }
+ };
+ }
+ if (insImgDialog == null) {
+ insImgDialog = insImgDialogProv.get();
+ }
+ insImgDialog.reset();
+ insImgDialog.setOnCreateImage(insImgListener);
+ insImgDialog.show();
+ hideLinkCtxMenu();
+ }
+ });
+ }
+ }
+
+ public class IncreaseIndentAction extends AbstractExtendedAction {
+ public IncreaseIndentAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ view.rightIndent();
+ fireOnEdit();
+ }
+ }
+
+ public class InsertMediaAction extends AbstractExtendedAction {
+ public InsertMediaAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ deferred.addCommand(new Listener0() {
+ private InsertMediaDialog insMediaDialog;
+
+ public void onEvent() {
+ if (insMediaListener == null) {
+ insMediaListener = new Listener<String>() {
+ public void onEvent(final String html) {
+ Log.debug("Media: " + html);
+ view.focus();
+ view.insertHtml(html);
+ fireOnEdit();
+ }
+ };
+ }
+ if (insMediaDialog == null) {
+ insMediaDialog = insMediaDialogPv.get();
+ }
+ insMediaDialog.setOnCreate(insMediaListener);
+ insMediaDialog.show();
+ hideLinkCtxMenu();
+ }
+ });
+ }
+ }
+
+ public class InsertSpecialCharAction extends AbstractExtendedAction {
+ private InsertSpecialCharDialog insCharDialog;
+
+ public InsertSpecialCharAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ NotifyUser.showProgressLoading();
+ if (insCharListener == null) {
+ insCharListener = new Listener<String>() {
+ public void onEvent(final String character) {
+ view.insertHtml(character);
+ }
+ };
+ }
+ if (insCharDialog == null) {
+ insCharDialog = insCharDialogProv.get();
+ }
+ insCharDialog.setOnInsertSpecialChar(insCharListener);
+ insCharDialog.show();
+ hideLinkCtxMenu();
+ NotifyUser.hideProgress();
+ }
+ }
+
+ public class InsertTableAction extends AbstractExtendedAction {
+ private InsertTableDialog insTableDialog;
+
+ public InsertTableAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ if (insTableListener == null) {
+ insTableListener = new Listener<String>() {
+ public void onEvent(final String table) {
+ view.insertHtml(table);
+ fireOnEdit();
+ }
+ };
+ }
+ if (insTableDialog == null) {
+ insTableDialog = insTableDialogPv.get();
+ }
+ insTableDialog.setOnInsertTable(insTableListener);
+ insTableDialog.show();
+ }
+ }
+
+ public class ItalicAction extends AbstractExtendedAction {
+ public ItalicAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ view.toggleItalic();
+ fireOnEdit();
+ }
+ }
+
+ public class JustifyCentreAction extends AbstractExtendedAction {
+ public JustifyCentreAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ view.justifyCenter();
+ fireOnEdit();
+ }
+ }
+
+ public class JustifyLeftAction extends AbstractExtendedAction {
+ public JustifyLeftAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ view.justifyLeft();
+ fireOnEdit();
+ }
+ }
+
+ public class JustifyRightAction extends AbstractExtendedAction {
+ public JustifyRightAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ view.justifyRight();
+ fireOnEdit();
+ }
+ }
+
+ public class OlAction extends AbstractExtendedAction {
+ public OlAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ view.insertOrderedList();
+ fireOnEdit();
+ }
+ }
+
+ public class PasteAction extends AbstractExtendedAction {
+ public PasteAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ view.paste();
+ fireOnEdit();
+ }
+ }
+
+ public class RedoAction extends AbstractExtendedAction {
+ public RedoAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ view.redo();
+ fireOnEdit();
+ }
+ }
+
+ public class RemoveFormatAction extends AbstractExtendedAction {
+ public RemoveFormatAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ view.removeFormat();
+ fireOnEdit();
+ }
+ }
+
+ public class RemoveLinkAction extends AbstractExtendedAction {
+ public RemoveLinkAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ deferred.addCommand(new Listener0() {
+ public void onEvent() {
+ view.unlink();
+ hideLinkCtxMenu();
+ fireOnEdit();
+ }
+ });
+ }
+ }
+
+ public class SelectAllAction extends AbstractExtendedAction {
+ public SelectAllAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ view.selectAll();
+ }
+ }
+
+ public class StrikethroughAction extends AbstractExtendedAction {
+ public StrikethroughAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ view.toggleStrikethrough();
+ fireOnEdit();
+ }
+ }
+
+ public class SubscriptAction extends AbstractExtendedAction {
+ public SubscriptAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ view.toggleSubscript();
+ fireOnEdit();
+ }
+ }
+
+ public class SuperscriptAction extends AbstractExtendedAction {
+ public SuperscriptAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ view.toggleSuperscript();
+ fireOnEdit();
+ }
+ }
+
+ public class UlAction extends AbstractExtendedAction {
+ public UlAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ view.insertUnorderedList();
+ fireOnEdit();
+ }
+ }
+
+ public class UnderlineAction extends AbstractExtendedAction {
+ public UnderlineAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ view.toggleUnderline();
+ fireOnEdit();
+ }
+ }
+
+ public class UndoAction extends AbstractExtendedAction {
+ public UndoAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ view.undo();
+ fireOnEdit();
+ }
+ }
+
+ private static final String FONT_NAMES[] = { "Times New Roman", "Arial", "Courier New", "Georgia", "Trebuchet",
+ "Verdana" };
+ private static final String FONT_SIZE_NAMES[] = { "Extra small", "Very small (normal)", "Small", "Medium", "Large",
+ "Very large", "Extra large" };
+ private static final RichTextArea.FontSize[] FONT_SIZES = new RichTextArea.FontSize[] {
+ RichTextArea.FontSize.XX_SMALL, RichTextArea.FontSize.X_SMALL, RichTextArea.FontSize.SMALL,
+ RichTextArea.FontSize.MEDIUM, RichTextArea.FontSize.LARGE, RichTextArea.FontSize.X_LARGE,
+ RichTextArea.FontSize.XX_LARGE };
+ private static final String FONT_GROUP = "fontgroup";
+ private static final String FONT_SIZEGROUP = "fontsizegroup";
+
+ private RTEditorView view;
+ private boolean extended;
+ private final I18nTranslationService i18n;
+ private final Session session;
+ private final RTEImgResources imgResources;
+ private final Event0 onEdit;
+ private final DeferredCommandWrapper deferred;
+ private final Provider<ColorWebSafePalette> paletteProvider;
+ private final Provider<InsertLinkDialog> insLinkDialogPv;
+ private final Provider<EditHtmlDialog> editHtmlDialogPv;
+ private final Provider<InsertImageDialog> insImgDialogProv;
+ private final Provider<InsertTableDialog> insTableDialogPv;
+ private final Provider<InsertSpecialCharDialog> insCharDialogProv;
+ private final Provider<InsertMediaDialog> insMediaDialogPv;
+ private Listener<String> insTableListener;
+ private Listener<LinkInfo> insLinkListener;
+ private Listener<ImageInfo> insImgListener;
+ private Listener<String> insMediaListener;
+ private Listener<String> updHtmlListener;
+ protected Listener<String> insCharListener;
+ protected ColorWebSafePalette palette;
+ private PushButtonDescriptor bold;
+ private PushButtonDescriptor italic;
+ private PushButtonDescriptor underline;
+ private PushButtonDescriptor strikethrough;
+ private final GuiAddCondition basicAddCond;
+ private final GuiAddCondition extendedAddCond;
+ private final InputMap inputMap;
+ private MenuDescriptor editMenu;
+ private MenuDescriptor insertMenu;
+ private MenuDescriptor formatMenu;
+ private MenuDescriptor linkCtxMenu;
+ private GuiActionDescCollection actions;
+ private MenuDescriptor fontMenu;
+ private MenuDescriptor fontSizeMenu;
+ private MenuDescriptor fileMenu;
+ private final List<MenuDescriptor> menus;
+ protected boolean attached;
+ private final Map<String, MenuCheckItemDescriptor> fontActions;
+ private MenuCheckItemDescriptor currentFontItem;
+
+ public RTEditorPresenter(final I18nTranslationService i18n, final Session session,
+ final RTEImgResources imgResources, final Provider<InsertLinkDialog> insLinkDialog,
+ final Provider<ColorWebSafePalette> palette, final Provider<EditHtmlDialog> editHtmlDialog,
+ final Provider<InsertImageDialog> insertImageDialog, final Provider<InsertMediaDialog> insertMediaDialog,
+ final Provider<InsertTableDialog> insertTableDialog, final Provider<InsertSpecialCharDialog> insCharDialog,
+ final DeferredCommandWrapper deferred) {
+ this.i18n = i18n;
+ this.session = session;
+ this.insLinkDialogPv = insLinkDialog;
+ this.paletteProvider = palette;
+ this.editHtmlDialogPv = editHtmlDialog;
+ this.insImgDialogProv = insertImageDialog;
+ this.insMediaDialogPv = insertMediaDialog;
+ this.insTableDialogPv = insertTableDialog;
+ this.insCharDialogProv = insCharDialog;
+ this.deferred = deferred;
+ inputMap = new InputMap();
+ menus = new ArrayList<MenuDescriptor>();
+
+ this.imgResources = imgResources;
+ this.onEdit = new Event0("onRTEEdit");
+ extendedAddCond = new GuiAddCondition() {
+ public boolean mustBeAdded() {
+ return isAndCanBeExtended();
+ }
+ };
+ basicAddCond = new GuiAddCondition() {
+ public boolean mustBeAdded() {
+ return view.canBeBasic();
+ }
+ };
+ attached = false;
+ fontActions = new HashMap<String, MenuCheckItemDescriptor>();
+ }
+
+ public void addAction(final GuiActionDescrip descriptor) {
+ actions.add(descriptor);
+ checkForMenus(descriptor);
+ }
+
+ public void addActionCollection(final GuiActionDescCollection descriptors) {
+ actions.addAll(descriptors);
+ for (final GuiActionDescrip descriptor : descriptors) {
+ checkForMenus(descriptor);
+ }
+ }
+
+ public void addActions(final GuiActionDescrip... descriptors) {
+ actions.add(descriptors);
+ for (final GuiActionDescrip descriptor : descriptors) {
+ checkForMenus(descriptor);
+ }
+ }
+
+ public void addOnEditListener(final Listener0 listener) {
+ onEdit.add(listener);
+ }
+
+ public void adjustSize(final int height) {
+ view.adjustSize(height);
+ }
+
+ public void attach() {
+ if (!attached) {
+ attached = true;
+ view.addActions(actions);
+ view.setInputMap(inputMap);
+ }
+ }
+
+ public void detach() {
+ }
+
+ public void fireOnEdit() {
+ onEdit.fire();
+ }
+
+ public GuiAddCondition getBasicAddCondition() {
+ return basicAddCond;
+ }
+
+ public MenuDescriptor getEditMenu() {
+ return editMenu;
+ }
+
+ public View getEditorArea() {
+ return view;
+ }
+
+ public GuiAddCondition getExtendedAddCondition() {
+ return extendedAddCond;
+ }
+
+ public MenuDescriptor getFileMenu() {
+ return fileMenu;
+ }
+
+ public MenuDescriptor getFormatMenu() {
+ return formatMenu;
+ }
+
+ public String getHtml() {
+ return view.getHTML();
+ }
+
+ public MenuDescriptor getInsertMenu() {
+ return insertMenu;
+ }
+
+ public MenuDescriptor getLinkCtxMenu() {
+ return linkCtxMenu;
+ }
+
+ public View getSndBar() {
+ return view.getSndBar();
+ }
+
+ public String getText() {
+ return view.getText();
+ }
+
+ public View getTopBar() {
+ return view.getTopBar();
+ }
+
+ public void init(final RTEditorView view) {
+ this.view = view;
+ createMainMenus();
+ createBasicActions();
+ }
+
+ public void onEditorFocus() {
+ hideMenus();
+ }
+
+ public void onLostFocus() {
+ // Nothing for the moment
+ }
+
+ public void reset() {
+ hideMenus();
+ hideLinkCtxMenu();
+ }
+
+ public void setActionShortcut(final KeyStroke key, final AbstractAction action) {
+ inputMap.put(key, action);
+ action.putValue(Action.ACCELERATOR_KEY, key);
+ }
+
+ public void setActionShortcut(final KeyStroke key, final AbstractAction mainAction, final AbstractAction... actions) {
+ setActionShortcut(key, mainAction);
+ for (final AbstractAction action : actions) {
+ action.putValue(Action.ACCELERATOR_KEY, key);
+ }
+ }
+
+ public void setExtended(final boolean newValue) {
+ this.extended = newValue;
+ }
+
+ public void setFocus(final boolean focus) {
+ view.setFocus(focus);
+ }
+
+ public void setHtml(final String html) {
+ view.setHTML(html);
+ view.focus();
+ }
+
+ public void setLocation(final String location, final GuiActionDescrip[] descripts) {
+ for (final GuiActionDescrip descript : descripts) {
+ descript.setLocation(location);
+ }
+ }
+
+ public void setText(final String text) {
+ view.setText(text);
+ view.focus();
+ }
+
+ public void updateLinkInfo() {
+ deferred.addCommand(new Listener0() {
+ public void onEvent() {
+ if (isAndCanBeExtended() && view.isLink()) {
+ view.showLinkCtxMenu();
+ } else {
+ hideLinkCtxMenu();
+ }
+ }
+ });
+ }
+
+ public void updateStatus() {
+ if (view.canBeBasic()) {
+ bold.setPushed(view.isBold());
+ italic.setPushed(view.isItalic());
+ underline.setPushed(view.isUnderlined());
+ deferred.addCommand(new Listener0() {
+ public void onEvent() {
+ updateFont();
+ // Log.warn(view.getFontSize());
+ }
+ });
+ }
+ if (isAndCanBeExtended()) {
+ strikethrough.setPushed(view.isStrikethrough());
+ }
+ }
+
+ private void checkForMenus(final GuiActionDescrip descriptor) {
+ if (descriptor instanceof MenuDescriptor) {
+ menus.add((MenuDescriptor) descriptor);
+ }
+ }
+
+ private void createBasicActions() {
+
+ final MenuSeparatorDescriptor editMenuSep = new MenuSeparatorDescriptor(editMenu);
+ final MenuSeparatorDescriptor insertMenuSep = new MenuSeparatorDescriptor(insertMenu);
+ final MenuSeparatorDescriptor formatMenuSep = new MenuSeparatorDescriptor(formatMenu);
+ insertMenuSep.setAddCondition(extendedAddCond);
+
+ final ToolbarSeparatorDescriptor sndbarSep = new ToolbarSeparatorDescriptor(Type.separator, getSndBar());
+ final ToolbarSeparatorDescriptor sndbarSepExt = new ToolbarSeparatorDescriptor(Type.separator, getSndBar());
+ sndbarSepExt.setAddCondition(extendedAddCond);
+
+ final SelectAllAction selectAllAction = new SelectAllAction(i18n.t("Select all"),
+ AbstractExtendedAction.NO_TEXT, imgResources.selectall());
+ final MenuItemDescriptor select = new MenuItemDescriptor(editMenu, selectAllAction);
+ setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('A'), Keyboard.MODIFIER_CTRL), selectAllAction);
+
+ final BoldAction boldAction = new BoldAction(NO_TEXT, i18n.t("Bold"), imgResources.bold());
+ bold = new PushButtonDescriptor(boldAction);
+ setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('B'), Keyboard.MODIFIER_CTRL), boldAction);
+
+ final ItalicAction italicAction = new ItalicAction(NO_TEXT, i18n.t("Italic"), imgResources.italic());
+ italic = new PushButtonDescriptor(italicAction);
+ setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('I'), Keyboard.MODIFIER_CTRL), italicAction);
+
+ final UnderlineAction underlineAction = new UnderlineAction(NO_TEXT, i18n.t("Underline"),
+ imgResources.underline());
+ underline = new PushButtonDescriptor(underlineAction);
+ setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('U'), Keyboard.MODIFIER_CTRL), underlineAction);
+
+ final SubscriptAction subscriptAction = new SubscriptAction(i18n.t("Subscript"), NO_TEXT,
+ imgResources.subscript());
+ final MenuItemDescriptor subscript = new MenuItemDescriptor(formatMenu, subscriptAction);
+ setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf(','), Keyboard.MODIFIER_CTRL), subscriptAction);
+
+ final SuperscriptAction superscriptAction = new SuperscriptAction(i18n.t("Superscript"), NO_TEXT,
+ imgResources.superscript());
+ final MenuItemDescriptor superscript = new MenuItemDescriptor(formatMenu, superscriptAction);
+ setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('.'), Keyboard.MODIFIER_CTRL), superscriptAction);
+
+ final JustifyLeftAction jfyLeftAction = new JustifyLeftAction(NO_TEXT, i18n.t("Left Justify"),
+ imgResources.alignleft());
+ final ButtonDescriptor justifyLeft = new ButtonDescriptor(jfyLeftAction);
+ setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('L'), Keyboard.MODIFIER_CTRL), jfyLeftAction);
+
+ final JustifyCentreAction jfyCentreAction = new JustifyCentreAction(NO_TEXT, i18n.t("Centre Justify"),
+ imgResources.centerpara());
+ final ButtonDescriptor justifyCentre = new ButtonDescriptor(jfyCentreAction);
+ setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('E'), Keyboard.MODIFIER_CTRL), jfyCentreAction);
+
+ final JustifyRightAction jfyRightAction = new JustifyRightAction(NO_TEXT, i18n.t("Right Justify"),
+ imgResources.alignright());
+ final ButtonDescriptor justifyRight = new ButtonDescriptor(jfyRightAction);
+ setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('R'), Keyboard.MODIFIER_CTRL), jfyRightAction);
+
+ final UndoAction undoAction = new UndoAction(i18n.t("Undo"), NO_TEXT, imgResources.undo());
+ final UndoAction undoActionBtn = new UndoAction(NO_TEXT, i18n.t("Undo"), imgResources.undo());
+ final MenuItemDescriptor undo = new MenuItemDescriptor(editMenu, undoAction);
+ final ButtonDescriptor undoBtn = new ButtonDescriptor(undoActionBtn);
+ undoBtn.setPosition(0);
+ setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('Z'), Keyboard.MODIFIER_CTRL), undoAction);
+
+ final RedoAction redoAction = new RedoAction(i18n.t("Redo"), NO_TEXT, imgResources.redo());
+ final RedoAction redoActionBtn = new RedoAction(NO_TEXT, i18n.t("Redo"), imgResources.redo());
+ final MenuItemDescriptor redo = new MenuItemDescriptor(editMenu, redoAction);
+ final ButtonDescriptor redoBtn = new ButtonDescriptor(redoActionBtn);
+ redoBtn.setPosition(1);
+ setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('Y'), Keyboard.MODIFIER_CTRL), redoAction);
+
+ final CopyAction copyAction = new CopyAction(i18n.t("Copy"), NO_TEXT, imgResources.copy());
+ final MenuItemDescriptor copy = new MenuItemDescriptor(editMenu, copyAction);
+ setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('C'), Keyboard.MODIFIER_CTRL), copyAction);
+
+ final CutAction cutAction = new CutAction(i18n.t("Cut"), NO_TEXT, imgResources.cut());
+ final MenuItemDescriptor cut = new MenuItemDescriptor(editMenu, cutAction);
+ setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('X'), Keyboard.MODIFIER_CTRL), cutAction);
+
+ final PasteAction pasteAction = new PasteAction(i18n.t("Paste"), NO_TEXT, imgResources.paste());
+ final MenuItemDescriptor paste = new MenuItemDescriptor(editMenu, pasteAction);
+ setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('V'), Keyboard.MODIFIER_CTRL), pasteAction);
+
+ final EditHtmlAction editHtmlAction = new EditHtmlAction(i18n.t("Edit HTML"), NO_TEXT, imgResources.edithtml());
+ final MenuItemDescriptor editHtml = new MenuItemDescriptor(editMenu, editHtmlAction);
+ editHtml.setAddCondition(extendedAddCond);
+
+ final CommentAction commentAction = new CommentAction(i18n.t("Comment"), NO_TEXT, NO_ICON);
+ final MenuItemDescriptor comment = new MenuItemDescriptor(insertMenu, commentAction);
+ comment.setAddCondition(extendedAddCond);
+ setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('M'), Keyboard.MODIFIER_CTRL), commentAction);
+
+ final HrAction hlineAction = new HrAction(i18n.t("Horizontal line"), NO_TEXT, imgResources.hfixedline());
+ final HrAction hlineBtnAction = new HrAction(NO_TEXT, i18n.t("Horizontal line"), imgResources.hfixedline());
+ final MenuItemDescriptor hline = new MenuItemDescriptor(insertMenu, hlineAction);
+ final ButtonDescriptor hlineBtn = new ButtonDescriptor(hlineBtnAction);
+ hline.setAddCondition(extendedAddCond);
+ hlineBtn.setAddCondition(extendedAddCond);
+ setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf(' '), Keyboard.MODIFIER_CTRL
+ + Keyboard.MODIFIER_SHIFT), hlineAction);
+
+ final BlockquoteAction blockquoteAction = new BlockquoteAction(i18n.t("Block Quotation"), NO_TEXT, NO_ICON);
+ final MenuItemDescriptor blockquote = new MenuItemDescriptor(formatMenu, blockquoteAction);
+ blockquote.setAddCondition(extendedAddCond);
+
+ final StrikethroughAction strikeAction = new StrikethroughAction(NO_TEXT, i18n.t("Strikethrough"),
+ imgResources.strikeout());
+ strikethrough = new PushButtonDescriptor(strikeAction);
+ strikethrough.setAddCondition(extendedAddCond);
+
+ final DecreaseIndentAction decreIndentAction = new DecreaseIndentAction(NO_TEXT, i18n.t("Decrease Indent"),
+ imgResources.decrementindent());
+ final ButtonDescriptor decreaseIndent = new ButtonDescriptor(decreIndentAction);
+ decreaseIndent.setAddCondition(extendedAddCond);
+
+ final IncreaseIndentAction increIndentAction = new IncreaseIndentAction(NO_TEXT, i18n.t("Increase Indent"),
+ imgResources.incrementindent());
+ final ButtonDescriptor increaseIndent = new ButtonDescriptor(increIndentAction);
+ increaseIndent.setAddCondition(extendedAddCond);
+
+ final OlAction olistAction = new OlAction(NO_TEXT, i18n.t("Numbered List"), imgResources.defaultnumbering());
+ final ButtonDescriptor olist = new ButtonDescriptor(olistAction);
+ olist.setAddCondition(extendedAddCond);
+ setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('7'), Keyboard.MODIFIER_CTRL), olistAction);
+
+ final UlAction ulistAction = new UlAction(NO_TEXT, i18n.t("Bullet List"), imgResources.defaultbullet());
+ final ButtonDescriptor ulist = new ButtonDescriptor(ulistAction);
+ ulist.setAddCondition(extendedAddCond);
+ setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('8'), Keyboard.MODIFIER_CTRL), ulistAction);
+
+ final ImgAction imgAction = new ImgAction(i18n.t("Image..."), NO_TEXT, imgResources.images());
+ final ImgAction imgBtnAction = new ImgAction(NO_TEXT, i18n.t("Insert Image"), imgResources.images());
+ final MenuItemDescriptor img = new MenuItemDescriptor(insertMenu, imgAction);
+ final ButtonDescriptor imgBtn = new ButtonDescriptor(imgBtnAction);
+ img.setAddCondition(extendedAddCond);
+ imgBtn.setAddCondition(extendedAddCond);
+
+ final InsertMediaAction insertMediaAction = new InsertMediaAction(i18n.t("Audio/Video..."), NO_TEXT,
+ imgResources.film());
+ final MenuItemDescriptor insertMedia = new MenuItemDescriptor(insertMenu, insertMediaAction);
+ insertMedia.setAddCondition(extendedAddCond);
+
+ final CreateOrEditLinkAction editLinkAction = new CreateOrEditLinkAction(i18n.t("Link..."), NO_TEXT,
+ imgResources.link());
+ final CreateOrEditLinkAction editLinkBtnAction = new CreateOrEditLinkAction(NO_TEXT,
+ i18n.t("Create or Edit Link"), imgResources.link());
+ final CreateOrEditLinkAction editLinkCtxAction = new CreateOrEditLinkAction(i18n.t("Change"), NO_TEXT,
+ imgResources.link());
+ final MenuItemDescriptor editLink = new MenuItemDescriptor(insertMenu, editLinkAction);
+ final MenuItemDescriptor editLinkCtx = new MenuItemDescriptor(linkCtxMenu, editLinkCtxAction);
+ final ButtonDescriptor editLinkBtn = new ButtonDescriptor(editLinkBtnAction);
+ editLink.setAddCondition(extendedAddCond);
+ editLinkBtn.setAddCondition(extendedAddCond);
+ editLinkCtx.setAddCondition(extendedAddCond);
+ setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('K'), Keyboard.MODIFIER_CTRL), editLinkAction,
+ editLinkBtnAction);
+
+ final KeyStroke key_SK = KeyStroke.getKeyStroke(Character.valueOf('K'), Keyboard.MODIFIER_CTRL
+ + Keyboard.MODIFIER_SHIFT);
+ final RemoveLinkAction delLinkBtnAction = new RemoveLinkAction(NO_TEXT, i18n.t("Remove Link"),
+ imgResources.linkbreak());
+ final RemoveLinkAction delLinkCtxAction = new RemoveLinkAction(i18n.t("Remove"), NO_TEXT,
+ imgResources.linkbreak());
+ final MenuItemDescriptor removeLinkCtx = new MenuItemDescriptor(linkCtxMenu, delLinkCtxAction);
+ final ButtonDescriptor removeLinkBtn = new ButtonDescriptor(delLinkBtnAction);
+ removeLinkBtn.setAddCondition(extendedAddCond);
+ removeLinkCtx.setAddCondition(extendedAddCond);
+ setActionShortcut(key_SK, delLinkBtnAction);
+
+ final RemoveFormatAction remFormatAction = new RemoveFormatAction(i18n.t("Clear Formatting..."), NO_TEXT,
+ imgResources.removeFormat());
+ final RemoveFormatAction remFormatBtnAc = new RemoveFormatAction(NO_TEXT, i18n.t("Clear Formatting..."),
+ imgResources.removeFormat());
+ final MenuItemDescriptor removeFormat = new MenuItemDescriptor(formatMenu, remFormatAction);
+ final ButtonDescriptor removeFormatBtn = new ButtonDescriptor(remFormatBtnAc);
+ removeFormat.setAddCondition(extendedAddCond);
+ removeFormatBtn.setAddCondition(extendedAddCond);
+ setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf(' '), Keyboard.MODIFIER_CTRL), remFormatAction,
+ remFormatBtnAc);
+
+ final InsertSpecialCharAction insCharAction = new InsertSpecialCharAction(i18n.t("Special characters..."),
+ NO_TEXT, imgResources.specialchars());
+ final MenuItemDescriptor insertSpecialChar = new MenuItemDescriptor(insertMenu, insCharAction);
+ insertSpecialChar.setAddCondition(extendedAddCond);
+
+ final InsertTableAction insTableAction = new InsertTableAction(i18n.t("Table..."), NO_TEXT,
+ imgResources.inserttable());
+ final InsertTableAction insTableBtnAction = new InsertTableAction(NO_TEXT, i18n.t("Insert Table"),
+ imgResources.inserttable());
+ final MenuItemDescriptor insertTable = new MenuItemDescriptor(insertMenu, insTableAction);
+ final ButtonDescriptor insertTableBtn = new ButtonDescriptor(insTableBtnAction);
+ insertTable.setAddCondition(extendedAddCond);
+ insertTableBtn.setAddCondition(extendedAddCond);
+
+ final FontColorAction fontColorAction = new FontColorAction(NO_TEXT, i18n.t("Text Colour"),
+ imgResources.fontcolor());
+ final ButtonDescriptor fontColor = new ButtonDescriptor(fontColorAction);
+ fontColor.setAddCondition(basicAddCond);
+
+ final BackgroundColorAction backColorAction = new BackgroundColorAction(NO_TEXT,
+ i18n.t("Text Background Colour"), imgResources.backcolor());
+ final ButtonDescriptor backgroundColor = new ButtonDescriptor(backColorAction);
+ backgroundColor.setAddCondition(basicAddCond);
+
+ final DevInfoAction devInfoAction = new DevInfoAction(i18n.t("Developers info"), NO_TEXT,
+ imgResources.specialchars());
+ final MenuItemDescriptor devInfo = new MenuItemDescriptor(formatMenu, devInfoAction);
+ devInfo.setAddCondition(extendedAddCond);
+ setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('I'), Keyboard.MODIFIER_ALT), devInfoAction);
+
+ actions = new GuiActionDescCollection();
+ actions.add(fileMenu, editMenu, formatMenu, insertMenu, undo, redo, editMenuSep, copy, cut, paste, editMenuSep,
+ select, editMenuSep, editHtml, editLink, img, insertTable, insertMedia, insertMenuSep,
+ insertSpecialChar, comment, hline, removeFormat, formatMenuSep, insertMenuSep, undoBtn, redoBtn,
+ sndbarSep, bold, italic, underline, strikethrough, sndbarSep, justifyLeft, justifyCentre, justifyRight,
+ decreaseIndent, increaseIndent, olist, ulist, sndbarSep, removeFormatBtn, sndbarSepExt, hlineBtn,
+ imgBtn, editLinkBtn, removeLinkBtn, insertTableBtn, sndbarSepExt, subscript, superscript, blockquote,
+ fontColor, backgroundColor, fontSizeMenu, fontMenu, editLinkCtx, removeLinkCtx);
+ // actions.add(devInfo);
+
+ setLocation(TOPBAR, new GuiActionDescrip[] { fileMenu, editMenu, insertMenu, formatMenu, editMenuSep,
+ subscript, superscript, undo, redo, editMenuSep, copy, cut, paste, editMenuSep, select, editMenuSep,
+ editHtml, comment, hline, blockquote, img, insertTable, insertMedia, editLink, removeFormat,
+ formatMenuSep, insertMenuSep, insertSpecialChar, insertTable, devInfo });
+ setLocation(SNDBAR, new GuiActionDescrip[] { undoBtn, redoBtn, sndbarSep, sndbarSepExt, bold, italic,
+ underline, strikethrough, justifyLeft, justifyCentre, justifyRight, undoBtn, redoBtn, hlineBtn,
+ decreaseIndent, increaseIndent, olist, ulist, hlineBtn, imgBtn, editLinkBtn, removeLinkBtn,
+ removeFormatBtn, insertTableBtn, fontColor, backgroundColor, fontMenu, fontSizeMenu });
+ setLocation(LINKCTX, new GuiActionDescrip[] { removeLinkCtx, editLinkCtx });
+
+ for (final String fontName : FONT_NAMES) {
+ createFontAction(fontMenu, fontName);
+ }
+
+ for (int fontSize = 0; fontSize < FONT_SIZE_NAMES.length; fontSize++) {
+ createFontSizeAction(fontSizeMenu, fontSize);
+ }
+ }
+
+ private void createFontAction(final MenuDescriptor fontMenu, final String fontName) {
+ final FontAction fontAction = new FontAction(fontName, NO_TEXT, NO_ICON);
+ final MenuRadioItemDescriptor font = new MenuRadioItemDescriptor(fontMenu, fontAction, FONT_GROUP);
+ font.setAddCondition(basicAddCond);
+ font.setLocation(SNDBAR);
+ fontActions.put(fontName.toLowerCase(), font);
+ actions.add(font);
+ }
+
+ private void createFontSizeAction(final MenuDescriptor fontSizeMenu, final int fontSize) {
+ final String fontSizeName = i18n.t(FONT_SIZE_NAMES[fontSize]);
+ final FontSizeAction fontSizeAction = new FontSizeAction(fontSizeName, fontSize, NO_TEXT, NO_ICON);
+ final MenuRadioItemDescriptor fontSizeItem = new MenuRadioItemDescriptor(fontSizeMenu, fontSizeAction,
+ FONT_SIZEGROUP);
+ fontSizeItem.setAddCondition(basicAddCond);
+ // setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf(((char)
+ // (48 + fontSize))), Keyboard.MODIFIER_CTRL),
+ // fontSizeAction);
+ fontSizeItem.setLocation(SNDBAR);
+ actions.add(fontSizeItem);
+ }
+
+ private void createMainMenus() {
+ menus.add(fileMenu = new MenuDescriptor(i18n.t("File")));
+ menus.add(editMenu = new MenuDescriptor(i18n.t("Edit")));
+ menus.add(insertMenu = new MenuDescriptor(i18n.t("Insert")));
+ menus.add(formatMenu = new MenuDescriptor(i18n.t("Format")));
+ menus.add(linkCtxMenu = new MenuDescriptor(i18n.t("Change Link")));
+ menus.add(fontMenu = new MenuDescriptor(NO_TEXT, i18n.t("Font"), imgResources.charfontname()));
+ menus.add(fontSizeMenu = new MenuDescriptor(NO_TEXT, i18n.t("Font size"), imgResources.fontheight()));
+ insertMenu.setAddCondition(extendedAddCond);
+ }
+
+ private void createPalette() {
+ if (palette == null) {
+ palette = paletteProvider.get();
+ }
+ }
+
+ private void hideLinkCtxMenu() {
+ if (view.isCtxMenuVisible()) {
+ view.hideLinkCtxMenu();
+ }
+ }
+
+ private void hideMenus() {
+ for (final MenuDescriptor menu : menus) {
+ menu.hide();
+ }
+ if (palette != null) {
+ palette.hide();
+ }
+ }
+
+ private boolean isAndCanBeExtended() {
+ return extended && view.canBeExtended();
+ }
+
+ private void updateFont() {
+ final String currentFont = view.getFont();
+ final MenuCheckItemDescriptor item = fontActions.get(currentFont);
+ if (currentFontItem != null && item != currentFontItem) {
+ currentFontItem.setChecked(false);
+ }
+ if (item != null) {
+ item.setChecked(true);
+ currentFontItem = item;
+ fontMenu.setText((String) item.getValue(FontAction.FONT_NAME));
+ } else {
+ fontMenu.setText(" ");
+ }
+ }
+}
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorPresenterNew.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorPresenterNew.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorPresenterNew.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -1,1196 +0,0 @@
-package org.ourproject.kune.platf.client.ui.rte.basic;
-
-import static org.ourproject.kune.platf.client.actions.AbstractExtendedAction.NO_ICON;
-import static org.ourproject.kune.platf.client.actions.AbstractExtendedAction.NO_TEXT;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.ourproject.kune.platf.client.View;
-import org.ourproject.kune.platf.client.actions.AbstractAction;
-import org.ourproject.kune.platf.client.actions.AbstractExtendedAction;
-import org.ourproject.kune.platf.client.actions.Action;
-import org.ourproject.kune.platf.client.actions.ActionEvent;
-import org.ourproject.kune.platf.client.actions.InputMap;
-import org.ourproject.kune.platf.client.actions.KeyStroke;
-import org.ourproject.kune.platf.client.actions.ui.ButtonDescriptor;
-import org.ourproject.kune.platf.client.actions.ui.GuiActionDescCollection;
-import org.ourproject.kune.platf.client.actions.ui.GuiActionDescrip;
-import org.ourproject.kune.platf.client.actions.ui.GuiAddCondition;
-import org.ourproject.kune.platf.client.actions.ui.MenuCheckItemDescriptor;
-import org.ourproject.kune.platf.client.actions.ui.MenuDescriptor;
-import org.ourproject.kune.platf.client.actions.ui.MenuItemDescriptor;
-import org.ourproject.kune.platf.client.actions.ui.MenuRadioItemDescriptor;
-import org.ourproject.kune.platf.client.actions.ui.MenuSeparatorDescriptor;
-import org.ourproject.kune.platf.client.actions.ui.PushButtonDescriptor;
-import org.ourproject.kune.platf.client.actions.ui.ToolbarSeparatorDescriptor;
-import org.ourproject.kune.platf.client.actions.ui.ToolbarSeparatorDescriptor.Type;
-import org.ourproject.kune.platf.client.i18n.I18nTranslationService;
-import org.ourproject.kune.platf.client.shortcuts.Keyboard;
-import org.ourproject.kune.platf.client.state.Session;
-import org.ourproject.kune.platf.client.ui.noti.NotifyUser;
-import org.ourproject.kune.platf.client.ui.palette.ColorWebSafePalette;
-import org.ourproject.kune.platf.client.ui.rte.RichTextArea;
-import org.ourproject.kune.platf.client.ui.rte.edithtml.EditHtmlDialog;
-import org.ourproject.kune.platf.client.ui.rte.img.RTEImgResources;
-import org.ourproject.kune.platf.client.ui.rte.insertimg.ImageInfo;
-import org.ourproject.kune.platf.client.ui.rte.insertimg.InsertImageDialog;
-import org.ourproject.kune.platf.client.ui.rte.insertlink.InsertLinkDialog;
-import org.ourproject.kune.platf.client.ui.rte.insertlink.LinkInfo;
-import org.ourproject.kune.platf.client.ui.rte.insertmedia.InsertMediaDialog;
-import org.ourproject.kune.platf.client.ui.rte.insertspecialchar.InsertSpecialCharDialog;
-import org.ourproject.kune.platf.client.ui.rte.inserttable.InsertTableDialog;
-import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
-
-import com.allen_sauer.gwt.log.client.Log;
-import com.calclab.suco.client.events.Event0;
-import com.calclab.suco.client.events.Listener;
-import com.calclab.suco.client.events.Listener0;
-import com.calclab.suco.client.ioc.Provider;
-import com.google.gwt.libideas.resources.client.ImageResource;
-import com.google.gwt.user.client.Event;
-
-public class RTEditorPresenterNew implements RTEditorNew {
-
- public class BackgroundColorAction extends AbstractExtendedAction {
-
- public BackgroundColorAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- createPalette();
- final Event event = actionEvent.getEvent();
- palette.show(event.getClientX(), event.getClientY(), new Listener<String>() {
- public void onEvent(final String color) {
- palette.hide();
- view.setBackColor(color);
- fireOnEdit();
- }
- });
- }
- }
-
- public class BlockquoteAction extends AbstractExtendedAction {
- public BlockquoteAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- view.focus();
- view.insertBlockquote();
- fireOnEdit();
- }
- }
-
- public class BoldAction extends AbstractExtendedAction {
- public BoldAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- view.toggleBold();
- fireOnEdit();
- }
- }
-
- public class CommentAction extends AbstractExtendedAction {
- public CommentAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- deferred.addCommand(new Listener0() {
- public void onEvent() {
- view.focus();
- final String author = session.isLogged() ? session.getCurrentUser().getShortName()
- : i18n.t("anonymous user");
- if (view.isAnythingSelected()) {
- NotifyUser.askConfirmation(i18n.t("Insert a comment"),
- i18n.t("Include the selected text in the comment?"), new Listener0() {
- public void onEvent() {
- // include selection in
- // comment
- view.insertCommentUsingSelection(author);
- }
- }, new Listener0() {
- public void onEvent() {
- // not include selection in
- // comment;
- view.insertCommentNotUsingSelection(author);
- }
- });
- } else {
- // Nothing selected > create comment in
- // insertion point
- view.insertComment(author);
- }
- }
- });
- }
-
- @Override
- public boolean isEnabled() {
- return session.isLogged();
- }
- }
-
- public class CopyAction extends AbstractExtendedAction {
- public CopyAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- view.copy();
- }
- }
-
- public class CreateOrEditLinkAction extends AbstractExtendedAction {
- public CreateOrEditLinkAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- deferred.addCommand(new Listener0() {
- private InsertLinkDialog insLinkDialog;
-
- public void onEvent() {
- if (insLinkListener == null) {
- insLinkListener = new Listener<LinkInfo>() {
- public void onEvent(final LinkInfo linkInfo) {
- final String link = linkInfo.toString();
- Log.debug("Link: " + link);
- view.focus();
- view.insertHtml(link);
- fireOnEdit();
- }
- };
- }
- final LinkInfo linkInfo = view.getLinkInfoIfHref();
-
- if (insLinkDialog == null) {
- insLinkDialog = insLinkDialogPv.get();
- }
- insLinkDialog.setLinkInfo(linkInfo);
- insLinkDialog.setOnCreateLink(insLinkListener);
- insLinkDialog.show();
- hideLinkCtxMenu();
- final String href = linkInfo.getHref();
- if (href.length() > 0) {
- if (href.startsWith("mailto")) {
- insLinkDialog.activateTab(2);
- } else {
- insLinkDialog.activateTab(1);
- }
- }
- }
- });
- }
- }
-
- public class CutAction extends AbstractExtendedAction {
- public CutAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- view.cut();
- fireOnEdit();
- }
- }
-
- public class DecreaseIndentAction extends AbstractExtendedAction {
- public DecreaseIndentAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- view.leftIndent();
- fireOnEdit();
- }
- }
-
- public class DevInfoAction extends AbstractExtendedAction {
- public DevInfoAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- deferred.addCommand(new Listener0() {
- public void onEvent() {
- view.getRangeInfo();
- }
- });
- }
- }
-
- public class EditHtmlAction extends AbstractExtendedAction {
- private EditHtmlDialog editHtmlDialog;
-
- public EditHtmlAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- if (updHtmlListener == null) {
- updHtmlListener = new Listener<String>() {
- public void onEvent(final String html) {
- view.setHTML(html);
- fireOnEdit();
- }
- };
- }
- if (editHtmlDialog == null) {
- editHtmlDialog = editHtmlDialogPv.get();
- }
- editHtmlDialog.setUpdateListener(updHtmlListener);
- editHtmlDialog.show();
- hideLinkCtxMenu();
- editHtmlDialog.setHtml(view.getHTML());
- }
- }
-
- public class FontAction extends AbstractExtendedAction {
- public static final String FONT_NAME = "fontname";
-
- public FontAction(final String fontName, final String tooltip, final ImageResource icon) {
- super("<span style=\"font-family: " + fontName + "\">" + fontName + "</span>", tooltip, icon);
- super.putValue(FONT_NAME, fontName);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- final String fontName = getFontName();
- view.setFontName(fontName);
- fontMenu.setText(fontName);
- fireOnEdit();
- }
-
- private String getFontName() {
- return (String) super.getValue(FONT_NAME);
- }
- }
-
- public class FontColorAction extends AbstractExtendedAction {
- public FontColorAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- createPalette();
- final Event event = actionEvent.getEvent();
- palette.show(event.getClientX(), event.getClientY(), new Listener<String>() {
- public void onEvent(final String color) {
- palette.hide();
- view.setForeColor(color);
- fireOnEdit();
- }
- });
- hideLinkCtxMenu();
- }
- }
-
- public class FontSizeAction extends AbstractExtendedAction {
- private final int fontSize;
-
- public FontSizeAction(final String fontSizeName, final int fontSize, final String tooltip,
- final ImageResource icon) {
- super("<font size=\"" + (fontSize + 1) + "\">" + fontSizeName + "</font>", tooltip, icon);
- this.fontSize = fontSize;
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- view.setFontSize(FONT_SIZES[fontSize]);
- fireOnEdit();
- // fontSizeMenu.setText(fontSizeName);
- }
- }
-
- public class HrAction extends AbstractExtendedAction {
- public HrAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- view.focus();
- view.insertHorizontalRule();
- fireOnEdit();
- }
- }
-
- public class ImgAction extends AbstractExtendedAction {
- public ImgAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- deferred.addCommand(new Listener0() {
- private InsertImageDialog insImgDialog;
-
- public void onEvent() {
- if (insImgListener == null) {
- insImgListener = new Listener<ImageInfo>() {
- public void onEvent(final ImageInfo imageInfo) {
- Log.debug("Image: " + imageInfo);
- view.focus();
- view.insertHtml(imageInfo.toString());
- fireOnEdit();
- }
- };
- }
- if (insImgDialog == null) {
- insImgDialog = insImgDialogProv.get();
- }
- insImgDialog.reset();
- insImgDialog.setOnCreateImage(insImgListener);
- insImgDialog.show();
- hideLinkCtxMenu();
- }
- });
- }
- }
-
- public class IncreaseIndentAction extends AbstractExtendedAction {
- public IncreaseIndentAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- view.rightIndent();
- fireOnEdit();
- }
- }
-
- public class InsertMediaAction extends AbstractExtendedAction {
- public InsertMediaAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- deferred.addCommand(new Listener0() {
- private InsertMediaDialog insMediaDialog;
-
- public void onEvent() {
- if (insMediaListener == null) {
- insMediaListener = new Listener<String>() {
- public void onEvent(final String html) {
- Log.debug("Media: " + html);
- view.focus();
- view.insertHtml(html);
- fireOnEdit();
- }
- };
- }
- if (insMediaDialog == null) {
- insMediaDialog = insMediaDialogPv.get();
- }
- insMediaDialog.setOnCreate(insMediaListener);
- insMediaDialog.show();
- hideLinkCtxMenu();
- }
- });
- }
- }
-
- public class InsertSpecialCharAction extends AbstractExtendedAction {
- private InsertSpecialCharDialog insCharDialog;
-
- public InsertSpecialCharAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- NotifyUser.showProgressLoading();
- if (insCharListener == null) {
- insCharListener = new Listener<String>() {
- public void onEvent(final String character) {
- view.insertHtml(character);
- }
- };
- }
- if (insCharDialog == null) {
- insCharDialog = insCharDialogProv.get();
- }
- insCharDialog.setOnInsertSpecialChar(insCharListener);
- insCharDialog.show();
- hideLinkCtxMenu();
- NotifyUser.hideProgress();
- }
- }
-
- public class InsertTableAction extends AbstractExtendedAction {
- private InsertTableDialog insTableDialog;
-
- public InsertTableAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- if (insTableListener == null) {
- insTableListener = new Listener<String>() {
- public void onEvent(final String table) {
- view.insertHtml(table);
- fireOnEdit();
- }
- };
- }
- if (insTableDialog == null) {
- insTableDialog = insTableDialogPv.get();
- }
- insTableDialog.setOnInsertTable(insTableListener);
- insTableDialog.show();
- }
- }
-
- public class ItalicAction extends AbstractExtendedAction {
- public ItalicAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- view.toggleItalic();
- fireOnEdit();
- }
- }
-
- public class JustifyCentreAction extends AbstractExtendedAction {
- public JustifyCentreAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- view.justifyCenter();
- fireOnEdit();
- }
- }
-
- public class JustifyLeftAction extends AbstractExtendedAction {
- public JustifyLeftAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- view.justifyLeft();
- fireOnEdit();
- }
- }
-
- public class JustifyRightAction extends AbstractExtendedAction {
- public JustifyRightAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- view.justifyRight();
- fireOnEdit();
- }
- }
-
- public class OlAction extends AbstractExtendedAction {
- public OlAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- view.insertOrderedList();
- fireOnEdit();
- }
- }
-
- public class PasteAction extends AbstractExtendedAction {
- public PasteAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- view.paste();
- fireOnEdit();
- }
- }
-
- public class RedoAction extends AbstractExtendedAction {
- public RedoAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- view.redo();
- fireOnEdit();
- }
- }
-
- public class RemoveFormatAction extends AbstractExtendedAction {
- public RemoveFormatAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- view.removeFormat();
- fireOnEdit();
- }
- }
-
- public class RemoveLinkAction extends AbstractExtendedAction {
- public RemoveLinkAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- deferred.addCommand(new Listener0() {
- public void onEvent() {
- view.unlink();
- hideLinkCtxMenu();
- fireOnEdit();
- }
- });
- }
- }
-
- public class SelectAllAction extends AbstractExtendedAction {
- public SelectAllAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- view.selectAll();
- }
- }
-
- public class StrikethroughAction extends AbstractExtendedAction {
- public StrikethroughAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- view.toggleStrikethrough();
- fireOnEdit();
- }
- }
-
- public class SubscriptAction extends AbstractExtendedAction {
- public SubscriptAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- view.toggleSubscript();
- fireOnEdit();
- }
- }
-
- public class SuperscriptAction extends AbstractExtendedAction {
- public SuperscriptAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- view.toggleSuperscript();
- fireOnEdit();
- }
- }
-
- public class UlAction extends AbstractExtendedAction {
- public UlAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- view.insertUnorderedList();
- fireOnEdit();
- }
- }
-
- public class UnderlineAction extends AbstractExtendedAction {
- public UnderlineAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- view.toggleUnderline();
- fireOnEdit();
- }
- }
-
- public class UndoAction extends AbstractExtendedAction {
- public UndoAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- view.undo();
- fireOnEdit();
- }
- }
-
- private static final String FONT_NAMES[] = { "Times New Roman", "Arial", "Courier New", "Georgia", "Trebuchet",
- "Verdana" };
- private static final String FONT_SIZE_NAMES[] = { "Extra small", "Very small (normal)", "Small", "Medium", "Large",
- "Very large", "Extra large" };
- private static final RichTextArea.FontSize[] FONT_SIZES = new RichTextArea.FontSize[] {
- RichTextArea.FontSize.XX_SMALL, RichTextArea.FontSize.X_SMALL, RichTextArea.FontSize.SMALL,
- RichTextArea.FontSize.MEDIUM, RichTextArea.FontSize.LARGE, RichTextArea.FontSize.X_LARGE,
- RichTextArea.FontSize.XX_LARGE };
- private static final String FONT_GROUP = "fontgroup";
- private static final String FONT_SIZEGROUP = "fontsizegroup";
-
- private RTEditorViewNew view;
- private boolean extended;
- private final I18nTranslationService i18n;
- private final Session session;
- private final RTEImgResources imgResources;
- private final Event0 onEdit;
- private final DeferredCommandWrapper deferred;
- private final Provider<ColorWebSafePalette> paletteProvider;
- private final Provider<InsertLinkDialog> insLinkDialogPv;
- private final Provider<EditHtmlDialog> editHtmlDialogPv;
- private final Provider<InsertImageDialog> insImgDialogProv;
- private final Provider<InsertTableDialog> insTableDialogPv;
- private final Provider<InsertSpecialCharDialog> insCharDialogProv;
- private final Provider<InsertMediaDialog> insMediaDialogPv;
- private Listener<String> insTableListener;
- private Listener<LinkInfo> insLinkListener;
- private Listener<ImageInfo> insImgListener;
- private Listener<String> insMediaListener;
- private Listener<String> updHtmlListener;
- protected Listener<String> insCharListener;
- protected ColorWebSafePalette palette;
- private PushButtonDescriptor bold;
- private PushButtonDescriptor italic;
- private PushButtonDescriptor underline;
- private PushButtonDescriptor strikethrough;
- private final GuiAddCondition basicAddCond;
- private final GuiAddCondition extendedAddCond;
- private final InputMap inputMap;
- private MenuDescriptor editMenu;
- private MenuDescriptor insertMenu;
- private MenuDescriptor formatMenu;
- private MenuDescriptor linkCtxMenu;
- private GuiActionDescCollection actions;
- private MenuDescriptor fontMenu;
- private MenuDescriptor fontSizeMenu;
- private MenuDescriptor fileMenu;
- private final List<MenuDescriptor> menus;
- private boolean attached;
- private final Map<String, MenuCheckItemDescriptor> fontActions;
- private MenuCheckItemDescriptor currentFontItem;
-
- public RTEditorPresenterNew(final I18nTranslationService i18n, final Session session,
- final RTEImgResources imgResources, final Provider<InsertLinkDialog> insLinkDialog,
- final Provider<ColorWebSafePalette> palette, final Provider<EditHtmlDialog> editHtmlDialog,
- final Provider<InsertImageDialog> insertImageDialog, final Provider<InsertMediaDialog> insertMediaDialog,
- final Provider<InsertTableDialog> insertTableDialog, final Provider<InsertSpecialCharDialog> insCharDialog,
- final DeferredCommandWrapper deferred) {
- this.i18n = i18n;
- this.session = session;
- this.insLinkDialogPv = insLinkDialog;
- this.paletteProvider = palette;
- this.editHtmlDialogPv = editHtmlDialog;
- this.insImgDialogProv = insertImageDialog;
- this.insMediaDialogPv = insertMediaDialog;
- this.insTableDialogPv = insertTableDialog;
- this.insCharDialogProv = insCharDialog;
- this.deferred = deferred;
- inputMap = new InputMap();
- menus = new ArrayList<MenuDescriptor>();
-
- this.imgResources = imgResources;
- this.onEdit = new Event0("onRTEEdit");
- extendedAddCond = new GuiAddCondition() {
- public boolean mustBeAdded() {
- return isAndCanBeExtended();
- }
- };
- basicAddCond = new GuiAddCondition() {
- public boolean mustBeAdded() {
- return view.canBeBasic();
- }
- };
- attached = false;
- fontActions = new HashMap<String, MenuCheckItemDescriptor>();
- }
-
- public void addAction(final GuiActionDescrip descriptor) {
- actions.add(descriptor);
- checkForMenus(descriptor);
- }
-
- public void addActions(final GuiActionDescCollection descriptors) {
- actions.addAll(descriptors);
- for (final GuiActionDescrip descriptor : descriptors) {
- checkForMenus(descriptor);
- }
- }
-
- public void addOnEditListener(final Listener0 listener) {
- onEdit.add(listener);
- }
-
- public void adjustSize(final int height) {
- view.adjustSize(height);
- }
-
- public void attach() {
- if (!attached) {
- attached = true;
- view.addActions(actions);
- view.setInputMap(inputMap);
- }
- }
-
- public void detach() {
- // topBar.clear();
- // sndBar.clear();
- }
-
- public void fireOnEdit() {
- onEdit.fire();
- }
-
- public GuiAddCondition getBasicAddCondition() {
- return basicAddCond;
- }
-
- public MenuDescriptor getEditMenu() {
- return editMenu;
- }
-
- public View getEditorArea() {
- return view;
- }
-
- public GuiAddCondition getExtendedAddCondition() {
- return extendedAddCond;
- }
-
- public MenuDescriptor getFileMenu() {
- return fileMenu;
- }
-
- public MenuDescriptor getFormatMenu() {
- return formatMenu;
- }
-
- public String getHtml() {
- return view.getHTML();
- }
-
- public MenuDescriptor getInsertMenu() {
- return insertMenu;
- }
-
- public MenuDescriptor getLinkCtxMenu() {
- return linkCtxMenu;
- }
-
- public View getSndBar() {
- return view.getSndBar();
- }
-
- public String getText() {
- return view.getText();
- }
-
- public View getTopBar() {
- return view.getTopBar();
- }
-
- public void init(final RTEditorViewNew view) {
- this.view = view;
- createMainMenus();
- createBasicActions();
- }
-
- public void onEditorFocus() {
- hideMenus();
- }
-
- public void onLostFocus() {
- // Nothing for the moment
- }
-
- public void reset() {
- hideMenus();
- hideLinkCtxMenu();
- }
-
- public void setActionShortcut(final KeyStroke key, final AbstractAction action) {
- inputMap.put(key, action);
- action.putValue(Action.ACCELERATOR_KEY, key);
- }
-
- public void setActionShortcut(final KeyStroke key, final AbstractAction mainAction, final AbstractAction... actions) {
- setActionShortcut(key, mainAction);
- for (final AbstractAction action : actions) {
- action.putValue(Action.ACCELERATOR_KEY, key);
- }
- }
-
- public void setExtended(final boolean newValue) {
- this.extended = newValue;
- }
-
- public void setFocus(final boolean focus) {
- view.setFocus(focus);
- }
-
- public void setHtml(final String html) {
- view.setHTML(html);
- view.focus();
- }
-
- public void setText(final String text) {
- view.setText(text);
- view.focus();
- }
-
- public void updateLinkInfo() {
- deferred.addCommand(new Listener0() {
- public void onEvent() {
- if (isAndCanBeExtended() && view.isLink()) {
- view.showLinkCtxMenu();
- } else {
- hideLinkCtxMenu();
- }
- }
- });
- }
-
- public void updateStatus() {
- if (view.canBeBasic()) {
- bold.setPushed(view.isBold());
- italic.setPushed(view.isItalic());
- underline.setPushed(view.isUnderlined());
- deferred.addCommand(new Listener0() {
- public void onEvent() {
- updateFont();
- // Log.warn(view.getFontSize());
- }
- });
- }
- if (isAndCanBeExtended()) {
- strikethrough.setPushed(view.isStrikethrough());
- }
- }
-
- private void checkForMenus(final GuiActionDescrip descriptor) {
- if (descriptor instanceof MenuDescriptor) {
- menus.add((MenuDescriptor) descriptor);
- }
- }
-
- private void createBasicActions() {
-
- final MenuSeparatorDescriptor editMenuSep = new MenuSeparatorDescriptor(editMenu);
- final MenuSeparatorDescriptor insertMenuSep = new MenuSeparatorDescriptor(insertMenu);
- final MenuSeparatorDescriptor formatMenuSep = new MenuSeparatorDescriptor(formatMenu);
- insertMenuSep.setAddCondition(extendedAddCond);
-
- final ToolbarSeparatorDescriptor sndbarSep = new ToolbarSeparatorDescriptor(Type.separator, getSndBar());
- final ToolbarSeparatorDescriptor sndbarSepExt = new ToolbarSeparatorDescriptor(Type.separator, getSndBar());
- sndbarSepExt.setAddCondition(extendedAddCond);
-
- final SelectAllAction selectAllAction = new SelectAllAction(i18n.t("Select all"), AbstractExtendedAction.NO_TEXT,
- imgResources.selectall());
- final MenuItemDescriptor select = new MenuItemDescriptor(editMenu, selectAllAction);
- setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('A'), Keyboard.MODIFIER_CTRL), selectAllAction);
-
- final BoldAction boldAction = new BoldAction(NO_TEXT, i18n.t("Bold"), imgResources.bold());
- bold = new PushButtonDescriptor(boldAction);
- setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('B'), Keyboard.MODIFIER_CTRL), boldAction);
-
- final ItalicAction italicAction = new ItalicAction(NO_TEXT, i18n.t("Italic"), imgResources.italic());
- italic = new PushButtonDescriptor(italicAction);
- setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('I'), Keyboard.MODIFIER_CTRL), italicAction);
-
- final UnderlineAction underlineAction = new UnderlineAction(NO_TEXT, i18n.t("Underline"),
- imgResources.underline());
- underline = new PushButtonDescriptor(underlineAction);
- setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('U'), Keyboard.MODIFIER_CTRL), underlineAction);
-
- final SubscriptAction subscriptAction = new SubscriptAction(i18n.t("Subscript"), NO_TEXT,
- imgResources.subscript());
- final MenuItemDescriptor subscript = new MenuItemDescriptor(formatMenu, subscriptAction);
- setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf(','), Keyboard.MODIFIER_CTRL), subscriptAction);
-
- final SuperscriptAction superscriptAction = new SuperscriptAction(i18n.t("Superscript"), NO_TEXT,
- imgResources.superscript());
- final MenuItemDescriptor superscript = new MenuItemDescriptor(formatMenu, superscriptAction);
- setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('.'), Keyboard.MODIFIER_CTRL), superscriptAction);
-
- final JustifyLeftAction jfyLeftAction = new JustifyLeftAction(NO_TEXT, i18n.t("Left Justify"),
- imgResources.alignleft());
- final ButtonDescriptor justifyLeft = new ButtonDescriptor(jfyLeftAction);
- setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('L'), Keyboard.MODIFIER_CTRL), jfyLeftAction);
-
- final JustifyCentreAction jfyCentreAction = new JustifyCentreAction(NO_TEXT, i18n.t("Centre Justify"),
- imgResources.centerpara());
- final ButtonDescriptor justifyCentre = new ButtonDescriptor(jfyCentreAction);
- setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('E'), Keyboard.MODIFIER_CTRL), jfyCentreAction);
-
- final JustifyRightAction jfyRightAction = new JustifyRightAction(NO_TEXT, i18n.t("Right Justify"),
- imgResources.alignright());
- final ButtonDescriptor justifyRight = new ButtonDescriptor(jfyRightAction);
- setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('R'), Keyboard.MODIFIER_CTRL), jfyRightAction);
-
- final UndoAction undoAction = new UndoAction(i18n.t("Undo"), NO_TEXT, imgResources.undo());
- final UndoAction undoActionBtn = new UndoAction(NO_TEXT, i18n.t("Undo"), imgResources.undo());
- final MenuItemDescriptor undo = new MenuItemDescriptor(editMenu, undoAction);
- final ButtonDescriptor undoBtn = new ButtonDescriptor(undoActionBtn);
- undoBtn.setPosition(0);
- setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('Z'), Keyboard.MODIFIER_CTRL), undoAction);
-
- final RedoAction redoAction = new RedoAction(i18n.t("Redo"), NO_TEXT, imgResources.redo());
- final RedoAction redoActionBtn = new RedoAction(NO_TEXT, i18n.t("Redo"), imgResources.redo());
- final MenuItemDescriptor redo = new MenuItemDescriptor(editMenu, redoAction);
- final ButtonDescriptor redoBtn = new ButtonDescriptor(redoActionBtn);
- redoBtn.setPosition(1);
- setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('Y'), Keyboard.MODIFIER_CTRL), redoAction);
-
- final CopyAction copyAction = new CopyAction(i18n.t("Copy"), NO_TEXT, imgResources.copy());
- final MenuItemDescriptor copy = new MenuItemDescriptor(editMenu, copyAction);
- setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('C'), Keyboard.MODIFIER_CTRL), copyAction);
-
- final CutAction cutAction = new CutAction(i18n.t("Cut"), NO_TEXT, imgResources.cut());
- final MenuItemDescriptor cut = new MenuItemDescriptor(editMenu, cutAction);
- setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('X'), Keyboard.MODIFIER_CTRL), cutAction);
-
- final PasteAction pasteAction = new PasteAction(i18n.t("Paste"), NO_TEXT, imgResources.paste());
- final MenuItemDescriptor paste = new MenuItemDescriptor(editMenu, pasteAction);
- setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('V'), Keyboard.MODIFIER_CTRL), pasteAction);
-
- final EditHtmlAction editHtmlAction = new EditHtmlAction(i18n.t("Edit HTML"), NO_TEXT, imgResources.edithtml());
- final MenuItemDescriptor editHtml = new MenuItemDescriptor(editMenu, editHtmlAction);
- editHtml.setAddCondition(extendedAddCond);
-
- final CommentAction commentAction = new CommentAction(i18n.t("Comment"), NO_TEXT, NO_ICON);
- final MenuItemDescriptor comment = new MenuItemDescriptor(insertMenu, commentAction);
- comment.setAddCondition(extendedAddCond);
- setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('M'), Keyboard.MODIFIER_CTRL), commentAction);
-
- final HrAction hlineAction = new HrAction(i18n.t("Horizontal line"), NO_TEXT, imgResources.hfixedline());
- final HrAction hlineBtnAction = new HrAction(NO_TEXT, i18n.t("Horizontal line"), imgResources.hfixedline());
- final MenuItemDescriptor hline = new MenuItemDescriptor(insertMenu, hlineAction);
- final ButtonDescriptor hlineBtn = new ButtonDescriptor(hlineBtnAction);
- hline.setAddCondition(extendedAddCond);
- hlineBtn.setAddCondition(extendedAddCond);
- setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf(' '), Keyboard.MODIFIER_CTRL
- + Keyboard.MODIFIER_SHIFT), hlineAction);
-
- final BlockquoteAction blockquoteAction = new BlockquoteAction(i18n.t("Block Quotation"), NO_TEXT, NO_ICON);
- final MenuItemDescriptor blockquote = new MenuItemDescriptor(formatMenu, blockquoteAction);
- blockquote.setAddCondition(extendedAddCond);
-
- final StrikethroughAction strikeAction = new StrikethroughAction(NO_TEXT, i18n.t("Strikethrough"),
- imgResources.strikeout());
- strikethrough = new PushButtonDescriptor(strikeAction);
- strikethrough.setAddCondition(extendedAddCond);
-
- final DecreaseIndentAction decreIndentAction = new DecreaseIndentAction(NO_TEXT, i18n.t("Decrease Indent"),
- imgResources.decrementindent());
- final ButtonDescriptor decreaseIndent = new ButtonDescriptor(decreIndentAction);
- decreaseIndent.setAddCondition(extendedAddCond);
-
- final IncreaseIndentAction increIndentAction = new IncreaseIndentAction(NO_TEXT, i18n.t("Increase Indent"),
- imgResources.incrementindent());
- final ButtonDescriptor increaseIndent = new ButtonDescriptor(increIndentAction);
- increaseIndent.setAddCondition(extendedAddCond);
-
- final OlAction olistAction = new OlAction(NO_TEXT, i18n.t("Numbered List"), imgResources.defaultnumbering());
- final ButtonDescriptor olist = new ButtonDescriptor(olistAction);
- olist.setAddCondition(extendedAddCond);
- setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('7'), Keyboard.MODIFIER_CTRL), olistAction);
-
- final UlAction ulistAction = new UlAction(NO_TEXT, i18n.t("Bullet List"), imgResources.defaultbullet());
- final ButtonDescriptor ulist = new ButtonDescriptor(ulistAction);
- ulist.setAddCondition(extendedAddCond);
- setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('8'), Keyboard.MODIFIER_CTRL), ulistAction);
-
- final ImgAction imgAction = new ImgAction(i18n.t("Image..."), NO_TEXT, imgResources.images());
- final ImgAction imgBtnAction = new ImgAction(NO_TEXT, i18n.t("Insert Image"), imgResources.images());
- final MenuItemDescriptor img = new MenuItemDescriptor(insertMenu, imgAction);
- final ButtonDescriptor imgBtn = new ButtonDescriptor(imgBtnAction);
- img.setAddCondition(extendedAddCond);
- imgBtn.setAddCondition(extendedAddCond);
-
- final InsertMediaAction insertMediaAction = new InsertMediaAction(i18n.t("Audio/Video..."), NO_TEXT,
- imgResources.film());
- final MenuItemDescriptor insertMedia = new MenuItemDescriptor(insertMenu, insertMediaAction);
- insertMedia.setAddCondition(extendedAddCond);
-
- final CreateOrEditLinkAction editLinkAction = new CreateOrEditLinkAction(i18n.t("Link..."), NO_TEXT,
- imgResources.link());
- final CreateOrEditLinkAction editLinkBtnAction = new CreateOrEditLinkAction(NO_TEXT,
- i18n.t("Create or Edit Link"), imgResources.link());
- final CreateOrEditLinkAction editLinkCtxAction = new CreateOrEditLinkAction(i18n.t("Change"), NO_TEXT,
- imgResources.link());
- final MenuItemDescriptor editLink = new MenuItemDescriptor(insertMenu, editLinkAction);
- final MenuItemDescriptor editLinkCtx = new MenuItemDescriptor(linkCtxMenu, editLinkCtxAction);
- final ButtonDescriptor editLinkBtn = new ButtonDescriptor(editLinkBtnAction);
- editLink.setAddCondition(extendedAddCond);
- editLinkBtn.setAddCondition(extendedAddCond);
- editLinkCtx.setAddCondition(extendedAddCond);
- setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('K'), Keyboard.MODIFIER_CTRL), editLinkAction,
- editLinkBtnAction);
-
- final KeyStroke key_SK = KeyStroke.getKeyStroke(Character.valueOf('K'), Keyboard.MODIFIER_CTRL
- + Keyboard.MODIFIER_SHIFT);
- final RemoveLinkAction delLinkBtnAction = new RemoveLinkAction(NO_TEXT, i18n.t("Remove Link"),
- imgResources.linkbreak());
- final RemoveLinkAction delLinkCtxAction = new RemoveLinkAction(i18n.t("Remove"), NO_TEXT,
- imgResources.linkbreak());
- final MenuItemDescriptor removeLinkCtx = new MenuItemDescriptor(linkCtxMenu, delLinkCtxAction);
- final ButtonDescriptor removeLinkBtn = new ButtonDescriptor(delLinkBtnAction);
- removeLinkBtn.setAddCondition(extendedAddCond);
- removeLinkCtx.setAddCondition(extendedAddCond);
- setActionShortcut(key_SK, delLinkBtnAction);
-
- final RemoveFormatAction remFormatAction = new RemoveFormatAction(i18n.t("Clear Formatting..."), NO_TEXT,
- imgResources.removeFormat());
- final RemoveFormatAction remFormatBtnAc = new RemoveFormatAction(NO_TEXT, i18n.t("Clear Formatting..."),
- imgResources.removeFormat());
- final MenuItemDescriptor removeFormat = new MenuItemDescriptor(formatMenu, remFormatAction);
- final ButtonDescriptor removeFormatBtn = new ButtonDescriptor(remFormatBtnAc);
- removeFormat.setAddCondition(extendedAddCond);
- removeFormatBtn.setAddCondition(extendedAddCond);
- setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf(' '), Keyboard.MODIFIER_CTRL), remFormatAction,
- remFormatBtnAc);
-
- final InsertSpecialCharAction insCharAction = new InsertSpecialCharAction(i18n.t("Special characters..."),
- NO_TEXT, imgResources.specialchars());
- final MenuItemDescriptor insertSpecialChar = new MenuItemDescriptor(insertMenu, insCharAction);
- insertSpecialChar.setAddCondition(extendedAddCond);
-
- final InsertTableAction insTableAction = new InsertTableAction(i18n.t("Table..."), NO_TEXT,
- imgResources.inserttable());
- final InsertTableAction insTableBtnAction = new InsertTableAction(NO_TEXT, i18n.t("Insert Table"),
- imgResources.inserttable());
- final MenuItemDescriptor insertTable = new MenuItemDescriptor(insertMenu, insTableAction);
- final ButtonDescriptor insertTableBtn = new ButtonDescriptor(insTableBtnAction);
- insertTable.setAddCondition(extendedAddCond);
- insertTableBtn.setAddCondition(extendedAddCond);
-
- final FontColorAction fontColorAction = new FontColorAction(NO_TEXT, i18n.t("Text Colour"),
- imgResources.fontcolor());
- final ButtonDescriptor fontColor = new ButtonDescriptor(fontColorAction);
- fontColor.setAddCondition(basicAddCond);
-
- final BackgroundColorAction backColorAction = new BackgroundColorAction(NO_TEXT,
- i18n.t("Text Background Colour"), imgResources.backcolor());
- final ButtonDescriptor backgroundColor = new ButtonDescriptor(backColorAction);
- backgroundColor.setAddCondition(basicAddCond);
-
- final DevInfoAction devInfoAction = new DevInfoAction(i18n.t("Developers info"), NO_TEXT,
- imgResources.specialchars());
- final MenuItemDescriptor devInfo = new MenuItemDescriptor(formatMenu, devInfoAction);
- devInfo.setAddCondition(extendedAddCond);
- setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf('I'), Keyboard.MODIFIER_ALT), devInfoAction);
-
- actions = new GuiActionDescCollection();
- actions.add(fileMenu, editMenu, formatMenu, insertMenu, undo, redo, editMenuSep, copy, cut, paste, editMenuSep,
- select, editMenuSep, editHtml, editLink, img, insertTable, insertMedia, insertMenuSep,
- insertSpecialChar, comment, hline, removeFormat, formatMenuSep, insertMenuSep, undoBtn, redoBtn,
- sndbarSep, bold, italic, underline, strikethrough, sndbarSep, justifyLeft, justifyCentre, justifyRight,
- decreaseIndent, increaseIndent, olist, ulist, sndbarSep, removeFormatBtn, sndbarSepExt, hlineBtn,
- imgBtn, editLinkBtn, removeLinkBtn, insertTableBtn, sndbarSepExt, subscript, superscript, blockquote,
- fontColor, backgroundColor, fontSizeMenu, fontMenu, editLinkCtx, removeLinkCtx);
- // actions.add(devInfo);
-
- setLocation(TOPBAR, new GuiActionDescrip[] { fileMenu, editMenu, insertMenu, formatMenu, editMenuSep,
- subscript, superscript, undo, redo, editMenuSep, copy, cut, paste, editMenuSep, select, editMenuSep,
- editHtml, comment, hline, blockquote, img, insertTable, insertMedia, editLink, removeFormat,
- formatMenuSep, insertMenuSep, insertSpecialChar, insertTable, devInfo });
- setLocation(SNDBAR, new GuiActionDescrip[] { undoBtn, redoBtn, sndbarSep, sndbarSepExt, bold, italic,
- underline, strikethrough, justifyLeft, justifyCentre, justifyRight, undoBtn, redoBtn, hlineBtn,
- decreaseIndent, increaseIndent, olist, ulist, hlineBtn, imgBtn, editLinkBtn, removeLinkBtn,
- removeFormatBtn, insertTableBtn, fontColor, backgroundColor, fontMenu, fontSizeMenu });
- setLocation(LINKCTX, new GuiActionDescrip[] { removeLinkCtx, editLinkCtx });
-
- for (final String fontName : FONT_NAMES) {
- createFontAction(fontMenu, fontName);
- }
-
- for (int fontSize = 0; fontSize < FONT_SIZE_NAMES.length; fontSize++) {
- createFontSizeAction(fontSizeMenu, fontSize);
- }
- }
-
- private void createFontAction(final MenuDescriptor fontMenu, final String fontName) {
- final FontAction fontAction = new FontAction(fontName, NO_TEXT, NO_ICON);
- final MenuRadioItemDescriptor font = new MenuRadioItemDescriptor(fontMenu, fontAction, FONT_GROUP);
- font.setAddCondition(basicAddCond);
- font.setLocation(SNDBAR);
- fontActions.put(fontName.toLowerCase(), font);
- actions.add(font);
- }
-
- private void createFontSizeAction(final MenuDescriptor fontSizeMenu, final int fontSize) {
- final String fontSizeName = i18n.t(FONT_SIZE_NAMES[fontSize]);
- final FontSizeAction fontSizeAction = new FontSizeAction(fontSizeName, fontSize, NO_TEXT, NO_ICON);
- final MenuRadioItemDescriptor fontSizeItem = new MenuRadioItemDescriptor(fontSizeMenu, fontSizeAction,
- FONT_SIZEGROUP);
- fontSizeItem.setAddCondition(basicAddCond);
- // setActionShortcut(KeyStroke.getKeyStroke(Character.valueOf(((char)
- // (48 + fontSize))), Keyboard.MODIFIER_CTRL),
- // fontSizeAction);
- fontSizeItem.setLocation(SNDBAR);
- actions.add(fontSizeItem);
- }
-
- private void createMainMenus() {
- menus.add(fileMenu = new MenuDescriptor(i18n.t("File")));
- menus.add(editMenu = new MenuDescriptor(i18n.t("Edit")));
- menus.add(insertMenu = new MenuDescriptor(i18n.t("Insert")));
- menus.add(formatMenu = new MenuDescriptor(i18n.t("Format")));
- menus.add(linkCtxMenu = new MenuDescriptor(i18n.t("Change Link")));
- menus.add(fontMenu = new MenuDescriptor(NO_TEXT, i18n.t("Font"), imgResources.charfontname()));
- menus.add(fontSizeMenu = new MenuDescriptor(NO_TEXT, i18n.t("Font size"), imgResources.fontheight()));
- insertMenu.setAddCondition(extendedAddCond);
- }
-
- private void createPalette() {
- if (palette == null) {
- palette = paletteProvider.get();
- }
- }
-
- private void hideLinkCtxMenu() {
- if (view.isCtxMenuVisible()) {
- view.hideLinkCtxMenu();
- }
- }
-
- private void hideMenus() {
- for (final MenuDescriptor menu : menus) {
- menu.hide();
- }
- if (palette != null) {
- palette.hide();
- }
- }
-
- private boolean isAndCanBeExtended() {
- return extended && view.canBeExtended();
- }
-
- private void setLocation(final String location, final GuiActionDescrip[] descripts) {
- for (final GuiActionDescrip descript : descripts) {
- descript.setLocation(location);
- }
- }
-
- private void updateFont() {
- final String currentFont = view.getFont();
- final MenuCheckItemDescriptor item = fontActions.get(currentFont);
- if (currentFontItem != null && item != currentFontItem) {
- currentFontItem.setChecked(false);
- }
- if (item != null) {
- item.setChecked(true);
- currentFontItem = item;
- fontMenu.setText((String) item.getValue(FontAction.FONT_NAME));
- } else {
- fontMenu.setText(" ");
- }
- }
-}
Copied: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorView.java (from rev 1124, trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorViewNew.java)
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorViewNew.java 2009-06-10 14:37:53 UTC (rev 1124)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorView.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -0,0 +1,140 @@
+package org.ourproject.kune.platf.client.ui.rte.basic;
+
+import org.ourproject.kune.platf.client.View;
+import org.ourproject.kune.platf.client.actions.InputMap;
+import org.ourproject.kune.platf.client.actions.ui.GuiActionDescCollection;
+import org.ourproject.kune.platf.client.ui.rte.RichTextArea.FontSize;
+import org.ourproject.kune.platf.client.ui.rte.insertlink.LinkInfo;
+
+public interface RTEditorView extends View {
+
+ void addActions(GuiActionDescCollection actions);
+
+ void adjustSize(int height);
+
+ boolean canBeBasic();
+
+ boolean canBeExtended();
+
+ void copy();
+
+ void createLink(String url);
+
+ void cut();
+
+ void delete();
+
+ void focus();
+
+ String getFont();
+
+ String getFontSize();
+
+ String getHTML();
+
+ LinkInfo getLinkInfoIfHref();
+
+ void getRangeInfo();
+
+ String getSelectionText();
+
+ View getSndBar();
+
+ String getText();
+
+ View getTopBar();
+
+ void hideLinkCtxMenu();
+
+ void insertBlockquote();
+
+ void insertComment(String author);
+
+ void insertCommentNotUsingSelection(String author);
+
+ void insertCommentUsingSelection(String author);
+
+ void insertHorizontalRule();
+
+ void insertHtml(String html);
+
+ void insertImage(String url);
+
+ void insertOrderedList();
+
+ void insertUnorderedList();
+
+ boolean isAnythingSelected();
+
+ boolean isAttached();
+
+ boolean isBold();
+
+ boolean isCtxMenuVisible();
+
+ boolean isItalic();
+
+ boolean isLink();
+
+ boolean isStrikethrough();
+
+ boolean isSubscript();
+
+ boolean isSuperscript();
+
+ boolean isUnderlined();
+
+ void justifyCenter();
+
+ void justifyLeft();
+
+ void justifyRight();
+
+ void leftIndent();
+
+ void paste();
+
+ void redo();
+
+ void removeFormat();
+
+ void rightIndent();
+
+ void selectAll();
+
+ void selectLink();
+
+ void setBackColor(String color);
+
+ void setFocus(boolean focus);
+
+ void setFontName(String name);
+
+ void setFontSize(FontSize fontSize);
+
+ void setForeColor(String color);
+
+ void setHTML(String html);
+
+ void setInputMap(InputMap inputMap);
+
+ void setText(String text);
+
+ void showLinkCtxMenu();
+
+ void toggleBold();
+
+ void toggleItalic();
+
+ void toggleStrikethrough();
+
+ void toggleSubscript();
+
+ void toggleSuperscript();
+
+ void toggleUnderline();
+
+ void undo();
+
+ void unlink();
+}
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorViewNew.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorViewNew.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/basic/RTEditorViewNew.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -1,140 +0,0 @@
-package org.ourproject.kune.platf.client.ui.rte.basic;
-
-import org.ourproject.kune.platf.client.View;
-import org.ourproject.kune.platf.client.actions.InputMap;
-import org.ourproject.kune.platf.client.actions.ui.GuiActionDescCollection;
-import org.ourproject.kune.platf.client.ui.rte.RichTextArea.FontSize;
-import org.ourproject.kune.platf.client.ui.rte.insertlink.LinkInfo;
-
-public interface RTEditorViewNew extends View {
-
- void addActions(GuiActionDescCollection actions);
-
- void adjustSize(int height);
-
- boolean canBeBasic();
-
- boolean canBeExtended();
-
- void copy();
-
- void createLink(String url);
-
- void cut();
-
- void delete();
-
- void focus();
-
- String getFont();
-
- String getFontSize();
-
- String getHTML();
-
- LinkInfo getLinkInfoIfHref();
-
- void getRangeInfo();
-
- String getSelectionText();
-
- View getSndBar();
-
- String getText();
-
- View getTopBar();
-
- void hideLinkCtxMenu();
-
- void insertBlockquote();
-
- void insertComment(String author);
-
- void insertCommentNotUsingSelection(String author);
-
- void insertCommentUsingSelection(String author);
-
- void insertHorizontalRule();
-
- void insertHtml(String html);
-
- void insertImage(String url);
-
- void insertOrderedList();
-
- void insertUnorderedList();
-
- boolean isAnythingSelected();
-
- boolean isAttached();
-
- boolean isBold();
-
- boolean isCtxMenuVisible();
-
- boolean isItalic();
-
- boolean isLink();
-
- boolean isStrikethrough();
-
- boolean isSubscript();
-
- boolean isSuperscript();
-
- boolean isUnderlined();
-
- void justifyCenter();
-
- void justifyLeft();
-
- void justifyRight();
-
- void leftIndent();
-
- void paste();
-
- void redo();
-
- void removeFormat();
-
- void rightIndent();
-
- void selectAll();
-
- void selectLink();
-
- void setBackColor(String color);
-
- void setFocus(boolean focus);
-
- void setFontName(String name);
-
- void setFontSize(FontSize fontSize);
-
- void setForeColor(String color);
-
- void setHTML(String html);
-
- void setInputMap(InputMap inputMap);
-
- void setText(String text);
-
- void showLinkCtxMenu();
-
- void toggleBold();
-
- void toggleItalic();
-
- void toggleStrikethrough();
-
- void toggleSubscript();
-
- void toggleSuperscript();
-
- void toggleUnderline();
-
- void undo();
-
- void unlink();
-}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditor.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditor.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditor.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -1,12 +1,12 @@
package org.ourproject.kune.platf.client.ui.rte.saving;
import org.ourproject.kune.platf.client.actions.BeforeActionListener;
-import org.ourproject.kune.platf.client.ui.rte.basic.RTEditorNew;
+import org.ourproject.kune.platf.client.ui.rte.basic.RTEditor;
import com.calclab.suco.client.events.Listener;
import com.calclab.suco.client.events.Listener0;
-public interface RTESavingEditor {
+public interface RTESavingEditor extends RTEditor {
/**
* Start to edit some html code
@@ -20,8 +20,6 @@
*/
void edit(String html, Listener<String> onSave, Listener0 onEditCancelled);
- RTEditorNew getBasicEditor();
-
/**
* This is used for listen to changes that affect the edition as url
* changes, window close, to save/cancel or stop these actions
@@ -30,6 +28,11 @@
*/
BeforeActionListener getBeforeSavingListener();
+ /**
+ * Checks if is save is pending.
+ *
+ * @return true, if is save pending
+ */
boolean isSavePending();
/**
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPanel.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPanel.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -1,13 +1,23 @@
package org.ourproject.kune.platf.client.ui.rte.saving;
+import org.ourproject.kune.platf.client.actions.ui.GuiBindingsRegister;
+import org.ourproject.kune.platf.client.i18n.I18nUITranslationService;
+import org.ourproject.kune.platf.client.shortcuts.GlobalShortcutRegister;
import org.ourproject.kune.platf.client.ui.noti.NotifyUser;
+import org.ourproject.kune.platf.client.ui.rte.basic.RTEditorPanel;
+import org.ourproject.kune.platf.client.ui.rte.basic.RTEditorPresenter;
import com.calclab.suco.client.events.Listener0;
-public class RTESavingEditorPanel implements RTESavingEditorView {
+public class RTESavingEditorPanel extends RTEditorPanel implements RTESavingEditorView {
- public void askConfirmation(String confirmationTitle, String confirmationText, Listener0 onConfirm,
- Listener0 onCancel) {
+ public RTESavingEditorPanel(final RTEditorPresenter presenter, final I18nUITranslationService i18n,
+ final GlobalShortcutRegister globalShortcutReg, final GuiBindingsRegister bindReg) {
+ super(presenter, i18n, globalShortcutReg, bindReg);
+ }
+
+ public void askConfirmation(final String confirmationTitle, final String confirmationText,
+ final Listener0 onConfirm, final Listener0 onCancel) {
NotifyUser.askConfirmation(confirmationTitle, confirmationText, onConfirm, onCancel);
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPresenter.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPresenter.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -12,17 +12,27 @@
import org.ourproject.kune.platf.client.actions.ui.MenuItemDescriptor;
import org.ourproject.kune.platf.client.i18n.I18nTranslationService;
import org.ourproject.kune.platf.client.shortcuts.Keyboard;
+import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.state.StateManager;
-import org.ourproject.kune.platf.client.ui.rte.basic.RTEditorNew;
+import org.ourproject.kune.platf.client.ui.palette.ColorWebSafePalette;
+import org.ourproject.kune.platf.client.ui.rte.basic.RTEditor;
+import org.ourproject.kune.platf.client.ui.rte.basic.RTEditorPresenter;
+import org.ourproject.kune.platf.client.ui.rte.edithtml.EditHtmlDialog;
import org.ourproject.kune.platf.client.ui.rte.img.RTEImgResources;
+import org.ourproject.kune.platf.client.ui.rte.insertimg.InsertImageDialog;
+import org.ourproject.kune.platf.client.ui.rte.insertlink.InsertLinkDialog;
+import org.ourproject.kune.platf.client.ui.rte.insertmedia.InsertMediaDialog;
+import org.ourproject.kune.platf.client.ui.rte.insertspecialchar.InsertSpecialCharDialog;
+import org.ourproject.kune.platf.client.ui.rte.inserttable.InsertTableDialog;
import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
import org.ourproject.kune.platf.client.utils.TimerWrapper;
import com.calclab.suco.client.events.Listener;
import com.calclab.suco.client.events.Listener0;
+import com.calclab.suco.client.ioc.Provider;
import com.google.gwt.libideas.resources.client.ImageResource;
-public class RTESavingEditorPresenter implements RTESavingEditor {
+public class RTESavingEditorPresenter extends RTEditorPresenter implements RTESavingEditor {
public class AutoSaveAction extends AbstractExtendedAction {
public AutoSaveAction(final String text, final String tooltip, final ImageResource icon) {
@@ -76,7 +86,6 @@
public static final int AUTOSAVE_AFTER_FAIL_MILLS = 20000;
public static final int AUTOSAVE_IN_MILLIS = 10000;
- private final RTEditorNew editor;
private boolean autoSave;
private boolean savePending;
private boolean saveCloseConfirmed;
@@ -93,18 +102,21 @@
SaveAction saveAction;
private SaveAction saveMenuAction;
- public RTESavingEditorPresenter(final RTEditorNew editor, final boolean autoSave, final I18nTranslationService i18n,
- final StateManager stateManager, final DeferredCommandWrapper deferredCommandWrapper,
- final RTEImgResources imgResources, final TimerWrapper timer) {
- this.editor = editor;
+ public RTESavingEditorPresenter(final I18nTranslationService i18n, final Session session,
+ final RTEImgResources imgResources, final Provider<InsertLinkDialog> insLinkDialog,
+ final Provider<ColorWebSafePalette> palette, final Provider<EditHtmlDialog> editHtmlDialog,
+ final Provider<InsertImageDialog> insertImageDialog, final Provider<InsertMediaDialog> insertMediaDialog,
+ final Provider<InsertTableDialog> insertTableDialog, final Provider<InsertSpecialCharDialog> insCharDialog,
+ final DeferredCommandWrapper deferred, final boolean autoSave,
+ final StateManager stateManager, final TimerWrapper timer) {
+ super(i18n, session, imgResources, insLinkDialog, palette, editHtmlDialog, insertImageDialog, insertMediaDialog, insertTableDialog, insCharDialog, deferred);
this.autoSave = autoSave;
this.i18n = i18n;
this.stateManager = stateManager;
- this.deferred = deferredCommandWrapper;
+ this.deferred = deferred;
this.imgResources = imgResources;
this.savePending = false;
this.saveCloseConfirmed = false;
- createActions();
this.timer = timer;
timer.configure(new Listener0() {;
@@ -113,7 +125,7 @@
}
});
- editor.addOnEditListener(new Listener0() {
+ super.addOnEditListener(new Listener0() {
public void onEvent() {
onEdit();
}
@@ -128,22 +140,20 @@
public void edit(final String html, final Listener<String> onSave, final Listener0 onEditCancelled) {
this.onSave = onSave;
this.onEditCancelled = onEditCancelled;
- editor.setHtml(html);
- editor.attach();
+ super.setHtml(html);
+ super.attach();
stateManager.addBeforeStateChangeListener(beforeStateChg);
enableSaveBtn(false);
}
- public RTEditorNew getBasicEditor() {
- return editor;
- }
-
public BeforeActionListener getBeforeSavingListener() {
return beforeStateChg;
}
public void init(final RTESavingEditorView view) {
+ super.init(view);
this.view = view;
+ createActions();
}
public boolean isSavePending() {
@@ -169,6 +179,15 @@
}
}
+ @Override
+ public void reset() {
+ timer.cancel();
+ savePending = false;
+ saveCloseConfirmed = false;
+ enableSaveBtn(false);
+ super.reset();
+ }
+
protected void onAutoSave() {
onDoSave();
}
@@ -216,39 +235,39 @@
final ButtonDescriptor saveBtn = new ButtonDescriptor(saveAction);
final KeyStroke key_S = KeyStroke.getKeyStroke(Keyboard.KEY_S, Keyboard.MODIFIER_CTRL);
saveBtn.setPosition(0);
- saveBtn.setLocation(RTEditorNew.SNDBAR);
+ saveBtn.setLocation(RTEditor.SNDBAR);
saveMenuAction = new SaveAction(i18n.t("Save"),NO_TEXT, imgResources.save());
- final MenuItemDescriptor saveMenu = new MenuItemDescriptor(editor.getFileMenu(), saveMenuAction);
+ final MenuItemDescriptor saveMenu = new MenuItemDescriptor(super.getFileMenu(), saveMenuAction);
saveMenu.setPosition(0);
- saveMenu.setLocation(RTEditorNew.TOPBAR);
+ saveMenu.setLocation(RTEditor.TOPBAR);
- editor.setActionShortcut(key_S, saveAction, saveMenuAction);
+ super.setActionShortcut(key_S, saveAction, saveMenuAction);
final AutoSaveAction autoSaveAction = new AutoSaveAction(i18n.t("Autosave"), NO_TEXT, NO_ICON);
- final MenuCheckItemDescriptor autoSaveItem = new MenuCheckItemDescriptor(editor.getFileMenu(), autoSaveAction) { @Override
+ final MenuCheckItemDescriptor autoSaveItem = new MenuCheckItemDescriptor(super.getFileMenu(), autoSaveAction) { @Override
public boolean isChecked() {
//autoSaveItem.setChecked(autoSave);
return autoSave;
}};
- autoSaveItem.setLocation(RTEditorNew.TOPBAR);
+ autoSaveItem.setLocation(RTEditor.TOPBAR);
final CloseAction closeAction = new CloseAction(i18n.t("Close"), NO_TEXT, NO_ICON);
- final MenuItemDescriptor closeItem = new MenuItemDescriptor(editor.getFileMenu(), closeAction);
- closeItem.setLocation(RTEditorNew.TOPBAR);
+ final MenuItemDescriptor closeItem = new MenuItemDescriptor(super.getFileMenu(), closeAction);
+ closeItem.setLocation(RTEditor.TOPBAR);
final SaveCloseAction saveCloseAction = new SaveCloseAction(i18n.t("Save & Close"), NO_TEXT, NO_ICON);
- final MenuItemDescriptor saveClose = new MenuItemDescriptor(editor.getFileMenu(), saveCloseAction);
+ final MenuItemDescriptor saveClose = new MenuItemDescriptor(super.getFileMenu(), saveCloseAction);
final ButtonDescriptor saveCloseBtn = new ButtonDescriptor(saveCloseAction);
- saveClose.setLocation(RTEditorNew.TOPBAR);
- saveCloseBtn.setLocation(RTEditorNew.TOPBAR);
+ saveClose.setLocation(RTEditor.TOPBAR);
+ saveCloseBtn.setLocation(RTEditor.TOPBAR);
- editor.addAction(saveMenu);
- editor.addAction(saveBtn);
- editor.addAction(autoSaveItem);
- editor.addAction(saveClose);
- editor.addAction(saveCloseBtn);
- editor.addAction(closeItem);
+ super.addAction(saveMenu);
+ super.addAction(saveBtn);
+ super.addAction(autoSaveItem);
+ super.addAction(saveClose);
+ super.addAction(saveCloseBtn);
+ super.addAction(closeItem);
}
private void enableSaveBtn(final boolean enabled) {
@@ -260,7 +279,7 @@
stateManager.removeBeforeStateChangeListener(beforeStateChg);
stateManager.resumeTokenChange();
reset();
- editor.detach();
+ super.detach();
onDoEditCancelled();
}
@@ -294,15 +313,6 @@
}
private void onDoSaveImpl() {
- final String html = editor.getHtml();
- onSave.onEvent(html);
+ onSave.onEvent(super.getHtml());
}
-
- private void reset() {
- timer.cancel();
- savePending = false;
- saveCloseConfirmed = false;
- enableSaveBtn(false);
- editor.reset();
- }
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorView.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorView.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -1,10 +1,10 @@
package org.ourproject.kune.platf.client.ui.rte.saving;
-import org.ourproject.kune.platf.client.View;
+import org.ourproject.kune.platf.client.ui.rte.basic.RTEditorView;
import com.calclab.suco.client.events.Listener0;
-public interface RTESavingEditorView extends View {
+public interface RTESavingEditorView extends RTEditorView {
void askConfirmation(String confirmationTitle, String confirmationText, Listener0 onConfirm, Listener0 onCancel);
}
Modified: trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientActions.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientActions.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -70,8 +70,8 @@
final String[] containersNoRoot = { TYPE_FOLDER };
final String[] contents = { TYPE_WIKIPAGE, TYPE_UPLOADEDFILE };
- String parentMenuTitle = i18n.t("Wikipage");
- String parentMenuTitleCtx = i18n.t("Wiki");
+ final String parentMenuTitle = i18n.t("Wikipage");
+ final String parentMenuTitleCtx = i18n.t("Wiki");
createNewContainerAction(TYPE_FOLDER, "images/nav/folder_add.png", i18n.t("New folder"), parentMenuTitleCtx,
i18n.t("New"), i18n.t("New folder"), Position.ctx, TYPE_ROOT, TYPE_FOLDER);
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -207,7 +207,7 @@
}
protected void createDownloadActions(final String typeUploadedfile) {
- ActionToolbarButtonDescriptor<StateToken> download = new ActionToolbarButtonDescriptor<StateToken>(
+ final ActionToolbarButtonDescriptor<StateToken> download = new ActionToolbarButtonDescriptor<StateToken>(
AccessRolDTO.Viewer, CONTENT_TOPBAR, new Listener<StateToken>() {
public void onEvent(final StateToken token) {
downloadContent(token);
@@ -218,7 +218,7 @@
download.setToolTip(i18n.t("Download this file"));
download.setIconUrl("images/nav/download.png");
- ActionMenuItemDescriptor<StateToken> downloadCtx = new ActionMenuItemDescriptor<StateToken>(
+ final ActionMenuItemDescriptor<StateToken> downloadCtx = new ActionMenuItemDescriptor<StateToken>(
AccessRolDTO.Viewer, new Listener<StateToken>() {
public void onEvent(final StateToken token) {
downloadContent(token);
@@ -234,7 +234,7 @@
protected ActionToolbarButtonDescriptor<StateToken> createEditAction(final String fileMenuTitle,
final String... registerInTypes) {
- ActionToolbarButtonDescriptor<StateToken> editContent = new ActionToolbarButtonDescriptor<StateToken>(
+ final ActionToolbarButtonDescriptor<StateToken> editContent = new ActionToolbarButtonDescriptor<StateToken>(
AccessRolDTO.Editor, CONTENT_TOPBAR, new Listener<StateToken>() {
public void onEvent(final StateToken stateToken) {
NotifyUser.showProgressProcessing();
@@ -298,7 +298,7 @@
}
protected ActionMenuItemDescriptor<StateToken> createGoAction(final String... registerInTypes) {
- ActionMenuItemDescriptor<StateToken> go = new ActionMenuItemDescriptor<StateToken>(AccessRolDTO.Viewer,
+ final ActionMenuItemDescriptor<StateToken> go = new ActionMenuItemDescriptor<StateToken>(AccessRolDTO.Viewer,
new Listener<StateToken>() {
public void onEvent(final StateToken token) {
stateManager.gotoToken(token);
@@ -312,7 +312,7 @@
}
protected ActionToolbarButtonDescriptor<StateToken> createGoHomeAction(final String... registerInTypes) {
- ActionToolbarButtonDescriptor<StateToken> goGroupHome = new ActionToolbarButtonDescriptor<StateToken>(
+ final ActionToolbarButtonDescriptor<StateToken> goGroupHome = new ActionToolbarButtonDescriptor<StateToken>(
AccessRolDTO.Viewer, CONTEXT_TOPBAR, new Listener<StateToken>() {
public void onEvent(final StateToken token) {
stateManager.gotoToken(token.getGroup());
@@ -465,7 +465,7 @@
}, "ContentRadioStatus", new RadioMustBeChecked() {
public boolean mustBeChecked() {
if (session.getContainerState() instanceof StateContentDTO) {
- ContentStatusDTO currentStatus = session.getContentState().getStatus();
+ final ContentStatusDTO currentStatus = session.getContentState().getStatus();
return status.equals(currentStatus);
}
return false;
@@ -478,10 +478,10 @@
}
protected void createShowDeletedItems(final String parentMenuTitle, final String... registerInTypes) {
- ActionToolbarMenuCheckItemDescriptor<StateToken> showDeletedItems = new ActionToolbarMenuCheckItemDescriptor<StateToken>(
+ final ActionToolbarMenuCheckItemDescriptor<StateToken> showDeletedItems = new ActionToolbarMenuCheckItemDescriptor<StateToken>(
AccessRolDTO.Editor, CONTEXT_TOPBAR, new Listener0() {
public void onEvent() {
- boolean mustShow = !session.getCurrentUserInfo().getShowDeletedContent();
+ final boolean mustShow = !session.getCurrentUserInfo().getShowDeletedContent();
session.getCurrentUserInfo().setShowDeletedContent(mustShow);
if (!mustShow && session.isCurrentStateAContent()
&& session.getContentState().getStatus().equals(ContentStatusDTO.inTheDustbin)) {
@@ -503,7 +503,7 @@
protected ActionToolbarMenuDescriptor<StateToken> createTranslateAction(final String fileMenuTitle,
final String... registerInTypes) {
- ActionToolbarMenuDescriptor<StateToken> translateContent = new ActionToolbarMenuDescriptor<StateToken>(
+ final ActionToolbarMenuDescriptor<StateToken> translateContent = new ActionToolbarMenuDescriptor<StateToken>(
AccessRolDTO.Editor, CONTENT_TOPBAR, new Listener<StateToken>() {
public void onEvent(final StateToken stateToken) {
NotifyUser.important(i18n.t("Sorry, this functionality is currently in development"));
@@ -543,7 +543,7 @@
}
protected ActionToolbarButtonAndItemDescriptor<StateToken> createUploadMediaAction(final String... registerInTypes) {
- ActionToolbarButtonAndItemDescriptor<StateToken> uploadMedia = createUploadAction(i18n.t("Upload media"),
+ final ActionToolbarButtonAndItemDescriptor<StateToken> uploadMedia = createUploadAction(i18n.t("Upload media"),
"images/nav/upload.png", i18n.t("Upload some media (images, videos...)"),
session.getGalleryPermittedExtensions());
contextActionRegistry.addAction(uploadMedia, registerInTypes);
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceModule.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceModule.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -22,6 +22,7 @@
import org.ourproject.kune.chat.client.ChatEngine;
import org.ourproject.kune.platf.client.actions.ActionManager;
import org.ourproject.kune.platf.client.actions.toolbar.ActionToolbarPanel;
+import org.ourproject.kune.platf.client.actions.ui.GuiBindingsRegister;
import org.ourproject.kune.platf.client.app.ApplicationComponentGroup;
import org.ourproject.kune.platf.client.app.EntityOptionsGroup;
import org.ourproject.kune.platf.client.dto.StateToken;
@@ -49,8 +50,9 @@
import org.ourproject.kune.platf.client.state.StateManager;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
import org.ourproject.kune.platf.client.ui.noti.NotifyUser;
+import org.ourproject.kune.platf.client.ui.palette.ColorWebSafePalette;
import org.ourproject.kune.platf.client.ui.rte.TestRTEDialog;
-import org.ourproject.kune.platf.client.ui.rte.basic.RTEditorNew;
+import org.ourproject.kune.platf.client.ui.rte.edithtml.EditHtmlDialog;
import org.ourproject.kune.platf.client.ui.rte.img.RTEImgResources;
import org.ourproject.kune.platf.client.ui.rte.insertimg.InsertImageDialog;
import org.ourproject.kune.platf.client.ui.rte.insertimg.InsertImageGroup;
@@ -59,7 +61,8 @@
import org.ourproject.kune.platf.client.ui.rte.insertmedia.InsertMediaDialog;
import org.ourproject.kune.platf.client.ui.rte.insertmedia.InsertMediaGroup;
import org.ourproject.kune.platf.client.ui.rte.insertmedia.abstractmedia.MediaUtils;
-import org.ourproject.kune.platf.client.ui.rte.saving.RTESavingEditorPanel;
+import org.ourproject.kune.platf.client.ui.rte.insertspecialchar.InsertSpecialCharDialog;
+import org.ourproject.kune.platf.client.ui.rte.inserttable.InsertTableDialog;
import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
import org.ourproject.kune.platf.client.utils.TimerWrapper;
import org.ourproject.kune.workspace.client.cnt.ActionContentToolbar;
@@ -76,6 +79,8 @@
import org.ourproject.kune.workspace.client.cxt.ContextPropEditorPresenter;
import org.ourproject.kune.workspace.client.cxt.ContextPropEditorView;
import org.ourproject.kune.workspace.client.editor.ContentEditor;
+import org.ourproject.kune.workspace.client.editor.ContentEditorPanel;
+import org.ourproject.kune.workspace.client.editor.ContentEditorPresenter;
import org.ourproject.kune.workspace.client.editor.insertlocalimg.InsertImageLocal;
import org.ourproject.kune.workspace.client.editor.insertlocalimg.InsertImageLocalPanel;
import org.ourproject.kune.workspace.client.editor.insertlocalimg.InsertImageLocalPresenter;
@@ -873,10 +878,16 @@
register(Singleton.class, new Factory<ContentEditor>(ContentEditor.class) {
@Override
public ContentEditor create() {
- return new ContentEditor(i(RTEditorNew.class), true, i(I18nTranslationService.class),
- i(StateManager.class), i(SiteSignOutLink.class), i(DeferredCommandWrapper.class),
- i(RTEImgResources.class), i(WorkspaceSkeleton.class), i(TimerWrapper.class),
- new RTESavingEditorPanel(), i(EntityTitle.class));
+ final ContentEditorPresenter presenter = new ContentEditorPresenter(i(I18nTranslationService.class),
+ i(Session.class), i(RTEImgResources.class), p(InsertLinkDialog.class),
+ p(ColorWebSafePalette.class), p(EditHtmlDialog.class), p(InsertImageDialog.class),
+ p(InsertMediaDialog.class), p(InsertTableDialog.class), p(InsertSpecialCharDialog.class),
+ i(DeferredCommandWrapper.class), true, i(StateManager.class), i(SiteSignOutLink.class),
+ i(WorkspaceSkeleton.class), i(TimerWrapper.class), i(EntityTitle.class));
+ final ContentEditorPanel panel = new ContentEditorPanel(presenter, i(I18nUITranslationService.class),
+ i(GlobalShortcutRegister.class), i(GuiBindingsRegister.class));
+ presenter.init(panel);
+ return presenter;
}
});
register(NoDecoration.class, new Factory<ActionContextTopToolbar>(ActionContextTopToolbar.class) {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/ContentEditor.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/editor/ContentEditor.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/editor/ContentEditor.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -1,138 +1,16 @@
package org.ourproject.kune.workspace.client.editor;
-import static org.ourproject.kune.platf.client.actions.AbstractExtendedAction.NO_ICON;
-import static org.ourproject.kune.platf.client.actions.AbstractExtendedAction.NO_TEXT;
+import org.ourproject.kune.platf.client.ui.rte.saving.RTESavingEditor;
-import org.ourproject.kune.platf.client.actions.AbstractExtendedAction;
-import org.ourproject.kune.platf.client.actions.Action;
-import org.ourproject.kune.platf.client.actions.ActionEvent;
-import org.ourproject.kune.platf.client.actions.KeyStroke;
-import org.ourproject.kune.platf.client.actions.ui.ComplexToolbar;
-import org.ourproject.kune.platf.client.actions.ui.MenuItemDescriptor;
-import org.ourproject.kune.platf.client.i18n.I18nTranslationService;
-import org.ourproject.kune.platf.client.shortcuts.Keyboard;
-import org.ourproject.kune.platf.client.state.StateManager;
-import org.ourproject.kune.platf.client.ui.rte.basic.RTEditorNew;
-import org.ourproject.kune.platf.client.ui.rte.basic.RTEditorPanelNew;
-import org.ourproject.kune.platf.client.ui.rte.img.RTEImgResources;
-import org.ourproject.kune.platf.client.ui.rte.saving.RTESavingEditorPresenter;
-import org.ourproject.kune.platf.client.ui.rte.saving.RTESavingEditorView;
-import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
-import org.ourproject.kune.platf.client.utils.TimerWrapper;
-import org.ourproject.kune.workspace.client.sitebar.sitesign.SiteSignOutLink;
-import org.ourproject.kune.workspace.client.skel.Toolbar;
-import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
-import org.ourproject.kune.workspace.client.title.EntityTitle;
+public interface ContentEditor extends RTESavingEditor {
-import com.calclab.suco.client.events.Listener;
-import com.calclab.suco.client.events.Listener0;
-import com.google.gwt.libideas.resources.client.ImageResource;
-import com.google.gwt.user.client.Window;
-import com.google.gwt.user.client.Window.ClosingEvent;
-import com.google.gwt.user.client.Window.ClosingHandler;
-import com.google.gwt.user.client.ui.VerticalPanel;
-import com.gwtext.client.widgets.BoxComponent;
-import com.gwtext.client.widgets.event.ContainerListenerAdapter;
+ /**
+ * Sets the "File" menu title (some times you want a "Post" or "Wikipage"
+ * menu instead of a "File" menu).
+ *
+ * @param title
+ * the new file menu title
+ */
+ void setFileMenuTitle(String title);
-public class ContentEditor extends RTESavingEditorPresenter {
-
- public class RenameAction extends AbstractExtendedAction {
- public RenameAction(final String text, final String tooltip, final ImageResource icon) {
- super(text, tooltip, icon);
- }
-
- public void actionPerformed(final ActionEvent actionEvent) {
- entityTitle.edit();
- }
- }
-
- private final WorkspaceSkeleton ws;
- private final VerticalPanel vp;
- private final RTEditorNew basicEditor;
- private final RTEditorPanelNew editorPanel;
- private final ComplexToolbar topbar;
- private final SiteSignOutLink siteSignOutLink;
- private final I18nTranslationService i18n;
- private final EntityTitle entityTitle;
- private final ComplexToolbar sndbar;
-
- public ContentEditor(final RTEditorNew editor, final boolean autoSave, final I18nTranslationService i18n,
- final StateManager stateManager, final SiteSignOutLink siteSignOutLink,
- final DeferredCommandWrapper deferredCommandWrapper, final RTEImgResources imgResources,
- final WorkspaceSkeleton ws, final TimerWrapper timer, final RTESavingEditorView view,
- final EntityTitle entityTitle) {
- super(editor, autoSave, i18n, stateManager, deferredCommandWrapper, imgResources, timer);
- this.i18n = i18n;
- this.siteSignOutLink = siteSignOutLink;
- this.entityTitle = entityTitle;
- super.init(view);
- this.ws = ws;
- Window.addWindowClosingHandler(new ClosingHandler() {
- public void onWindowClosing(final ClosingEvent event) {
- if (isSavePending()) {
- event.setMessage(i18n.t("You have changes without save. Are you sure?"));
- }
- // onDoSaveAndClose();
- }
- });
- vp = new VerticalPanel();
- basicEditor = super.getBasicEditor();
- addContentActions();
- editorPanel = (RTEditorPanelNew) basicEditor.getEditorArea();
- topbar = ((ComplexToolbar) basicEditor.getTopBar());
- sndbar = ((ComplexToolbar) basicEditor.getSndBar());
- vp.add(sndbar);
- vp.add(editorPanel);
- basicEditor.setExtended(true);
- vp.setWidth("100%");
- ws.getEntityWorkspace().addContentListener(new ContainerListenerAdapter() {
- @Override
- public void onResize(final BoxComponent component, final int adjWidth, final int adjHeight,
- final int rawWidth, final int rawHeight) {
- adjHeight(adjHeight);
- }
- });
-
- }
-
- @Override
- public void edit(final String html, final Listener<String> onSave, final Listener0 onEditCancelled) {
- final Toolbar contentTopBar = ws.getEntityWorkspace().getContentTopBar();
- contentTopBar.removeAll();
- contentTopBar.add(topbar);
- ws.getEntityWorkspace().setContent(vp);
- super.edit(html, onSave, onEditCancelled);
- adjHeight(ws.getEntityWorkspace().getContentHeight());
- siteSignOutLink.addBeforeSignOut(getBeforeSavingListener());
- }
-
- public void setFileMenuTitle(final String fileMenuTitleNew) {
- basicEditor.getFileMenu().setText(fileMenuTitleNew);
- }
-
- @Override
- protected void onCancelConfirmed() {
- ws.getEntityWorkspace().clearContent();
- super.onCancelConfirmed();
- siteSignOutLink.addBeforeSignOut(getBeforeSavingListener());
- }
-
- private void addContentActions() {
- final RenameAction renameAction = new RenameAction(i18n.t("Rename"), NO_TEXT, NO_ICON);
- final MenuItemDescriptor renameItem = new MenuItemDescriptor(basicEditor.getFileMenu(), renameAction);
- renameItem.setLocation(RTEditorNew.TOPBAR);
- final KeyStroke key = KeyStroke.getKeyStroke(Keyboard.KEY_F2, 0);
- renameAction.putValue(Action.ACCELERATOR_KEY, key);
- basicEditor.setActionShortcut(key, renameAction);
- basicEditor.addAction(renameItem);
- }
-
- private void adjHeight(final int height) {
- final int barHeight = sndbar.getOffsetHeight();
- final int newHeight = height - 20 - barHeight;
- // Log.debug("Sndbar height: " + barHeight + " new height: " +
- // newHeight);
- editorPanel.adjustSize(newHeight);
- vp.setCellHeight(editorPanel, "" + newHeight);
- }
}
Added: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/ContentEditorPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/editor/ContentEditorPanel.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/editor/ContentEditorPanel.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -0,0 +1,15 @@
+package org.ourproject.kune.workspace.client.editor;
+
+import org.ourproject.kune.platf.client.actions.ui.GuiBindingsRegister;
+import org.ourproject.kune.platf.client.i18n.I18nUITranslationService;
+import org.ourproject.kune.platf.client.shortcuts.GlobalShortcutRegister;
+import org.ourproject.kune.platf.client.ui.rte.saving.RTESavingEditorPanel;
+
+public class ContentEditorPanel extends RTESavingEditorPanel implements ContentEditorView {
+
+ public ContentEditorPanel(final ContentEditorPresenter presenter, final I18nUITranslationService i18n,
+ final GlobalShortcutRegister globalShortcutReg, final GuiBindingsRegister bindReg) {
+ super(presenter, i18n, globalShortcutReg, bindReg);
+ }
+
+}
Copied: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/ContentEditorPresenter.java (from rev 1125, trunk/src/main/java/org/ourproject/kune/workspace/client/editor/ContentEditor.java)
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/editor/ContentEditor.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/editor/ContentEditorPresenter.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -0,0 +1,152 @@
+package org.ourproject.kune.workspace.client.editor;
+
+import static org.ourproject.kune.platf.client.actions.AbstractExtendedAction.NO_ICON;
+import static org.ourproject.kune.platf.client.actions.AbstractExtendedAction.NO_TEXT;
+
+import org.ourproject.kune.platf.client.actions.AbstractExtendedAction;
+import org.ourproject.kune.platf.client.actions.Action;
+import org.ourproject.kune.platf.client.actions.ActionEvent;
+import org.ourproject.kune.platf.client.actions.KeyStroke;
+import org.ourproject.kune.platf.client.actions.ui.ComplexToolbar;
+import org.ourproject.kune.platf.client.actions.ui.MenuItemDescriptor;
+import org.ourproject.kune.platf.client.i18n.I18nTranslationService;
+import org.ourproject.kune.platf.client.shortcuts.Keyboard;
+import org.ourproject.kune.platf.client.state.Session;
+import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.platf.client.ui.palette.ColorWebSafePalette;
+import org.ourproject.kune.platf.client.ui.rte.basic.RTEditor;
+import org.ourproject.kune.platf.client.ui.rte.basic.RTEditorPanel;
+import org.ourproject.kune.platf.client.ui.rte.edithtml.EditHtmlDialog;
+import org.ourproject.kune.platf.client.ui.rte.img.RTEImgResources;
+import org.ourproject.kune.platf.client.ui.rte.insertimg.InsertImageDialog;
+import org.ourproject.kune.platf.client.ui.rte.insertlink.InsertLinkDialog;
+import org.ourproject.kune.platf.client.ui.rte.insertmedia.InsertMediaDialog;
+import org.ourproject.kune.platf.client.ui.rte.insertspecialchar.InsertSpecialCharDialog;
+import org.ourproject.kune.platf.client.ui.rte.inserttable.InsertTableDialog;
+import org.ourproject.kune.platf.client.ui.rte.saving.RTESavingEditorPresenter;
+import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
+import org.ourproject.kune.platf.client.utils.TimerWrapper;
+import org.ourproject.kune.workspace.client.sitebar.sitesign.SiteSignOutLink;
+import org.ourproject.kune.workspace.client.skel.Toolbar;
+import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
+import org.ourproject.kune.workspace.client.title.EntityTitle;
+
+import com.calclab.suco.client.events.Listener;
+import com.calclab.suco.client.events.Listener0;
+import com.calclab.suco.client.ioc.Provider;
+import com.google.gwt.libideas.resources.client.ImageResource;
+import com.google.gwt.user.client.Window;
+import com.google.gwt.user.client.Window.ClosingEvent;
+import com.google.gwt.user.client.Window.ClosingHandler;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.gwtext.client.widgets.BoxComponent;
+import com.gwtext.client.widgets.event.ContainerListenerAdapter;
+
+public class ContentEditorPresenter extends RTESavingEditorPresenter implements ContentEditor {
+
+ public class RenameAction extends AbstractExtendedAction {
+ public RenameAction(final String text, final String tooltip, final ImageResource icon) {
+ super(text, tooltip, icon);
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ entityTitle.edit();
+ }
+ }
+
+ private final WorkspaceSkeleton wspace;
+ private VerticalPanel vpanel;
+ private RTEditorPanel editorPanel;
+ private final SiteSignOutLink siteSignOutLink;
+ private final I18nTranslationService i18n;
+ private final EntityTitle entityTitle;
+ private ComplexToolbar topbar;
+ private ComplexToolbar sndbar;
+
+ public ContentEditorPresenter(final I18nTranslationService i18n, final Session session,
+ final RTEImgResources imgResources, final Provider<InsertLinkDialog> insLinkDialog,
+ final Provider<ColorWebSafePalette> palette, final Provider<EditHtmlDialog> editHtmlDialog,
+ final Provider<InsertImageDialog> insertImageDialog, final Provider<InsertMediaDialog> insertMediaDialog,
+ final Provider<InsertTableDialog> insertTableDialog, final Provider<InsertSpecialCharDialog> insCharDialog,
+ final DeferredCommandWrapper deferred, final boolean autoSave, final StateManager stateManager,
+ final SiteSignOutLink siteSignOutLink, final WorkspaceSkeleton wspace, final TimerWrapper timer,
+ final EntityTitle entityTitle) {
+ super(i18n, session, imgResources, insLinkDialog, palette, editHtmlDialog, insertImageDialog,
+ insertMediaDialog, insertTableDialog, insCharDialog, deferred, autoSave, stateManager, timer);
+ super.setExtended(true);
+ this.i18n = i18n;
+ this.siteSignOutLink = siteSignOutLink;
+ this.entityTitle = entityTitle;
+ this.wspace = wspace;
+ Window.addWindowClosingHandler(new ClosingHandler() {
+ public void onWindowClosing(final ClosingEvent event) {
+ if (isSavePending()) {
+ event.setMessage(i18n.t("You have changes without save. Are you sure?"));
+ }
+ // onDoSaveAndClose();
+ }
+ });
+ wspace.getEntityWorkspace().addContentListener(new ContainerListenerAdapter() {
+ @Override
+ public void onResize(final BoxComponent component, final int adjWidth, final int adjHeight,
+ final int rawWidth, final int rawHeight) {
+ adjHeight(adjHeight);
+ }
+ });
+
+ }
+
+ @Override
+ public void edit(final String html, final Listener<String> onSave, final Listener0 onEditCancelled) {
+ super.edit(html, onSave, onEditCancelled);
+ final Toolbar contentTopBar = wspace.getEntityWorkspace().getContentTopBar();
+ contentTopBar.removeAll();
+ contentTopBar.add(topbar);
+ wspace.getEntityWorkspace().setContent(vpanel);
+ adjHeight(wspace.getEntityWorkspace().getContentHeight());
+ siteSignOutLink.addBeforeSignOut(getBeforeSavingListener());
+ }
+
+ public void init(final ContentEditorView view) {
+ super.init(view);
+ addContentActions();
+ vpanel = new VerticalPanel();
+ editorPanel = (RTEditorPanel) super.getEditorArea();
+ topbar = ((ComplexToolbar) super.getTopBar());
+ sndbar = ((ComplexToolbar) super.getSndBar());
+ vpanel.add(sndbar);
+ vpanel.add(editorPanel);
+ vpanel.setWidth("100%");
+ }
+
+ public void setFileMenuTitle(final String fileMenuTitleNew) {
+ super.getFileMenu().setText(fileMenuTitleNew);
+ }
+
+ @Override
+ protected void onCancelConfirmed() {
+ wspace.getEntityWorkspace().clearContent();
+ super.onCancelConfirmed();
+ siteSignOutLink.addBeforeSignOut(getBeforeSavingListener());
+ }
+
+ private void addContentActions() {
+ final RenameAction renameAction = new RenameAction(i18n.t("Rename"), NO_TEXT, NO_ICON);
+ final MenuItemDescriptor renameItem = new MenuItemDescriptor(super.getFileMenu(), renameAction);
+ renameItem.setLocation(RTEditor.TOPBAR);
+ final KeyStroke key = KeyStroke.getKeyStroke(Keyboard.KEY_F2, 0);
+ renameAction.putValue(Action.ACCELERATOR_KEY, key);
+ super.setActionShortcut(key, renameAction);
+ super.addAction(renameItem);
+ }
+
+ private void adjHeight(final int height) {
+ final int barHeight = sndbar.getOffsetHeight();
+ final int newHeight = height - 20 - barHeight;
+ // Log.debug("Sndbar height: " + barHeight + " new height: " +
+ // newHeight);
+ editorPanel.adjustSize(newHeight);
+ vpanel.setCellHeight(editorPanel, String.valueOf(newHeight));
+ }
+
+}
Added: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/ContentEditorView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/editor/ContentEditorView.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/editor/ContentEditorView.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -0,0 +1,7 @@
+package org.ourproject.kune.workspace.client.editor;
+
+import org.ourproject.kune.platf.client.ui.rte.saving.RTESavingEditorView;
+
+public interface ContentEditorView extends RTESavingEditorView {
+
+}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/hello/HelloWorldModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/hello/HelloWorldModule.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/hello/HelloWorldModule.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -20,25 +20,32 @@
package org.ourproject.kune.workspace.client.hello;
import org.ourproject.kune.platf.client.View;
-import org.ourproject.kune.platf.client.actions.ActionToolbarMenuDescriptor;
-import org.ourproject.kune.platf.client.dto.AccessRolDTO;
-import org.ourproject.kune.platf.client.dto.UserSimpleDTO;
+import org.ourproject.kune.platf.client.actions.AbstractAction;
+import org.ourproject.kune.platf.client.actions.Action;
+import org.ourproject.kune.platf.client.actions.ActionEvent;
+import org.ourproject.kune.platf.client.actions.ui.MenuCheckItemDescriptor;
+import org.ourproject.kune.platf.client.actions.ui.MenuDescriptor;
+import org.ourproject.kune.platf.client.actions.ui.MenuItemDescriptor;
+import org.ourproject.kune.platf.client.actions.ui.MenuRadioItemDescriptor;
+import org.ourproject.kune.platf.client.actions.ui.MenuSeparatorDescriptor;
+import org.ourproject.kune.platf.client.actions.ui.PushButtonDescriptor;
import org.ourproject.kune.platf.client.i18n.I18nTranslationService;
import org.ourproject.kune.platf.client.i18n.I18nTranslationServiceMocked;
import org.ourproject.kune.platf.client.services.AbstractExtendedModule;
import org.ourproject.kune.platf.client.shortcuts.GlobalShortcutRegister;
import org.ourproject.kune.platf.client.shortcuts.ShortcutDescriptor;
+import org.ourproject.kune.platf.client.ui.img.ImgResources;
import org.ourproject.kune.platf.client.ui.noti.NotifyUser;
-import org.ourproject.kune.workspace.client.AbstractFoldableContentActions;
+import org.ourproject.kune.workspace.client.editor.ContentEditor;
+import org.ourproject.kune.workspace.client.hello.HelloWorldModule.HelloWorldPanel.HelloWorldPresenter;
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
-import org.ourproject.kune.workspace.client.socialnet.UserActionRegistry;
import com.allen_sauer.gwt.log.client.Log;
-import com.calclab.suco.client.events.Listener;
import com.calclab.suco.client.events.Listener0;
import com.calclab.suco.client.ioc.Provider;
import com.calclab.suco.client.ioc.decorator.Singleton;
import com.calclab.suco.client.ioc.module.Factory;
+import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.ui.Label;
/**
@@ -70,69 +77,121 @@
*
*/
public static class HelloWorldPanel implements HelloWorldView {
- private final I18nTranslationService i18n;
+ public static class HelloWorldPresenter implements HelloWorld {
- public HelloWorldPanel(final HelloWorldPresenter presenter, final WorkspaceSkeleton ws,
- final I18nTranslationService i18n) {
- this.i18n = i18n;
- /** We can directly insert something in the workspace skeleton **/
- ws.getEntityWorkspace().getSubTitle().add(new Label(i18n.t("Hello world!")));
- }
+ private HelloWorldView view;
- public void showMessage() {
- /** i18n use with parameters **/
- NotifyUser.info(i18n.t("Hello [%s]!", "world"));
- }
- }
+ public HelloWorldPresenter(final I18nTranslationService i18n,
+ final Provider<ContentEditor> contentEditorProv, final ImgResources img) {
+ // Or add some actions to the general content editor:
+ createActions(contentEditorProv, img, i18n);
+ }
- public static class HelloWorldPresenter implements HelloWorld {
+ public View getView() {
+ return view;
+ }
- private HelloWorldView view;
- private final Provider<UserActionRegistry> actionRegistry;
- private final I18nTranslationService i18n;
+ public void init(final HelloWorldView view) {
+ this.view = view;
+ }
- public HelloWorldPresenter(final I18nTranslationService i18n, final Provider<UserActionRegistry> actionRegistry) {
- this.i18n = i18n;
- this.actionRegistry = actionRegistry;
- createActions();
- }
+ /**
+ * We can add some gui action items to the content editor
+ *
+ * Summary)
+ *
+ * @param i18n
+ **/
+ private void createActions(final Provider<ContentEditor> contentEditorProv, final ImgResources img,
+ final I18nTranslationService i18n) {
- public View getView() {
- return view;
- }
+ final HelloWorldAction action = new HelloWorldAction(img);
- public void init(final HelloWorldView view) {
- this.view = view;
+ // We describe some gui items and all will use the same action:
+
+ final PushButtonDescriptor btn = new PushButtonDescriptor(action);
+
+ // We no use i18n.t() in most of these gui widgets but it's is
+ // recommended the use in real code
+ final MenuDescriptor menu = new MenuDescriptor(i18n.t("File"), "File menu tooltip");
+
+ final MenuItemDescriptor menuitem = new MenuItemDescriptor(menu, action);
+ final MenuItemDescriptor menuitem2 = new MenuItemDescriptor(menu, action);
+
+ // A submenu
+ final MenuDescriptor submenu = new MenuDescriptor("Options", "Submenu tooltip");
+ submenu.setParent(menu);
+
+ // A menu check item
+ final MenuItemDescriptor menuitem3 = new MenuItemDescriptor(submenu, action);
+ final MenuCheckItemDescriptor menuitem4 = new MenuCheckItemDescriptor(submenu, action);
+ menuitem4.setChecked(true);
+
+ // Some menu radio items
+ final String radioGroup = "helloworldradiogroup";
+ final MenuRadioItemDescriptor menuitem5 = new MenuRadioItemDescriptor(submenu, action, radioGroup);
+ final MenuRadioItemDescriptor menuitem6 = new MenuRadioItemDescriptor(submenu, action, radioGroup);
+ menuitem5.setChecked(true);
+
+ // We can define also some menu separators
+ final MenuSeparatorDescriptor menuSeparator = new MenuSeparatorDescriptor(menu);
+ final MenuSeparatorDescriptor otherSeparator = new MenuSeparatorDescriptor(submenu);
+
+ // Lazy creation of objects:
+ //
+ // Using Provider<Class> we do lazy instantiation. When we call
+ // actionRegistry.get() it creates the instance if is not
+ // created
+ // yet.
+ final ContentEditor contentEditor = contentEditorProv.get();
+
+ // We want to add some items to the topbar and other to the
+ // second bar
+ contentEditor.setLocation(ContentEditor.TOPBAR, menu, menuitem, menuSeparator, menuitem2, submenu,
+ menuitem3, menuitem4, otherSeparator, menuitem5, menuitem6);
+ contentEditor.setLocation(ContentEditor.SNDBAR, btn);
+
+ // And finally we add the action descriptors to the editor:
+ contentEditor.addActions(btn, menu, menuitem);
+
+ // Also individually
+ contentEditor.addAction(menuSeparator);
+
+ // It's important to add the menus before its menu items
+ contentEditor.addActions(menuitem2, submenu, menuitem3, menuitem4, otherSeparator, menuitem5, menuitem6);
+
+ // We can change descriptors properties and are changed in the
+ // UI
+ btn.setPushed(true);
+
+ // After some time we can change the common action or some other
+ // properties
+ new Timer() {
+ @Override
+ public void run() {
+ // The text of the action (in the menu or in the button)
+ action.putValue(Action.NAME, "hello world new");
+ // And the tooltip (on over message):
+ action.putValue(Action.SHORT_DESCRIPTION, "hello world new");
+ btn.setPushed(false);
+ }
+ }.schedule(10000);
+ }
}
- /**
- * We add an menu action to users menus (like the buddies in Buddies
- * Summary)
- **/
- private void createActions() {
- final ActionToolbarMenuDescriptor<UserSimpleDTO> helloWorldBuddiesAction = new ActionToolbarMenuDescriptor<UserSimpleDTO>(
- AccessRolDTO.Viewer, AbstractFoldableContentActions.CONTENT_TOPBAR, new Listener<UserSimpleDTO>() {
- public void onEvent(final UserSimpleDTO parameter) {
- // We clicked:
- view.showMessage();
- }
- });
- // AccessRolDTO.Viewer: any user can see this option and without be
- // authenticated:
- helloWorldBuddiesAction.setMustBeAuthenticated(false);
- // We add a submenu in Options menu:
- helloWorldBuddiesAction.setParentMenuTitle(i18n.t("Options"));
- helloWorldBuddiesAction.setParentSubMenuTitle(i18n.t("Hello world submenu"));
- helloWorldBuddiesAction.setTextDescription(i18n.t("Hello world menu item"));
- helloWorldBuddiesAction.setIconUrl("images/info.gif");
+ private final I18nTranslationService i18n;
- // Lazy creation of objects:
- //
- // Using Provider<Class> we do lazy instantiation. When we call
- // actionRegistry.get() it creates the instance if is not created
- // yet.
- actionRegistry.get().addAction(helloWorldBuddiesAction);
+ public HelloWorldPanel(final HelloWorldPresenter presenter, final WorkspaceSkeleton wspace,
+ final I18nTranslationService i18n) {
+ this.i18n = i18n;
+ // We can directly insert something in the workspace skeleton
+ wspace.getEntityWorkspace().getSubTitle().add(new Label(i18n.t("Hello world!")));
}
+
+ public void showMessage() {
+ /** i18n use with parameters **/
+ NotifyUser.info(i18n.t("Hello [%s]!", "world"));
+ }
}
/**
@@ -143,6 +202,22 @@
void showMessage();
}
+ static class HelloWorldAction extends AbstractAction {
+ public HelloWorldAction(final ImgResources img) {
+ super();
+ super.putValue(Action.NAME, "helloword");
+ super.putValue(Action.SHORT_DESCRIPTION, "helloworld item");
+ super.putValue(Action.SMALL_ICON, img.info());
+ }
+
+ public void actionPerformed(final ActionEvent actionEvent) {
+ if (actionEvent.getEvent().getCtrlKey()) {
+ NotifyUser.info("Hello world action fired with ctrl key pressed");
+ }
+ NotifyUser.info("Hello world action fired");
+ }
+ }
+
/**
* This is the real part of the module (when we do how and when to create
* the above classes, how many instances (singleton, one per use), and so
@@ -175,7 +250,7 @@
@Override
public HelloWorld create() {
final HelloWorldPresenter presenter = new HelloWorldPresenter(i(I18nTranslationServiceMocked.class),
- p(UserActionRegistry.class));
+ p(ContentEditor.class), i(ImgResources.class));
final HelloWorldPanel panel = new HelloWorldPanel(presenter, i(WorkspaceSkeleton.class),
i(I18nTranslationServiceMocked.class));
presenter.init(panel);
@@ -213,10 +288,5 @@
NotifyUser.info("Global Ctrl+S pressed");
}
});
-
- // And because nobody use this module, we get the class (to force the
- // creation of the
- // Helloworld instance):
- // i(HelloWorld.class);
}
}
\ No newline at end of file
Modified: trunk/src/test/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPresenterTest.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPresenterTest.java 2009-06-11 18:28:19 UTC (rev 1125)
+++ trunk/src/test/java/org/ourproject/kune/platf/client/ui/rte/saving/RTESavingEditorPresenterTest.java 2009-06-11 22:14:06 UTC (rev 1126)
@@ -11,7 +11,6 @@
import org.ourproject.kune.platf.client.i18n.I18nTranslationServiceMocked;
import org.ourproject.kune.platf.client.i18n.Resources;
import org.ourproject.kune.platf.client.state.StateManager;
-import org.ourproject.kune.platf.client.ui.rte.basic.RTEditorNew;
import org.ourproject.kune.platf.client.ui.rte.img.RTEImgResources;
import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
import org.ourproject.kune.platf.client.utils.TimerWrapper;
@@ -28,9 +27,7 @@
private MockedListener0 cancelListener;
private StateManager stateManager;
private DeferredCommandWrapper deferredCommandWrapper;
- private RTEditorNew rteEditor;
private TimerWrapper timer;
- // private ComplexToolbar sndbar;
private RTESavingEditorView view;
@Before
@@ -39,17 +36,16 @@
new Resources(i18n);
stateManager = Mockito.mock(StateManager.class);
deferredCommandWrapper = Mockito.mock(DeferredCommandWrapper.class);
- rteEditor = Mockito.mock(RTEditorNew.class);
+
final RTEImgResources imgResources = Mockito.mock(RTEImgResources.class);
- final ImageResource imageResource = Mockito.mock(ImageResource.class);
- Mockito.when(imageResource.getName()).thenReturn("save");
- Mockito.when(imgResources.save()).thenReturn(imageResource);
- // sndbar = Mockito.mock(ComplexToolbar.class);
- // Mockito.when(rteEditor.getSndBar()).thenReturn(sndbar);
+ final ImageResource img = Mockito.mock(ImageResource.class);
+ Mockito.when(img.getName()).thenReturn("save");
+ Mockito.when(imgResources.save()).thenReturn(img);
timer = Mockito.mock(TimerWrapper.class);
view = Mockito.mock(RTESavingEditorView.class);
- presenter = new RTESavingEditorPresenter(rteEditor, true, i18n, stateManager, deferredCommandWrapper,
- imgResources, timer);
+
+ presenter = new RTESavingEditorPresenter(i18n, null, imgResources, null, null, null, null, null, null, null,
+ deferredCommandWrapper, true, stateManager, timer);
presenter.init(view);
saveListener = new MockedListener<String>();
cancelListener = new MockedListener0();
@@ -100,12 +96,10 @@
public void initialEditWithEditionAndSave() {
presenter.edit("Text to edit", saveListener, cancelListener);
final String textModified = "Text modified";
- Mockito.when(rteEditor.getHtml()).thenReturn(textModified);
presenter.onEdit();
presenter.onDoSave();
presenter.onSavedSuccessful();
checkSaveBtnDisabled();
- assertTrue(saveListener.isCalledWithEquals(textModified));
assertTrue(cancelListener.isNotCalled());
}
@@ -113,7 +107,6 @@
public void testSavePendingAndCancel() {
presenter.edit("Text to edit", saveListener, cancelListener);
final String textModified = "Text modified";
- Mockito.when(rteEditor.getHtml()).thenReturn(textModified);
presenter.onEdit();
presenter.onCancel();
presenter.onCancelConfirmed();
@@ -125,7 +118,6 @@
public void testSavePendingAndSaveFails() {
presenter.edit("Text to edit", saveListener, cancelListener);
final String textModified = "Text modified";
- Mockito.when(rteEditor.getHtml()).thenReturn(textModified);
presenter.onEdit();
presenter.onDoSave();
presenter.onSaveFailed();
More information about the kune-commits
mailing list