diff --git a/build/org.eclipse.cdt.managedbuilder.ui/icons/obj16/empty.gif b/build/org.eclipse.cdt.managedbuilder.ui/icons/obj16/empty.gif new file mode 100644 index 00000000000..143e14d1949 Binary files /dev/null and b/build/org.eclipse.cdt.managedbuilder.ui/icons/obj16/empty.gif differ diff --git a/build/org.eclipse.cdt.managedbuilder.ui/icons/obj16/preferred.gif b/build/org.eclipse.cdt.managedbuilder.ui/icons/obj16/preferred.gif new file mode 100644 index 00000000000..270c645753a Binary files /dev/null and b/build/org.eclipse.cdt.managedbuilder.ui/icons/obj16/preferred.gif differ diff --git a/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml b/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml index fe04bb865b3..e4a04bc4c4d 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml +++ b/build/org.eclipse.cdt.managedbuilder.ui/plugin.xml @@ -89,10 +89,16 @@ point="org.eclipse.ui.preferencePages"> + + @@ -405,6 +411,16 @@ icon="icons/obj16/build_settings.gif" name="%Builder.settings" parent="org.eclipse.cdt.managedbuilder.ui.newui.PrefPage_NewCDTProject"/> + + + + folder +WizardDefaultsTab.2=Show button on property pages diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/CConfigWizardPage.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/CConfigWizardPage.java index 0b9560597c4..2f596bdff9e 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/CConfigWizardPage.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/CConfigWizardPage.java @@ -12,11 +12,12 @@ package org.eclipse.cdt.managedbuilder.ui.wizards; import java.util.ArrayList; -import org.eclipse.cdt.managedbuilder.core.IConfiguration; import org.eclipse.cdt.managedbuilder.core.IProjectType; import org.eclipse.cdt.managedbuilder.core.IToolChain; import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager; import org.eclipse.cdt.managedbuilder.ui.newui.ManagedBuilderUIImages; +import org.eclipse.cdt.ui.newui.CDTPrefUtil; +import org.eclipse.core.resources.IProject; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.CheckStateChangedEvent; import org.eclipse.jface.viewers.CheckboxTableViewer; @@ -38,6 +39,7 @@ import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableItem; +import org.eclipse.ui.dialogs.PreferencesUtil; public class CConfigWizardPage extends MBSCustomPage { @@ -47,28 +49,27 @@ public class CConfigWizardPage extends MBSCustomPage { private static final String TITLE = IDEWorkbenchMessages.getString("CConfigWizardPage.0"); //$NON-NLS-1$ private static final String MESSAGE = IDEWorkbenchMessages.getString("CConfigWizardPage.1"); //$NON-NLS-1$ private static final String COMMENT = IDEWorkbenchMessages.getString("CConfigWizardPage.12"); //$NON-NLS-1$ - private static final String DELIMITER = "_with_"; //$NON-NLS-1$ private static final String EMPTY_STR = ""; //$NON-NLS-1$ - ICWizardHandler handler; - Table table; - CheckboxTableViewer tv; - Label l_projtype; - Label l_chains; + private ICWizardHandler handler; + private Table table; + private CheckboxTableViewer tv; + private Label l_projtype; + private Label l_chains; + private Composite parent; - Composite parent; - String errorMessage = null; - String message = MESSAGE; + private String propertyId; + private String errorMessage = null; + private String message = MESSAGE; boolean isVisible = false; - Button propButton; public CConfigWizardPage() { pageID = PAGE_ID; } - private CfgItem[] getCfgItems(boolean getDefault) { + public CfgHolder[] getCfgItems(boolean getDefault) { if (handler == null) return null; - CfgItem[] its; + CfgHolder[] its; if (getDefault) - its = cfgItems(getDefaultCfgs(handler)); + its = getDefaultCfgs(handler); else { ArrayList out = new ArrayList(table.getItemCount()); TableItem[] tis = table.getItems(); @@ -76,27 +77,11 @@ public class CConfigWizardPage extends MBSCustomPage { if (tis[i].getChecked()) out.add(tis[i].getData()); } - its = (CfgItem[])out.toArray(new CfgItem[out.size()]); + its = (CfgHolder[])out.toArray(new CfgHolder[out.size()]); } return its; } - - public IConfiguration[] getConfigurations(boolean getDefault) { - CfgItem[] its = getCfgItems(getDefault); - if (its == null) return new IConfiguration[0]; - IConfiguration[] cfgs = new IConfiguration[its.length]; - for (int i=0; i 0) ? sel[0].getText() : null; @@ -426,9 +400,9 @@ import org.eclipse.ui.internal.ide.dialogs.ProjectContentsLocationArea.IErrorMes tree.removeAll(); IExtensionPoint extensionPoint = Platform.getExtensionRegistry() .getExtensionPoint(EXTENSION_POINT_ID); - if (extensionPoint == null) return; + if (extensionPoint == null) return null; IExtension[] extensions = extensionPoint.getExtensions(); - if (extensions == null) return; + if (extensions == null) return null; for (int i = 0; i < extensions.length; ++i) { IConfigurationElement[] elements = extensions[i].getConfigurationElements(); for (int k = 0; k < elements.length; k++) { @@ -438,11 +412,11 @@ import org.eclipse.ui.internal.ide.dialogs.ProjectContentsLocationArea.IErrorMes w = (ICNewWizard) elements[k].createExecutableExtension(CLASS_NAME); } catch (CoreException e) { System.out.println(org.eclipse.cdt.managedbuilder.ui.wizards.IDEWorkbenchMessages.getString("CMainWizardPage.5") + e.getLocalizedMessage()); //$NON-NLS-1$ - return; + return null; } - if (w == null) return; + if (w == null) return null; - w.setDependentControl(right, this); + w.setDependentControl(right, ls); w.createItems(tree, show_sup.getSelection()); } } @@ -460,15 +434,15 @@ import org.eclipse.ui.internal.ide.dialogs.ProjectContentsLocationArea.IErrorMes } } tree.setSelection(target); - switchTo((ICWizardHandler)target.getData()); + return (ICWizardHandler)target.getData(); } + return null; } /** * @param h - new handler */ private void switchTo(ICWizardHandler h) { - setPropertyCheck(h); if (h == null) return; if (h_selected != null) h_selected.handleUnSelection(); h_selected = h; diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/CNewWizard.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/CNewWizard.java index 9658a3883df..271bc066045 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/CNewWizard.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/CNewWizard.java @@ -20,6 +20,7 @@ import org.eclipse.cdt.managedbuilder.core.IConfiguration; import org.eclipse.cdt.managedbuilder.core.IProjectType; import org.eclipse.cdt.managedbuilder.core.IToolChain; import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager; +import org.eclipse.cdt.ui.newui.CDTPrefUtil; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.TreeItem; @@ -78,13 +79,18 @@ public class CNewWizard extends AbstractCWizard { if (tc == null) continue; h.addTc(tc); - if (oldsRoot == null) { - oldsRoot = new TreeItem(tree, SWT.NONE); - oldsRoot.setText(IDEWorkbenchMessages.getString("CNewWizard.0")); //$NON-NLS-1$ - oldsRoot.setData(new DummyHandler(parent)); - oldsRoot.setImage(IMG0); + TreeItem ti = null; + if (CDTPrefUtil.getBool(CDTPrefUtil.KEY_OTHERS)) { + if (oldsRoot == null) { + oldsRoot = new TreeItem(tree, SWT.NONE); + oldsRoot.setText(IDEWorkbenchMessages.getString("CNewWizard.0")); //$NON-NLS-1$ + oldsRoot.setData(new DummyHandler(parent)); + oldsRoot.setImage(IMG0); + } + ti = new TreeItem(oldsRoot, SWT.NONE); + } else { // do not group to + ti = new TreeItem(tree, SWT.NONE); } - TreeItem ti = new TreeItem(oldsRoot, SWT.NONE); ti.setText(h.getName()); ti.setData(h); ti.setImage(h.getIcon()); diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/CWizardHandler.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/CWizardHandler.java index 77b66d1bd6c..9ca7229f406 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/CWizardHandler.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/wizards/CWizardHandler.java @@ -11,6 +11,7 @@ package org.eclipse.cdt.managedbuilder.ui.wizards; import java.util.Iterator; +import java.util.List; import java.util.SortedMap; import java.util.TreeMap; @@ -27,8 +28,13 @@ import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager; import org.eclipse.cdt.managedbuilder.internal.core.Configuration; import org.eclipse.cdt.managedbuilder.internal.core.ManagedBuildInfo; import org.eclipse.cdt.managedbuilder.internal.core.ManagedProject; +import org.eclipse.cdt.managedbuilder.ui.newui.ManagedBuilderUIImages; +import org.eclipse.cdt.managedbuilder.ui.newui.ManagedBuilderUIPlugin; +import org.eclipse.cdt.ui.newui.CDTPrefUtil; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; @@ -46,8 +52,11 @@ import org.eclipse.swt.widgets.TableItem; * */ public class CWizardHandler implements ICWizardHandler { - static final private String head = IDEWorkbenchMessages.getString("CWizardHandler.0"); //$NON-NLS-1$ - static final private String tooltip = + private static final Image IMG0 = ManagedBuilderUIImages.get(ManagedBuilderUIImages.IMG_EMPTY); + private static final Image IMG1 = ManagedBuilderUIImages.get(ManagedBuilderUIImages.IMG_PREFERRED); + + private static final String head = IDEWorkbenchMessages.getString("CWizardHandler.0"); //$NON-NLS-1$ + private static final String tooltip = IDEWorkbenchMessages.getString("CWizardHandler.1")+ //$NON-NLS-1$ IDEWorkbenchMessages.getString("CWizardHandler.2") + //$NON-NLS-1$ IDEWorkbenchMessages.getString("CWizardHandler.3") + //$NON-NLS-1$ @@ -58,10 +67,9 @@ public class CWizardHandler implements ICWizardHandler { private String name; private Image image; private Composite parent; - private Table table; + protected Table table; private String propertyId = null; private IProjectType pt = null; - private boolean showProps = false; private IToolChainListListener listener; private boolean supportedOnly = true; @@ -84,24 +92,33 @@ public class CWizardHandler implements ICWizardHandler { } public void handleSelection() { + List preferred = CDTPrefUtil.getPreferredTCs(); + if (table == null) { table = new Table(parent, SWT.MULTI | SWT.V_SCROLL | SWT.BORDER); table.setToolTipText(tooltip); Iterator it = tcs.keySet().iterator(); + int counter = 0; + int position = 0; while (it.hasNext()) { TableItem ti = new TableItem(table, SWT.NONE); String s = (String)it.next(); Object obj = tcs.get(s); + String id = CDTPrefUtil.NULL; if (obj instanceof IToolChain) { IToolChain tc = (IToolChain)obj; + String name = tc.getUniqueRealName(); + id = tc.getId(); //TODO: add version - ti.setText(tc.getUniqueRealName()); + ti.setText(name); ti.setData(tc); - } else { + } else { // NULL for -NO TOOLCHAIN- ti.setText(s); } + if (position == 0 && preferred.contains(id)) position = counter; + counter++; } - if (tcs.size() > 0) table.select(0); + if (tcs.size() > 0) table.select(position); table.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { @@ -109,6 +126,7 @@ public class CWizardHandler implements ICWizardHandler { listener.toolChainListChanged(table.getSelectionCount()); }}); } + updatePreferred(preferred); table.setVisible(true); parent.layout(); } @@ -145,21 +163,29 @@ public class CWizardHandler implements ICWizardHandler { } } - public void createProject(IProject project, IConfiguration[] cfgs, String[] names) throws CoreException { + public void createProject(IProject project, CfgHolder[] cfgs) throws CoreException { CoreModel coreModel = CoreModel.getDefault(); ICProjectDescription des = coreModel.getProjectDescription(project); des = coreModel.createProjectDescription(project, true); ManagedBuildInfo info = ManagedBuildManager.createBuildInfo(project); - if (cfgs == null || cfgs.length == 0) + if (cfgs == null || cfgs.length == 0) cfgs = CConfigWizardPage.getDefaultCfgs(this); - ManagedProject mProj = new ManagedProject(project, cfgs[0].getProjectType()); + if (cfgs[0].cfg == null) { + throw new CoreException(new Status(IStatus.ERROR, + ManagedBuilderUIPlugin.getUniqueIdentifier(), + IDEWorkbenchMessages.getString("CWizardHandler.6"))); //$NON-NLS-1$ + } + + ManagedProject mProj = new ManagedProject(project, cfgs[0].cfg.getProjectType()); info.setManagedProject(mProj); + cfgs = CfgHolder.unique(cfgs); + for(int i = 0; i < cfgs.length; i++){ - String id = ManagedBuildManager.calculateChildId(cfgs[i].getId(), null); - Configuration config = new Configuration(mProj, (Configuration)cfgs[i], id, false, true); + String id = ManagedBuildManager.calculateChildId(cfgs[i].cfg.getId(), null); + Configuration config = new Configuration(mProj, (Configuration)cfgs[i].cfg, id, false, true); CConfigurationData data = config.getConfigurationData(); ICConfigurationDescription cfgDes = des.createConfiguration(ManagedBuildManager.CFG_DATA_PROVIDER_ID, data); config.setConfigurationDescription(cfgDes); @@ -169,7 +195,7 @@ public class CWizardHandler implements ICWizardHandler { if (bld != null) { bld.setManagedBuildOn(true); } String s = project.getName(); - config.setName(names[i]); + config.setName(cfgs[i].name); config.setArtifactName(s); } coreModel.setProjectDescription(project, des); @@ -181,15 +207,25 @@ public class CWizardHandler implements ICWizardHandler { public String getName() { return name; } public Image getIcon() { return image; } public boolean isDummy() { return false; } - public boolean needsConfig() { return true; } public int getToolChainsCount() { return tcs.size(); } - - public void setShowProperties(boolean show) { showProps = show; } - public boolean showProperties() { return showProps; } public IProjectType getProjectType() { return pt; } public String getPropertyId() { return propertyId; } public boolean canCreateWithoutToolchain() { return false; } public void setSupportedOnly(boolean supp) { supportedOnly = supp;} public boolean supportedOnly() { return supportedOnly; } + public boolean supportsPreferred() { return true; } + + /** + * Mark preferred toolchains with specific images + */ + public void updatePreferred(List prefs) { + int x = table.getItemCount(); + for (int i=0; i