1 package org.columba.mail.gui.composer; 17 18 import java.awt.Font ; 19 import java.util.Observable ; 20 import java.util.Observer ; 21 22 import javax.swing.JComponent ; 23 import javax.swing.JTextPane ; 24 25 import org.columba.core.config.Config; 26 import org.columba.core.xml.XmlElement; 27 28 38 public abstract class AbstractEditorController extends Observable implements Observer { 39 40 41 private ComposerController controller; 42 43 private JTextPane view; 44 45 private String name; 47 48 private String size; 50 51 private Font font; 53 54 private XmlElement textFontElement; 56 private XmlElement fonts; 57 58 private boolean overwrite; 60 61 67 public AbstractEditorController(ComposerController ctrl) { 68 controller = ctrl; 69 70 XmlElement options = Config.getInstance().get("options").getElement("/options"); 71 XmlElement guiElement = options.getElement("gui"); 72 fonts = guiElement.getElement("fonts"); 73 74 if (fonts == null) { 75 fonts = guiElement.addSubElement("fonts"); 76 } 77 78 overwrite = Boolean.valueOf(fonts.getAttribute("overwrite", "true")) 79 .booleanValue(); 80 81 fonts.addObserver(this); 83 84 textFontElement = fonts.getElement("text"); 85 86 if (textFontElement == null) { 87 textFontElement = fonts.addSubElement("text"); 88 } 89 90 if (overwrite) { 91 name = "Default"; 92 size = "12"; 93 94 font = new Font (name, Font.PLAIN, Integer.parseInt(size)); 95 } else { 96 name = textFontElement.getAttribute("name", "Default"); 97 size = textFontElement.getAttribute("size", "12"); 98 99 font = new Font (name, Font.PLAIN, Integer.parseInt(size)); 100 } 101 } 102 103 public void setView(JTextPane view) { 104 this.view = view; 105 } 106 107 public JTextPane getView() { 108 return view; 109 } 110 111 114 public ComposerController getController() { 115 return controller; 116 } 117 118 120 126 public abstract void setViewText(String text); 127 128 129 130 139 public boolean isCutActionEnabled() { 140 if (view.getSelectedText() == null) { 141 return false; 142 } 143 144 if (view.getSelectedText().length() > 0) { 145 return true; 146 } 147 148 return false; 149 } 150 151 154 public boolean isCopyActionEnabled() { 155 if (view.getSelectedText() == null) { 156 return false; 157 } 158 159 if (view.getSelectedText().length() > 0) { 160 return true; 161 } 162 163 return false; 164 } 165 166 169 public boolean isPasteActionEnabled() { 170 return true; 171 } 172 173 176 public boolean isDeleteActionEnabled() { 177 if (view.getSelectedText() == null) { 178 return false; 179 } 180 181 if (view.getSelectedText().length() > 0) { 182 return true; 183 } 184 185 return false; 186 } 187 188 191 public boolean isSelectAllActionEnabled() { 192 return true; 193 } 194 195 198 public boolean isRedoActionEnabled() { 199 return false; 201 } 202 203 206 public boolean isUndoActionEnabled() { 207 return false; 209 } 210 211 214 public void cut() { 215 view.cut(); 216 } 217 218 221 public void copy() { 222 view.copy(); 223 } 224 225 228 public void paste() { 229 view.paste(); 230 } 231 232 235 public void delete() { 236 view.replaceSelection(""); 237 } 238 239 242 public void redo() { 243 } 245 246 249 public void undo() { 250 } 252 253 256 public void selectAll() { 257 view.selectAll(); 258 } 259 260 263 public JComponent getComponent() { 264 return view; 265 } 266 267 270 public JTextPane getViewUIComponent() { 271 return getView(); 272 } 273 274 277 public void setViewEnabled(boolean enabled) { 278 getView().setEnabled(enabled); 279 } 280 281 public void setCaretPosition(int position) { 282 getView().setCaretPosition(position); 283 } 284 285 public void moveCaretPosition(int position) { 286 getView().moveCaretPosition(position); 287 } 288 289 292 public Font getViewFont() { 293 return getView().getFont(); 294 } 295 296 299 public void setViewFont(Font f) { 300 getView().setFont(f); 301 } 302 303 306 public String getViewText() { 307 return getView().getText(); 308 } 309 310 313 public void updateComponents(boolean b) { 314 if (b) { 315 if (this.getController().getModel().getBodyText() != null) { 316 this.setViewText(this.getController().getModel().getBodyText()); 317 } 318 } else { 319 if (getView().getText() != null) { 320 this.getController().getModel() 321 .setBodyText(getView().getText()); 322 } 323 } 324 } 325 326 333 public void update(Observable arg0, Object arg1) { 334 overwrite = Boolean.valueOf(fonts.getAttribute("overwrite", "true")) 336 .booleanValue(); 337 338 if (overwrite == false) { 339 name = "Default"; 341 size = "12"; 342 343 font = new Font (name, Font.PLAIN, Integer.parseInt(size)); 344 } else { 345 name = textFontElement.getAttribute("name", "Default"); 347 size = textFontElement.getAttribute("size", "12"); 348 349 font = new Font (name, Font.PLAIN, Integer.parseInt(size)); 350 351 setViewFont(font); 352 } 353 } 354 } 355 | Popular Tags |