blob: 7758f8d0a76b4c1859dcc917cf9a3464a8f97374 [file] [log] [blame]
/*
* Copyright (c) 2011 Google Inc.
*
* 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 com.google.eclipse.protobuf.ui.util;
import static com.google.eclipse.protobuf.ui.util.Workbenches.activeWorkbenchPage;
import org.eclipse.core.resources.*;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.ui.*;
import org.eclipse.ui.views.navigator.ResourceNavigator;
import com.google.inject.Singleton;
/**
* Utility methods related to <code>{@link IProject}</code>s.
*
* @author alruiz@google.com (Alex Ruiz)
*/
@SuppressWarnings("deprecation")
@Singleton public class IProjects {
private static final IViewReference[] NO_VIEW_REFERENCES = new IViewReference[0];
public IProject activeProject() {
for (IViewReference reference : viewReferencesInActivePage()) {
IViewPart part = reference.getView(false);
if (part instanceof ResourceNavigator) {
ResourceNavigator navigator = (ResourceNavigator) part;
StructuredSelection selection = (StructuredSelection) navigator.getTreeViewer().getSelection();
IResource resource = (IResource) selection.getFirstElement();
return resource.getProject();
}
}
return null;
}
private IViewReference[] viewReferencesInActivePage() {
IWorkbenchPage page = activeWorkbenchPage();
if (page == null) {
return NO_VIEW_REFERENCES;
}
IViewReference[] references = page.getViewReferences();
return (references == null) ? NO_VIEW_REFERENCES : references;
}
}