blob: d2a0e500d454f9f1917e92cccebfe825a985bb3a [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2002, 2005 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
****************************************************************************/
package org.eclipse.gmf.runtime.common.ui.services.editor;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.gmf.runtime.common.core.service.AbstractProvider;
import org.eclipse.gmf.runtime.common.core.service.IOperation;
import org.eclipse.gmf.runtime.common.core.util.Log;
import org.eclipse.gmf.runtime.common.core.util.Trace;
import org.eclipse.gmf.runtime.common.ui.services.internal.CommonUIServicesDebugOptions;
import org.eclipse.gmf.runtime.common.ui.services.internal.CommonUIServicesPlugin;
import org.eclipse.gmf.runtime.common.ui.services.internal.CommonUIServicesStatusCodes;
/**
* An abstract implementation of an editor provider
*
* @author melaasar
*/
public abstract class AbstractEditorProvider
extends AbstractProvider
implements IEditorProvider {
/**
* Opens an editor with the given editor input
*
* @param editorInput
* the editor input object
*
* @see IEditorProvider#openEditor(IEditorInput)
*/
public IEditorPart openEditor(IEditorInput editorInput) {
try {
return PlatformUI.getWorkbench().getActiveWorkbenchWindow()
.getActivePage().openEditor(editorInput,
getEditorId(editorInput));
} catch (PartInitException e) {
Trace
.catching(CommonUIServicesPlugin.getDefault(),
CommonUIServicesDebugOptions.EXCEPTIONS_CATCHING,
CommonUIServicesPlugin.getDefault().getClass(),
"openEditor", e); //$NON-NLS-1$
Log.error(CommonUIServicesPlugin.getDefault(),
CommonUIServicesStatusCodes.SERVICE_FAILURE, "openEditor", e); //$NON-NLS-1$
return null;
}
}
/**
* Determines if the provider can handle the given editor operation
*
* @param operation
* the given operation
*
* @see org.eclipse.gmf.runtime.common.core.service.IProvider#provides(org.eclipse.gmf.runtime.common.core.service.IOperation)
*/
public boolean provides(IOperation operation) {
return (operation instanceof OpenEditorOperation)
&& canOpen(((OpenEditorOperation) operation).getEditorInput());
}
/**
* Returns the Editor id suitable for the given editor input
*
* @param editorInput
* the given editor input
* @return String the editor id for the given editor input
*/
abstract protected String getEditorId(IEditorInput editorInput);
/**
* Method Determines if the editor provider can open an editor for the given
* editor input
*
* @param editorInput
* the given editor input
* @return boolean whether the provider can open an editor with the given
* input
*/
abstract protected boolean canOpen(IEditorInput editorInput);
}