/*
* Contributions to FindBugs
* Copyright (C) 2009, Andrei Loskutov
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package de.tobject.findbugs.view.properties;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IPackageFragment;
import org.eclipse.jface.viewers.IStructuredSelection;
import de.tobject.findbugs.marker.FindBugsMarker;
import de.tobject.findbugs.reporter.MarkerUtil;
import de.tobject.findbugs.view.explorer.BugGroup;
import de.tobject.findbugs.view.explorer.BugLabelProvider;
import edu.umd.cs.findbugs.BugCategory;
import edu.umd.cs.findbugs.BugCode;
import edu.umd.cs.findbugs.BugInstance;
import edu.umd.cs.findbugs.BugPattern;
public class PropPageTitleProvider extends BugLabelProvider {
@Override
public String getText(Object element) {
if(element instanceof IStructuredSelection){
IStructuredSelection selection = (IStructuredSelection) element;
if(selection.size() > 1){
return super.getText(element);
}
element = selection.getFirstElement();
}
String title = getTitle(element);
if(title != null){
return title;
}
return super.getText(element);
}
String getTitle(Object something){
if(something instanceof BugGroup){
return getTitle((BugGroup)something);
}
if(something instanceof IMarker){
return getTitle((IMarker)something);
}
return null;
}
String getTitle(IMarker marker){
return getTitle(MarkerUtil.findBugInstanceForMarker(marker));
}
String getTitle(BugGroup group){
switch (group.getType()) {
case Marker:
return getTitle((IMarker)group.getData());
case Pattern:
return getTitle((BugPattern)group.getData());
case PatternType:
return getTitle((BugCode)group.getData());
case Category:
return getTitle((BugCategory)group.getData());
case Priority:
return getTitle((Integer)group.getData());
case Package:
return getTitle((IPackageFragment)group.getData());
case Project:
return getTitle((IProject)group.getData());
case Class:
return getTitle((IJavaElement)group.getData());
default:
break;
}
return null;
}
String getTitle(IJavaElement elem){
if(elem == null){
return null;
}
StringBuilder sb = new StringBuilder("Class: ");
sb.append(elem.getElementName());
return sb.toString();
}
String getTitle(IProject pack){
if(pack == null){
return null;
}
StringBuilder sb = new StringBuilder("Project: ");
sb.append(pack.getName());
return sb.toString();
}
String getTitle(IPackageFragment pack){
if(pack == null){
return null;
}
StringBuilder sb = new StringBuilder("Package: ");
String name = pack.getElementName();
if(name == null || name.length() == 0){
sb.append("default package");
} else {
sb.append(name);
}
return sb.toString();
}
String getTitle(Integer priority){
if(priority == null){
return null;
}
StringBuilder sb = new StringBuilder("Priority: ");
sb.append(FindBugsMarker.Priority.label(priority.intValue()).name());
return sb.toString();
}
String getTitle(BugCategory category){
if(category == null){
return null;
}
StringBuilder sb = new StringBuilder("Category: ");
sb.append(category.getShortDescription());
sb.append(" (").append(category.getAbbrev()).append(", ");
sb.append(category.getCategory()).append(")");
return sb.toString();
}
String getTitle(BugCode type){
if(type == null){
return null;
}
StringBuilder sb = new StringBuilder("Pattern Type: ");
sb.append(type.getDescription());
sb.append(" (").append(type.getAbbrev()).append(")");
return sb.toString();
}
String getTitle(BugPattern pattern){
if(pattern == null){
return null;
}
StringBuilder sb = new StringBuilder("Pattern: ");
sb.append(pattern.getShortDescription());
return sb.toString();
}
String getTitle(BugInstance bug){
if(bug == null){
return null;
}
StringBuilder sb = new StringBuilder("Bug: ");
sb.append(bug.getAbridgedMessage());
return sb.toString();
}
String getDetails(BugInstance bug){
if(bug == null){
return null;
}
StringBuilder sb = new StringBuilder();
BugPattern pattern = bug.getBugPattern();
sb.append(" (").append(pattern.getType());
sb.append(", ").append(pattern.getAbbrev()).append(", ");
sb.append(pattern.getCategory()).append(", ");
sb.append(bug.getPriorityString());
sb.append(")");
return sb.toString();
}
String getDetails(BugPattern pattern){
if(pattern == null){
return null;
}
StringBuilder sb = new StringBuilder("<b>id:</b> ");
sb.append(pattern.getType());
sb.append(", <b>type:</b> ").append(pattern.getAbbrev()).append(", <b>category:</b> ");
sb.append(pattern.getCategory());
return sb.toString();
}
}