In Eclipse, there are 2 closely related core technologies that support development of Graphical User Interface (GUI) applications. The Standard Widget Toolkit (SWT) provides the fundamental building blocks. The JFace framework provides a set of patterns and component abstractions.
Action.java is the standard abstract implementation of an action. Its subclasses must implement the IAction.run() to carry out the action's semantics.
Actions represent user-invokable functions, accessible through menus, toolbars, and the status line. They encapsulate the non-UI portion of the function, which is called when the user invokes the action by means of the associated widget, such as a toolbar button. This allows you to decouple your logic from any specific UI widget and reuse it in multiple locations as needed.
E.g. Implement an open external Java source action in a customized view.
public
class
CustomizedView
extends
ViewPart
{
public
void
createPartControl( Composite parent )
{
final
IActionBars actionBars = getViewSite( ).getActionBars( );
IToolBarManager toolbarManager = actionBars.getToolBarManager( );
toolbarManager.add(
new
OpenSourceAction( getViewSite( ).getWorkbenchWindow( ) ) );
actionBars.updateActionBars( );
}
......
}
public
class
OpenSourceAction
extends
Action
{
private
IWorkbenchWindow
window
;
......
public
void
run( )
{
IFileStore fileStore = EFS.getLocalFileSystem( )
.getStore(
new
Path( filePath ) );
fileStore = fileStore.getChild( fileName );
if
( !fileStore.fetchInfo( ).isDirectory( )
&& fileStore.fetchInfo( ).exists( ) )
{
IEditorInput input = createEditorInput( fileStore );
String editorId = getEditorId( fileStore );
try
{
window
.getActivePage( ).openEditor( input, editorId );
}
catch
( PartInitException e )
{
e.printStackTrace( );
}
}
}
}
For more detials about opening an external file, please see org.eclipse.ui.internal.editors.text.OpenExternalFileAction.