/******************************************************************************* * Copyright (c) 2003, 2007 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 Feb 25, 2004 * * To change the template for this generated file go to Window - Preferences - Java - Code * Generation - Code and Comments */ package org.eclipse.jst.j2ee.internal.webservice; import java.util.ArrayList; import java.util.List; import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.edit.provider.ITreeItemContentProvider; import org.eclipse.jst.j2ee.internal.webservice.helper.WebServicesManager; import org.eclipse.jst.j2ee.webservice.wsclient.ServiceRef; import org.eclipse.jst.j2ee.webservice.wsdd.PortComponent; import org.eclipse.ui.IActionFilter; /** * @author jlanuti * * To change the template for this generated type comment go to Window - Preferences - Java - Code * Generation - Code and Comments */ public class WebServiceNavigatorGroupType implements IActionFilter { private static final Class ITreeItemContentProviderClass = ITreeItemContentProvider.class; private static final Object[] NO_CHILDREN = new Object[0]; public static final int SERVICES = 0; public static final int CLIENTS = 2; public static final int HANDLERS = 3; public static final String SERVICES_UI = WebServiceUIResourceHandler.WebServiceNavigatorGroupType_UI_0; public static final String CLIENTS_UI = WebServiceUIResourceHandler.WebServiceNavigatorGroupType_UI_1; public static final String HANDLERS_UI = WebServiceUIResourceHandler.WebServiceNavigatorGroupType_UI_2; private int TYPE; private EObject wsdlService = null; private ServiceRef serviceRef = null; private final AdapterFactory adapterFactory; /** * Create a specific type of web service navigator grouping */ public WebServiceNavigatorGroupType(int groupType, AdapterFactory factory) { super(); TYPE = groupType; adapterFactory = factory; } /** * Create a specific type of web service navigator grouping */ public WebServiceNavigatorGroupType(int groupType, EObject wsdlService, AdapterFactory factory) { super(); TYPE = groupType; this.wsdlService = wsdlService; adapterFactory = factory; } /** * Create a specific type of web service navigator grouping */ public WebServiceNavigatorGroupType(int groupType, ServiceRef serviceRef, AdapterFactory factory) { super(); TYPE = groupType; this.serviceRef = serviceRef; adapterFactory = factory; } /** * @return Returns the TYPE. */ public int getGroupType() { return TYPE; } public boolean isServices() { return getGroupType() == SERVICES; } public boolean isClients() { return getGroupType() == CLIENTS; } public boolean isHandlers() { return getGroupType() == HANDLERS; } public EObject getWsdlService() { return wsdlService; } /* * (non-Javadoc) * * @see java.lang.Object#toString() */ @Override public String toString() { if (isServices()) return SERVICES_UI; else if (isClients()) return CLIENTS_UI; else if (isHandlers()) return HANDLERS_UI; else return super.toString(); } /* * (non-Javadoc) * * @see org.eclipse.ui.IActionFilter#testAttribute(java.lang.Object, java.lang.String, * java.lang.String) */ public boolean testAttribute(Object target, String name, String value) { if (target != null && target instanceof WebServiceNavigatorGroupType && value != null) { WebServiceNavigatorGroupType group = (WebServiceNavigatorGroupType) target; if (group.isClients() && value.equals(CLIENTS_UI)) return true; else if (group.isServices() && value.equals(SERVICES_UI)) return true; else if (group.isHandlers() && value.equals(HANDLERS_UI)) return true; } return false; } /** * @return Returns the serviceRef. */ public ServiceRef getServiceRef() { return serviceRef; } public Object[] getChildren() { switch (getGroupType()) { case CLIENTS : return WebServicesManager.getInstance().getAllWorkspaceServiceRefs().toArray(); case HANDLERS : { // List result = new ArrayList(); // handle web service handlers case if (getWsdlService() != null) { PortComponent port = WebServicesManager.getInstance().getPortComponent(getWsdlService()); if (port != null && port.getHandlers() != null && !port.getHandlers().isEmpty()) { /* * The rendering in the viewer is the list of handlers from an object * that is never touched by the AdapterFactoryContentProvider, and * thus never adapted by the AdapterFactory, and thus never has an * ItemProvider for the viewer attached to it. The following line * ensures that it looks like this element was "rendered" by the * content provider, so that updates to the list of handlers will * be propagated to the viewer. */ adapterFactory.adapt(port, ITreeItemContentProviderClass); return port.getHandlers().toArray(); } } // handle service ref case else if (getServiceRef() != null) return getServiceRef().getHandlers().toArray(); return NO_CHILDREN; } case SERVICES : { List result = new ArrayList(); result.addAll(WebServicesManager.getInstance().getInternalWSDLServices()); result.addAll(WebServicesManager.getInstance().getExternalWSDLServices()); return result.toArray(); } } return NO_CHILDREN; } }