package org.openscada.ca.ui.editor.config;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.part.MultiPageEditorPart;
import org.eclipse.ui.statushandlers.StatusManager;
import org.openscada.ca.ui.editor.ConfigurationFormInformation;
import org.openscada.ca.ui.editor.input.ConfigurationEditorInput;
import org.openscada.ca.ui.editor.internal.Activator;
public class MultiConfigurationEditor extends MultiPageEditorPart
{
public static final String EDITOR_ID = "org.openscada.ca.ui.connection.editors.MultiConfigurationEditor";
@Override
public void init ( final IEditorSite site, final IEditorInput input ) throws PartInitException
{
setPartName ( input.toString () );
setSite ( site );
try
{
setInput ( input );
}
catch ( final Exception e )
{
throw new PartInitException ( "Failed to initialize editor", e );
}
}
@Override
protected void createPages ()
{
try
{
int i = 0;
final String factoryId = getEditorInput ().getFactoryId ();
for ( final ConfigurationFormInformation info : Activator.findMatching ( factoryId ) )
{
try
{
addPage ( i, new FormEditor ( info ), getEditorInput () );
setPageText ( i, info.getLabel () );
i++;
}
catch ( final CoreException e )
{
StatusManager.getManager ().handle ( e.getStatus (), StatusManager.SHOW );
}
}
// add default editor
addPage ( i, new BasicEditor (), getEditorInput () );
setPageText ( i, "Basic Editor" );
}
catch ( final PartInitException e )
{
StatusManager.getManager ().handle ( e.getStatus (), StatusManager.BLOCK );
}
}
@Override
protected void setInput ( final IEditorInput input )
{
final ConfigurationEditorInput configurationInput = (ConfigurationEditorInput)input;
configurationInput.performLoad ( new NullProgressMonitor () );
super.setInput ( input );
}
@Override
public ConfigurationEditorInput getEditorInput ()
{
return (ConfigurationEditorInput)super.getEditorInput ();
}
@Override
public void doSave ( final IProgressMonitor monitor )
{
getEditorInput ().performSave ( monitor );
}
@Override
public void doSaveAs ()
{
}
@Override
public boolean isSaveAsAllowed ()
{
return false;
}
}