/************************************************************************************* * Copyright (c) 2008-2011 Red Hat, Inc. 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: * JBoss by Red Hat - Initial implementation. ************************************************************************************/ package org.jboss.tools.common.jdt.debug.ui.actions; import java.util.ArrayList; import java.util.List; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.jface.action.ActionContributionItem; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IContributionItem; import org.eclipse.jface.action.Separator; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.ui.actions.CompoundContributionItem; import org.jboss.tools.common.jdt.debug.RemoteDebugActivator; import org.jboss.tools.common.jdt.debug.VmModel; import org.jboss.tools.common.jdt.debug.ui.Messages; import org.jboss.tools.common.jdt.debug.ui.RemoteDebugUIActivator; import org.jboss.tools.common.jdt.debug.ui.preferences.RemoteDebug; /** * * @author snjeza * */ public class RemoteDebugItems extends CompoundContributionItem { @Override protected IContributionItem[] getContributionItems() { List<IContributionItem> items = new ArrayList<IContributionItem>(); List<RemoteDebug> remoteDebugs = RemoteDebugUIActivator.getDefault() .getValidRemoteDebugs(); VmModel[] models = RemoteDebugUIActivator.getDefault().getDebugModels(new NullProgressMonitor()); if (models != null) { for (VmModel model : models) { RemoteLaunchAction action = new RemoteLaunchAction( model.getPort()); RemoteDebug remoteDebug = RemoteDebugUIActivator.findRemoteDebug(remoteDebugs, model.getPort()); if (remoteDebug != null) { String id = RemoteDebugUIActivator.COMMAND_PREFIX + remoteDebug.getId(); action.setActionDefinitionId(id); if (remoteDebug.isShow()) { StringBuffer buffer = new StringBuffer(); if (remoteDebug.getDescription() != null && !remoteDebug.getDescription().isEmpty()) { if (buffer.length() > 0) { buffer.append(","); //$NON-NLS-1$ } buffer.append(remoteDebug.getDescription()); } String text = model.getMainClass(); if (text != null && !RemoteDebugActivator.UNKNOWN.equals(text)) { if (buffer.length() > 0) { buffer.append(",main="); //$NON-NLS-1$ } buffer.append(text); } String pid = model.getPid(); if (pid != null) { if (buffer.length() > 0) { buffer.append(",pid="); //$NON-NLS-1$ } buffer.append(pid); } String port = model.getPort(); if (port != null) { if (buffer.length() > 0) { buffer.append(",port="); //$NON-NLS-1$ } buffer.append(port); } action.setText(buffer.toString()); } else { action.setText(model.getDisplayName()); } } else { action.setText(model.getDisplayName()); } ActionContributionItem item = new ActionContributionItem( action); items.add(item); } } if (items.size() > 0) { items.add(new Separator()); } if (!RemoteDebugUIActivator.getDefault().isDiscoverRemoteApplication()) { IAction action = new DiscoverRemoteApplicationAction(); String id = RemoteDebugUIActivator.DISCOVER_REMOTE_APPLICATION_ACTION_ID; action.setActionDefinitionId(id); action.setText(Messages.Discover_Remote_Applications); ActionContributionItem item = new ActionContributionItem(action); items.add(item); } IAction action = new LaunchDialogAction(); String id = RemoteDebugUIActivator.CONFIGURE_ACTION_ID; action.setActionDefinitionId(id); action.setText(Messages.RemoteDebugItems_Configure); ActionContributionItem item = new ActionContributionItem(action); items.add(item); if (items.size() > 0) { return items.toArray(new IContributionItem[0]); } return null; } }