/** * This file is part of Archiv-Editor. * * The software Archiv-Editor serves as a client user interface for working with * the Person Data Repository. See: pdr.bbaw.de * * The software Archiv-Editor was developed at the Berlin-Brandenburg Academy * of Sciences and Humanities, Jägerstr. 22/23, D-10117 Berlin. * www.bbaw.de * * Copyright (C) 2010-2013 Berlin-Brandenburg Academy * of Sciences and Humanities * * The software Archiv-Editor was developed by @author: Christoph Plutte. * * Archiv-Editor 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 3 of the License, or * (at your option) any later version. * * Archiv-Editor 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 Archiv-Editor. * If not, see <http://www.gnu.org/licenses/lgpl-3.0.html>. */ package org.bbaw.pdr.ae.view.control.provider; import org.bbaw.pdr.ae.common.CommonActivator; import org.bbaw.pdr.ae.common.NLMessages; import org.bbaw.pdr.ae.common.icons.IconsInternal; import org.bbaw.pdr.ae.common.icons.PdrObjectDecorator; import org.bbaw.pdr.ae.control.facade.Facade; import org.bbaw.pdr.ae.model.Aspect; import org.bbaw.pdr.ae.model.Concurrence; import org.bbaw.pdr.ae.model.PdrObject; import org.bbaw.pdr.ae.model.Person; import org.bbaw.pdr.ae.model.ReferenceMods; import org.bbaw.pdr.ae.model.ReferenceModsTemplate; import org.bbaw.pdr.ae.model.view.TreeNode; import org.eclipse.jface.resource.ImageRegistry; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.swt.graphics.Image; /** * @author Christoph Plutte. Class provides the Labels for the TreeViewer. TODO * has to be dynamized and adapted to dynamic data. */ public class TreeLabelProvider implements ILabelProvider { /** Instance of shared image registry. */ private static ImageRegistry imageReg = CommonActivator.getDefault().getImageRegistry(); // private CustomDecorator imageDecorator = new CustomDecorator(); /** The _facade. */ private Facade _facade = Facade.getInstanz(); /** The decorator. */ private static PdrObjectDecorator decorator = new PdrObjectDecorator(); /** The Constant PERSONS_NEW. */ private static final Image PERSONS_NEW = decorator.decorateImageKeys(imageReg.get(IconsInternal.PERSONS), new String[] {IconsInternal.DECORATION_NEW}); /** The Constant PERSONS_UPDATED. */ private static final Image PERSONS_UPDATED = decorator.decorateImageKeys(imageReg.get(IconsInternal.PERSONS), new String[] {IconsInternal.DECORATION_UPDATED}); /** The Constant PERSON_NEW. */ private static final Image PERSON_NEW = decorator.decorateImageKeys(imageReg.get(IconsInternal.PERSON), new String[] {IconsInternal.DECORATION_NEW}); /** The Constant PERSON_UPDATED. */ private static final Image PERSON_UPDATED = decorator.decorateImageKeys(imageReg.get(IconsInternal.PERSON), new String[] {IconsInternal.DECORATION_UPDATED}); /** The Constant PERSONS_UNDEFINED_NEW. */ private static final Image PERSONS_UNDEFINED_NEW = decorator.decorateImageKeys( imageReg.get(IconsInternal.PERSONS_UNDEFINED), new String[] {IconsInternal.DECORATION_NEW}); /** The Constant PERSONS_UNDEFINED_UPDATED. */ private static final Image PERSONS_UNDEFINED_UPDATED = decorator.decorateImageKeys( imageReg.get(IconsInternal.PERSONS_UNDEFINED), new String[] {IconsInternal.DECORATION_UPDATED}); /** The Constant PERSON_UNDEFINED_NEW. */ private static final Image PERSON_UNDEFINED_NEW = decorator.decorateImageKeys( imageReg.get(IconsInternal.PERSON_UNDEFINED), new String[] {IconsInternal.DECORATION_NEW}); /** The Constant PERSON_UNDEFINED_UPDATED. */ private static final Image PERSON_UNDEFINED_UPDATED = decorator.decorateImageKeys( imageReg.get(IconsInternal.PERSON_UNDEFINED), new String[] {IconsInternal.DECORATION_UPDATED}); /** The Constant ASPECTS_NEW. */ private static final Image ASPECTS_NEW = decorator.decorateImageKeys(imageReg.get(IconsInternal.ASPECTS), new String[] {IconsInternal.DECORATION_NEW}); /** The Constant ASPECTS_UPDATED. */ private static final Image ASPECTS_UPDATED = decorator.decorateImageKeys(imageReg.get(IconsInternal.ASPECTS), new String[] {IconsInternal.DECORATION_UPDATED}); /** The Constant ASPECT_NEW. */ private static final Image ASPECT_NEW = decorator.decorateImageKeys(imageReg.get(IconsInternal.ASPECT), new String[] {IconsInternal.DECORATION_NEW}); /** The Constant ASPECT_UPDATED. */ private static final Image ASPECT_UPDATED = decorator.decorateImageKeys(imageReg.get(IconsInternal.ASPECT), new String[] {IconsInternal.DECORATION_UPDATED}); /** The Constant REFERENCES_NEW. */ private static final Image REFERENCES_NEW = decorator.decorateImage(imageReg.get(IconsInternal.REFERENCES), new String[] {IconsInternal.DECORATION_NEW}); /** The Constant REFERENCES_UPDATED. */ private static final Image REFERENCES_UPDATED = decorator.decorateImage(imageReg.get(IconsInternal.REFERENCES), new String[] {IconsInternal.DECORATION_UPDATED}); @Override public void addListener(final ILabelProviderListener listener) { } /** * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose() */ @Override public void dispose() { } // private static final Image REFERENCE_NEW = // decorator.decorateImage(imageReg.get(IconsInternal.REFERENCE), new // String[]{IconsInternal.DECORATION_NEW}); // private static final Image REFERENCE_UPDATED = // decorator.decorateImage(imageReg.get(IconsInternal.REFERENCE), new // String[]{IconsInternal.DECORATION_UPDATED}); @Override public final Image getImage(final Object element) { TreeNode tn = (TreeNode) element; if (tn.hasChildren()) { if (tn.getType().equals("pdrPo")) { if (tn.getChildren()[0].getPdrObject() != null) { if (tn.getChildren()[0].getPdrObject().getDisplayName().startsWith("pdrPo") || tn.getChildren()[0].getPdrObject().getDisplayName().compareToIgnoreCase("a") < 0) { if (tn.isNew()) { return PERSONS_UNDEFINED_NEW; } if (tn.isUpdated()) { return PERSONS_UNDEFINED_UPDATED; } else { return imageReg.get(IconsInternal.PERSONS_UNDEFINED); } } else { if (tn.isNew()) { return PERSONS_NEW; } if (tn.isUpdated()) { return PERSONS_UPDATED; } else { return imageReg.get(IconsInternal.PERSONS); } } } else { if (tn.isNew()) { return PERSONS_NEW; } if (tn.isUpdated()) { return PERSONS_UPDATED; } else { return imageReg.get(IconsInternal.PERSONS); } } } else if (tn.getType().equals("pdrRo")) { ReferenceMods ref = (ReferenceMods) tn.getPdrObject(); if (ref != null && ref.getGenre() != null && ref.getGenre().getGenre() != null) { ReferenceModsTemplate template = _facade.getReferenceModsTemplates().get(ref.getGenre().getGenre()); if (template != null && template.getImageString() != null) { return decorator.decorateImage(imageReg.get(template.getImageString()), tn); } else { return decorator.decorateImage(imageReg.get(IconsInternal.REFERENCES), tn); } } else if (ref != null && ref.getRelatedItems() != null && ref.getRelatedItems().size() > 0) { return decorator.decorateImage(imageReg.get(IconsInternal.REFERENCES), tn); } else if (tn.isNew()) { return REFERENCES_NEW; } else if (tn.isUpdated()) { return REFERENCES_UPDATED; } else { return imageReg.get(IconsInternal.REFERENCES); // return // decorator.decorateImage(imageReg.get(IconsInternal.REFERENCES), // tn); } } else if (tn.getType().equals("pdrAo")) { if (tn.isNew()) { return ASPECTS_NEW; } if (tn.isUpdated()) { return ASPECTS_UPDATED; } else { return imageReg.get(IconsInternal.ASPECTS); } } else if (tn.getType().equals("facet")) { return imageReg.get(IconsInternal.MARKUP); } } else if (tn.getPdrObject() != null) { if (tn.getType().equals("pdrPo")) { if (tn.getPdrObject().getDisplayName().startsWith("pdrPo") || tn.getPdrObject().getDisplayName().compareToIgnoreCase("a") < 0) { if (tn.isNew()) { return PERSON_UNDEFINED_NEW; } if (tn.isUpdated()) { return PERSON_UNDEFINED_UPDATED; } else { return imageReg.get(IconsInternal.PERSON_UNDEFINED); } } else { if (tn.getPdrObject() != null && tn.getParent() != null && tn.getParent().getPdrObject() != null) { Person parent = (Person) tn.getParent().getPdrObject(); if (parent.getConcurrences() != null && parent.getConcurrences().getConcurrences() != null) { for (Concurrence c : parent.getConcurrences().getConcurrences()) { if (c.getPersonId() != null && c.getPersonId().equals(tn.getPdrObject().getPdrId())) { return imageReg.get(IconsInternal.CONCURRENCE); } } } } if (tn.isNew()) { return PERSON_NEW; } if (tn.isUpdated()) { return PERSON_UPDATED; } else { return imageReg.get(IconsInternal.PERSON); } } } else if (tn.getType().equals("pdrRo")) { if (tn.getPdrObject() instanceof ReferenceMods) { ReferenceMods ref = (ReferenceMods) tn.getPdrObject(); if (ref.getGenre() != null && ref.getGenre().getGenre() != null) { ReferenceModsTemplate template = _facade.getReferenceModsTemplates().get( ref.getGenre().getGenre()); if (template != null && template.getImageString() != null) { return decorator.decorateImage(imageReg.get(template.getImageString()), tn); } else { return decorator.decorateImage(imageReg.get(IconsInternal.REFERENCE), tn); } } else if (ref.getRelatedItems() != null && ref.getRelatedItems().size() > 0) { return decorator.decorateImage(imageReg.get(IconsInternal.REFERENCE), tn); } } return decorator.decorateImage(imageReg.get(IconsInternal.REFERENCE), tn); } else if (tn.getType().equals("pdrAo")) { if (tn.isNew()) { return ASPECT_NEW; } if (tn.isUpdated()) { return ASPECT_UPDATED; } else { return imageReg.get(IconsInternal.ASPECT); } } else if (tn.getType().equals("noResult")) { return null; } } else if (tn.getType().equals("facet")) { return imageReg.get(IconsInternal.MARKUP); } return null; } /** * This method returns the actual LabelText put together from different * items. * @param element - element of content array. * @return label - label text of element. */ @Override public final String getText(final Object element) { TreeNode tn = (TreeNode) element; String label = "No Result"; if (tn.hasChildren()) { return tn.getId() + " (" + tn.getNumberOfLeaves() + " " + typeName(tn.getType()) + ")"; } else if (tn.getType().equals("pdrPo")) { label = "No Person found"; // if (p != null) // { // label = p.getDisplayName(); // } label = tn.getId(); } else if (tn.getType().equals("pdrRo")) { PdrObject r = tn.getPdrObject(); label = "No Reference found"; if (r != null) { label = r.getDisplayName(); } } else if (tn.getType().equals("pdrAo")) { PdrObject a = tn.getPdrObject(); label = "No Aspect found"; if (a != null) { label = a.getDisplayName(); } } else if (tn.getType().equals("facet")) { return tn.getId(); } return label; } @Override public final boolean isLabelProperty(final Object element, final String property) { return false; } @Override public final void removeListener(final ILabelProviderListener listener) { } /** * Type name. * @param type the type * @return the string */ private String typeName(final String type) { if (type.equals("pdrPo")) { return NLMessages.getString("ViewProvider_persons"); } if (type.equals("pdrRo")) { return NLMessages.getString("ViewProvider_references"); } if (type.equals("pdrAo")) { return NLMessages.getString("ViewProvider_aspects"); } return ""; } }