Java tutorial
/** * SonarView - A SonarQube/Eclipse integration plugin * Copyright (c) 2016 Leonardo Pessoa * http://lmpessoa.com * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package com.lmpessoa.sonarview.ui; import org.eclipse.core.resources.IMarker; import org.eclipse.jface.viewers.ViewerCell; import org.eclipse.ui.views.markers.MarkerField; import org.eclipse.ui.views.markers.MarkerItem; import com.lmpessoa.sonarview.core.MarkerUtils; public class IssueDescriptionField extends MarkerField { @Override public String getValue(MarkerItem item) { return item.getAttributeValue(IMarker.MESSAGE, "Unknown"); } @Override public void update(ViewerCell cell) { super.update(cell); String severity = null; MarkerItem item = (MarkerItem) cell.getElement(); if (item != null) { severity = item.getAttributeValue(MarkerUtils.SEVERITY, null); } if (severity == null && "MarkerCategory".equals(item.getClass().getSimpleName())) { severity = item.getAttributeValue(IMarker.MESSAGE, null).trim().toUpperCase(); int pos = severity.indexOf(' '); if (pos >= 0) { severity = severity.substring(0, pos); } } cell.setImage(Images.getMarkerImage(severity)); } @Override public int compare(MarkerItem item1, MarkerItem item2) { int severity1 = getSeverity(item1); int severity2 = getSeverity(item2); if (severity1 == severity2) { return super.compare(item1, item2); } return severity2 - severity1; } private int getSeverity(MarkerItem item) { String severity = item.getAttributeValue(MarkerUtils.SEVERITY, null); if ("BLOCKER".equals(severity)) { return 0; } if ("CRITICAL".equals(severity)) { return 1; } if ("MAJOR".equals(severity)) { return 2; } if ("MINOR".equals(severity)) { return 3; } if ("INFO".equals(severity)) { return 4; } return -1; } }