diff options
author | Oleg Krasilnikov | 2008-02-13 16:00:03 +0000 |
---|---|---|
committer | Oleg Krasilnikov | 2008-02-13 16:00:03 +0000 |
commit | 49b6254c362e171d3bef44c47ab23d6be0ee74d4 (patch) | |
tree | f44155034adad79d885c1074a46b3ad4af49066a /build | |
parent | 495735b5e3fb3a6d28031bcf7165c5e8d15d8370 (diff) | |
download | org.eclipse.cdt-49b6254c362e171d3bef44c47ab23d6be0ee74d4.tar.gz org.eclipse.cdt-49b6254c362e171d3bef44c47ab23d6be0ee74d4.tar.xz org.eclipse.cdt-49b6254c362e171d3bef44c47ab23d6be0ee74d4.zip |
Related to Multi-config implementation.
Diffstat (limited to 'build')
2 files changed, 166 insertions, 52 deletions
diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ArtifactTab.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ArtifactTab.java index 882a723a741..ac4968257b7 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ArtifactTab.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/ArtifactTab.java @@ -10,6 +10,10 @@ *******************************************************************************/ package org.eclipse.cdt.managedbuilder.ui.properties; +import java.util.Set; +import java.util.TreeSet; + +import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; import org.eclipse.cdt.core.settings.model.ICMultiItemsHolder; import org.eclipse.cdt.core.settings.model.ICResourceDescription; import org.eclipse.cdt.managedbuilder.buildproperties.IBuildProperty; @@ -32,14 +36,14 @@ import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Text; public class ArtifactTab extends AbstractCBuildPropertyTab { - public static final String PROPERTY = ManagedBuildManager.BUILD_ARTEFACT_TYPE_PROPERTY_ID; + public static final String PROPERTY = ManagedBuildManager.BUILD_ARTEFACT_TYPE_PROPERTY_ID; + private Label l4; - private Text t2, t3, t4; + private Combo t2, t3, t4; private Combo c1; private int savedPos = -1; // current project type private IConfiguration fCfg; @@ -48,10 +52,16 @@ public class ArtifactTab extends AbstractCBuildPropertyTab { private ITool tTool; private boolean canModify = true; + private enum FIELD {NAME, EXT, PREF} + + private Set<String> set2 = new TreeSet<String>(); + private Set<String> set3 = new TreeSet<String>(); + private Set<String> set4 = new TreeSet<String>(); + public void createControls(Composite parent) { super.createControls(parent); usercomp.setLayout(new GridLayout(2, false)); - + Label l1 = new Label(usercomp, SWT.NONE); l1.setLayoutData(new GridData(GridData.BEGINNING)); l1.setText(Messages.getString("ArtifactTab.0")); //$NON-NLS-1$ @@ -61,22 +71,22 @@ public class ArtifactTab extends AbstractCBuildPropertyTab { public void widgetSelected(SelectionEvent e) { typeChanged(); }}); + c1.setOrientation(SWT.LEFT_TO_RIGHT); Label l2 = new Label(usercomp, SWT.NONE); l2.setLayoutData(new GridData(GridData.BEGINNING)); l2.setText(Messages.getString("ArtifactTab.1")); //$NON-NLS-1$ - t2 = new Text(usercomp, SWT.BORDER); - t2.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + t2 = setCombo(FIELD.NAME, set2); t2.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { if (canModify) fCfg.setArtifactName(t2.getText()); }} ); + Label l3 = new Label(usercomp, SWT.NONE); l3.setLayoutData(new GridData(GridData.BEGINNING)); l3.setText(Messages.getString("ArtifactTab.2")); //$NON-NLS-1$ - t3 = new Text(usercomp, SWT.BORDER); - t3.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + t3 = setCombo(FIELD.EXT, set3); t3.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { if (canModify) @@ -86,8 +96,7 @@ public class ArtifactTab extends AbstractCBuildPropertyTab { l4 = new Label(usercomp, SWT.NONE); l4.setLayoutData(new GridData(GridData.BEGINNING)); l4.setText(Messages.getString("ArtifactTab.3")); //$NON-NLS-1$ - t4 = new Text(usercomp, SWT.BORDER); - t4.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + t4 = setCombo(FIELD.PREF, set4); t4.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { if (canModify) { @@ -97,6 +106,7 @@ public class ArtifactTab extends AbstractCBuildPropertyTab { ((IMultiConfiguration)fCfg).setOutputPrefixForPrimaryOutput(t4.getText()); } }} ); + updateData(getResDesc()); } @@ -148,6 +158,10 @@ public class ArtifactTab extends AbstractCBuildPropertyTab { } } + updateCombo(t2); + updateCombo(t3); + updateCombo(t4); + String s = fCfg.getArtifactName(); if (! page.isMultiCfg() && (s == null || s.trim().length() == 0)) { s = getResDesc().getConfiguration().getProjectDescription().getName(); @@ -185,7 +199,7 @@ public class ArtifactTab extends AbstractCBuildPropertyTab { canModify = true; } - public void performApply(ICResourceDescription src, ICResourceDescription dst) { + protected void performApply(ICResourceDescription src, ICResourceDescription dst) { IConfiguration cfg1 = getCfg(src.getConfiguration()); IConfiguration cfg2 = getCfg(dst.getConfiguration()); cfg2.setArtifactName(cfg1.getArtifactName()); @@ -210,7 +224,7 @@ public class ArtifactTab extends AbstractCBuildPropertyTab { } } - public void performDefaults() { + protected void performDefaults() { fCfg.setArtifactName(fCfg.getManagedProject().getDefaultArtifactName()); fCfg.setArtifactExtension(null); if (tTool != null) @@ -237,4 +251,42 @@ public class ArtifactTab extends AbstractCBuildPropertyTab { return false; } protected void updateButtons() {} // Do nothing. No buttons to update. + + private Combo setCombo(FIELD field, Set<String> set) { + Combo combo = new Combo(usercomp, SWT.BORDER); + combo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + combo.setData(ENUM, field); + combo.setData(SSET, set); + updateCombo(combo); + return combo; + } + + @SuppressWarnings("unchecked") + private void updateCombo(Combo combo) { + FIELD field = (FIELD)combo.getData(ENUM); + Set<String> set = (Set<String>)combo.getData(SSET); + if (field == null || set == null) + return; + combo.removeAll(); + for (ICConfigurationDescription cf : page.getCfgsEditable()) { + IConfiguration c = getCfg(cf); + String s = null; + switch (field) { + case NAME: + s = c.getArtifactName(); + break; + case EXT: + s = c.getArtifactExtension(); + break; + case PREF: + ITool t = c.calculateTargetTool(); + if(t != null) + s = t.getOutputPrefix(); + } + if (s != null && s.trim().length() > 0) + set.add(s.trim()); + } + if (set.size() > 0) + combo.setItems(set.toArray(new String[set.size()])); + } } diff --git a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildStepsTab.java b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildStepsTab.java index e28129f164a..8112e64c053 100644 --- a/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildStepsTab.java +++ b/build/org.eclipse.cdt.managedbuilder.ui/src/org/eclipse/cdt/managedbuilder/ui/properties/BuildStepsTab.java @@ -12,7 +12,10 @@ package org.eclipse.cdt.managedbuilder.ui.properties; import java.util.ArrayList; import java.util.List; +import java.util.Set; +import java.util.TreeSet; +import org.eclipse.cdt.core.settings.model.ICConfigurationDescription; import org.eclipse.cdt.core.settings.model.ICMultiItemsHolder; import org.eclipse.cdt.core.settings.model.ICMultiResourceDescription; import org.eclipse.cdt.core.settings.model.ICResourceDescription; @@ -36,15 +39,14 @@ import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Group; -import org.eclipse.swt.widgets.Text; public class BuildStepsTab extends AbstractCBuildPropertyTab { private Combo combo; - private Text preCmd; - private Text preDes; - private Text postCmd; - private Text postDes; + private Combo preCmd; + private Combo preDes; + private Combo postCmd; + private Combo postDes; private ITool tool; private IConfiguration config; private ICResourceDescription cfgdescr; @@ -69,6 +71,12 @@ public class BuildStepsTab extends AbstractCBuildPropertyTab { private static final String RCBS_OVERRIDE = LABEL + ".applicability.rule.override"; //$NON-NLS-1$ private static final String RCBS_DISABLE = LABEL + ".applicability.rule.disable"; //$NON-NLS-1$ + private enum FIELD {PRECMD, PREANN, PSTCMD, PSTANN} + private Set<String> set1 = new TreeSet<String>(); + private Set<String> set2 = new TreeSet<String>(); + private Set<String> set3 = new TreeSet<String>(); + private Set<String> set4 = new TreeSet<String>(); + private static final String[] rcbsApplicabilityRules = { new String(UIMessages.getString(RCBS_OVERRIDE)), // new String(ManagedBuilderUIMessages.getResourceString(RCBS_BEFORE)), @@ -93,7 +101,7 @@ public class BuildStepsTab extends AbstractCBuildPropertyTab { private void createForProject() { Group g1 = setupGroup (usercomp, Messages.getString("BuildStepsTab.2"), 1, GridData.FILL_HORIZONTAL); //$NON-NLS-1$ setupLabel(g1, label1, 1, GridData.BEGINNING); - preCmd = setupText(g1, 1, GridData.FILL_HORIZONTAL); + preCmd = setCombo(g1, FIELD.PRECMD, set1); preCmd.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { if (canModify && @@ -102,7 +110,7 @@ public class BuildStepsTab extends AbstractCBuildPropertyTab { }}); setupLabel(g1, label2, 1, GridData.BEGINNING); - preDes = setupText(g1, 1, GridData.FILL_HORIZONTAL); + preDes = setCombo(g1, FIELD.PREANN, set2); preDes.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { if (canModify && @@ -112,7 +120,7 @@ public class BuildStepsTab extends AbstractCBuildPropertyTab { Group g2 = setupGroup (usercomp, Messages.getString("BuildStepsTab.3"), 1, GridData.FILL_HORIZONTAL); //$NON-NLS-1$ setupLabel(g2, label1, 1, GridData.BEGINNING); - postCmd = setupText(g2, 1, GridData.FILL_HORIZONTAL); + postCmd = setCombo(g2, FIELD.PSTCMD, set3); postCmd.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { if (canModify && @@ -121,7 +129,7 @@ public class BuildStepsTab extends AbstractCBuildPropertyTab { }}); setupLabel(g2, label2, 1, GridData.BEGINNING); - postDes = setupText(g2, 1, GridData.FILL_HORIZONTAL); + postDes = setCombo(g2, FIELD.PSTANN, set4); postDes.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { if (canModify && @@ -145,12 +153,9 @@ public class BuildStepsTab extends AbstractCBuildPropertyTab { }}); setupLabel(g1, Messages.getString("BuildStepsTab.5"), 1, GridData.BEGINNING); //$NON-NLS-1$ - preCmd = setupText(g1, 1, GridData.FILL_HORIZONTAL); + preCmd = setCombo(g1, FIELD.PRECMD, set1); preCmd.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { - // if (page.isForProject()) - // getCfg().setPrebuildStep(preCmd.getText()); - // else if (canModify && tool != null) { IInputType[] ein = tool.getInputTypes(); if (ein != null && ein.length > 0) { @@ -163,12 +168,9 @@ public class BuildStepsTab extends AbstractCBuildPropertyTab { }}); setupLabel(g1, Messages.getString("BuildStepsTab.6"), 1, GridData.BEGINNING); //$NON-NLS-1$ - preDes = setupText(g1, 1, GridData.FILL_HORIZONTAL); + preDes = setCombo(g1, FIELD.PREANN, set2); preDes.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { -// if (page.isForProject()) -// getCfg().setPreannouncebuildStep(preDes.getText()); -// else { if (canModify && tool != null) { IOutputType[] out = tool.getOutputTypes(); if (valid(out)) @@ -177,23 +179,17 @@ public class BuildStepsTab extends AbstractCBuildPropertyTab { }}); setupLabel(g1, label1, 1, GridData.BEGINNING); - postCmd = setupText(g1, 1, GridData.FILL_HORIZONTAL); + postCmd = setCombo(g1, FIELD.PSTCMD, set3); postCmd.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { -// if (page.isForProject()) -// getCfg().setPostbuildStep(postCmd.getText()); -// else if (canModify && tool != null) tool.setToolCommand(postCmd.getText()); }}); setupLabel(g1, label2, 1, GridData.BEGINNING); - postDes = setupText(g1, 1, GridData.FILL_HORIZONTAL); + postDes = setCombo(g1, FIELD.PSTANN, set4); postDes.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { -// if (page.isForProject()) -// getCfg().setPostannouncebuildStep(postDes.getText()); -// else if (canModify && tool != null) tool.setAnnouncement(postDes.getText()); }}); @@ -207,7 +203,13 @@ public class BuildStepsTab extends AbstractCBuildPropertyTab { } private void update() { - canModify = false; // avoid changing + canModify = false; // avoid changing + + updateCombo(preCmd); + updateCombo(preDes); + updateCombo(postCmd); + updateCombo(postDes); + if (page.isForProject()) { preCmd.setText(config.getPrebuildStep()); preDes.setText(config.getPreannouncebuildStep()); @@ -219,20 +221,8 @@ public class BuildStepsTab extends AbstractCBuildPropertyTab { tool = getRcbsTool(rcfg); if(tool != null){ - String s = EMPTY_STR; - IInputType[] tmp = tool.getInputTypes(); - if (tmp != null && tmp.length > 0) { - IAdditionalInput[] add = tmp[0].getAdditionalInputs(); - if (add != null && add.length > 0) - s = createList(add[0].getPaths()); - } - preCmd.setText(s); - s = EMPTY_STR; - IOutputType[] tmp2 = tool.getOutputTypes(); - if (tmp2 != null && tmp2.length > 0) { - s = createList(tmp2[0].getOutputNames()); - } - preDes.setText(s); + preCmd.setText(getInputTypes(tool)); + preDes.setText(getOutputNames(tool)); postCmd.setText(tool.getToolCommand()); postDes.setText(tool.getAnnouncement()); } else { @@ -244,6 +234,26 @@ public class BuildStepsTab extends AbstractCBuildPropertyTab { } canModify = true; } + + private String getInputTypes(ITool t) { + String s = EMPTY_STR; + IInputType[] tmp = t.getInputTypes(); + if (tmp != null && tmp.length > 0) { + IAdditionalInput[] add = tmp[0].getAdditionalInputs(); + if (add != null && add.length > 0) + s = createList(add[0].getPaths()); + } + return s; + } + + private String getOutputNames(ITool t) { + String s = EMPTY_STR; + IOutputType[] tmp2 = t.getOutputTypes(); + if (tmp2 != null && tmp2.length > 0) + s = createList(tmp2[0].getOutputNames()); + return s; + } + private ITool getRcbsTool(IFileInfo rcConfig){ ITool rcbsTools[] = getRcbsTools(rcConfig); @@ -407,4 +417,56 @@ public class BuildStepsTab extends AbstractCBuildPropertyTab { update(); } protected void updateButtons() {} // Do nothing. No buttons to update. + + private Combo setCombo(Composite c, FIELD field, Set<String> set) { + Combo combo = new Combo(c, SWT.BORDER); + setupControl(combo, 1, GridData.FILL_HORIZONTAL); + + combo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); + combo.setData(ENUM, field); + combo.setData(SSET, set); + updateCombo(combo); + return combo; + } + + @SuppressWarnings("unchecked") + private void updateCombo(Combo combo) { + FIELD field = (FIELD)combo.getData(ENUM); + Set<String> set = (Set<String>)combo.getData(SSET); + if (field == null || set == null) + return; + combo.removeAll(); + boolean prj = page.isForProject(); + IConfiguration c = null; + ITool t = null; + if (prj || tool != null) { + for (ICConfigurationDescription cf : page.getCfgsEditable()) { + if (prj) { + c = getCfg(cf); + } else { + ICResourceDescription r = cf.getResourceDescription(cfgdescr.getPath(), false); + t = getRcbsTool((IFileInfo)getResCfg(r)); + } + String s = null; + switch (field) { + case PRECMD: + s = prj ? c.getPrebuildStep() : getInputTypes(t); + break; + case PREANN: + s = prj ? c.getPreannouncebuildStep() : getOutputNames(t); + break; + case PSTCMD: + s = prj ? c.getPostbuildStep() : t.getToolCommand(); + break; + case PSTANN: + s = prj ? c.getPostannouncebuildStep() : t.getAnnouncement(); + break; + } + if (s != null && s.trim().length() > 0) + set.add(s.trim()); + } + } + if (set.size() > 0) + combo.setItems(set.toArray(new String[set.size()])); + } } |