blob: a9c8ec766009204c3e554f8e96d81cc68875425d [file] [log] [blame]
package org.eclipse.stem.ui.handlers;
/*******************************************************************************
* Copyright (c) 2008 IBM Corporation 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.jface.action.AbstractAction;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IMenuCreator;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.stem.core.common.Identifiable;
import org.eclipse.stem.ui.Activator;
import org.eclipse.swt.events.HelpListener;
import org.eclipse.swt.widgets.Event;
import org.eclipse.ui.IActionBars;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.ide.IDE;
import org.eclipse.ui.navigator.CommonActionProvider;
import org.eclipse.ui.navigator.ICommonActionConstants;
import org.eclipse.ui.navigator.ICommonActionExtensionSite;
import org.eclipse.ui.navigator.ICommonViewerSite;
import org.eclipse.ui.navigator.ICommonViewerWorkbenchSite;
/**
* {@link Action} that opens the editor when an {@link Identifiable} is
* double-clicked in the project explorer.
*/
@SuppressWarnings("unused")
public class EditorActionProvider extends CommonActionProvider {
IAction openAction = null;
/**
* Default Constructor
*/
public EditorActionProvider() {
// Nothing
}
/**
* @see org.eclipse.ui.navigator.CommonActionProvider#init(org.eclipse.ui.navigator.ICommonActionExtensionSite)
*/
@Override
public void init(ICommonActionExtensionSite site) {
ICommonViewerSite aSite = site.getViewSite();
if (aSite instanceof ICommonViewerWorkbenchSite) {
ICommonViewerWorkbenchSite cvws = (ICommonViewerWorkbenchSite) aSite;
openAction = new OpenIdentifiableAction(cvws.getPage(), cvws
.getSelectionProvider());
} // if
} // init
/**
* @see org.eclipse.ui.actions.ActionGroup#fillActionBars(org.eclipse.ui.IActionBars)
*/
@Override
public void fillActionBars(IActionBars actionBars) {
if (openAction.isEnabled()) {
actionBars.setGlobalActionHandler(ICommonActionConstants.OPEN,
openAction);
}
}
/**
* The {@link Action} that opens an editor on the selected
* {@link Identifiable}.
*/
public static class OpenIdentifiableAction extends AbstractAction implements
IAction {
private final IWorkbenchPage page;
private final ISelectionProvider selectionProvider;
private Identifiable selectedIdentifiable;
/**
* Constructor
*
* @param page
* @param selectionProvider
*/
public OpenIdentifiableAction(IWorkbenchPage page,
ISelectionProvider selectionProvider) {
this.page = page;
this.selectionProvider = selectionProvider;
} // OpenIdentifiableAction
/**
* @see org.eclipse.jface.action.IAction#run()
*/
public void run() {
final IPath path = new Path(selectedIdentifiable.getURI()
.toPlatformString(true));
final IFile file = ResourcesPlugin.getWorkspace().getRoot()
.getFile(path);
// Found the file?
if (file != null) {
// Yes
try {
IDE.openEditor(page, file, true);
} catch (PartInitException e) {
Activator.logError("Problem opening editor", e);
}
} // if file found
else {
Activator.logError("Could not find file \"" + path.toString()
+ "\"", null);
}
} // run
/**
* @see org.eclipse.jface.action.IAction#isEnabled()
*/
public boolean isEnabled() {
boolean retValue = false;
ISelection selection = selectionProvider.getSelection();
// Anything selected?
if (!selection.isEmpty()) {
IStructuredSelection sSelection = (IStructuredSelection) selection;
if (sSelection.size() == 1
&& sSelection.getFirstElement() instanceof Identifiable) {
// Yes
selectedIdentifiable = (Identifiable) sSelection
.getFirstElement();
retValue = true;
}
}
return retValue;
} // isEnabled
/**
* @see org.eclipse.jface.action.IAction#getAccelerator()
*/
public int getAccelerator() {
return 0;
}
/**
* @see org.eclipse.jface.action.IAction#getActionDefinitionId()
*/
public String getActionDefinitionId() {
return null;
}
/**
* @see org.eclipse.jface.action.IAction#getDescription()
*/
public String getDescription() {
return null;
}
/**
* @see org.eclipse.jface.action.IAction#getDisabledImageDescriptor()
*/
public ImageDescriptor getDisabledImageDescriptor() {
return null;
}
/**
* @see org.eclipse.jface.action.IAction#getHelpListener()
*/
public HelpListener getHelpListener() {
return null;
}
/**
* @see org.eclipse.jface.action.IAction#getHoverImageDescriptor()
*/
public ImageDescriptor getHoverImageDescriptor() {
return null;
}
/**
* @see org.eclipse.jface.action.IAction#getId()
*/
public String getId() {
return null;
}
/**
* @see org.eclipse.jface.action.IAction#getImageDescriptor()
*/
public ImageDescriptor getImageDescriptor() {
return null;
}
/**
* @see org.eclipse.jface.action.IAction#getMenuCreator()
*/
public IMenuCreator getMenuCreator() {
return null;
}
/**
* @see org.eclipse.jface.action.IAction#getStyle()
*/
public int getStyle() {
return 0;
}
/**
* @see org.eclipse.jface.action.IAction#getText()
*/
public String getText() {
return null;
}
/**
* @see org.eclipse.jface.action.IAction#getToolTipText()
*/
public String getToolTipText() {
return null;
}
/**
* @see org.eclipse.jface.action.IAction#isChecked()
*/
public boolean isChecked() {
return false;
}
/**
* @see org.eclipse.jface.action.IAction#isHandled()
*/
public boolean isHandled() {
// TODO Auto-generated method stub
return false;
}
/**
* @see org.eclipse.jface.action.IAction#runWithEvent(org.eclipse.swt.widgets.Event)
*/
public void runWithEvent(Event event) {
// Nothing
}
/**
* @see org.eclipse.jface.action.IAction#setAccelerator(int)
*/
public void setAccelerator(int keycode) {
// Nothing
}
/**
* @see org.eclipse.jface.action.IAction#setActionDefinitionId(java.lang.
* String)
*/
public void setActionDefinitionId(String id) {
// Nothing
}
/**
* @see org.eclipse.jface.action.IAction#setChecked(boolean)
*/
public void setChecked(boolean checked) {
// Nothing
}
/**
* @see org.eclipse.jface.action.IAction#setDescription(java.lang.String)
*/
public void setDescription(String text) {
// Nothing
}
/**
* @see org.eclipse.jface.action.IAction#setDisabledImageDescriptor(org.eclipse
* .jface.resource.ImageDescriptor)
*/
public void setDisabledImageDescriptor(ImageDescriptor newImage) {
// Nothing
}
/**
* @see org.eclipse.jface.action.IAction#setEnabled(boolean)
*/
public void setEnabled(boolean enabled) {
// Nothing
}
/**
* @see org.eclipse.jface.action.IAction#setHelpListener(org.eclipse.swt.
* events.HelpListener)
*/
public void setHelpListener(HelpListener listener) {
// Nothing
}
/**
* @see org.eclipse.jface.action.IAction#setHoverImageDescriptor(org.eclipse.jface.resource.ImageDescriptor)
*/
public void setHoverImageDescriptor(ImageDescriptor newImage) {
// Nothing
}
/**
* @see org.eclipse.jface.action.IAction#setId(java.lang.String)
*/
public void setId(String id) {
// Nothing
}
/**
* @see org.eclipse.jface.action.IAction#setImageDescriptor(org.eclipse.jface.resource.ImageDescriptor)
*/
public void setImageDescriptor(ImageDescriptor newImage) {
// Nothing
}
/**
* @param creator
* @see org.eclipse.jface.action.IAction#setMenuCreator(org.eclipse.jface.action.IMenuCreator)
*/
public void setMenuCreator(IMenuCreator creator) {
// Nothing
}
/**
* @see org.eclipse.jface.action.IAction#setText(java.lang.String)
*/
public void setText(String text) {
// Nothing
}
/**
* @see org.eclipse.jface.action.IAction#setToolTipText(java.lang.String)
*/
public void setToolTipText(String text) {
// Nothing
}
} // OpenIdentifiableAction
} // EditorActionProvider