blob: 8006c51bd109d3ff7baa783fd9adb0dfdfe2784c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2003, 2004 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
*******************************************************************************/
/*
* Created on Jan 19, 2004
*
* To change the template for this generated file go to Window - Preferences -
* Java - Code Generation - Code and Comments
*/
package org.eclipse.jst.internal.webservice;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jst.j2ee.internal.actions.OpenJ2EEResourceAction;
import org.eclipse.jst.j2ee.webservice.wsdd.BeanLink;
import org.eclipse.jst.j2ee.webservice.wsdd.ServiceImplBean;
import org.eclipse.jst.j2ee.webservices.WebServicesManager;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.activities.ActivityManagerEvent;
import org.eclipse.ui.activities.IActivityManagerListener;
import org.eclipse.wst.common.emfworkbench.WorkbenchResourceHelper;
import org.eclipse.wst.common.emfworkbench.integration.DynamicAdapterFactory;
import org.eclipse.wst.common.emfworkbench.integration.EditModelEvent;
import org.eclipse.wst.common.emfworkbench.integration.EditModelListener;
import org.eclipse.wst.common.navigator.internal.views.NavigatorActivityHelper;
import org.eclipse.wst.common.navigator.views.DefaultNavigatorContentExtension;
import org.eclipse.wst.common.navigator.views.INavigatorContentProvider;
import org.eclipse.wst.common.navigator.views.actions.CommonEditActionGroup;
import org.eclipse.wst.common.navigator.views.actions.ICommonMenuConstants;
import org.eclipse.wst.wsdl.internal.util.WSDLResourceImpl;
/**
*
* To change the template for this generated type comment go to Window - Preferences - Java - Code
* Generation - Code and Comments
*/
public class WebServiceGroupContentExtension extends DefaultNavigatorContentExtension implements EditModelListener, IActivityManagerListener {
private final static String VIEWER_ID = "org.eclipse.wst.common.navigator.internal.views.navigator.navigatorViewer"; //$NON-NLS-1$
private INavigatorContentProvider contentProvider = null;
private ILabelProvider labelProvider = null;
private OpenJ2EEResourceAction openAction = new OpenJ2EEResourceAction();
private OpenExternalWSDLAction openExternalWSDLAction = new OpenExternalWSDLAction(WebServiceUIResourceHandler.getString("WebServiceGroupContentExtension_UI_1")); //$NON-NLS-1$
public WebServiceGroupContentExtension() {
super();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.wst.common.navigator.internal.views.navigator.DefaultNavigatorContentExtension#doInit()
*/
public void doInit() {
WebServicesManager.getInstance().addListener(this);
PlatformUI.getWorkbench().getActivitySupport().getActivityManager().addActivityManagerListener(this);
// create the default synchronizer for any web service editor to use with view due
// to the usage of seperate edit models.
WebServicesNavigatorSynchronizer.createInstance(createAdapterFactory(), this);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.wst.common.navigator.internal.views.navigator.INavigatorContentExtension#getDescription(org.eclipse.jface.viewers.IStructuredSelection)
*/
public String getDescription(IStructuredSelection selection) {
return ""; //$NON-NLS-1$
}
/*
* (non-Javadoc)
*
* @see org.eclipse.wst.common.navigator.internal.views.navigator.INavigatorContentExtension#getContentProvider()
*/
public INavigatorContentProvider getContentProvider() {
if (contentProvider == null)
contentProvider = new WebServicesNavigatorContentProvider(createAdapterFactory(), this);
return contentProvider;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.wst.common.navigator.internal.views.navigator.INavigatorContentExtension#getLabelProvider()
*/
public ILabelProvider getLabelProvider() {
if (labelProvider == null) {
labelProvider = new WebServicesNavigatorLabelProvider(createAdapterFactory());
}
return labelProvider;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.wst.common.emfworkbench.integration.EditModelListener#editModelChanged(org.eclipse.wst.common.emfworkbench.integration.EditModelEvent)
*/
public void editModelChanged(EditModelEvent anEvent) {
this.getExtensionSite().notifyElementReplaced(this, ((WebServicesNavigatorContentProvider) getContentProvider()).getNavigatorGroup());
}
/**
* Configure and return a composite adapter factory for our contents
*/
public AdapterFactory createAdapterFactory() {
return new DynamicAdapterFactory(VIEWER_ID);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.wst.common.navigator.internal.views.navigator.INavigatorContentExtension#dispose()
*/
public void dispose() {
super.dispose();
WebServicesManager.getInstance().removeListener(this);
PlatformUI.getWorkbench().getActivitySupport().getActivityManager().removeActivityManagerListener(this);
// dispose current instance of web service editor/explorer synchronizer
WebServicesNavigatorSynchronizer.disposeInstance();
}
/*
* (non-Javadoc)
*
* @see org.eclipse.wst.common.navigator.internal.views.navigator.INavigatorContentExtension#getEditActionGroup()
*/
public CommonEditActionGroup getEditActionGroup() {
return new CommonEditActionGroup(getExtensionSite()) {
public void fillOpenWithMenu(IMenuManager menu) {
if ((getExtensionSite().getSelection().getFirstElement() instanceof BeanLink)) {
openAction.selectionChanged(getExtensionSite().getSelection());
menu.insertAfter(ICommonMenuConstants.COMMON_MENU_TOP, openAction);
} else if ((getExtensionSite().getSelection().getFirstElement() instanceof WSDLResourceImpl)) {
WSDLResourceImpl wsdl = (WSDLResourceImpl) getExtensionSite().getSelection().getFirstElement();
IFile wsdlFile = WorkbenchResourceHelper.getFile(wsdl);
if (wsdlFile == null || !wsdlFile.exists()) {
openExternalWSDLAction.selectionChanged(getExtensionSite().getSelection());
menu.insertAfter(ICommonMenuConstants.COMMON_MENU_TOP, openExternalWSDLAction);
}
}
}
public void runDefaultAction(IStructuredSelection element) {
if (element.getFirstElement() instanceof ServiceImplBean)
return;
if ((getExtensionSite().getSelection().getFirstElement() instanceof BeanLink)) {
openAction.selectionChanged(element);
openAction.run();
return;
} else if ((getExtensionSite().getSelection().getFirstElement() instanceof WSDLResourceImpl)) {
WSDLResourceImpl wsdl = (WSDLResourceImpl) getExtensionSite().getSelection().getFirstElement();
IFile wsdlFile = WorkbenchResourceHelper.getFile(wsdl);
if (wsdlFile == null || !wsdlFile.exists()) {
openExternalWSDLAction.selectionChanged(element);
openExternalWSDLAction.run();
return;
}
}
openAction.selectionChanged(element);
openAction.run();
}
};
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ui.activities.IActivityManagerListener#activityManagerChanged(org.eclipse.ui.activities.ActivityManagerEvent)
*/
public void activityManagerChanged(ActivityManagerEvent activityManagerEvent) {
WebServicesNavigatorContentProvider provider = (WebServicesNavigatorContentProvider) getContentProvider();
boolean webServicesEnabled = NavigatorActivityHelper.isActivityEnabled(this);
Object[] obj = new Object[]{provider.getNavigatorGroup()};
if (webServicesEnabled) {
Object root = ResourcesPlugin.getWorkspace().getRoot();
getExtensionSite().notifyElementsAdded(this, root, obj);
} else {
getExtensionSite().notifyElementsRemoved(this, obj);
}
}
}