/******************************************************************************* * Copyright (c) 2012 Per Kr. Soreide. * 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 * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Per Kr. Soreide - initial API and implementation *******************************************************************************/ package bndtools.release.ui; import org.eclipse.jface.viewers.ColumnLabelProvider; import org.eclipse.swt.graphics.Image; import aQute.bnd.differ.Baseline; import aQute.bnd.service.diff.Diff; import aQute.bnd.service.diff.Tree; import aQute.bnd.service.diff.Type; public class TreeLabelProvider extends ColumnLabelProvider { @Override public String getText(Object element) { if (element instanceof Baseline) { return ((Baseline) element).getBsn(); } if (element instanceof Diff) { Diff diff = (Diff) element; switch (diff.getType()) { case API: return Type.API.toString(); case MANIFEST: return Type.MANIFEST.toString(); case RESOURCES: return Type.RESOURCES.toString(); case RESOURCE: return diff.getName(); default: return diff.getName(); } } if (element instanceof Tree) { Tree tree = (Tree) element; switch (tree.getType()) { case API: return Type.API.toString(); case MANIFEST: return Type.MANIFEST.toString(); case RESOURCES: return Type.RESOURCES.toString(); case RESOURCE: return tree.getName(); default: return tree.getName(); } } return ""; } @Override public Image getImage(Object element) { if (element instanceof Baseline) { return BundleTreeImages.resolveImage("bundle", ((Baseline)element).getDiff().getDelta().toString().toLowerCase(), null, null); //$NON-NLS-1$ } if (element instanceof Diff) { Diff tree = (Diff) element; String type = tree.getType().toString().toLowerCase(); String strDelta = getDeltaString(tree); String impExp = null; if (tree.getType() == Type.PACKAGE) { impExp = "export"; //$NON-NLS-1$ } else if (tree.getType() == Type.RESOURCE) { String name = tree.getName(); int idx = name.lastIndexOf('.'); if (idx > -1) { type = "dot_" + name.substring(idx + 1); //$NON-NLS-1$ } } return BundleTreeImages.resolveImage(type, strDelta, impExp, null); } if (element instanceof Tree) { Tree tree = (Tree) element; String type = tree.getType().toString().toLowerCase(); String impExp = null; if (tree.getType() == Type.PACKAGE) { impExp = "export"; //$NON-NLS-1$ } else if (tree.getType() == Type.RESOURCE) { String name = tree.getName(); int idx = name.lastIndexOf('.'); if (idx > 0) { type = "dot_" + name.substring(idx + 1); //$NON-NLS-1$ } } return BundleTreeImages.resolveImage(type, null, impExp, null); } return null; } private static String getDeltaString(Diff diff) { return diff.getDelta().toString().toLowerCase(); } }