KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > mountainminds > eclemma > ui > launching > CoverageTabGroup


1 /*******************************************************************************
2  * Copyright (c) 2006 Mountainminds GmbH & Co. KG
3  * This software is provided under the terms of the Eclipse Public License v1.0
4  * See http://www.eclipse.org/legal/epl-v10.html.
5  *
6  * $Id: CoverageTabGroup.java 384 2007-08-15 20:22:58Z mtnminds $
7  ******************************************************************************/

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 /**
26  * The coverage tab group simply uses the tab group for the launch type "run"
27  * and inserts the "Coverage" tab at the second position.
28  *
29  * @author Marc R. Hoffmann
30  * @version $Revision: 384 $
31  */

32 public class CoverageTabGroup implements ILaunchConfigurationTabGroup, IExecutableExtension {
33   
34   private static final String JavaDoc DELEGATE_LAUNCHMODE = ILaunchManager.RUN_MODE;
35   private static final String JavaDoc EXPOINT_TABGROUP = "org.eclipse.debug.ui.launchConfigurationTabGroups"; //$NON-NLS-1$
36
private static final String JavaDoc CONFIGATTR_TYPE = "type"; //$NON-NLS-1$
37
private static final String JavaDoc INPLACEONLY_FLAG = "inplaceonly"; //$NON-NLS-1$
38

39   private ILaunchConfigurationTabGroup tabGroupDelegate;
40   private ILaunchConfigurationTab coverageTab;
41   private boolean inplaceonly;
42   
43   // IExecutableExtension interface
44

45   public void setInitializationData(IConfigurationElement config, String JavaDoc propertyName, Object JavaDoc 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 JavaDoc 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"); //$NON-NLS-1$
58
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"))) { //$NON-NLS-1$
63
element = tabGroupConfig;
64             break findloop;
65           }
66         }
67       }
68     }
69     if (element == null) {
70       String JavaDoc msg = "No tab group registered to run " + type; //$NON-NLS-1$;
71
throw new CoreException(EclEmmaUIPlugin.errorStatus(msg, null));
72     } else {
73       return (ILaunchConfigurationTabGroup) element.createExecutableExtension("class"); //$NON-NLS-1$
74
}
75   }
76   
77   // ILaunchConfigurationTabGroup interface
78

79   public void createTabs(ILaunchConfigurationDialog dialog, String JavaDoc mode) {
80     tabGroupDelegate.createTabs(dialog, mode);
81     coverageTab = createCoverageTab(dialog, mode);
82   }
83   
84   protected ILaunchConfigurationTab createCoverageTab(ILaunchConfigurationDialog dialog, String JavaDoc 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     // deprecated method will not be called
122
}
123
124 }
125
Popular Tags