View | Details | Raw Unified | Return to bug 239494 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/pde/internal/ui/wizards/plugin/NewProjectCreationPage.java (-5 / +5 lines)
Lines 30-37 Link Here
30
import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;
30
import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;
31
31
32
public class NewProjectCreationPage extends WizardNewProjectCreationPage {
32
public class NewProjectCreationPage extends WizardNewProjectCreationPage {
33
	protected Button fJavaButton;
33
	private Button fJavaButton;
34
	protected boolean fFragment;
34
	private boolean fFragment;
35
	private Label fSourceLabel;
35
	private Label fSourceLabel;
36
	private Text fSourceText;
36
	private Text fSourceText;
37
	private Label fOutputlabel;
37
	private Label fOutputlabel;
Lines 71-77 Link Here
71
		setControl(control);
71
		setControl(control);
72
	}
72
	}
73
73
74
	private void createProjectTypeGroup(Composite container) {
74
	protected void createProjectTypeGroup(Composite container) {
75
		Group group = new Group(container, SWT.NONE);
75
		Group group = new Group(container, SWT.NONE);
76
		group.setText(PDEUIMessages.ProjectStructurePage_settings);
76
		group.setText(PDEUIMessages.ProjectStructurePage_settings);
77
		GridLayout layout = new GridLayout();
77
		GridLayout layout = new GridLayout();
Lines 103-109 Link Here
103
		fOutputText.setText(store.getString(PreferenceConstants.SRCBIN_BINNAME));
103
		fOutputText.setText(store.getString(PreferenceConstants.SRCBIN_BINNAME));
104
	}
104
	}
105
105
106
	private void createFormatGroup(Composite container) {
106
	protected void createFormatGroup(Composite container) {
107
		Group group = new Group(container, SWT.NONE);
107
		Group group = new Group(container, SWT.NONE);
108
		group.setText(PDEUIMessages.NewProjectCreationPage_target);
108
		group.setText(PDEUIMessages.NewProjectCreationPage_target);
109
		group.setLayout(new GridLayout(2, false));
109
		group.setLayout(new GridLayout(2, false));
Lines 252-258 Link Here
252
		return true;
252
		return true;
253
	}
253
	}
254
254
255
	protected void saveSettings(IDialogSettings settings) {
255
	public void saveSettings(IDialogSettings settings) {
256
		boolean eclipseSelected = fEclipseButton.getSelection();
256
		boolean eclipseSelected = fEclipseButton.getSelection();
257
		String targetName = eclipseSelected ? fTargetCombo.getText() : fOSGiCombo.getText();
257
		String targetName = eclipseSelected ? fTargetCombo.getText() : fOSGiCombo.getText();
258
		settings.put(S_TARGET_NAME, (eclipseSelected && TargetPlatformHelper.getTargetVersionString().equals(targetName)) ? null : targetName);
258
		settings.put(S_TARGET_NAME, (eclipseSelected && TargetPlatformHelper.getTargetVersionString().equals(targetName)) ? null : targetName);
(-)src/org/eclipse/pde/internal/ui/wizards/plugin/NewPluginProjectWizard.java (-9 lines)
Lines 42-48 Link Here
42
		setDialogSettings(PDEPlugin.getDefault().getDialogSettings());
42
		setDialogSettings(PDEPlugin.getDefault().getDialogSettings());
43
		setWindowTitle(PDEUIMessages.NewProjectWizard_title);
43
		setWindowTitle(PDEUIMessages.NewProjectWizard_title);
44
		setNeedsProgressMonitor(true);
44
		setNeedsProgressMonitor(true);
45
		PDEPlugin.getDefault().getLabelProvider().connect(this);
46
		fPluginData = new PluginFieldData();
45
		fPluginData = new PluginFieldData();
47
	}
46
	}
48
47
Lines 127-140 Link Here
127
	}
126
	}
128
127
129
	/* (non-Javadoc)
128
	/* (non-Javadoc)
130
	 * @see org.eclipse.jface.wizard.Wizard#dispose()
131
	 */
132
	public void dispose() {
133
		super.dispose();
134
		PDEPlugin.getDefault().getLabelProvider().disconnect(this);
135
	}
136
137
	/* (non-Javadoc)
138
	 * @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement, java.lang.String, java.lang.Object)
129
	 * @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement, java.lang.String, java.lang.Object)
139
	 */
130
	 */
140
	public void setInitializationData(IConfigurationElement config, String propertyName, Object data) throws CoreException {
131
	public void setInitializationData(IConfigurationElement config, String propertyName, Object data) throws CoreException {
(-)src/org/eclipse/pde/internal/ui/wizards/plugin/PluginContentPage.java (-1 / +1 lines)
Lines 370-376 Link Here
370
	 * Saves the current state of widgets of interest in the dialog settings for the wizard
370
	 * Saves the current state of widgets of interest in the dialog settings for the wizard
371
	 * @param settings
371
	 * @param settings
372
	 */
372
	 */
373
	protected void saveSettings(IDialogSettings settings) {
373
	public void saveSettings(IDialogSettings settings) {
374
		settings.put(S_GENERATE_ACTIVATOR, !fGenerateClass.getSelection());
374
		settings.put(S_GENERATE_ACTIVATOR, !fGenerateClass.getSelection());
375
		if (fUIPlugin.isEnabled()) {
375
		if (fUIPlugin.isEnabled()) {
376
			settings.put(S_UI_PLUGIN, !fUIPlugin.getSelection());
376
			settings.put(S_UI_PLUGIN, !fUIPlugin.getSelection());
(-)src/org/eclipse/pde/internal/ui/wizards/WizardElement.java (-9 / +23 lines)
Lines 13-42 Link Here
13
import java.util.MissingResourceException;
13
import java.util.MissingResourceException;
14
import java.util.ResourceBundle;
14
import java.util.ResourceBundle;
15
import org.eclipse.core.runtime.*;
15
import org.eclipse.core.runtime.*;
16
import org.eclipse.pde.internal.ui.PDEPlugin;
16
import org.eclipse.pde.internal.ui.elements.NamedElement;
17
import org.eclipse.pde.internal.ui.elements.NamedElement;
17
import org.eclipse.swt.graphics.Image;
18
import org.eclipse.swt.graphics.Image;
18
import org.eclipse.ui.IPluginContribution;
19
import org.eclipse.ui.IPluginContribution;
19
import org.osgi.framework.Bundle;
20
import org.osgi.framework.Bundle;
20
21
22
/**
23
 * Handle to a configuration element representing a wizard class.
24
 */
21
public class WizardElement extends NamedElement implements IPluginContribution {
25
public class WizardElement extends NamedElement implements IPluginContribution {
22
	public static final String ATT_NAME = "name"; //$NON-NLS-1$
23
26
27
	public static final String ATT_NAME = "name"; //$NON-NLS-1$
24
	public static final String TAG_DESCRIPTION = "description"; //$NON-NLS-1$
28
	public static final String TAG_DESCRIPTION = "description"; //$NON-NLS-1$
25
26
	public static final String ATT_ICON = "icon"; //$NON-NLS-1$
29
	public static final String ATT_ICON = "icon"; //$NON-NLS-1$
27
28
	public static final String ATT_ID = "id"; //$NON-NLS-1$
30
	public static final String ATT_ID = "id"; //$NON-NLS-1$
29
30
	public static final String ATT_CLASS = "class"; //$NON-NLS-1$
31
	public static final String ATT_CLASS = "class"; //$NON-NLS-1$
31
32
	public static final String ATT_TEMPLATE = "template"; //$NON-NLS-1$
32
	public static final String ATT_TEMPLATE = "template"; //$NON-NLS-1$
33
34
	public static final String ATT_POINT = "point"; //$NON-NLS-1$
33
	public static final String ATT_POINT = "point"; //$NON-NLS-1$
35
34
36
	private String description;
35
	private String description;
37
38
	private IConfigurationElement configurationElement;
36
	private IConfigurationElement configurationElement;
39
40
	private IConfigurationElement template;
37
	private IConfigurationElement template;
41
38
42
	public WizardElement(IConfigurationElement config) {
39
	public WizardElement(IConfigurationElement config) {
Lines 64-70 Link Here
64
61
65
	/**
62
	/**
66
	 * We allow replacement variables in description values as well. This is to
63
	 * We allow replacement variables in description values as well. This is to
67
	 * allow extension template descriptin reuse in project template wizards.
64
	 * allow extension template description reuse in project template wizards.
68
	 * Tokens in form '%token%' will be evaluated against the contributing
65
	 * Tokens in form '%token%' will be evaluated against the contributing
69
	 * plug-in's resource bundle. As before, to have '%' in the description, one
66
	 * plug-in's resource bundle. As before, to have '%' in the description, one
70
	 * need to add '%%'.
67
	 * need to add '%%'.
Lines 168-171 Link Here
168
	public String getPluginId() {
165
	public String getPluginId() {
169
		return null;
166
		return null;
170
	}
167
	}
168
169
	public static WizardElement create(IConfigurationElement config) {
170
		String name = config.getAttribute(ATT_NAME);
171
		String id = config.getAttribute(ATT_ID);
172
		String className = config.getAttribute(ATT_CLASS);
173
		if (name == null || id == null || className == null)
174
			return null;
175
		WizardElement element = new WizardElement(config);
176
		String imageName = config.getAttribute(ATT_ICON);
177
		if (imageName != null) {
178
			String pluginID = config.getNamespaceIdentifier();
179
			Image image = PDEPlugin.getDefault().getLabelProvider().getImageFromPlugin(pluginID, imageName);
180
			element.setImage(image);
181
		}
182
		return element;
183
	}
184
171
}
185
}
(-)src/org/eclipse/pde/internal/ui/wizards/NewWizard.java (-2 / +2 lines)
Lines 49-55 Link Here
49
	 * 
49
	 * 
50
	 * @see org.eclipse.pde.internal.ui.wizards.IDefaultValueConsumer#getDefaultValue(java.lang.String)
50
	 * @see org.eclipse.pde.internal.ui.wizards.IDefaultValueConsumer#getDefaultValue(java.lang.String)
51
	 */
51
	 */
52
	public String getDefaultValue(String key) {
52
	public final String getDefaultValue(String key) {
53
		if (defaultValues == null)
53
		if (defaultValues == null)
54
			return null;
54
			return null;
55
		return (String) defaultValues.get(key);
55
		return (String) defaultValues.get(key);
Lines 60-66 Link Here
60
	 * 
60
	 * 
61
	 * @see org.eclipse.pde.internal.ui.wizards.IDefaultValueConsumer#init(java.util.Dictionary)
61
	 * @see org.eclipse.pde.internal.ui.wizards.IDefaultValueConsumer#init(java.util.Dictionary)
62
	 */
62
	 */
63
	public void init(Dictionary defaultValues) {
63
	public final void init(Dictionary defaultValues) {
64
		this.defaultValues = defaultValues;
64
		this.defaultValues = defaultValues;
65
	}
65
	}
66
}
66
}
(-)META-INF/MANIFEST.MF (-1 / +4 lines)
Lines 98-104 Link Here
98
 org.eclipse.equinox.p2.core;bundle-version="[1.0.0,2.0.0)",
98
 org.eclipse.equinox.p2.core;bundle-version="[1.0.0,2.0.0)",
99
 org.eclipse.equinox.p2.director;bundle-version="[1.0.100,2.0.0)",
99
 org.eclipse.equinox.p2.director;bundle-version="[1.0.100,2.0.0)",
100
 org.eclipse.equinox.p2.artifact.repository;bundle-version="[1.0.100,2.0.0)",
100
 org.eclipse.equinox.p2.artifact.repository;bundle-version="[1.0.100,2.0.0)",
101
 org.eclipse.equinox.p2.metadata.repository;bundle-version="[1.0.100,2.0.0)"
101
 org.eclipse.equinox.p2.metadata.repository;bundle-version="[1.0.100,2.0.0)",
102
 org.eclipse.equinox.p2.publisher;bundle-version="[1.0.0,2.0.0)",
103
 org.eclipse.equinox.frameworkadmin;bundle-version="1.0.100",
104
 org.eclipse.equinox.frameworkadmin.equinox;bundle-version="1.0.100"
102
Eclipse-LazyStart: true
105
Eclipse-LazyStart: true
103
Import-Package: com.ibm.icu.text,
106
Import-Package: com.ibm.icu.text,
104
 org.eclipse.jdt.debug.core
107
 org.eclipse.jdt.debug.core
(-)src/org/eclipse/pde/internal/ui/editor/plugin/ManifestEditor.java (-1 / +1 lines)
Lines 250-256 Link Here
250
250
251
		IPluginBase pluginBase = model.getPluginBase(true);
251
		IPluginBase pluginBase = model.getPluginBase(true);
252
		try {
252
		try {
253
			pluginBase.setSchemaVersion(TargetPlatformHelper.getTargetVersion() < 3.2 ? "3.0" : "3.2"); //$NON-NLS-1$ //$NON-NLS-2$
253
			pluginBase.setSchemaVersion(TargetPlatformHelper.getSchemaVersion());
254
		} catch (CoreException e) {
254
		} catch (CoreException e) {
255
		}
255
		}
256
		model.save();
256
		model.save();
(-)src/org/eclipse/pde/internal/ui/wizards/plugin/NewProjectCreationFromTemplatePage.java (+24 lines)
Added Link Here
1
package org.eclipse.pde.internal.ui.wizards.plugin;
2
3
import org.eclipse.jface.viewers.IStructuredSelection;
4
import org.eclipse.pde.internal.ui.wizards.WizardElement;
5
import org.eclipse.swt.widgets.Composite;
6
7
public class NewProjectCreationFromTemplatePage extends NewProjectCreationPage {
8
9
	private WizardElement fTemplateWizard;
10
11
	public NewProjectCreationFromTemplatePage(String pageName, AbstractFieldData data, IStructuredSelection selection, WizardElement templateWizard) {
12
		super(pageName, data, false, selection);
13
		fTemplateWizard = templateWizard;
14
	}
15
16
	protected void createFormatGroup(Composite container) {
17
		if (fTemplateWizard == null) {
18
			super.createFormatGroup(container);
19
		}
20
	}
21
22
	// TODO Update data will be a problem
23
24
}
(-)src/org/eclipse/pde/ui/templates/NewPluginProjectFromTemplateWizard.java (+171 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2000, 2008 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *******************************************************************************/
11
package org.eclipse.pde.ui.templates;
12
13
import java.lang.reflect.InvocationTargetException;
14
import org.eclipse.core.resources.IProject;
15
import org.eclipse.core.runtime.*;
16
import org.eclipse.jface.dialogs.IDialogSettings;
17
import org.eclipse.pde.internal.ui.*;
18
import org.eclipse.pde.internal.ui.wizards.*;
19
import org.eclipse.pde.internal.ui.wizards.plugin.*;
20
import org.eclipse.pde.ui.IPluginContentWizard;
21
import org.eclipse.ui.IWorkingSet;
22
import org.eclipse.ui.wizards.newresource.BasicNewProjectResourceWizard;
23
24
/**
25
 * @since 3.5
26
 * 
27
 *
28
 */
29
public abstract class NewPluginProjectFromTemplateWizard extends NewWizard implements IExecutableExtension {
30
	public static final String DEF_PROJECT_NAME = "project_name"; //$NON-NLS-1$
31
	public static final String PLUGIN_POINT = "pluginContent"; //$NON-NLS-1$
32
	public static final String TAG_WIZARD = "wizard"; //$NON-NLS-1$
33
34
	private AbstractFieldData fPluginData;
35
	private NewProjectCreationPage fProjectPage;
36
	private PluginContentPage fContentPage;
37
	private IPluginContentWizard fTemplateWizard;
38
	private IProjectProvider fProjectProvider;
39
	private IConfigurationElement fConfig;
40
41
	public NewPluginProjectFromTemplateWizard() {
42
		setDefaultPageImageDescriptor(PDEPluginImages.DESC_NEWPPRJ_WIZ);
43
		setDialogSettings(PDEPlugin.getDefault().getDialogSettings());
44
		setWindowTitle(PDEUIMessages.NewProjectWizard_title);
45
		setNeedsProgressMonitor(true);
46
		fPluginData = new PluginFieldData();
47
	}
48
49
	/* (non-Javadoc)
50
	 * @see org.eclipse.jface.wizard.Wizard#addPages()
51
	 */
52
	public void addPages() {
53
		WizardElement templateWizardElement = getTemplateWizard();
54
55
		fProjectPage = new NewProjectCreationFromTemplatePage("main", fPluginData, getSelection(), templateWizardElement); //$NON-NLS-1$
56
		fProjectPage.setTitle(PDEUIMessages.NewProjectWizard_MainPage_title);
57
		fProjectPage.setDescription(PDEUIMessages.NewProjectWizard_MainPage_desc);
58
		String projectName = getDefaultValue(DEF_PROJECT_NAME);
59
		if (projectName != null)
60
			fProjectPage.setInitialProjectName(projectName);
61
		addPage(fProjectPage);
62
63
		fProjectProvider = new IProjectProvider() {
64
			public String getProjectName() {
65
				return fProjectPage.getProjectName();
66
			}
67
68
			public IProject getProject() {
69
				return fProjectPage.getProjectHandle();
70
			}
71
72
			public IPath getLocationPath() {
73
				return fProjectPage.getLocationPath();
74
			}
75
		};
76
77
		fContentPage = new PluginContentPage("page2", fProjectProvider, fProjectPage, fPluginData); //$NON-NLS-1$
78
		addPage(fContentPage);
79
80
		if (templateWizardElement != null) {
81
			// TODO When to init the data, no data at this time
82
			// TODO Throws an exception if failed
83
			try {
84
				fTemplateWizard = (IPluginContentWizard) templateWizardElement.createExecutableExtension();
85
				fTemplateWizard.init(fPluginData);
86
				fTemplateWizard.addPages();
87
				addPage(fTemplateWizard.getStartingPage());
88
			} catch (CoreException e) {
89
				// TODO Deal with this
90
				PDEPlugin.log(e);
91
			}
92
		}
93
	}
94
95
	/* (non-Javadoc)
96
	 * @see org.eclipse.jface.wizard.Wizard#canFinish()
97
	 */
98
	public boolean canFinish() {
99
		if (super.canFinish() && !getContainer().getCurrentPage().equals(fProjectPage)) {
100
			if (fTemplateWizard == null || fTemplateWizard.canFinish()) {
101
				return true;
102
			}
103
		}
104
		return false;
105
	}
106
107
	/*
108
	 * (non-Javadoc)
109
	 * 
110
	 * @see org.eclipse.pde.internal.ui.wizards.NewWizard#performFinish()
111
	 */
112
	public boolean performFinish() {
113
		try {
114
			fProjectPage.updateData();
115
			fContentPage.updateData();
116
			IDialogSettings settings = getDialogSettings();
117
			if (settings != null) {
118
				fProjectPage.saveSettings(settings);
119
				fContentPage.saveSettings(settings);
120
			}
121
			BasicNewProjectResourceWizard.updatePerspective(fConfig);
122
			getContainer().run(false, true, new NewProjectCreationOperation(fPluginData, fProjectProvider, fTemplateWizard));
123
124
			IWorkingSet[] workingSets = fProjectPage.getSelectedWorkingSets();
125
			if (workingSets.length > 0)
126
				getWorkbench().getWorkingSetManager().addToWorkingSets(fProjectProvider.getProject(), workingSets);
127
128
			return true;
129
		} catch (InvocationTargetException e) {
130
			PDEPlugin.logException(e);
131
		} catch (InterruptedException e) {
132
		}
133
		return false;
134
	}
135
136
	// TODO throw an exception if there is a problem?  Provide the field data?
137
	protected abstract String getTemplateID();
138
139
	/* (non-Javadoc)
140
	 * @see org.eclipse.core.runtime.IExecutableExtension#setInitializationData(org.eclipse.core.runtime.IConfigurationElement, java.lang.String, java.lang.Object)
141
	 */
142
	public void setInitializationData(IConfigurationElement config, String propertyName, Object data) throws CoreException {
143
		fConfig = config;
144
	}
145
146
	private WizardElement getTemplateWizard() {
147
		String templateID = getTemplateID();
148
		if (templateID == null) {
149
			return null;
150
		}
151
152
		IExtensionRegistry registry = Platform.getExtensionRegistry();
153
		IExtensionPoint point = registry.getExtensionPoint(PDEPlugin.getPluginId(), PLUGIN_POINT);
154
		if (point == null) {
155
			return null;
156
		}
157
		IExtension[] extensions = point.getExtensions();
158
		for (int i = 0; i < extensions.length; i++) {
159
			IConfigurationElement[] elements = extensions[i].getConfigurationElements();
160
			for (int j = 0; j < elements.length; j++) {
161
				if (elements[j].getName().equals(TAG_WIZARD)) {
162
					if (templateID.equals(elements[j].getAttribute(WizardElement.ATT_ID))) {
163
						return WizardElement.create(elements[j]);
164
					}
165
				}
166
			}
167
		}
168
		return null;
169
	}
170
171
}
(-)plugin.xml (+15 lines)
Lines 490-494 Link Here
490
      </wizard>
490
      </wizard>
491
        
491
        
492
   </extension>
492
   </extension>
493
   <extension
494
         point="org.eclipse.ui.newWizards">
495
      <wizard
496
            category="org.eclipse.pde.PDE"
497
            class="org.eclipse.pde.internal.ui.templates.ide.TestTemplateWizard"
498
            finalPerspective="org.eclipse.pde.ui.PDEPerspective"
499
            icon="icons/etool16/newex_wiz.gif"
500
            id="org.eclipse.pde.ui.templates.testWizard"
501
            name="%wizard.name.0"
502
            project="true">
503
         <description>
504
            %wizard.description.0
505
         </description>
506
      </wizard>
507
   </extension>
493
   
508
   
494
</plugin>
509
</plugin>
(-)src/org/eclipse/pde/internal/ui/templates/ide/TestTemplateWizard.java (+10 lines)
Added Link Here
1
package org.eclipse.pde.internal.ui.templates.ide;
2
3
import org.eclipse.pde.ui.templates.NewPluginProjectFromTemplateWizard;
4
5
public class TestTemplateWizard extends NewPluginProjectFromTemplateWizard {
6
7
	protected String getTemplateID() {
8
		return "org.eclipse.pde.ui.pluginContent.view";
9
	}
10
}

Return to bug 239494