1 package org.columba.mail.folderoptions; 19 20 import org.columa.core.config.IDefaultItem; 21 import org.columba.core.config.DefaultItem; 22 import org.columba.core.xml.XmlElement; 23 import org.columba.mail.folder.IMailbox; 24 import org.columba.mail.gui.frame.MailFrameMediator; 25 import org.columba.mail.gui.frame.TableViewOwner; 26 import org.columba.mail.gui.table.IMessageNode; 27 import org.columba.mail.gui.table.ITableController; 28 29 38 public class SelectionOptionsPlugin extends AbstractFolderOptionsPlugin { 39 40 46 public SelectionOptionsPlugin(MailFrameMediator mediator) { 47 super("selection", "SelectionOptions", mediator); 48 } 49 50 56 public void saveOptionsToXml(IMailbox folder) { 57 ITableController tableController = ((ITableController) ((TableViewOwner) getMediator()) 58 .getTableController()); 59 60 if (tableController.getSelectedNodes() == null) 61 return; 62 63 if (tableController.getSelectedNodes().length == 0) 64 return; 65 66 IMessageNode node = tableController.getSelectedNodes()[0]; 67 if ((node != null) && (folder != null)) 68 folder.setLastSelection(node.getUid()); 69 } 70 71 76 public void loadOptionsFromXml(IMailbox folder) { 77 XmlElement parent = getConfigNode(folder); 78 IDefaultItem item = new DefaultItem(parent); 79 80 ITableController tableController = ((ITableController) ((TableViewOwner) getMediator()) 81 .getTableController()); 82 83 85 boolean remember = item.getBooleanWithDefault( 87 "remember_last_selection", true); 88 89 boolean ascending = tableController.getSortingOrder(); 91 92 int row = tableController.getRowCount(); 94 95 if (row == 0) { 97 tableController.clearSelection(); 101 return; 102 } 103 104 if ((!remember) || (folder.getLastSelection() == null)) { 108 Object uid = null; 111 112 if (ascending) { 113 uid = tableController.selectLastRow(); 114 } else { 115 uid = tableController.selectFirstRow(); 116 } 117 118 if (uid == null) { 120 return; 121 } 122 123 } else { 124 125 Object [] lastSelUids = { folder.getLastSelection() }; 128 129 if (lastSelUids[0] == null) { 131 return; 132 } 133 134 Object uid = lastSelUids[0]; 135 136 if (tableController.getMessageNode(uid) == null) { 138 139 if (ascending) { 140 uid = tableController.selectLastRow(); 141 } else { 142 uid = tableController.selectFirstRow(); 143 } 144 145 } else { 146 147 tableController.setSelected(new Object [] { uid }); 149 } 150 151 } 152 } 153 154 157 public XmlElement createDefaultElement(boolean global) { 158 XmlElement parent = super.createDefaultElement(global); 159 parent.addAttribute("remember_last_selection", "true"); 160 161 return parent; 162 } 163 } | Popular Tags |