KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > mountainminds > eclemma > internal > ui > coverageview > ViewSettings


1 /*******************************************************************************
2  * Copyright (c) 2006, 2007 Mountainminds GmbH & Co. KG
3  * This software is provided under the terms of the Eclipse Public License v1.0
4  * See http://www.eclipse.org/legal/epl-v10.html.
5  *
6  * $Id: ViewSettings.java 393 2007-08-28 13:05:34Z mtnminds $
7  *
8  * Contributors:
9  * Brock Janiczak - link with selection option (SF #1774547)
10  ******************************************************************************/

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 /**
20  * All setting for the coverage view that will become persisted in the view's
21  * memento.
22  *
23  * @author Marc R. Hoffmann
24  * @version $Revision: 393 $
25  */

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 JavaDoc KEY_SORTCOLUMN = "sortcolumn"; //$NON-NLS-1$
34
private static final String JavaDoc KEY_REVERSESORT = "reversesort"; //$NON-NLS-1$
35
private static final String JavaDoc KEY_COUNTERMODE = "countermode"; //$NON-NLS-1$
36
private static final String JavaDoc KEY_HIDEUNUSEDTYPES = "hideunusedtypes"; //$NON-NLS-1$
37
private static final String JavaDoc KEY_ENTRYMODE = "entrymode"; //$NON-NLS-1$
38
private static final String JavaDoc KEY_COLUMN0 = "column0"; //$NON-NLS-1$
39
private static final String JavaDoc KEY_COLUMN1 = "column1"; //$NON-NLS-1$
40
private static final String JavaDoc KEY_COLUMN2 = "column2"; //$NON-NLS-1$
41
private static final String JavaDoc KEY_COLUMN3 = "column3"; //$NON-NLS-1$
42
private static final String JavaDoc KEY_LINKED = "linked"; //$NON-NLS-1$
43

44   
45   public interface ICounterMode {
46     public int getIdx();
47     public String JavaDoc[] getColumnHeaders();
48     public String JavaDoc 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 JavaDoc getActionLabel() {
58         return UIMessages.CoverageViewCounterModeInstructionsAction_label;
59       }
60       public ICounter getCounter(IJavaElementCoverage coverage) {
61         return coverage.getInstructionCounter();
62       }
63       public String JavaDoc[] getColumnHeaders() {
64         return new String JavaDoc[] {
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 JavaDoc getActionLabel() {
77         return UIMessages.CoverageViewCounterModeBlocksAction_label;
78       }
79       public ICounter getCounter(IJavaElementCoverage coverage) {
80         return coverage.getBlockCounter();
81       }
82       public String JavaDoc[] getColumnHeaders() {
83         return new String JavaDoc[] {
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 JavaDoc getActionLabel() {
96         return UIMessages.CoverageViewCounterModeLinesAction_label;
97       }
98       public ICounter getCounter(IJavaElementCoverage coverage) {
99         return coverage.getLineCounter();
100       }
101       public String JavaDoc[] getColumnHeaders() {
102         return new String JavaDoc[] {
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 JavaDoc getActionLabel() {
115         return UIMessages.CoverageViewCounterModeMethodsAction_label;
116       }
117       public ICounter getCounter(IJavaElementCoverage coverage) {
118         return coverage.getMethodCounter();
119       }
120       public String JavaDoc[] getColumnHeaders() {
121         return new String JavaDoc[] {
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 JavaDoc getActionLabel() {
134         return UIMessages.CoverageViewCounterModeTypesAction_label;
135       }
136       public ICounter getCounter(IJavaElementCoverage coverage) {
137         return coverage.getTypeCounter();
138       }
139       public String JavaDoc[] getColumnHeaders() {
140         return new String JavaDoc[] {
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 JavaDoc key, int preset) {
242     if (memento == null) {
243       return preset;
244     } else {
245       Integer JavaDoc i = memento.getInteger(key);
246       return i == null ? preset : i.intValue();
247     }
248   }
249
250   private boolean getBoolean(IMemento memento, String JavaDoc key, boolean preset) {
251     return getInt(memento, key, preset ? 1 : 0) == 1;
252   }
253   
254 }
255
Popular Tags