/**
* Copyright (c) 2014 Liferay, Inc. All rights reserved.
*
* The contents of this file are subject to the terms of the End User License
* Agreement for Liferay Developer Studio ("License"). You may not use this file
* except in compliance with the License. You can obtain a copy of the License
* by contacting Liferay, Inc. See the License for the specific language
* governing permissions and limitations under the License, including but not
* limited to distribution rights of the Software.
*/
package com.liferay.ide.server.ui.action;
import com.liferay.ide.server.ui.LiferayServerUI;
import com.liferay.ide.server.ui.navigator.PropertiesFile;
import com.liferay.ide.ui.editor.LiferayPropertiesEditor;
import java.util.Iterator;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.SelectionProviderAction;
import org.eclipse.ui.ide.FileStoreEditorInput;
/**
* "Edit" menu action.
*
* @author Gregory Amerson
*/
public class EditPropertiesFileAction extends SelectionProviderAction
{
protected Shell shell;
public EditPropertiesFileAction( ISelectionProvider sp )
{
super( sp, "Edit Properties File" );
}
public EditPropertiesFileAction( ISelectionProvider selectionProvider, String text )
{
this( null, selectionProvider, text );
}
public EditPropertiesFileAction( Shell shell, ISelectionProvider selectionProvider, String text )
{
super( selectionProvider, text );
this.shell = shell;
setEnabled( false );
}
public boolean accept( Object node )
{
return node instanceof PropertiesFile;
}
public Shell getShell()
{
return this.shell;
}
public void perform( Object entry )
{
if( entry instanceof PropertiesFile )
{
final PropertiesFile workflowEntry = (PropertiesFile) entry;
final FileStoreEditorInput editorInput = new FileStoreEditorInput( workflowEntry.getFileStore() );
final IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
try
{
page.openEditor( editorInput, LiferayPropertiesEditor.ID );
}
catch( PartInitException e )
{
LiferayServerUI.logError( "Error opening properties editor.", e );
}
}
}
@SuppressWarnings( "rawtypes" )
public void run()
{
Iterator iterator = getStructuredSelection().iterator();
if( !iterator.hasNext() )
return;
Object obj = iterator.next();
if( accept( obj ) )
{
perform( obj );
}
selectionChanged( getStructuredSelection() );
}
/**
* Update the enabled state.
*
* @param sel
* a selection
*/
@SuppressWarnings( "rawtypes" )
public void selectionChanged( IStructuredSelection sel )
{
if( sel.isEmpty() )
{
setEnabled( false );
return;
}
boolean enabled = false;
Iterator iterator = sel.iterator();
while( iterator.hasNext() )
{
Object obj = iterator.next();
if( obj instanceof PropertiesFile )
{
final PropertiesFile node = (PropertiesFile) obj;
if( accept( node ) )
{
enabled = true;
}
}
else
{
setEnabled( false );
return;
}
}
setEnabled( enabled );
}
}