1 17 package org.columba.mail.gui.composer.html.action; 18 19 import java.awt.event.ActionEvent ; 20 import java.awt.event.ActionListener ; 21 import java.util.Enumeration ; 22 23 import javax.swing.ButtonGroup ; 24 import javax.swing.JRadioButtonMenuItem ; 25 import javax.swing.text.html.HTML ; 26 27 import org.columba.api.gui.frame.IFrameMediator; 28 import org.columba.core.gui.menu.IMenu; 29 import org.columba.mail.gui.composer.ComposerController; 30 import org.columba.mail.gui.composer.ComposerModelChangedEvent; 31 import org.columba.mail.gui.composer.IComposerModelChangedListener; 32 import org.columba.mail.gui.composer.html.HtmlEditorController2; 33 import org.columba.mail.util.MailResourceLoader; 34 import org.frapuccino.htmleditor.api.IFormatChangedListener; 35 import org.frapuccino.htmleditor.event.FormatChangedEvent; 36 import org.frapuccino.htmleditor.event.FormatInfo; 37 38 51 public class ParagraphMenu extends IMenu implements ActionListener , 52 IFormatChangedListener, IComposerModelChangedListener { 53 54 55 public static final HTML.Tag [] STYLE_TAGS = { HTML.Tag.P, HTML.Tag.PRE, 56 HTML.Tag.H1, HTML.Tag.H2, HTML.Tag.H3, HTML.Tag.ADDRESS }; 57 58 protected ButtonGroup group; 59 60 64 public ParagraphMenu(IFrameMediator controller) { 65 super(controller, MailResourceLoader.getString("menu", "composer", 66 "menu_format_paragraph"), "menu_format_paragraph"); 67 68 initMenu(); 69 } 70 71 public void modelChanged(ComposerModelChangedEvent event) { 72 } 73 74 public void htmlModeChanged(ComposerModelChangedEvent event) { 75 setEnabled(event.isHtmlEnabled()); 76 } 77 78 public void formatChanged(FormatChangedEvent event) { 79 FormatInfo info = event.getInfo(); 81 82 if (info.isHeading1()) { 83 selectMenuItem(HTML.Tag.H1); 84 } else if (info.isHeading2()) { 85 selectMenuItem(HTML.Tag.H2); 86 } else if (info.isHeading3()) { 87 selectMenuItem(HTML.Tag.H3); 88 } else if (info.isPreformattet()) { 89 selectMenuItem(HTML.Tag.PRE); 90 } else if (info.isAddress()) { 91 selectMenuItem(HTML.Tag.ADDRESS); 92 } else { 93 selectMenuItem(HTML.Tag.P); 95 } 96 } 97 98 103 protected void initMenu() { 104 group = new ButtonGroup (); 105 106 for (int i = 0; i < STYLE_TAGS.length; i++) { 107 JRadioButtonMenuItem m = new ParagraphFormatMenuItem(STYLE_TAGS[i]); 108 m.addActionListener(this); 109 add(m); 110 111 group.add(m); 112 } 113 } 114 115 119 private void selectMenuItem(HTML.Tag tag) { 120 Enumeration e = group.getElements(); 121 while (e.hasMoreElements()) { 122 ParagraphFormatMenuItem item = (ParagraphFormatMenuItem) e 123 .nextElement(); 124 125 if (item.getAssociatedTag().equals(tag)) { 126 item.setSelected(true); 127 } else 128 item.setSelected(false); 129 } 130 } 131 132 public void actionPerformed(ActionEvent e) { 133 HtmlEditorController2 ctrl = (HtmlEditorController2) ((ComposerController) controller) 134 .getCurrentEditor(); 135 136 ParagraphFormatMenuItem source = (ParagraphFormatMenuItem) e 138 .getSource(); 139 ctrl.setParagraphFormat(source.getAssociatedTag()); 140 } 141 142 146 protected static class ParagraphFormatMenuItem extends JRadioButtonMenuItem { 147 protected HTML.Tag tag; 148 149 public ParagraphFormatMenuItem(HTML.Tag tag) { 150 super(MailResourceLoader.getString("menu", "composer", 151 "menu_format_paragraph_" + tag.toString())); 152 this.tag = tag; 153 } 154 155 public HTML.Tag getAssociatedTag() { 156 return tag; 157 } 158 } 159 } 160 | Popular Tags |