blob: 9a6346277bf63c8e2c973672203355f4eb1904dd [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 2006 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 implementation
//------------------------------------------------------------------------------
package org.eclipse.epf.authoring.ui.actions;
import org.eclipse.epf.authoring.ui.editors.EditorChooser;
import org.eclipse.epf.authoring.ui.views.LibraryView;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IPartListener;
import org.eclipse.ui.IViewActionDelegate;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPart;
/**
* Links editor with an element in library view
* @author Jeff Hardy
* @since 1.0
*
*/
public class LinkWithEditor implements IViewActionDelegate {
private LibraryView targetView;
private static boolean enabled = false;
private IPartListener editorPartListener = new IPartListener() {
public void partOpened(IWorkbenchPart part) {
}
public void partDeactivated(IWorkbenchPart part) {
}
public void partClosed(IWorkbenchPart part) {
}
public void partBroughtToTop(IWorkbenchPart part) {
}
public void partActivated(IWorkbenchPart part) {
if (part instanceof IEditorPart) {
// Select the method element associated with the currently
// selected editor.
Object[] objects = new Object[1];
objects[0] = EditorChooser.getInstance()
.getActiveMethodEditorInput();
if (objects[0] != null) {
// disable the selectionChanged method from firing from this selection change
enabled = false;
targetView.setSelectionToViewer(objects[0]);
enabled = true;
}
}
}
};
/**
* @see org.eclipse.ui.IViewActionDelegate#init(org.eclipse.ui.IViewPart)
*/
public void init(IViewPart view) {
targetView = (LibraryView) view;
}
/**
* @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
*/
public void run(IAction action) {
if (enabled) {
// remove listeners from editorpart
targetView.getSite().getPage().removePartListener(
editorPartListener);
enabled = false;
} else {
// select element of currently selected editor
Object[] objects = new Object[1];
objects[0] = EditorChooser.getInstance().getActiveMethodEditorInput();
if (objects[0] != null) {
targetView.setSelectionToViewer(objects[0]);
}
// add listeners to editorpart
targetView.getSite().getPage().addPartListener(editorPartListener);
enabled = true;
}
}
/**
* @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction, org.eclipse.jface.viewers.ISelection)
*/
public void selectionChanged(IAction action, ISelection selection) {
// System.out.println("LinkWithEditor selection is " + selection);
if (enabled) {
IStructuredSelection sel = (IStructuredSelection) selection;
EditorChooser.getInstance().selectEditor(sel.getFirstElement());
}
}
}