1 8 package com.mountainminds.eclemma.ui.launching; 9 10 import org.eclipse.core.runtime.CoreException; 11 import org.eclipse.core.runtime.IConfigurationElement; 12 import org.eclipse.core.runtime.IExecutableExtension; 13 import org.eclipse.core.runtime.IExtensionPoint; 14 import org.eclipse.core.runtime.Platform; 15 import org.eclipse.debug.core.ILaunch; 16 import org.eclipse.debug.core.ILaunchConfiguration; 17 import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; 18 import org.eclipse.debug.core.ILaunchManager; 19 import org.eclipse.debug.ui.ILaunchConfigurationDialog; 20 import org.eclipse.debug.ui.ILaunchConfigurationTab; 21 import org.eclipse.debug.ui.ILaunchConfigurationTabGroup; 22 23 import com.mountainminds.eclemma.internal.ui.EclEmmaUIPlugin; 24 25 32 public class CoverageTabGroup implements ILaunchConfigurationTabGroup, IExecutableExtension { 33 34 private static final String DELEGATE_LAUNCHMODE = ILaunchManager.RUN_MODE; 35 private static final String EXPOINT_TABGROUP = "org.eclipse.debug.ui.launchConfigurationTabGroups"; private static final String CONFIGATTR_TYPE = "type"; private static final String INPLACEONLY_FLAG = "inplaceonly"; 39 private ILaunchConfigurationTabGroup tabGroupDelegate; 40 private ILaunchConfigurationTab coverageTab; 41 private boolean inplaceonly; 42 43 45 public void setInitializationData(IConfigurationElement config, String propertyName, Object data) throws CoreException { 46 tabGroupDelegate = createDelegate(config.getAttribute(CONFIGATTR_TYPE)); 47 inplaceonly = String.valueOf(data).indexOf(INPLACEONLY_FLAG) != -1; 48 } 49 50 protected ILaunchConfigurationTabGroup createDelegate(String type) throws CoreException { 51 IExtensionPoint extensionpoint = Platform.getExtensionRegistry().getExtensionPoint(EXPOINT_TABGROUP); 52 IConfigurationElement[] tabGroupConfigs = extensionpoint.getConfigurationElements(); 53 IConfigurationElement element = null; 54 findloop: for (int i = 0; i < tabGroupConfigs.length; i++) { 55 IConfigurationElement tabGroupConfig = tabGroupConfigs[i]; 56 if (type.equals(tabGroupConfig.getAttribute(CONFIGATTR_TYPE))) { 57 IConfigurationElement[] modeConfigs = tabGroupConfig.getChildren("launchMode"); if (modeConfigs.length == 0) { 59 element = tabGroupConfig; 60 } 61 for (int j = 0; j < modeConfigs.length; j++) { 62 if (DELEGATE_LAUNCHMODE.equals(modeConfigs[j].getAttribute("mode"))) { element = tabGroupConfig; 64 break findloop; 65 } 66 } 67 } 68 } 69 if (element == null) { 70 String msg = "No tab group registered to run " + type; throw new CoreException(EclEmmaUIPlugin.errorStatus(msg, null)); 72 } else { 73 return (ILaunchConfigurationTabGroup) element.createExecutableExtension("class"); } 75 } 76 77 79 public void createTabs(ILaunchConfigurationDialog dialog, String mode) { 80 tabGroupDelegate.createTabs(dialog, mode); 81 coverageTab = createCoverageTab(dialog, mode); 82 } 83 84 protected ILaunchConfigurationTab createCoverageTab(ILaunchConfigurationDialog dialog, String mode) { 85 return new CoverageTab(inplaceonly); 86 } 87 88 public ILaunchConfigurationTab[] getTabs() { 89 return insertCoverageTab(tabGroupDelegate.getTabs(), coverageTab); 90 } 91 92 protected ILaunchConfigurationTab[] insertCoverageTab(ILaunchConfigurationTab[] delegateTabs, ILaunchConfigurationTab coverageTab) { 93 ILaunchConfigurationTab[] tabs = new ILaunchConfigurationTab[delegateTabs.length + 1]; 94 tabs[0] = delegateTabs[0]; 95 tabs[1] = coverageTab; 96 System.arraycopy(delegateTabs, 1, tabs, 2, delegateTabs.length - 1); 97 return tabs; 98 } 99 100 public void dispose() { 101 tabGroupDelegate.dispose(); 102 coverageTab.dispose(); 103 } 104 105 public void setDefaults(ILaunchConfigurationWorkingCopy configuration) { 106 tabGroupDelegate.setDefaults(configuration); 107 coverageTab.setDefaults(configuration); 108 } 109 110 public void initializeFrom(ILaunchConfiguration configuration) { 111 tabGroupDelegate.initializeFrom(configuration); 112 coverageTab.initializeFrom(configuration); 113 } 114 115 public void performApply(ILaunchConfigurationWorkingCopy configuration) { 116 tabGroupDelegate.performApply(configuration); 117 coverageTab.performApply(configuration); 118 } 119 120 public void launched(ILaunch launch) { 121 } 123 124 } 125 | Popular Tags |