/*******************************************************************************
* Copyright (C) 2011, Dariusz Luksza <dariusz@luksza.org>
*
* 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
*******************************************************************************/
package org.eclipse.egit.ui.internal.synchronize.action;
import java.lang.reflect.InvocationTargetException;
import org.eclipse.compare.structuremergeviewer.IDiffElement;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.viewers.AbstractTreeViewer;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.team.ui.synchronize.ISynchronizePageConfiguration;
import org.eclipse.team.ui.synchronize.SynchronizeModelAction;
import org.eclipse.team.ui.synchronize.SynchronizeModelOperation;
/**
* 'Expand All' tool bar action
*/
public class ExpandAllModelAction extends SynchronizeModelAction {
private static final class ExpandAllAction implements Runnable {
private final ISynchronizePageConfiguration configuration;
private ExpandAllAction(ISynchronizePageConfiguration configuration) {
this.configuration = configuration;
}
@Override
public void run() {
Viewer viewer = configuration.getPage().getViewer();
if (viewer == null || viewer.getControl().isDisposed()
|| !(viewer instanceof AbstractTreeViewer)) {
return;
}
viewer.getControl().setRedraw(false);
((AbstractTreeViewer) viewer).expandAll();
viewer.getControl().setRedraw(true);
}
}
/**
* Creates 'Expand All' tool bar action
*
* @param text
* @param configuration
*/
public ExpandAllModelAction(String text,
ISynchronizePageConfiguration configuration) {
super(text, configuration);
}
@Override
protected SynchronizeModelOperation getSubscriberOperation(
final ISynchronizePageConfiguration configuration,
IDiffElement[] elements) {
return new SynchronizeModelOperation(configuration, elements) {
@Override
public void run(IProgressMonitor monitor)
throws InvocationTargetException, InterruptedException {
configuration.getSite().getShell().getDisplay()
.syncExec(new ExpandAllAction(configuration));
}
};
}
@Override
protected boolean updateSelection(IStructuredSelection selection) {
return true;
}
}