@Override public String getColumnText(Object element, int columnIndex) { try { if (element instanceof PlaceHolder) { if (columnIndex == 1) { PlaceHolder ph = (PlaceHolder) element; return ph.getTitle(); } return ""; //$NON-NLS-1$ } ReportTemplateMetaData data = (ReportTemplateMetaData) element; switch (columnIndex) { case 0: return data.getOutputname(); // $NON-NLS-1$ case 1: StringBuilder sb = new StringBuilder(); OutputFormat[] formats = data.getOutputFormats(); for (int i = 0; i < formats.length; i++) { sb.append(formats[i]); if (!(i == formats.length - 1)) { sb.append(", "); } } return sb.toString(); // $NON-NLS-1$ case 2: return data.getFilename(); // $NON-NLS-1$ default: return null; } } catch (Exception e) { LOG.error("Error while getting column text", e); // $NON-NLS-1$ throw new RuntimeException(e); } }
/* * (non-Javadoc) * * @see * org.eclipse.jface.viewers.ViewerComparator#compare(org.eclipse.jface * .viewers.Viewer, java.lang.Object, java.lang.Object) */ @Override public int compare(Viewer viewer, Object e1, Object e2) { ReportTemplateMetaData data1 = (ReportTemplateMetaData) e1; ReportTemplateMetaData data2 = (ReportTemplateMetaData) e2; int rc = 0; if (e1 == null) { if (e2 != null) { rc = 1; } } else if (e2 == null) { rc = -1; } else { // e1 and e2 != null switch (propertyIndex) { case 0: rc = comporeToLowerCase(data1.getDecoratedOutputname(), data2.getDecoratedOutputname()); break; case 1: // implement a sorted list here that needs to be compared String s1 = getSortedOutputFormatsString(data1.getOutputFormats()); String s2 = getSortedOutputFormatsString(data2.getOutputFormats()); if (s1 != null && s2 != null) { rc = s1.compareTo(s2); } break; case 2: rc = comporeToLowerCase(data1.getFilename(), data2.getFilename()); break; default: rc = 0; } } // If descending order, flip the direction if (direction == DESCENDING) { rc = -rc; } return rc; }