/* * Copyright (c) 2007, 2009, 2011, 2012, 2015 Eike Stepper (Berlin, Germany) 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: * Eike Stepper - initial API and implementation */ package org.eclipse.net4j.util.ui; import org.eclipse.jface.viewers.IStructuredContentProvider; import org.eclipse.jface.viewers.Viewer; /** * @author Eike Stepper */ public class DelegatingContentProvider implements IStructuredContentProvider { public static final String NONE = ""; //$NON-NLS-1$ private IStructuredContentProvider delegate; private boolean optional; public DelegatingContentProvider(IStructuredContentProvider delegate, boolean optional) { this.delegate = delegate; this.optional = optional; } public DelegatingContentProvider(IStructuredContentProvider delegate) { this(delegate, false); } public IStructuredContentProvider getDelegate() { return delegate; } public boolean isOptional() { return optional; } public void dispose() { delegate.dispose(); } public Object[] getElements(Object inputElement) { Object[] elements = delegate.getElements(inputElement); if (optional) { Object[] newElements = new Object[elements.length + 1]; newElements[0] = NONE; System.arraycopy(elements, 0, newElements, 1, elements.length); elements = newElements; } return elements; } public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { delegate.inputChanged(viewer, oldInput, newInput); } }