1 package org.columba.mail.folderoptions; 17 18 import org.columba.api.plugin.IExtensionInterface; 19 import org.columba.core.xml.XmlElement; 20 import org.columba.mail.config.FolderItem; 21 import org.columba.mail.folder.IMailbox; 22 import org.columba.mail.gui.frame.MailFrameMediator; 23 24 44 public abstract class AbstractFolderOptionsPlugin implements IExtensionInterface { 45 48 private MailFrameMediator mediator; 49 50 53 private String name; 54 55 66 public AbstractFolderOptionsPlugin(String name, String pluginId, 67 MailFrameMediator mediator) { 68 this.name = name; 69 this.mediator = mediator; 70 } 71 72 94 public abstract void saveOptionsToXml(IMailbox folder); 95 96 102 public abstract void loadOptionsFromXml(IMailbox folder); 103 104 109 public MailFrameMediator getMediator() { 110 return mediator; 111 } 112 113 136 public XmlElement getConfigNode(IMailbox folder) { 137 if (folder == null) { 139 XmlElement result = FolderItem.getGlobalOptions().getElement(getName()); 140 if( result == null ) { 141 return createDefaultElement(true); 142 } else { 143 return result; 144 } 145 } 146 147 XmlElement parent = folder.getConfiguration().getFolderOptions(); 149 150 XmlElement child = parent.getElement(getName()); 151 152 if (child == null) { 154 child = createDefaultElement(false); 155 parent.addElement(child); 156 } 157 158 if (child.getAttribute("overwrite").equals("true")) { 160 return child; 162 } else { 163 parent = FolderItem.getGlobalOptions(); 165 child = parent.getElement(getName()); 166 167 if (child == null) { 168 child = createDefaultElement(true); 169 parent.addElement(child); 170 } 171 172 return child; 173 } 174 } 175 176 188 public XmlElement createDefaultElement(boolean global) { 189 XmlElement parent = new XmlElement(getName()); 190 191 if (!global) { 193 parent.addAttribute("overwrite", "false"); 194 } 195 196 return parent; 197 } 198 199 204 public String getName() { 205 return name; 206 } 207 } 208 | Popular Tags |