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