/******************************************************************************* * Copyright (c) 2013 SAP AG. * 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: * Tobias Pfeifer (SAP AG) - initial implementation *******************************************************************************/ package org.eclipse.egit.ui.internal.rebase; import java.util.Collections; import java.util.LinkedList; import java.util.List; import org.eclipse.egit.core.internal.rebase.RebaseInteractivePlan; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jgit.lib.RebaseTodoLine; /** * Content provider feeding rebase interactive plan */ public enum RebaseInteractivePlanContentProvider implements ITreeContentProvider { /** Singleton instance */ INSTANCE; private RebaseInteractivePlanContentProvider() { } @Override public void dispose() { // empty } @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { // empty } @Override public Object[] getElements(Object inputElement) { return getChildren(inputElement); } @Override public Object[] getChildren(Object parentElement) { if (parentElement instanceof RebaseInteractivePlan) { RebaseInteractivePlan plan = (RebaseInteractivePlan) parentElement; List<RebaseInteractivePlan.PlanElement> linesToDisplay = new LinkedList<>(); for (RebaseInteractivePlan.PlanElement line : plan.getList()) { if (line.isComment()) continue; linesToDisplay.add(line); } if (RebaseInteractivePreferences.isOrderReversed()) Collections.reverse(linesToDisplay); return linesToDisplay.toArray(); } if (parentElement instanceof RebaseTodoLine) { // TODO: return touched files return new Object[0]; } // TODO:return grandchildren - hunks in files return new Object[0]; } @Override public Object getParent(Object element) { return null; } @Override public boolean hasChildren(Object element) { return (element instanceof RebaseInteractivePlan); // TODO:add children as touched files; grandchildren as hunks in files } }