/******************************************************************************* * Copyright (c) 2009, 2010 EclipseSource and others. 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: * EclipseSource - initial API and implementation * IBM Corporation - ongoing development ******************************************************************************/ package org.eclipse.equinox.internal.p2.ui; import java.util.*; import org.eclipse.equinox.internal.p2.core.helpers.CollectionUtils; import org.eclipse.equinox.p2.query.Collector; /** * Wraps query results inside corresponding UI elements */ public abstract class ElementWrapper { private Collection<Object> collection = null; /** * Transforms a collector returned by a query to a collection * of UI elements */ public Collection<?> getElements(Collector<?> collector) { collection = new ArrayList<Object>(collector.size()); Iterator<?> iter = collector.iterator(); while (iter.hasNext()) { Object o = iter.next(); if (shouldWrap(o)) collection.add(wrap(o)); } return getCollection(); } /** * Gets the collection where the elements are being stored. */ protected Collection<?> getCollection() { return collection == null ? CollectionUtils.emptyList() : collection; } /** * Determines if this object should be accepted and wrapped * by a UI element. */ protected boolean shouldWrap(Object o) { return true; } /** * Wraps a single element of the query result inside a UI element. */ protected abstract Object wrap(Object item); }