You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ma...@apache.org on 2010/01/14 18:12:15 UTC
svn commit: r899307 - in /james/hupa/trunk:
client/src/main/java/org/apache/hupa/client/
client/src/main/java/org/apache/hupa/client/mvp/
widgets/src/main/java/org/apache/hupa/widgets/editor/
widgets/src/main/java/org/apache/hupa/widgets/editor/bundles/
Author: manolo
Date: Thu Jan 14 17:12:14 2010
New Revision: 899307
URL: http://svn.apache.org/viewvc?rev=899307&view=rev
Log:
Changed 'ugly' pop-up selectors in message editor in favor of color-picker and font-picker
Added:
james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/ColorPicker.java
james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/FontPicker.java
Modified:
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.properties
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants_es.properties
james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MessageSendView.java
james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/Editor.java
james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/Toolbar.java
james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/ToolbarConstants.java
james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/bundles/ToolbarImages.java
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.properties
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.properties?rev=899307&r1=899306&r2=899307&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.properties (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants.properties Thu Jan 14 17:12:14 2010
@@ -42,23 +42,10 @@
#editor_superscript = Toggle Superscript
#editor_ul = Insert Unordered List
#editor_underline = Toggle Underline
-#editor_color = Color
-#editor_black = Black
-#editor_white = White
-#editor_red = Red
-#editor_green = Green
-#editor_yellow = Yellow
-#editor_blue = Blue
-#editor_font = Font
-#editor_normal = Normal
-#editor_size = Size
-#editor_xxsmall = XX-Small
-#editor_xsmall = X-Small
-#editor_small = Small
-#editor_medium = Medium
-#editor_large = Large
-#editor_xlarge = X-Large
-#editor_xxlarge = XX-Large
+#editor_background = Background color
+#editor_foreground = Foreground color
+#editor_font = Font name
+#editor_size = Font size
usernameLabel=Username:
passwordLabel=Password:
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants_es.properties
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants_es.properties?rev=899307&r1=899306&r2=899307&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants_es.properties (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/HupaConstants_es.properties Thu Jan 14 17:12:14 2010
@@ -39,23 +39,10 @@
editor_superscript = SuperÃndice
editor_ul = Lista no ordenada
editor_underline = Subrayado
-editor_color = Color
-editor_black = Negro
-editor_white = Blanco
-editor_red = Rojo
-editor_green = Verde
-editor_yellow = Amarillo
-editor_blue = Azul
-editor_font = Fuente
-editor_normal = Normal
-editor_size = Tamaño
-editor_xxsmall = Enana
-editor_xsmall = Muy pequeña
-editor_small = Pequeña
-editor_medium = Mediana
-editor_large = Grande
-editor_xlarge = Muy grande
-editor_xxlarge = Enorme
+editor_background = Color de fondo
+editor_foreground = Color de la ruente
+editor_font = Tipo de fuente
+editor_size = Tamaño de la fuente
usernameLabel=Nombre de Usuario:
passwordLabel=Contraseña:
Modified: james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MessageSendView.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MessageSendView.java?rev=899307&r1=899306&r2=899307&view=diff
==============================================================================
--- james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MessageSendView.java (original)
+++ james/hupa/trunk/client/src/main/java/org/apache/hupa/client/mvp/MessageSendView.java Thu Jan 14 17:12:14 2010
@@ -58,7 +58,7 @@
private MessageHeaders headers;
- private Editor editor = new Editor();
+ private Editor editor;
private CommandsBar buttonsBar = new CommandsBar();
private Label from = new Label();
@@ -80,6 +80,7 @@
backButton = new EnableHyperlink(constants.backButton(),"");
headers = new MessageHeaders(constants);
loading = new Loading(constants.loading());
+ editor = new Editor(constants);
BaseUploadStatus uploadStatus = new BaseUploadStatus();
uploadStatus.setCancelConfiguration(IUploadStatus.GMAIL_CANCEL_CFG);
Added: james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/ColorPicker.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/ColorPicker.java?rev=899307&view=auto
==============================================================================
--- james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/ColorPicker.java (added)
+++ james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/ColorPicker.java Thu Jan 14 17:12:14 2010
@@ -0,0 +1,146 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+/**
+ * Much of this code has been taken from the GWT Showcase example
+ * which is licensed under Apache License v2.0
+ *
+ * This class is necessary while GWT library doesn't provide any
+ * toolbar to be used with its RichTextArea widget.
+ */
+package org.apache.hupa.widgets.editor;
+
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.event.dom.client.MouseOutEvent;
+import com.google.gwt.event.dom.client.MouseOutHandler;
+import com.google.gwt.event.dom.client.MouseOverEvent;
+import com.google.gwt.event.dom.client.MouseOverHandler;
+import com.google.gwt.event.logical.shared.HasValueChangeHandlers;
+import com.google.gwt.event.logical.shared.ValueChangeEvent;
+import com.google.gwt.event.logical.shared.ValueChangeHandler;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.user.client.ui.FlexTable;
+import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.PopupPanel;
+
+/**
+ * Color picker for rich editor
+ */
+public class ColorPicker extends PopupPanel implements ClickHandler, HasValueChangeHandlers<ColorPicker> {
+
+ private class ColorCell extends Label {
+ String rgbColor;
+ public ColorCell(long color) {
+ this(Long.toHexString(color));
+ }
+
+ public ColorCell(String color) {
+ super();
+ setColor(color);
+ setTitle(rgbColor);
+ setSize("14px", "12px");
+ DOM.setStyleAttribute(getElement(), "backgroundColor", rgbColor);
+ setBorderColor("#cccccc");
+ addMouseOverHandler(new MouseOverHandler() {
+ public void onMouseOver(MouseOverEvent event) {
+ setBorderColor("#ffffff");
+ }
+ });
+ addMouseOutHandler(new MouseOutHandler() {
+ public void onMouseOut(MouseOutEvent event) {
+ setBorderColor("#cccccc");
+ }
+ });
+ }
+
+ public String getColor() {
+ return rgbColor;
+ }
+
+ public void setBorderColor(String color) {
+ DOM.setStyleAttribute(getElement(), "border", "1px solid " + color);
+ }
+
+ void setColor(String s){
+ while(s.length()<6) s= "0" + s;
+ rgbColor="#" + s;
+ }
+ }
+
+ ValueChangeHandler<ColorPicker> changeHandler = null;
+
+ private String color = "";
+
+ long[] colors = new long[] {
+ 0xffffff, 0xcccccc, 0xc0c0c0, 0x999999, 0x666666, 0x333333, 0x000000,
+ 0xffcccc, 0xff6666, 0xff0000, 0xcc0000, 0x990000, 0x660000, 0x330000,
+ 0xffcc99, 0xff9966, 0xff9900, 0xfd6500, 0xcb6500, 0x983200, 0x653200,
+ 0xffff99, 0xffff66, 0xffcc66, 0xfdcb32, 0xcb9832, 0x986532, 0x653232,
+ 0xffffcc, 0xffff33, 0xffff00, 0xfdcb00, 0x989800, 0x656500, 0x323200,
+ 0x99ff99, 0x66ff99, 0x33ff33, 0x32cb00, 0x009800, 0x006500, 0x003200,
+ 0x99ffff, 0x33ffff, 0x66cccc, 0x00cbcb, 0x329898, 0x326565, 0x003232,
+ 0xccffff, 0x66ffff, 0x33ccff, 0x3265fd, 0x3232fd, 0x000098, 0x000065,
+ 0xccccff, 0x9999ff, 0x6666cc, 0x6532fd, 0x6500cb, 0x323298, 0x320098,
+ 0xffccff, 0xff99ff, 0xcc66cc, 0xcb32cb, 0x983298, 0x653265, 0x320032,
+ };
+
+ public ColorPicker() {
+ super(true);
+ FlexTable t = new FlexTable();
+ t.setCellPadding(0);
+ t.setCellSpacing(0);
+ DOM.setStyleAttribute(t.getElement(), "border", "1px solid #cccccc");
+
+ int i=0;
+ for (int r=0; i<colors.length; r++) {
+ for (int c=0; c<7 && i<colors.length; c++, i++) {
+ ColorCell cell = new ColorCell(colors[i]);
+ cell.addClickHandler(this);
+ t.setWidget(r, c, cell);
+ }
+ }
+
+ add(t);
+ setAnimationEnabled(true);
+ setStyleName("hupa-color-picker");
+ }
+
+ public HandlerRegistration addValueChangeHandler(ValueChangeHandler<ColorPicker> handler) {
+ assert changeHandler == null : "Change handler is already defined";
+ changeHandler = handler;
+ return new HandlerRegistration() {
+ public void removeHandler() {
+ changeHandler = null;
+ }
+ };
+ }
+
+ public String getColor() {
+ return color;
+ }
+
+ public void onClick(ClickEvent event) {
+ ColorCell cell = (ColorCell)event.getSource();
+ this.color = cell.getColor();
+ if (changeHandler != null)
+ changeHandler.onValueChange(new ValueChangeEvent<ColorPicker>(this){});
+ }
+
+}
Modified: james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/Editor.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/Editor.java?rev=899307&r1=899306&r2=899307&view=diff
==============================================================================
--- james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/Editor.java (original)
+++ james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/Editor.java Thu Jan 14 17:12:14 2010
@@ -18,6 +18,7 @@
****************************************************************/
package org.apache.hupa.widgets.editor;
+import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.FocusEvent;
@@ -45,10 +46,14 @@
boolean isNewMessage = true;
public Editor() {
+ this((ToolbarConstants)GWT.create(ToolbarConstants.class));
+ }
+
+ public Editor(ToolbarConstants constants) {
area.ensureDebugId("hupa-editor-area");
area.setSize("100%", "234px");
- Toolbar toolbar = new Toolbar(area);
+ Toolbar toolbar = new Toolbar(area, constants);
toolbar.ensureDebugId("hupa-editor-toolbar");
super.setStyleName("hupa-editor");
Added: james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/FontPicker.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/FontPicker.java?rev=899307&view=auto
==============================================================================
--- james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/FontPicker.java (added)
+++ james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/FontPicker.java Thu Jan 14 17:12:14 2010
@@ -0,0 +1,156 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+/**
+ * Much of this code has been taken from the GWT Showcase example
+ * which is licensed under Apache License v2.0
+ *
+ * This class is necessary while GWT library doesn't provide any
+ * toolbar to be used with its RichTextArea widget.
+ */
+package org.apache.hupa.widgets.editor;
+
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.event.dom.client.MouseOutEvent;
+import com.google.gwt.event.dom.client.MouseOutHandler;
+import com.google.gwt.event.dom.client.MouseOverEvent;
+import com.google.gwt.event.dom.client.MouseOverHandler;
+import com.google.gwt.event.logical.shared.HasValueChangeHandlers;
+import com.google.gwt.event.logical.shared.ValueChangeEvent;
+import com.google.gwt.event.logical.shared.ValueChangeHandler;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.user.client.DOM;
+import com.google.gwt.user.client.ui.HTML;
+import com.google.gwt.user.client.ui.PopupPanel;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.google.gwt.user.client.ui.RichTextArea.FontSize;
+
+/**
+ * Font picker for rich editor
+ */
+public class FontPicker extends PopupPanel implements ClickHandler, HasValueChangeHandlers<FontPicker> {
+
+ private class FontCell extends HTML {
+ String font;
+
+ public FontCell(String font) {
+ super(font);
+ this.font = font;
+ DOM.setStyleAttribute(getElement(), "backgroundColor", "#D8ECFD");
+ DOM.setStyleAttribute(getElement(), "padding", "2px 4px 2px 8px");
+ addMouseOverHandler(new MouseOverHandler() {
+ public void onMouseOver(MouseOverEvent event) {
+ DOM.setStyleAttribute(getElement(), "backgroundColor", "#7FAAFF");
+ }
+ });
+ addMouseOutHandler(new MouseOutHandler() {
+ public void onMouseOut(MouseOutEvent event) {
+ DOM.setStyleAttribute(getElement(), "backgroundColor", "#D8ECFD");
+ }
+ });
+ }
+
+ public String getFont() {
+ return font;
+ }
+
+ }
+
+ public enum FontPickerType {
+ FONT_FAMILY, FONT_SIZE
+ }
+
+ private static final String[] fontFamilies = new String[] { "Times New Roman", "Arial", "Courier New", "Georgia", "Trebuchet", "Verdana", "Comic Sans MS" };
+
+ private static final String[] fontSizes = new String[] { "xx-small", "x-small", "small", "medium", "large", "x-large", "xx-large" };
+
+ private String font = "";
+
+ ValueChangeHandler<FontPicker> changeHandler = null;
+
+ public FontPicker(FontPickerType type) {
+ super(true);
+ VerticalPanel container = new VerticalPanel();
+ DOM.setStyleAttribute(container.getElement(), "border", "1px solid #7FAAFF");
+ DOM.setStyleAttribute(container.getElement(), "backgroundColor", "#D8ECFD");
+ DOM.setStyleAttribute(container.getElement(), "cursor", "pointer");
+
+ String[] fonts = type == FontPickerType.FONT_SIZE ? fontSizes : fontFamilies;
+
+ for (int i = 0; i < fonts.length; i++) {
+ FontCell cell;
+ if (type == FontPickerType.FONT_SIZE) {
+ cell = new FontCell("" + (i + 1));
+ DOM.setStyleAttribute(cell.getElement(), "fontSize", fonts[i]);
+ } else {
+ cell = new FontCell(fonts[i]);
+ DOM.setStyleAttribute(cell.getElement(), "fontFamily", fonts[i]);
+ }
+ cell.addClickHandler(this);
+ container.add(cell);
+ }
+
+ add(container);
+ setAnimationEnabled(true);
+ setStyleName("hupa-color-picker");
+ }
+
+ public HandlerRegistration addValueChangeHandler(ValueChangeHandler<FontPicker> handler) {
+ assert changeHandler == null : "Change handler is already defined";
+ changeHandler = handler;
+ return new HandlerRegistration() {
+ public void removeHandler() {
+ changeHandler = null;
+ }
+ };
+ }
+
+ public String getFontName() {
+ return font;
+ }
+
+ public FontSize getFontSize() {
+ switch (Integer.valueOf(font).intValue()) {
+ case 1:
+ return FontSize.XX_SMALL;
+ case 2:
+ return FontSize.X_SMALL;
+ case 4:
+ return FontSize.MEDIUM;
+ case 5:
+ return FontSize.LARGE;
+ case 6:
+ return FontSize.X_LARGE;
+ case 7:
+ return FontSize.XX_LARGE;
+ case 3:
+ default:
+ return FontSize.SMALL;
+ }
+ }
+
+ public void onClick(ClickEvent event) {
+ FontCell cell = (FontCell) event.getSource();
+ this.font = cell.getFont();
+ if (changeHandler != null)
+ changeHandler.onValueChange(new ValueChangeEvent<FontPicker>(this) {
+ });
+ }
+
+}
Modified: james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/Toolbar.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/Toolbar.java?rev=899307&r1=899306&r2=899307&view=diff
==============================================================================
--- james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/Toolbar.java (original)
+++ james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/Toolbar.java Thu Jan 14 17:12:14 2010
@@ -25,55 +25,37 @@
*/
package org.apache.hupa.widgets.editor;
+import org.apache.hupa.widgets.editor.FontPicker.FontPickerType;
import org.apache.hupa.widgets.editor.bundles.ToolbarImages;
import com.google.gwt.core.client.GWT;
-import com.google.gwt.event.dom.client.ChangeEvent;
-import com.google.gwt.event.dom.client.ChangeHandler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.KeyDownEvent;
import com.google.gwt.event.dom.client.KeyDownHandler;
import com.google.gwt.event.dom.client.KeyUpEvent;
import com.google.gwt.event.dom.client.KeyUpHandler;
+import com.google.gwt.event.logical.shared.ValueChangeEvent;
+import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
-import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.PushButton;
import com.google.gwt.user.client.ui.RichTextArea;
import com.google.gwt.user.client.ui.ToggleButton;
-import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
-import com.google.gwt.user.client.ui.RichTextArea.FontSize;
/**
* Toolbar for use with {@link RichTextArea}. It provides a simple UI for all
* rich text formatting, dynamically displayed only for the available
* functionality.
*/
+@SuppressWarnings("deprecation")
public class Toolbar extends Composite {
- private class EventHandler implements ClickHandler, ChangeHandler, KeyUpHandler, KeyDownHandler {
- public void onChange(ChangeEvent event) {
- Widget sender = (Widget) event.getSource();
-
- if (sender == backColors) {
- basic.setBackColor(backColors.getValue(backColors.getSelectedIndex()));
- backColors.setSelectedIndex(0);
- } else if (sender == foreColors) {
- basic.setForeColor(foreColors.getValue(foreColors.getSelectedIndex()));
- foreColors.setSelectedIndex(0);
- } else if (sender == fonts) {
- basic.setFontName(fonts.getValue(fonts.getSelectedIndex()));
- fonts.setSelectedIndex(0);
- } else if (sender == fontSizes) {
- basic.setFontSize(fontSizesConstants[fontSizes.getSelectedIndex() - 1]);
- fontSizes.setSelectedIndex(0);
- }
- }
+ private class EventHandler implements ClickHandler, KeyUpHandler, KeyDownHandler {
public void onClick(ClickEvent event) {
Widget sender = (Widget) event.getSource();
@@ -122,6 +104,18 @@
extended.removeFormat();
} else if (sender == richText) {
updateStatus();
+ } else if (sender == backColors) {
+ backColorsPicker.setPopupPosition(sender.getAbsoluteLeft(), sender.getAbsoluteTop()+20);
+ backColorsPicker.show();
+ } else if (sender == foreColors) {
+ foreColorsPicker.setPopupPosition(sender.getAbsoluteLeft(), sender.getAbsoluteTop()+20);
+ foreColorsPicker.show();
+ } else if (sender == fontFamily) {
+ fontFamilyPicker.setPopupPosition(sender.getAbsoluteLeft(), sender.getAbsoluteTop()+20);
+ fontFamilyPicker.show();
+ } else if (sender == fontSize) {
+ fontSizePicker.setPopupPosition(sender.getAbsoluteLeft(), sender.getAbsoluteTop()+20);
+ fontSizePicker.show();
}
}
@@ -134,22 +128,41 @@
updateStatus();
}
}
- }
-
- private static final RichTextArea.FontSize[] fontSizesConstants = 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 ToolbarImages images = (ToolbarImages) GWT.create(ToolbarImages.class);
- private ToolbarConstants strings = (ToolbarConstants) GWT.create(ToolbarConstants.class);
+ }
+
+ private ValueChangeHandler<ColorPicker> colorHandler = new ValueChangeHandler<ColorPicker>() {
+ public void onValueChange(ValueChangeEvent<ColorPicker> event) {
+ ColorPicker sender = event.getValue();
+ if (sender == backColorsPicker) {
+ basic.setBackColor(sender.getColor());
+ } else if (sender == foreColorsPicker) {
+ basic.setForeColor(sender.getColor());
+ }
+ sender.hide();
+ }
+ };
+ private ValueChangeHandler<FontPicker> fontHandler = new ValueChangeHandler<FontPicker>() {
+ public void onValueChange(ValueChangeEvent<FontPicker> event) {
+ FontPicker sender = event.getValue();
+ if (sender == fontFamilyPicker) {
+ basic.setFontName(sender.getFontName());
+ } else if (sender == fontSizePicker) {
+ basic.setFontSize(sender.getFontSize());
+ }
+ sender.hide();
+ }
+ };
+
+ private static final ToolbarImages images = (ToolbarImages) GWT.create(ToolbarImages.class);
private EventHandler handler = new EventHandler();
+
private RichTextArea richText;
private RichTextArea.BasicFormatter basic;
private RichTextArea.ExtendedFormatter extended;
- private VerticalPanel outer = new VerticalPanel();
private HorizontalPanel topPanel = new HorizontalPanel();
- private HorizontalPanel bottomPanel = new HorizontalPanel();
private ToggleButton bold;
private ToggleButton italic;
private ToggleButton underline;
@@ -169,10 +182,15 @@
private PushButton removeLink;
private PushButton removeFormat;
- private ListBox backColors;
- private ListBox foreColors;
- private ListBox fonts;
- private ListBox fontSizes;
+ private PushButton fontFamily;
+ private FontPicker fontFamilyPicker = new FontPicker(FontPickerType.FONT_FAMILY);
+ private PushButton fontSize;
+ private FontPicker fontSizePicker = new FontPicker(FontPickerType.FONT_SIZE);
+
+ private PushButton backColors;
+ private PushButton foreColors;
+ private ColorPicker backColorsPicker = new ColorPicker();
+ private ColorPicker foreColorsPicker = new ColorPicker();
/**
* Creates a new toolbar that drives the given rich text area.
@@ -180,17 +198,14 @@
* @param richText
* the rich text area to be controlled
*/
- public Toolbar(RichTextArea richText) {
+ public Toolbar(RichTextArea richText, ToolbarConstants strings) {
this.richText = richText;
this.basic = richText.getBasicFormatter();
this.extended = richText.getExtendedFormatter();
- outer.add(topPanel);
- outer.add(bottomPanel);
topPanel.setWidth("100%");
- bottomPanel.setWidth("100%");
- initWidget(outer);
+ initWidget(topPanel);
setStyleName("gwt-RichTextToolbar");
richText.addStyleName("hasRichTextToolbar");
@@ -198,6 +213,10 @@
topPanel.add(bold = createToggleButton(images.bold(), strings.editor_bold()));
topPanel.add(italic = createToggleButton(images.italic(), strings.editor_italic()));
topPanel.add(underline = createToggleButton(images.underline(), strings.editor_underline()));
+ topPanel.add(backColors = createPushButton(images.backColors(), strings.editor_background()));
+ topPanel.add(foreColors = createPushButton(images.foreColors(), strings.editor_foreground()));
+ topPanel.add(fontFamily = createPushButton(images.fonts(), strings.editor_font()));
+ topPanel.add(fontSize = createPushButton(images.fontSizes(), strings.editor_size()));
topPanel.add(subscript = createToggleButton(images.subscript(), strings.editor_subscript()));
topPanel.add(superscript = createToggleButton(images.superscript(), strings.editor_superscript()));
topPanel.add(justifyLeft = createPushButton(images.justifyLeft(), strings.editor_justifyLeft()));
@@ -218,73 +237,18 @@
topPanel.add(removeFormat = createPushButton(images.removeFormat(), strings.editor_removeFormat()));
}
- if (basic != null) {
- bottomPanel.add(backColors = createColorList("Background"));
- bottomPanel.add(foreColors = createColorList("Foreground"));
- bottomPanel.add(fonts = createFontList());
- bottomPanel.add(fontSizes = createFontSizes());
-
- richText.addKeyDownHandler(handler);
- richText.addKeyUpHandler(handler);
- richText.addClickHandler(handler);
- }
-
- outer.setWidth("100%");
HTML topEmtyCell = new HTML("");
topPanel.add(topEmtyCell);
topPanel.setCellWidth(topEmtyCell, "100%");
- HTML bottomEmtyCell = new HTML("");
- bottomPanel.add(bottomEmtyCell);
- bottomPanel.setCellWidth(bottomEmtyCell, "100%");
- }
-
- private ListBox createColorList(String caption) {
- ListBox lb = new ListBox();
- lb.addChangeHandler(handler);
- lb.setVisibleItemCount(1);
-
- lb.addItem(caption);
- lb.addItem(strings.editor_white(), "white");
- lb.addItem(strings.editor_black(), "black");
- lb.addItem(strings.editor_red(), "red");
- lb.addItem(strings.editor_green(), "green");
- lb.addItem(strings.editor_yellow(), "yellow");
- lb.addItem(strings.editor_blue(), "blue");
- return lb;
- }
-
- private ListBox createFontList() {
- ListBox lb = new ListBox();
- lb.addChangeHandler(handler);
- lb.setVisibleItemCount(1);
-
- lb.addItem(strings.editor_font(), "");
- lb.addItem(strings.editor_normal(), "");
- lb.addItem("Times New Roman", "Times New Roman");
- lb.addItem("Arial", "Arial");
- lb.addItem("Courier New", "Courier New");
- lb.addItem("Georgia", "Georgia");
- lb.addItem("Trebuchet", "Trebuchet");
- lb.addItem("Verdana", "Verdana");
- return lb;
- }
-
- private ListBox createFontSizes() {
- ListBox lb = new ListBox();
- lb.addChangeHandler(handler);
- lb.setVisibleItemCount(1);
-
- lb.addItem(strings.editor_size());
- lb.addItem(strings.editor_xxsmall());
- lb.addItem(strings.editor_xsmall());
- lb.addItem(strings.editor_small());
- lb.addItem(strings.editor_medium());
- lb.addItem(strings.editor_large());
- lb.addItem(strings.editor_xlarge());
- lb.addItem(strings.editor_xxlarge());
- return lb;
+ richText.addKeyDownHandler(handler);
+ richText.addKeyUpHandler(handler);
+ richText.addClickHandler(handler);
+ backColorsPicker.addValueChangeHandler(colorHandler);
+ foreColorsPicker.addValueChangeHandler(colorHandler);
+ fontFamilyPicker.addValueChangeHandler(fontHandler);
+ fontSizePicker.addValueChangeHandler(fontHandler);
}
private PushButton createPushButton(AbstractImagePrototype img, String tip) {
@@ -311,6 +275,10 @@
underline.setDown(basic.isUnderlined());
subscript.setDown(basic.isSubscript());
superscript.setDown(basic.isSuperscript());
+ foreColorsPicker.hide();
+ backColorsPicker.hide();
+ fontFamilyPicker.hide();
+ fontSizePicker.hide();
}
if (extended != null) {
Modified: james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/ToolbarConstants.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/ToolbarConstants.java?rev=899307&r1=899306&r2=899307&view=diff
==============================================================================
--- james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/ToolbarConstants.java (original)
+++ james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/ToolbarConstants.java Thu Jan 14 17:12:14 2010
@@ -7,6 +7,7 @@
* internationalizable.
*/
public interface ToolbarConstants extends Constants {
+
@DefaultStringValue("Toggle Bold")
public String editor_bold();
@@ -61,55 +62,17 @@
@DefaultStringValue("Toggle Underline")
public String editor_underline();
- @DefaultStringValue("Color")
- public String editor_color();
-
- @DefaultStringValue("Black")
- public String editor_black();
-
- @DefaultStringValue("White")
- public String editor_white();
-
- @DefaultStringValue("Red")
- public String editor_red();
-
- @DefaultStringValue("Green")
- public String editor_green();
-
- @DefaultStringValue("Yellow")
- public String editor_yellow();
-
- @DefaultStringValue("Blue")
- public String editor_blue();
-
- @DefaultStringValue("Font")
+ @DefaultStringValue("Background color")
+ public String editor_background();
+
+ @DefaultStringValue("Foreground color")
+ public String editor_foreground();
+
+ @DefaultStringValue("Font name")
public String editor_font();
-
- @DefaultStringValue("Normal")
- public String editor_normal();
-
- @DefaultStringValue("Size")
+
+ @DefaultStringValue("Font size")
public String editor_size();
-
- @DefaultStringValue("XX-Small")
- public String editor_xxsmall();
-
- @DefaultStringValue("X-Small")
- public String editor_xsmall();
-
- @DefaultStringValue("Small")
- public String editor_small();
-
- @DefaultStringValue("Medium")
- public String editor_medium();
-
- @DefaultStringValue("Large")
- public String editor_large();
-
- @DefaultStringValue("X-Large")
- public String editor_xlarge();
-
- @DefaultStringValue("XX-Large")
- public String editor_xxlarge();
+
}
Modified: james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/bundles/ToolbarImages.java
URL: http://svn.apache.org/viewvc/james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/bundles/ToolbarImages.java?rev=899307&r1=899306&r2=899307&view=diff
==============================================================================
--- james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/bundles/ToolbarImages.java (original)
+++ james/hupa/trunk/widgets/src/main/java/org/apache/hupa/widgets/editor/bundles/ToolbarImages.java Thu Jan 14 17:12:14 2010
@@ -47,5 +47,13 @@
AbstractImagePrototype ul();
AbstractImagePrototype underline();
+
+ AbstractImagePrototype backColors();
+
+ AbstractImagePrototype foreColors();
+
+ AbstractImagePrototype fonts();
+
+ AbstractImagePrototype fontSizes();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org