/** * Aptana Studio * Copyright (c) 2005-2011 by Appcelerator, Inc. All Rights Reserved. * Licensed under the terms of the GNU Public License (GPL) v3 (with exceptions). * Please see the license.html included with this distribution for details. * Any modifications to this file must keep this entire header intact. */ package com.aptana.ide.syncing.ui.navigator.actions; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.actions.BaseSelectionListenerAction; import com.aptana.ide.syncing.core.SiteConnectionUtils; public class NavigatorBaseSyncAction extends BaseSelectionListenerAction { private IWorkbenchPart fActivePart; // a flag indicating if the selected elements belongs to the source or destination within a sync connection // by default, assume the selection is from source private boolean fSelectedFromSource = true; public NavigatorBaseSyncAction(String text, IWorkbenchPart activePart) { super(text); fActivePart = activePart; } @Override protected boolean updateSelection(IStructuredSelection selection) { // checks if any of the selection belongs to a sync connection and enables the action accordingly Object[] elements = ((IStructuredSelection) selection).toArray(); for (Object element : elements) { if (element instanceof IAdaptable) { if (SiteConnectionUtils.findSitesForSource((IAdaptable) element).length > 0) { fSelectedFromSource = true; return true; } if (SiteConnectionUtils.findSitesWithDestination((IAdaptable) element).length > 0) { fSelectedFromSource = false; return true; } } } return false; } protected IWorkbenchPart getActivePart() { return fActivePart; } protected boolean isSelectionFromSource() { return fSelectedFromSource; } }