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-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org