1 11 package com.mountainminds.eclemma.internal.ui.coverageview; 12 13 import org.eclipse.ui.IMemento; 14 15 import com.mountainminds.eclemma.core.analysis.ICounter; 16 import com.mountainminds.eclemma.core.analysis.IJavaElementCoverage; 17 import com.mountainminds.eclemma.internal.ui.UIMessages; 18 19 26 public class ViewSettings { 27 28 public static final int ENTRYMODE_PROJECTS = 1; 29 public static final int ENTRYMODE_PACKAGEROOTS = 2; 30 public static final int ENTRYMODE_PACKAGES = 3; 31 public static final int ENTRYMODE_TYPES = 4; 32 33 private static final String KEY_SORTCOLUMN = "sortcolumn"; private static final String KEY_REVERSESORT = "reversesort"; private static final String KEY_COUNTERMODE = "countermode"; private static final String KEY_HIDEUNUSEDTYPES = "hideunusedtypes"; private static final String KEY_ENTRYMODE = "entrymode"; private static final String KEY_COLUMN0 = "column0"; private static final String KEY_COLUMN1 = "column1"; private static final String KEY_COLUMN2 = "column2"; private static final String KEY_COLUMN3 = "column3"; private static final String KEY_LINKED = "linked"; 44 45 public interface ICounterMode { 46 public int getIdx(); 47 public String [] getColumnHeaders(); 48 public String getActionLabel(); 49 public ICounter getCounter(IJavaElementCoverage coverage); 50 } 51 52 public static final ICounterMode[] COUNTERMODES = new ICounterMode[] { 53 new ICounterMode() { 54 public int getIdx() { 55 return 0; 56 } 57 public String getActionLabel() { 58 return UIMessages.CoverageViewCounterModeInstructionsAction_label; 59 } 60 public ICounter getCounter(IJavaElementCoverage coverage) { 61 return coverage.getInstructionCounter(); 62 } 63 public String [] getColumnHeaders() { 64 return new String [] { 65 UIMessages.CoverageViewColumnElement_label, 66 UIMessages.CoverageViewColumnCoverage_label, 67 UIMessages.CoverageViewColumnCoveredInstructions_label, 68 UIMessages.CoverageViewColumnTotalInstructions_label 69 }; 70 } 71 }, 72 new ICounterMode() { 73 public int getIdx() { 74 return 1; 75 } 76 public String getActionLabel() { 77 return UIMessages.CoverageViewCounterModeBlocksAction_label; 78 } 79 public ICounter getCounter(IJavaElementCoverage coverage) { 80 return coverage.getBlockCounter(); 81 } 82 public String [] getColumnHeaders() { 83 return new String [] { 84 UIMessages.CoverageViewColumnElement_label, 85 UIMessages.CoverageViewColumnCoverage_label, 86 UIMessages.CoverageViewColumnCoveredBlocks_label, 87 UIMessages.CoverageViewColumnTotalBlocks_label 88 }; 89 } 90 }, 91 new ICounterMode() { 92 public int getIdx() { 93 return 2; 94 } 95 public String getActionLabel() { 96 return UIMessages.CoverageViewCounterModeLinesAction_label; 97 } 98 public ICounter getCounter(IJavaElementCoverage coverage) { 99 return coverage.getLineCounter(); 100 } 101 public String [] getColumnHeaders() { 102 return new String [] { 103 UIMessages.CoverageViewColumnElement_label, 104 UIMessages.CoverageViewColumnCoverage_label, 105 UIMessages.CoverageViewColumnCoveredLines_label, 106 UIMessages.CoverageViewColumnTotalLines_label 107 }; 108 } 109 }, 110 new ICounterMode() { 111 public int getIdx() { 112 return 3; 113 } 114 public String getActionLabel() { 115 return UIMessages.CoverageViewCounterModeMethodsAction_label; 116 } 117 public ICounter getCounter(IJavaElementCoverage coverage) { 118 return coverage.getMethodCounter(); 119 } 120 public String [] getColumnHeaders() { 121 return new String [] { 122 UIMessages.CoverageViewColumnElement_label, 123 UIMessages.CoverageViewColumnCoverage_label, 124 UIMessages.CoverageViewColumnCoveredMethods_label, 125 UIMessages.CoverageViewColumnTotalMethods_label 126 }; 127 } 128 }, 129 new ICounterMode() { 130 public int getIdx() { 131 return 4; 132 } 133 public String getActionLabel() { 134 return UIMessages.CoverageViewCounterModeTypesAction_label; 135 } 136 public ICounter getCounter(IJavaElementCoverage coverage) { 137 return coverage.getTypeCounter(); 138 } 139 public String [] getColumnHeaders() { 140 return new String [] { 141 UIMessages.CoverageViewColumnElement_label, 142 UIMessages.CoverageViewColumnCoverage_label, 143 UIMessages.CoverageViewColumnCoveredTypes_label, 144 UIMessages.CoverageViewColumnTotalTypes_label 145 }; 146 } 147 } 148 }; 149 150 private static final int[] DEFAULT_COLUMNWIDTH = new int[] { 151 300, 80, 120, 120 152 }; 153 154 private int sortcolumn; 155 private boolean reversesort; 156 private int countermode; 157 private int entrymode; 158 private boolean hideunusedtypes; 159 private int[] columnwidths = new int[4]; 160 private boolean linked; 161 162 public int getSortColumn() { 163 return sortcolumn; 164 } 165 166 public boolean isReverseSort() { 167 return reversesort; 168 } 169 170 public void toggleSortColumn(int column) { 171 if (sortcolumn == column) { 172 reversesort = !reversesort; 173 } else { 174 reversesort = false; 175 sortcolumn = column; 176 } 177 } 178 179 public ICounterMode getCounterMode() { 180 return COUNTERMODES[countermode]; 181 } 182 183 public void setCounterMode(int idx) { 184 countermode = idx; 185 } 186 187 public int getEntryMode() { 188 return entrymode; 189 } 190 191 public void setEntryMode(int mode) { 192 entrymode = mode; 193 } 194 195 public boolean getHideUnusedTypes() { 196 return hideunusedtypes; 197 } 198 199 public void setHideUnusedTypes(boolean flag) { 200 hideunusedtypes = flag; 201 } 202 203 public int[] getColumnWidths() { 204 return columnwidths; 205 } 206 207 public boolean getLinked() { 208 return linked; 209 } 210 211 public void setLinked(boolean linked) { 212 this.linked = linked; 213 } 214 215 public void init(IMemento memento) { 216 sortcolumn = getInt(memento, KEY_SORTCOLUMN, 0); 217 reversesort = getBoolean(memento, KEY_REVERSESORT, false); 218 countermode = getInt(memento, KEY_COUNTERMODE, 0); 219 entrymode = getInt(memento, KEY_ENTRYMODE, ENTRYMODE_PROJECTS); 220 hideunusedtypes = getBoolean(memento, KEY_HIDEUNUSEDTYPES, false); 221 columnwidths[0] = getInt(memento, KEY_COLUMN0, DEFAULT_COLUMNWIDTH[0]); 222 columnwidths[1] = getInt(memento, KEY_COLUMN1, DEFAULT_COLUMNWIDTH[1]); 223 columnwidths[2] = getInt(memento, KEY_COLUMN2, DEFAULT_COLUMNWIDTH[2]); 224 columnwidths[3] = getInt(memento, KEY_COLUMN3, DEFAULT_COLUMNWIDTH[3]); 225 linked = getBoolean(memento, KEY_LINKED, false); 226 } 227 228 public void save(IMemento memento) { 229 memento.putInteger(KEY_SORTCOLUMN, sortcolumn); 230 memento.putInteger(KEY_REVERSESORT, reversesort ? 1 : 0); 231 memento.putInteger(KEY_COUNTERMODE, countermode); 232 memento.putInteger(KEY_ENTRYMODE, entrymode); 233 memento.putInteger(KEY_HIDEUNUSEDTYPES, hideunusedtypes ? 1 : 0); 234 memento.putInteger(KEY_COLUMN0, columnwidths[0]); 235 memento.putInteger(KEY_COLUMN1, columnwidths[1]); 236 memento.putInteger(KEY_COLUMN2, columnwidths[2]); 237 memento.putInteger(KEY_COLUMN3, columnwidths[3]); 238 memento.putInteger(KEY_LINKED, linked ? 1 : 0); 239 } 240 241 private int getInt(IMemento memento, String key, int preset) { 242 if (memento == null) { 243 return preset; 244 } else { 245 Integer i = memento.getInteger(key); 246 return i == null ? preset : i.intValue(); 247 } 248 } 249 250 private boolean getBoolean(IMemento memento, String key, boolean preset) { 251 return getInt(memento, key, preset ? 1 : 0) == 1; 252 } 253 254 } 255 | Popular Tags |