/******************************************************************************* * Copyright (c) 2004, 2010 BREDEX GmbH. * 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: * BREDEX GmbH - initial API and implementation and/or initial documentation *******************************************************************************/ package org.eclipse.jubula.client.inspector.ui.contribution; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import org.eclipse.jface.action.IContributionItem; import org.eclipse.jubula.client.inspector.ui.constants.InspectorCommandConstants; import org.eclipse.jubula.client.inspector.ui.handlers.ActivateInspectorHandler; import org.eclipse.jubula.client.inspector.ui.provider.sourceprovider.InspectableAutSourceProvider; import org.eclipse.jubula.client.ui.utils.CommandHelper; import org.eclipse.jubula.tools.internal.registration.AutIdentifier; import org.eclipse.ui.ISourceProvider; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.actions.CompoundContributionItem; import org.eclipse.ui.menus.CommandContributionItem; import org.eclipse.ui.services.ISourceProviderService; /** * Dropdown menu for "Activate Inspector". * * @author BREDEX GmbH * @created Mar 23, 2010 */ public class ActivateInspectorContributionItem extends CompoundContributionItem { /** * * {@inheritDoc} */ @SuppressWarnings("unchecked") protected IContributionItem[] getContributionItems() { List<IContributionItem> contributionItems = new ArrayList<IContributionItem>(); ISourceProviderService service = PlatformUI.getWorkbench().getService( ISourceProviderService.class); ISourceProvider inspectableAutsProvider = service.getSourceProvider( InspectableAutSourceProvider.INSPECTABLE_AUTS); if (inspectableAutsProvider != null) { Map<?, ?> state = inspectableAutsProvider.getCurrentState(); if (state != null) { Collection<AutIdentifier> inspectableAuts = (Collection<AutIdentifier>)state.get( InspectableAutSourceProvider.INSPECTABLE_AUTS); for (AutIdentifier autId : inspectableAuts) { contributionItems.add(createItem(autId)); } } } return contributionItems.toArray( new IContributionItem[contributionItems.size()]); } /** * Creates and returns a contribution item representing the command * to activate inspection for a specific Running AUT. * * @param autId The ID of the Running AUT to be inspected by selecting the * returned contribution item. * @return the created contribution item. */ private IContributionItem createItem(AutIdentifier autId) { Map<String, Object> params = new HashMap<String, Object>(); params.put(ActivateInspectorHandler.AUT_ID, autId); StringBuilder labelBuilder = new StringBuilder(); labelBuilder.append(autId.getExecutableName()); return CommandHelper.createContributionItem( InspectorCommandConstants.ACTIVATE_INSPECTOR_COMMAND_ID, params, labelBuilder.toString(), CommandContributionItem.STYLE_PUSH); } }