mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-07 17:56:01 +02:00
Add 'Expert settings' with Command line pattern to tool options page
Apply patch for Bugzilla 121994 - "Show All Project Types" checkbox resets "Project Type" dropdown
This commit is contained in:
parent
636fd2d51a
commit
1ebfda405f
6 changed files with 210 additions and 69 deletions
|
@ -1,5 +1,5 @@
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Copyright (c) 2000, 2005 IBM Corporation and others.
|
# Copyright (c) 2000, 2006 IBM Corporation and others.
|
||||||
# All rights reserved. This program and the accompanying materials
|
# All rights reserved. This program and the accompanying materials
|
||||||
# are made available under the terms of the Eclipse Public License v1.0
|
# are made available under the terms of the Eclipse Public License v1.0
|
||||||
# which accompanies this distribution, and is available at
|
# which accompanies this distribution, and is available at
|
||||||
|
@ -299,11 +299,13 @@ BuildPropertyCommon.label.browse=Browse...
|
||||||
BuildPropertyCommon.label.configs=Defined configurations:
|
BuildPropertyCommon.label.configs=Defined configurations:
|
||||||
|
|
||||||
# ----------- Field Editors -----------
|
# ----------- Field Editors -----------
|
||||||
FieldEditors.tool.command=Command:
|
|
||||||
Multiline.error.message=Please give correct input
|
Multiline.error.message=Please give correct input
|
||||||
|
|
||||||
# ----------- Default flag names -----------
|
# ----------- Build Tool Settings -----------
|
||||||
BuildToolSettingsPage.alloptions=All options:
|
BuildToolSettingsPage.alloptions=All options:
|
||||||
|
BuildToolSettingsPage.tool.command=Command:
|
||||||
|
BuildToolSettingsPage.tool.commandLinePattern=Command\nline pattern:
|
||||||
|
BuildToolSettingsPage.tool.advancedSettings=Expert settings:
|
||||||
|
|
||||||
# ----------- File List Control -----------
|
# ----------- File List Control -----------
|
||||||
FileListControl.add=Add
|
FileListControl.add=Add
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2002, 2005 IBM Corporation and others.
|
* Copyright (c) 2002, 2006 IBM Corporation and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -537,8 +537,10 @@ public class ToolsSettingsBlock extends AbstractCOptionPage {
|
||||||
ManagedBuildManager.resetConfiguration(parent.getProject(), parent.getSelectedConfigurationClone());
|
ManagedBuildManager.resetConfiguration(parent.getProject(), parent.getSelectedConfigurationClone());
|
||||||
ITool tools[] = parent.getSelectedConfigurationClone().getFilteredTools();
|
ITool tools[] = parent.getSelectedConfigurationClone().getFilteredTools();
|
||||||
for( int i = 0; i < tools.length; i++ ){
|
for( int i = 0; i < tools.length; i++ ){
|
||||||
if(!tools[i].getCustomBuildStep())
|
if(!tools[i].getCustomBuildStep()) {
|
||||||
tools[i].setToolCommand(null);
|
tools[i].setToolCommand(null);
|
||||||
|
tools[i].setCommandLinePattern(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reset the category or tool selection and run selection event handler
|
// Reset the category or tool selection and run selection event handler
|
||||||
|
@ -557,8 +559,10 @@ public class ToolsSettingsBlock extends AbstractCOptionPage {
|
||||||
ManagedBuildManager.resetResourceConfiguration(resParent.getProject(), resParent.getCurrentResourceConfigClone());
|
ManagedBuildManager.resetResourceConfiguration(resParent.getProject(), resParent.getCurrentResourceConfigClone());
|
||||||
ITool tools[] = resParent.getCurrentResourceConfigClone().getTools();
|
ITool tools[] = resParent.getCurrentResourceConfigClone().getTools();
|
||||||
for( int i = 0; i < tools.length; i++ ){
|
for( int i = 0; i < tools.length; i++ ){
|
||||||
if(!tools[i].getCustomBuildStep())
|
if(!tools[i].getCustomBuildStep()) {
|
||||||
tools[i].setToolCommand(null);
|
tools[i].setToolCommand(null);
|
||||||
|
tools[i].setCommandLinePattern(null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reset the category or tool selection and run selection event handler
|
// Reset the category or tool selection and run selection event handler
|
||||||
|
@ -621,32 +625,57 @@ public class ToolsSettingsBlock extends AbstractCOptionPage {
|
||||||
IHoldsOptions realHo = page.getRealHoldsOptions(holder);
|
IHoldsOptions realHo = page.getRealHoldsOptions(holder);
|
||||||
|
|
||||||
if(realHo != null){
|
if(realHo != null){
|
||||||
if(holder instanceof ITool)
|
IHoldsOptions realHolder;
|
||||||
((ITool)realHo).setToolCommand(((ITool)holder).getToolCommand());
|
IConfiguration realCfg = null;
|
||||||
|
IResourceConfiguration realRcCfg = null;
|
||||||
|
if(resParent != null){
|
||||||
|
realHolder = resParent.getRealHoldsOptions(holder);
|
||||||
|
realRcCfg = (IResourceConfiguration)((ITool)realHolder).getParent();
|
||||||
|
realCfg = realRcCfg.getParent();
|
||||||
|
} else {
|
||||||
|
realHolder = parent.getRealHoldsOptions(holder);
|
||||||
|
realCfg = parent.getConfigurationFromHoldsOptions(realHolder);
|
||||||
|
}
|
||||||
|
if(holder instanceof ITool) {
|
||||||
|
String currentValue = ((ITool)realHo).getToolCommand();
|
||||||
|
if (!(currentValue.equals(((ITool)holder).getToolCommand()))) {
|
||||||
|
((ITool)realHo).setToolCommand(((ITool)holder).getToolCommand());
|
||||||
|
//if(resParent != null){
|
||||||
|
// TODO: This causes the entire project to be rebuilt. Is there a way to only have this
|
||||||
|
// file rebuilt? "Clean" its output? Change its modification date?
|
||||||
|
//realCfg.setRebuildState(true);
|
||||||
|
//} else {
|
||||||
|
realCfg.setRebuildState(true);
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
currentValue = ((ITool)realHo).getCommandLinePattern();
|
||||||
|
if (!(currentValue.equals(((ITool)holder).getCommandLinePattern()))) {
|
||||||
|
((ITool)realHo).setCommandLinePattern(((ITool)holder).getCommandLinePattern());
|
||||||
|
//if(resParent != null){
|
||||||
|
// TODO: This causes the entire project to be rebuilt. Is there a way to only have this
|
||||||
|
// file rebuilt? "Clean" its output? Change its modification date?
|
||||||
|
//realCfg.setRebuildState(true);
|
||||||
|
//} else {
|
||||||
|
realCfg.setRebuildState(true);
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
}
|
||||||
IOption options[] = holder.getOptions();
|
IOption options[] = holder.getOptions();
|
||||||
for(int i = 0; i < options.length; i++){
|
for(int i = 0; i < options.length; i++){
|
||||||
saveOption(options[i], holder);
|
saveOption(options[i], holder, realHolder, realCfg, realRcCfg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void saveOption(IOption clonedOption, IHoldsOptions cloneHolder){
|
private void saveOption(IOption clonedOption, IHoldsOptions cloneHolder,
|
||||||
IConfiguration realCfg = null;
|
IHoldsOptions realHolder, IConfiguration realCfg, IResourceConfiguration realRcCfg){
|
||||||
IResourceConfiguration realRcCfg = null;
|
|
||||||
// IBuildObject handler = null;
|
|
||||||
IOption realOption;
|
IOption realOption;
|
||||||
IHoldsOptions realHolder;
|
// IBuildObject handler = null;
|
||||||
|
|
||||||
if(resParent != null){
|
if(resParent != null){
|
||||||
realOption = resParent.getRealOption(clonedOption,cloneHolder);
|
realOption = resParent.getRealOption(clonedOption,cloneHolder);
|
||||||
realHolder = resParent.getRealHoldsOptions(cloneHolder);
|
|
||||||
realRcCfg = (IResourceConfiguration)((ITool)realHolder).getParent();
|
|
||||||
realCfg = realRcCfg.getParent();
|
|
||||||
// handler = realRcCfg;
|
// handler = realRcCfg;
|
||||||
} else {
|
} else {
|
||||||
realOption = parent.getRealOption(clonedOption,cloneHolder);
|
realOption = parent.getRealOption(clonedOption,cloneHolder);
|
||||||
realHolder = parent.getRealHoldsOptions(cloneHolder);
|
|
||||||
realCfg = parent.getConfigurationFromHoldsOptions(realHolder);
|
|
||||||
// handler = realCfg;
|
// handler = realCfg;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -770,6 +799,13 @@ public class ToolsSettingsBlock extends AbstractCOptionPage {
|
||||||
for(int i = 0; i < tools.length; i++){
|
for(int i = 0; i < tools.length; i++){
|
||||||
ITool tool = tools[i];
|
ITool tool = tools[i];
|
||||||
if(!tool.getCustomBuildStep()){
|
if(!tool.getCustomBuildStep()){
|
||||||
|
ITool cfgTool = cfg.getToolChain().getTool(tool.getSuperClass().getId());
|
||||||
|
// Check for a non-default command or command-line-pattern
|
||||||
|
if(cfgTool != null){
|
||||||
|
if (!(tool.getToolCommand().equals(cfgTool.getToolCommand()))) return false;
|
||||||
|
if (!(tool.getCommandLinePattern().equals(cfgTool.getCommandLinePattern()))) return false;
|
||||||
|
}
|
||||||
|
// Check for a non-default option
|
||||||
IOption options[] = tool.getOptions();
|
IOption options[] = tool.getOptions();
|
||||||
for( int j = 0; j < options.length; j++){
|
for( int j = 0; j < options.length; j++){
|
||||||
IOption option = options[j];
|
IOption option = options[j];
|
||||||
|
@ -781,7 +817,6 @@ public class ToolsSettingsBlock extends AbstractCOptionPage {
|
||||||
} while((ext = ext.getSuperClass()) != null);
|
} while((ext = ext.getSuperClass()) != null);
|
||||||
|
|
||||||
if(ext != null){
|
if(ext != null){
|
||||||
ITool cfgTool = cfg.getToolChain().getTool(tool.getSuperClass().getId());
|
|
||||||
if(cfgTool != null){
|
if(cfgTool != null){
|
||||||
IOption defaultOpt = cfgTool.getOptionBySuperClassId(ext.getId());
|
IOption defaultOpt = cfgTool.getOptionBySuperClassId(ext.getId());
|
||||||
try {
|
try {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2004, 2005 IBM Corporation and others.
|
* Copyright (c) 2004, 2006 IBM Corporation and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -18,44 +18,91 @@ import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.internal.ui.util.PixelConverter;
|
||||||
import org.eclipse.cdt.managedbuilder.core.BuildException;
|
import org.eclipse.cdt.managedbuilder.core.BuildException;
|
||||||
import org.eclipse.cdt.managedbuilder.core.IBuildObject;
|
|
||||||
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
|
import org.eclipse.cdt.managedbuilder.core.IConfiguration;
|
||||||
import org.eclipse.cdt.managedbuilder.core.IManagedOptionValueHandler;
|
|
||||||
import org.eclipse.cdt.managedbuilder.core.IOption;
|
import org.eclipse.cdt.managedbuilder.core.IOption;
|
||||||
import org.eclipse.cdt.managedbuilder.core.IOptionCategory;
|
import org.eclipse.cdt.managedbuilder.core.IOptionCategory;
|
||||||
import org.eclipse.cdt.managedbuilder.core.IResourceConfiguration;
|
import org.eclipse.cdt.managedbuilder.core.IResourceConfiguration;
|
||||||
import org.eclipse.cdt.managedbuilder.core.ITool;
|
import org.eclipse.cdt.managedbuilder.core.ITool;
|
||||||
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
|
import org.eclipse.cdt.managedbuilder.core.ManagedBuildManager;
|
||||||
import org.eclipse.cdt.managedbuilder.internal.core.Tool;
|
|
||||||
import org.eclipse.cdt.managedbuilder.internal.macros.BuildMacroProvider;
|
|
||||||
import org.eclipse.cdt.managedbuilder.internal.macros.DefaultMacroSubstitutor;
|
|
||||||
import org.eclipse.cdt.managedbuilder.internal.macros.IMacroContextInfo;
|
|
||||||
import org.eclipse.cdt.managedbuilder.internal.macros.IMacroSubstitutor;
|
|
||||||
import org.eclipse.cdt.managedbuilder.internal.macros.MacroResolver;
|
|
||||||
import org.eclipse.cdt.managedbuilder.internal.macros.MbsMacroSupplier;
|
|
||||||
import org.eclipse.cdt.managedbuilder.internal.ui.ManagedBuilderUIMessages;
|
import org.eclipse.cdt.managedbuilder.internal.ui.ManagedBuilderUIMessages;
|
||||||
import org.eclipse.cdt.managedbuilder.macros.BuildMacroException;
|
import org.eclipse.jface.preference.FieldEditor;
|
||||||
import org.eclipse.cdt.managedbuilder.macros.IBuildMacro;
|
|
||||||
import org.eclipse.jface.preference.StringFieldEditor;
|
import org.eclipse.jface.preference.StringFieldEditor;
|
||||||
import org.eclipse.jface.util.PropertyChangeEvent;
|
import org.eclipse.jface.util.PropertyChangeEvent;
|
||||||
|
import org.eclipse.swt.SWT;
|
||||||
import org.eclipse.swt.graphics.Point;
|
import org.eclipse.swt.graphics.Point;
|
||||||
|
import org.eclipse.swt.layout.GridData;
|
||||||
|
import org.eclipse.swt.widgets.Composite;
|
||||||
|
import org.eclipse.swt.widgets.Label;
|
||||||
|
|
||||||
public class BuildToolSettingsPage extends BuildSettingsPage {
|
public class BuildToolSettingsPage extends BuildSettingsPage {
|
||||||
|
|
||||||
|
// Label class for a preference page.
|
||||||
|
class LabelFieldEditor extends FieldEditor {
|
||||||
|
|
||||||
|
private String fTitle;
|
||||||
|
|
||||||
|
private Label fTitleLabel;
|
||||||
|
|
||||||
|
public LabelFieldEditor( Composite parent, String title ) {
|
||||||
|
fTitle = title;
|
||||||
|
this.createControl( parent );
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void adjustForNumColumns( int numColumns ) {
|
||||||
|
((GridData)fTitleLabel.getLayoutData()).horizontalSpan = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void doFillIntoGrid( Composite parent, int numColumns ) {
|
||||||
|
fTitleLabel = new Label( parent, SWT.WRAP );
|
||||||
|
fTitleLabel.setText( fTitle );
|
||||||
|
GridData gd = new GridData();
|
||||||
|
gd.verticalAlignment = SWT.TOP;
|
||||||
|
gd.grabExcessHorizontalSpace = false;
|
||||||
|
gd.horizontalSpan = 2;
|
||||||
|
fTitleLabel.setLayoutData( gd );
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getNumberOfControls() {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The label field editor is only used to present a text label on a preference page.
|
||||||
|
*/
|
||||||
|
protected void doLoad() {
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void doLoadDefault() {
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void doStore() {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Data members
|
||||||
|
|
||||||
// all build options field editor label
|
// all build options field editor label
|
||||||
private static final String ALL_OPTIONS = ManagedBuilderUIMessages.getResourceString("BuildToolSettingsPage.alloptions"); //$NON-NLS-1$
|
private static final String ALL_OPTIONS = ManagedBuilderUIMessages.getResourceString("BuildToolSettingsPage.alloptions"); //$NON-NLS-1$
|
||||||
// Field editor label
|
// Field editor label for tool command
|
||||||
private static final String COMMAND = "FieldEditors.tool.command"; //$NON-NLS-1$
|
private static final String COMMAND = "BuildToolSettingsPage.tool.command"; //$NON-NLS-1$
|
||||||
|
// Advanced settings label
|
||||||
|
private static final String ADVANCED_GROUP = "BuildToolSettingsPage.tool.advancedSettings"; //$NON-NLS-1$
|
||||||
|
// Field editor label for tool command line pattern
|
||||||
|
private static final String COMMAND_LINE_PATTERN = "BuildToolSettingsPage.tool.commandLinePattern"; //$NON-NLS-1$
|
||||||
|
|
||||||
private static final String DEFAULT_SEPERATOR = ";"; //$NON-NLS-1$
|
private static final String DEFAULT_SEPERATOR = ";"; //$NON-NLS-1$
|
||||||
// Whitespace character
|
// Whitespace character
|
||||||
private static final String WHITESPACE = " "; //$NON-NLS-1$
|
private static final String WHITESPACE = " "; //$NON-NLS-1$
|
||||||
// Empty String
|
// Empty String
|
||||||
private static final String EMPTY_STRING = ""; //$NON-NLS-1$
|
//private static final String EMPTY_STRING = ""; //$NON-NLS-1$
|
||||||
// field editor that displays all the build options for a particular tool
|
// field editor that displays all the build options for a particular tool
|
||||||
private MultiLineTextFieldEditor allOptionFieldEditor;
|
private MultiLineTextFieldEditor allOptionFieldEditor;
|
||||||
//tool command command
|
//tool command field
|
||||||
private StringFieldEditor commandStringField;
|
private StringFieldEditor commandStringField;
|
||||||
|
//tool command-line-pattern field
|
||||||
|
private StringFieldEditor commandLinePatternField;
|
||||||
// A list of safe options to put unrecognized values in
|
// A list of safe options to put unrecognized values in
|
||||||
private Vector defaultOptionNames;
|
private Vector defaultOptionNames;
|
||||||
// Map that holds all string options and its values
|
// Map that holds all string options and its values
|
||||||
|
@ -106,16 +153,51 @@ public class BuildToolSettingsPage extends BuildSettingsPage {
|
||||||
// Load up the preference store
|
// Load up the preference store
|
||||||
super.createFieldEditors();
|
super.createFieldEditors();
|
||||||
// Add a string editor to edit the tool command
|
// Add a string editor to edit the tool command
|
||||||
|
Composite parent = getFieldEditorParent();
|
||||||
|
PixelConverter converter = new PixelConverter(parent);
|
||||||
commandStringField = new StringFieldEditor(clonedTool.getId(),
|
commandStringField = new StringFieldEditor(clonedTool.getId(),
|
||||||
ManagedBuilderUIMessages.getResourceString(COMMAND),
|
ManagedBuilderUIMessages.getResourceString(COMMAND),
|
||||||
getFieldEditorParent());
|
parent);
|
||||||
commandStringField.setEmptyStringAllowed(false);
|
commandStringField.setEmptyStringAllowed(false);
|
||||||
|
GridData gd = ((GridData)commandStringField.getTextControl(parent).getLayoutData());
|
||||||
|
gd.grabExcessHorizontalSpace = true;
|
||||||
|
gd.minimumWidth = converter.convertWidthInCharsToPixels(3);
|
||||||
addField(commandStringField);
|
addField(commandStringField);
|
||||||
// Add a field editor that displays over all build options
|
// Add a field editor that displays overall build options
|
||||||
allOptionFieldEditor = new MultiLineTextFieldEditor(BuildToolSettingsPreferenceStore.ALL_OPTIONS_ID,
|
allOptionFieldEditor = new MultiLineTextFieldEditor(BuildToolSettingsPreferenceStore.ALL_OPTIONS_ID,
|
||||||
ALL_OPTIONS, getFieldEditorParent());
|
ALL_OPTIONS, getFieldEditorParent());
|
||||||
allOptionFieldEditor.getTextControl().setEditable(false);
|
allOptionFieldEditor.getTextControl().setEditable(false);
|
||||||
|
gd = ((GridData)allOptionFieldEditor.getTextControl().getLayoutData());
|
||||||
|
gd.grabExcessHorizontalSpace = true;
|
||||||
|
gd.minimumWidth = converter.convertWidthInCharsToPixels(20);
|
||||||
addField(allOptionFieldEditor);
|
addField(allOptionFieldEditor);
|
||||||
|
|
||||||
|
// Create the Advanced Settings group
|
||||||
|
createAdvancedSettingsGroup(converter);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* Creates the group that contains the build artifact name controls.
|
||||||
|
*/
|
||||||
|
private void createAdvancedSettingsGroup(PixelConverter converter) {
|
||||||
|
addField( createLabelEditor( getFieldEditorParent(), WHITESPACE ) ); //$NON-NLS-1$
|
||||||
|
addField( createLabelEditor( getFieldEditorParent(), ManagedBuilderUIMessages.getResourceString(ADVANCED_GROUP) ) );
|
||||||
|
|
||||||
|
// Add a string editor to edit the tool command line pattern
|
||||||
|
Composite parent = getFieldEditorParent();
|
||||||
|
commandLinePatternField = new StringFieldEditor(BuildToolSettingsPreferenceStore.COMMAND_LINE_PATTERN_ID,
|
||||||
|
ManagedBuilderUIMessages.getResourceString(COMMAND_LINE_PATTERN),
|
||||||
|
parent);
|
||||||
|
GridData gd = ((GridData)commandLinePatternField.getTextControl(parent).getLayoutData());
|
||||||
|
gd.grabExcessHorizontalSpace = true;
|
||||||
|
gd.widthHint = converter.convertWidthInCharsToPixels(30);
|
||||||
|
gd.minimumWidth = converter.convertWidthInCharsToPixels(20);
|
||||||
|
addField(commandLinePatternField);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected FieldEditor createLabelEditor( Composite parent, String title ) {
|
||||||
|
return new LabelFieldEditor( parent, title );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -232,7 +314,7 @@ public class BuildToolSettingsPage extends BuildSettingsPage {
|
||||||
IOption[] options = clonedTool.getOptions();
|
IOption[] options = clonedTool.getOptions();
|
||||||
for (int k = 0; k < options.length; ++k) {
|
for (int k = 0; k < options.length; ++k) {
|
||||||
IOption opt = options[k];
|
IOption opt = options[k];
|
||||||
String name = opt.getId();
|
//String name = opt.getId();
|
||||||
// check whether the option value is "STRING" type
|
// check whether the option value is "STRING" type
|
||||||
Iterator stringOptsIter = stringOptionsMap.values().iterator();
|
Iterator stringOptsIter = stringOptionsMap.values().iterator();
|
||||||
while (stringOptsIter.hasNext()) {
|
while (stringOptsIter.hasNext()) {
|
||||||
|
@ -346,9 +428,9 @@ public class BuildToolSettingsPage extends BuildSettingsPage {
|
||||||
IOption[] options = clonedTool.getOptions();
|
IOption[] options = clonedTool.getOptions();
|
||||||
for (int k = 0; k < options.length; ++k) {
|
for (int k = 0; k < options.length; ++k) {
|
||||||
IOption opt = options[k];
|
IOption opt = options[k];
|
||||||
String name = opt.getId();
|
//String name = opt.getId();
|
||||||
String listStr = ""; //$NON-NLS-1$
|
//String listStr = ""; //$NON-NLS-1$
|
||||||
String[] listVal = null;
|
//String[] listVal = null;
|
||||||
try {
|
try {
|
||||||
switch (opt.getValueType()) {
|
switch (opt.getValueType()) {
|
||||||
case IOption.BOOLEAN :
|
case IOption.BOOLEAN :
|
||||||
|
@ -565,6 +647,14 @@ public class BuildToolSettingsPage extends BuildSettingsPage {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Save the tool command line pattern if it has changed
|
||||||
|
// Get the actual value out of the field editor
|
||||||
|
String commandLinePattern = clonedTool.getCommandLinePattern();
|
||||||
|
if (commandLinePattern.length() > 0 &&
|
||||||
|
(!commandLinePattern.equals(tool.getCommandLinePattern()))) {
|
||||||
|
tool.setCommandLinePattern(commandLinePattern);
|
||||||
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -584,6 +674,7 @@ public class BuildToolSettingsPage extends BuildSettingsPage {
|
||||||
|
|
||||||
public void setValues(){
|
public void setValues(){
|
||||||
commandStringField.load();
|
commandStringField.load();
|
||||||
|
commandLinePatternField.load();
|
||||||
updateAllOptionField();
|
updateAllOptionField();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -595,5 +686,8 @@ public class BuildToolSettingsPage extends BuildSettingsPage {
|
||||||
clonedTool.setToolCommand(commandStringField.getStringValue());
|
clonedTool.setToolCommand(commandStringField.getStringValue());
|
||||||
updateAllOptionField();
|
updateAllOptionField();
|
||||||
}
|
}
|
||||||
|
else if(event.getSource() == commandLinePatternField){
|
||||||
|
clonedTool.setCommandLinePattern(commandLinePatternField.getStringValue());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2005 Intel Corporation and others.
|
* Copyright (c) 2005, 2006 Intel Corporation and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -39,6 +39,7 @@ public class BuildToolSettingsPreferenceStore implements IPreferenceStore {
|
||||||
private final static String WHITESPACE = " "; //$NON-NLS-1$
|
private final static String WHITESPACE = " "; //$NON-NLS-1$
|
||||||
|
|
||||||
public final static String ALL_OPTIONS_ID = EMPTY_STRING;
|
public final static String ALL_OPTIONS_ID = EMPTY_STRING;
|
||||||
|
public final static String COMMAND_LINE_PATTERN_ID = "org.eclipse.commandLinePatternId";
|
||||||
private IConfiguration config;
|
private IConfiguration config;
|
||||||
private IResourceConfiguration rcConfig;
|
private IResourceConfiguration rcConfig;
|
||||||
private IOptionCategory optCategory;
|
private IOptionCategory optCategory;
|
||||||
|
@ -137,6 +138,8 @@ public class BuildToolSettingsPreferenceStore implements IPreferenceStore {
|
||||||
if(optCategory instanceof Tool){
|
if(optCategory instanceof Tool){
|
||||||
if(optCategory.getId().equals(name))
|
if(optCategory.getId().equals(name))
|
||||||
return true;
|
return true;
|
||||||
|
else if(COMMAND_LINE_PATTERN_ID.equals(name))
|
||||||
|
return true;
|
||||||
else if(ALL_OPTIONS_ID.equals(name))
|
else if(ALL_OPTIONS_ID.equals(name))
|
||||||
return true;
|
return true;
|
||||||
} else if(getOptionValue(name) != null){
|
} else if(getOptionValue(name) != null){
|
||||||
|
@ -210,6 +213,8 @@ public class BuildToolSettingsPreferenceStore implements IPreferenceStore {
|
||||||
if(optCategory instanceof Tool){
|
if(optCategory instanceof Tool){
|
||||||
if(optCategory.getId().equals(name))
|
if(optCategory.getId().equals(name))
|
||||||
return ((Tool)optCategory).getToolCommand();
|
return ((Tool)optCategory).getToolCommand();
|
||||||
|
else if(COMMAND_LINE_PATTERN_ID.equals(name))
|
||||||
|
return ((Tool)optCategory).getCommandLinePattern();
|
||||||
else if(ALL_OPTIONS_ID.equals(name)){
|
else if(ALL_OPTIONS_ID.equals(name)){
|
||||||
try {
|
try {
|
||||||
return listToString(((Tool)optCategory).getToolCommandFlags(
|
return listToString(((Tool)optCategory).getToolCommandFlags(
|
||||||
|
@ -338,6 +343,8 @@ public class BuildToolSettingsPreferenceStore implements IPreferenceStore {
|
||||||
if(optCategory instanceof Tool){
|
if(optCategory instanceof Tool){
|
||||||
if(optCategory.getId().equals(name))
|
if(optCategory.getId().equals(name))
|
||||||
((Tool)optCategory).setToolCommand(value);
|
((Tool)optCategory).setToolCommand(value);
|
||||||
|
else if (COMMAND_LINE_PATTERN_ID.equals(name))
|
||||||
|
((Tool)optCategory).setCommandLinePattern(value);
|
||||||
} else
|
} else
|
||||||
setOptionValue(name,value);
|
setOptionValue(name,value);
|
||||||
}
|
}
|
||||||
|
|
|
@ -460,30 +460,30 @@ public class ResourceBuildPropertyPage extends AbstractBuildPropertyPage impleme
|
||||||
// If the user did not visit this page, then there is nothing to do.
|
// If the user did not visit this page, then there is nothing to do.
|
||||||
if (!displayedConfig) return true;
|
if (!displayedConfig) return true;
|
||||||
|
|
||||||
IRunnableWithProgress runnable = new IRunnableWithProgress() {
|
IRunnableWithProgress runnable = new IRunnableWithProgress() {
|
||||||
public void run(IProgressMonitor monitor) {
|
public void run(IProgressMonitor monitor) {
|
||||||
if(containsDefaults()){
|
if(containsDefaults()){
|
||||||
removeCurrentResourceConfig();
|
removeCurrentResourceConfig();
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
fOptionBlock.performApply(monitor);
|
|
||||||
getCurrentResourceConfig(true).setExclude(getCurrentResourceConfigClone().isExcluded());
|
|
||||||
}
|
}
|
||||||
};
|
|
||||||
IRunnableWithProgress op = new WorkspaceModifyDelegatingOperation(runnable);
|
fOptionBlock.performApply(monitor);
|
||||||
try {
|
getCurrentResourceConfig(true).setExclude(getCurrentResourceConfigClone().isExcluded());
|
||||||
new ProgressMonitorDialog(getShell()).run(false, true, op);
|
|
||||||
} catch (InvocationTargetException e) {
|
|
||||||
Throwable e1 = e.getTargetException();
|
|
||||||
ManagedBuilderUIPlugin.errorDialog(getShell(), ManagedBuilderUIMessages.getResourceString("ManagedProjectPropertyPage.internalError"),e1.toString(), e1); //$NON-NLS-1$
|
|
||||||
return false;
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
// cancelled
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
};
|
||||||
// Write out the build model info
|
IRunnableWithProgress op = new WorkspaceModifyDelegatingOperation(runnable);
|
||||||
|
try {
|
||||||
|
new ProgressMonitorDialog(getShell()).run(false, true, op);
|
||||||
|
} catch (InvocationTargetException e) {
|
||||||
|
Throwable e1 = e.getTargetException();
|
||||||
|
ManagedBuilderUIPlugin.errorDialog(getShell(), ManagedBuilderUIMessages.getResourceString("ManagedProjectPropertyPage.internalError"),e1.toString(), e1); //$NON-NLS-1$
|
||||||
|
return false;
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
// cancelled
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Write out the build model info
|
||||||
ManagedBuildManager.setDefaultConfiguration(getProject(), getSelectedConfiguration());
|
ManagedBuildManager.setDefaultConfiguration(getProject(), getSelectedConfiguration());
|
||||||
|
|
||||||
if (getCurrentResourceConfigClone().isDirty()) {
|
if (getCurrentResourceConfigClone().isDirty()) {
|
||||||
|
@ -504,6 +504,7 @@ public class ResourceBuildPropertyPage extends AbstractBuildPropertyPage impleme
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean containsDefaults(){
|
public boolean containsDefaults(){
|
||||||
|
// Check for a non-default "excluded" value
|
||||||
if(getCurrentResourceConfigClone().isExcluded() != DEFAULT_EXCLUDE_VALUE)
|
if(getCurrentResourceConfigClone().isExcluded() != DEFAULT_EXCLUDE_VALUE)
|
||||||
return false;
|
return false;
|
||||||
return fOptionBlock.containsDefaults();
|
return fOptionBlock.containsDefaults();
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2002, 2005 IBM Corporation and others.
|
* Copyright (c) 2002, 2006 IBM Corporation and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -189,8 +189,10 @@ public class CProjectPlatformPage extends WizardPage {
|
||||||
showAllProjTypes.addListener(SWT.Selection, new Listener() {
|
showAllProjTypes.addListener(SWT.Selection, new Listener() {
|
||||||
public void handleEvent(Event e) {
|
public void handleEvent(Event e) {
|
||||||
populateTypes();
|
populateTypes();
|
||||||
platformSelection.select(0);
|
IProjectType type = projectTypes.contains(selectedProjectType)
|
||||||
handleTypeSelection();
|
? selectedProjectType
|
||||||
|
: (IProjectType) projectTypes.get(0);
|
||||||
|
setSelectedProjectType(type);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
showAllProjTypes.addDisposeListener(new DisposeListener() {
|
showAllProjTypes.addDisposeListener(new DisposeListener() {
|
||||||
|
|
Loading…
Add table
Reference in a new issue