diff options
Diffstat (limited to 'org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/ProblemsTreeEditor.java')
-rw-r--r-- | org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/ProblemsTreeEditor.java | 100 |
1 files changed, 65 insertions, 35 deletions
diff --git a/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/ProblemsTreeEditor.java b/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/ProblemsTreeEditor.java index 26e433e..4547028 100644 --- a/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/ProblemsTreeEditor.java +++ b/org.eclipse.cdt.codan.ui/src/org/eclipse/cdt/codan/internal/ui/preferences/ProblemsTreeEditor.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2009 Alena Laskavaia + * Copyright (c) 2009, 2010 Alena Laskavaia * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -14,24 +14,27 @@ import org.eclipse.cdt.codan.core.PreferenceConstants; import org.eclipse.cdt.codan.core.model.CodanSeverity; import org.eclipse.cdt.codan.core.model.IProblem; import org.eclipse.cdt.codan.core.model.IProblemCategory; +import org.eclipse.cdt.codan.core.model.IProblemElement; import org.eclipse.cdt.codan.core.model.IProblemProfile; +import org.eclipse.cdt.codan.core.model.IProblemWorkingCopy; import org.eclipse.cdt.codan.internal.core.CodanPreferencesLoader; -import org.eclipse.jface.viewers.BaseLabelProvider; +import org.eclipse.cdt.codan.internal.ui.CodanUIMessages; +import org.eclipse.core.resources.IMarker; import org.eclipse.jface.viewers.CellEditor; import org.eclipse.jface.viewers.CheckStateChangedEvent; import org.eclipse.jface.viewers.ColumnLabelProvider; import org.eclipse.jface.viewers.ComboBoxCellEditor; import org.eclipse.jface.viewers.EditingSupport; -import org.eclipse.jface.viewers.IBaseLabelProvider; import org.eclipse.jface.viewers.ICheckStateProvider; import org.eclipse.jface.viewers.IContentProvider; -import org.eclipse.jface.viewers.ITableLabelProvider; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.TreeViewerColumn; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; +import org.eclipse.ui.ISharedImages; +import org.eclipse.ui.PlatformUI; public class ProblemsTreeEditor extends CheckedTreeEditor { private CodanPreferencesLoader codanPreferencesLoader = new CodanPreferencesLoader(); @@ -136,39 +139,26 @@ public class ProblemsTreeEditor extends CheckedTreeEditor { } } + @Override public void checkStateChanged(CheckStateChangedEvent event) { Object element = event.getElement(); - if (element instanceof IProblem) { - ((IProblem) element).setEnabled(event.getChecked()); - } - } - - class ProblemsLabelProvider extends BaseLabelProvider implements - IBaseLabelProvider, ITableLabelProvider { - public Image getColumnImage(Object element, int columnIndex) { - // TODO Auto-generated method stub - return null; - } - - public String getColumnText(Object element, int columnIndex) { - if (element instanceof IProblem) { - IProblem p = (IProblem) element; - if (columnIndex == 0) - return p.getName(); - if (columnIndex == 1) - return p.getSeverity().toString(); - } - if (element instanceof IProblemCategory) { - IProblemCategory p = (IProblemCategory) element; - if (columnIndex == 0) - return p.getName(); + if (element instanceof IProblemWorkingCopy) { + ((IProblemWorkingCopy) element).setEnabled(event.getChecked()); + } else if (element instanceof IProblemCategory) { + IProblemCategory cat = (IProblemCategory) element; + IProblemElement[] children = cat.getChildren(); + for (int i = 0; i < children.length; i++) { + IProblemElement pe = children[i]; + checkStateChanged(new CheckStateChangedEvent(getTreeViewer(), + pe, event.getChecked())); } - return null; } + getTreeViewer().refresh(); } public ProblemsTreeEditor(Composite parent, IProblemProfile profile) { - super(PreferenceConstants.P_PROBLEMS, "Problems", parent); + super(PreferenceConstants.P_PROBLEMS, + CodanUIMessages.ProblemsTreeEditor_Problems, parent); setEmptySelectionAllowed(true); getTreeViewer().getTree().setHeaderVisible(true); // getTreeViewer().getTree(). @@ -178,8 +168,10 @@ public class ProblemsTreeEditor extends CheckedTreeEditor { TreeViewerColumn column1 = new TreeViewerColumn(getTreeViewer(), SWT.NONE); column1.getColumn().setWidth(300); - column1.getColumn().setText("Name"); + column1.getColumn().setText( + CodanUIMessages.ProblemsTreeEditor_NameColumn); column1.setLabelProvider(new ColumnLabelProvider() { + @Override public String getText(Object element) { if (element instanceof IProblem) { IProblem p = (IProblem) element; @@ -196,8 +188,31 @@ public class ProblemsTreeEditor extends CheckedTreeEditor { TreeViewerColumn column2 = new TreeViewerColumn(getTreeViewer(), SWT.NONE); column2.getColumn().setWidth(100); - column2.getColumn().setText("Severity"); + column2.getColumn().setText( + CodanUIMessages.ProblemsTreeEditor_SeverityColumn); column2.setLabelProvider(new ColumnLabelProvider() { + @Override + public Image getImage(Object element) { + final ISharedImages images = PlatformUI.getWorkbench() + .getSharedImages(); + if (element instanceof IProblem) { + IProblem p = (IProblem) element; + switch (p.getSeverity().intValue()) { + case IMarker.SEVERITY_INFO: + return images + .getImage(ISharedImages.IMG_OBJS_INFO_TSK); + case IMarker.SEVERITY_WARNING: + return images + .getImage(ISharedImages.IMG_OBJS_WARN_TSK); + case IMarker.SEVERITY_ERROR: + return images + .getImage(ISharedImages.IMG_OBJS_ERROR_TSK); + } + } + return null; + } + + @Override public String getText(Object element) { if (element instanceof IProblem) { IProblem p = (IProblem) element; @@ -207,23 +222,27 @@ public class ProblemsTreeEditor extends CheckedTreeEditor { } }); column2.setEditingSupport(new EditingSupport(getTreeViewer()) { + @Override protected boolean canEdit(Object element) { return element instanceof IProblem; } + @Override protected CellEditor getCellEditor(Object element) { return new ComboBoxCellEditor(getTreeViewer().getTree(), CodanSeverity.stringValues()); } + @Override protected Object getValue(Object element) { return ((IProblem) element).getSeverity().intValue(); } + @Override protected void setValue(Object element, Object value) { int index = ((Integer) value).intValue(); CodanSeverity val = CodanSeverity.values()[index]; - ((IProblem) element).setSeverity(val); + ((IProblemWorkingCopy) element).setSeverity(val); getTreeViewer().update(element, null); } }); @@ -245,6 +264,9 @@ public class ProblemsTreeEditor extends CheckedTreeEditor { for (int i = 0; i < probs.length; i++) { String id = probs[i].getId(); String s = getPreferenceStore().getString(id); + if (s == null || s.length() == 0) { + s = codanPreferencesLoader.getProperty(id); + } codanPreferencesLoader.setProperty(id, s); } getViewer().setInput(codanPreferencesLoader.getInput()); @@ -258,6 +280,9 @@ public class ProblemsTreeEditor extends CheckedTreeEditor { for (int i = 0; i < probs.length; i++) { String id = probs[i].getId(); String s = getPreferenceStore().getDefaultString(id); + if (s == null || s.length() == 0) { + s = codanPreferencesLoader.getProperty(id); + } codanPreferencesLoader.setProperty(id, s); } getViewer().setInput(codanPreferencesLoader.getInput()); @@ -272,12 +297,17 @@ public class ProblemsTreeEditor extends CheckedTreeEditor { */ @Override protected void doStore() { - codanPreferencesLoader.setInput(getViewer().getInput()); + codanPreferencesLoader.setInput((IProblemProfile) getViewer() + .getInput()); IProblem[] probs = codanPreferencesLoader.getProblems(); for (int i = 0; i < probs.length; i++) { String id = probs[i].getId(); String s = codanPreferencesLoader.getProperty(id); getPreferenceStore().setValue(id, s); + String params = codanPreferencesLoader.getPreferencesString(id); + if (params != null) + getPreferenceStore().setValue( + codanPreferencesLoader.getPreferencesKey(id), params); } } @@ -301,6 +331,6 @@ public class ProblemsTreeEditor extends CheckedTreeEditor { */ @Override protected String modelToString(Object model) { - return ""; + return ""; //$NON-NLS-1$ } } |