1 19 20 package org.netbeans.modules.tasklist.core.filter; 21 22 import java.awt.BorderLayout ; 23 import java.awt.Component ; 24 import java.util.Arrays ; 25 import javax.swing.*; 26 27 import org.netbeans.modules.tasklist.client.SuggestionPriority; 28 import org.netbeans.modules.tasklist.core.Task; 29 import org.netbeans.modules.tasklist.core.checklist.CheckList; 30 import org.netbeans.modules.tasklist.core.checklist.CheckListModel; 31 import org.netbeans.modules.tasklist.core.checklist.DefaultCheckListModel; 32 import org.openide.util.NbBundle; 33 34 39 public class PriorityCondition extends FilterCondition { 40 45 public static PriorityCondition[] createConditions() { 46 return new PriorityCondition[] { 47 new PriorityCondition() 48 }; 49 }; 50 51 52 private static int NPRIORITIES = 5; 53 54 protected boolean[] priorities = new boolean[NPRIORITIES]; 56 57 62 public PriorityCondition() { 63 Arrays.fill(priorities, true); 64 } 65 66 67 public PriorityCondition(final PriorityCondition rhs) { 68 super(rhs); 69 for (int i = 0; i < NPRIORITIES; i++) this.priorities[i] = rhs.priorities[i]; 71 } 72 73 public Object clone() { 74 return new PriorityCondition(this); 75 } 76 77 public boolean isTrue(Object o1) { 78 SuggestionPriority k = (SuggestionPriority) o1; 79 return priorities[k.intValue() - 1]; 80 } 81 82 public JComponent createConstantComponent() { 83 CheckList list = new CheckList( 84 new DefaultCheckListModel( 85 priorities, SuggestionPriority.getPriorityNames() 86 ) 87 ); 88 JPanel panel = new JPanel(new BorderLayout ()); 89 panel.setOpaque(false); 90 panel.setBorder(BorderFactory.createCompoundBorder( 91 UIManager.getBorder("TextField.border"), BorderFactory.createEmptyBorder(2, 2, 2, 2) 93 )); 94 panel.add(list, BorderLayout.CENTER); 95 panel.setToolTipText(Util.getString("prio_desc")); 96 97 list.getAccessibleContext().setAccessibleName(NbBundle.getMessage(PriorityCondition.class, "LBL_PriorityCheckList")); 98 list.getAccessibleContext().setAccessibleDescription(NbBundle.getMessage(PriorityCondition.class, "LBL_PriorityCheckList")); 99 100 return panel; 101 } 102 103 public void getConstantFrom(JComponent cmp) { 104 } 107 108 protected String getDisplayName() { 109 return NbBundle.getMessage(PriorityCondition.class, "IsOneOf"); 110 } 111 112 113 private static class Convertor extends FilterCondition.Convertor { 114 private static final String ELEM_PRIORITY_CONDITION = "PriorityCondition"; 115 private static final String ATTR_PRIORITIES = "priorities"; 116 117 public Convertor() { super(ELEM_PRIORITY_CONDITION);} 118 public static PriorityCondition.Convertor create() { 119 return new PriorityCondition.Convertor(); 120 } 121 122 protected Object readElement(org.w3c.dom.Element element) throws java.io.IOException , java.lang.ClassNotFoundException { 123 PriorityCondition cond = new PriorityCondition(); 124 super.readCondition(element, cond); 125 126 String spriorities = element.getAttribute(ATTR_PRIORITIES); 127 boolean bpriorities [] = new boolean[NPRIORITIES]; 128 for (int i = 0; i < NPRIORITIES; i++) bpriorities[i] = (spriorities.charAt(i) == '+'); 129 cond.priorities = bpriorities; 130 131 return cond; 132 } 133 134 protected void writeElement(org.w3c.dom.Document document, org.w3c.dom.Element element, Object obj) 136 throws java.io.IOException , org.w3c.dom.DOMException 137 { 138 PriorityCondition cond = (PriorityCondition)obj; 139 super.writeCondition(document, element, cond); 140 141 StringBuffer str = new StringBuffer (NPRIORITIES); 142 for (int i = 0 ; i < NPRIORITIES ; i++) str.append( cond.priorities[i] ? '+' : '-'); 143 element.setAttribute(ATTR_PRIORITIES, str.toString()); 144 } 145 } 146 147 148 } 149 | Popular Tags |