mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Bug 388368 - Add Include Directory dialog should distinguish system and
non-system includes
This commit is contained in:
parent
c1bc445e74
commit
237db0f8be
3 changed files with 61 additions and 35 deletions
|
@ -1,5 +1,5 @@
|
|||
/*******************************************************************************
|
||||
* Copyright (c) 2010, 2012 Andrew Gvozdev and others.
|
||||
* Copyright (c) 2010, 2013 Andrew Gvozdev and others.
|
||||
* All rights reserved. This program and the accompanying materials
|
||||
* are made available under the terms of the Eclipse Public License v1.0
|
||||
* which accompanies this distribution, and is available at
|
||||
|
@ -7,6 +7,7 @@
|
|||
*
|
||||
* Contributors:
|
||||
* Andrew Gvozdev - initial API and implementation
|
||||
* Sergey Prigogin (Google)
|
||||
*******************************************************************************/
|
||||
package org.eclipse.cdt.internal.ui.language.settings.providers;
|
||||
|
||||
|
@ -63,16 +64,17 @@ public class LanguageSettingEntryDialog extends AbstractPropertyDialog {
|
|||
private Button buttonBrowse;
|
||||
private Button buttonVars;
|
||||
private Button checkBoxBuiltIn;
|
||||
private Button checkBoxSystem;
|
||||
private Button checkBoxFramework;
|
||||
|
||||
private Button buttonOk;
|
||||
private Button buttonCancel;
|
||||
|
||||
private static final int COMBO_INDEX_INCLUDE_PATH = 0;
|
||||
private static final int COMBO_INDEX_INCLUDE_DIR = 0;
|
||||
private static final int COMBO_INDEX_MACRO = 1;
|
||||
private static final int COMBO_INDEX_INCLUDE_FILE = 2;
|
||||
private static final int COMBO_INDEX_MACRO_FILE = 3;
|
||||
private static final int COMBO_INDEX_LIBRARY_PATH = 4;
|
||||
private static final int COMBO_INDEX_LIBRARY_DIR = 4;
|
||||
private static final int COMBO_INDEX_LIBRARY_FILE = 5;
|
||||
|
||||
final private String[] comboKindItems = {
|
||||
|
@ -142,7 +144,7 @@ public class LanguageSettingEntryDialog extends AbstractPropertyDialog {
|
|||
private int comboIndexToKind(int index) {
|
||||
int kind=0;
|
||||
switch (index) {
|
||||
case COMBO_INDEX_INCLUDE_PATH:
|
||||
case COMBO_INDEX_INCLUDE_DIR:
|
||||
kind = ICSettingEntry.INCLUDE_PATH;
|
||||
break;
|
||||
case COMBO_INDEX_MACRO:
|
||||
|
@ -154,7 +156,7 @@ public class LanguageSettingEntryDialog extends AbstractPropertyDialog {
|
|||
case COMBO_INDEX_MACRO_FILE:
|
||||
kind = ICSettingEntry.MACRO_FILE;
|
||||
break;
|
||||
case COMBO_INDEX_LIBRARY_PATH:
|
||||
case COMBO_INDEX_LIBRARY_DIR:
|
||||
kind = ICSettingEntry.LIBRARY_PATH;
|
||||
break;
|
||||
case COMBO_INDEX_LIBRARY_FILE:
|
||||
|
@ -168,7 +170,7 @@ public class LanguageSettingEntryDialog extends AbstractPropertyDialog {
|
|||
int index= 0;
|
||||
switch (kind) {
|
||||
case ICSettingEntry.INCLUDE_PATH:
|
||||
index = COMBO_INDEX_INCLUDE_PATH;
|
||||
index = COMBO_INDEX_INCLUDE_DIR;
|
||||
break;
|
||||
case ICSettingEntry.MACRO:
|
||||
index = COMBO_INDEX_MACRO;
|
||||
|
@ -180,7 +182,7 @@ public class LanguageSettingEntryDialog extends AbstractPropertyDialog {
|
|||
index = COMBO_INDEX_MACRO_FILE;
|
||||
break;
|
||||
case ICSettingEntry.LIBRARY_PATH:
|
||||
index = COMBO_INDEX_LIBRARY_PATH;
|
||||
index = COMBO_INDEX_LIBRARY_DIR;
|
||||
break;
|
||||
case ICSettingEntry.LIBRARY_FILE:
|
||||
index = COMBO_INDEX_LIBRARY_FILE;
|
||||
|
@ -228,7 +230,6 @@ public class LanguageSettingEntryDialog extends AbstractPropertyDialog {
|
|||
@Override
|
||||
public void widgetDefaultSelected(SelectionEvent e) {
|
||||
widgetSelected(e);
|
||||
|
||||
}
|
||||
});
|
||||
comboKind.setEnabled(clearValue);
|
||||
|
@ -371,6 +372,24 @@ public class LanguageSettingEntryDialog extends AbstractPropertyDialog {
|
|||
}
|
||||
});
|
||||
|
||||
// Checkbox "Contains system includes"
|
||||
checkBoxSystem = new Button(compCheckboxes, SWT.CHECK);
|
||||
checkBoxSystem.setText(Messages.LanguageSettingEntryDialog_ContainsSystemHeaders);
|
||||
checkBoxSystem.setSelection(entry != null && (entry.getFlags() & ICSettingEntry.LOCAL) == 0);
|
||||
gd = new GridData(GridData.FILL_HORIZONTAL);
|
||||
checkBoxSystem.setLayoutData(gd);
|
||||
checkBoxSystem.addSelectionListener(new SelectionListener() {
|
||||
@Override
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
updateImages();
|
||||
setButtons();
|
||||
}
|
||||
@Override
|
||||
public void widgetDefaultSelected(SelectionEvent e) {
|
||||
widgetSelected(e);
|
||||
}
|
||||
});
|
||||
|
||||
// Checkbox "Framework folder"
|
||||
checkBoxFramework = new Button(compCheckboxes, SWT.CHECK);
|
||||
checkBoxFramework.setText(Messages.LanguageSettingEntryDialog_FrameworkFolder);
|
||||
|
@ -437,6 +456,9 @@ public class LanguageSettingEntryDialog extends AbstractPropertyDialog {
|
|||
|
||||
private void setButtons() {
|
||||
int kindSelectionIndex = comboKind.getSelectionIndex();
|
||||
boolean isIncludeDirSelected = (kindSelectionIndex == COMBO_INDEX_INCLUDE_DIR);
|
||||
checkBoxSystem.setVisible(isIncludeDirSelected);
|
||||
checkBoxFramework.setVisible(isIncludeDirSelected);
|
||||
boolean isMacroSelected = (kindSelectionIndex == COMBO_INDEX_MACRO);
|
||||
comboPathCategory.setVisible(!isMacroSelected);
|
||||
buttonBrowse.setVisible(!isMacroSelected);
|
||||
|
@ -451,8 +473,8 @@ public class LanguageSettingEntryDialog extends AbstractPropertyDialog {
|
|||
((GridData) buttonVars.getLayoutData()).exclude = isMacroSelected;
|
||||
|
||||
switch (kindSelectionIndex) {
|
||||
case COMBO_INDEX_INCLUDE_PATH:
|
||||
case COMBO_INDEX_LIBRARY_PATH:
|
||||
case COMBO_INDEX_INCLUDE_DIR:
|
||||
case COMBO_INDEX_LIBRARY_DIR:
|
||||
labelInput.setText(Messages.LanguageSettingEntryDialog_Path);
|
||||
break;
|
||||
case COMBO_INDEX_INCLUDE_FILE:
|
||||
|
@ -472,8 +494,8 @@ public class LanguageSettingEntryDialog extends AbstractPropertyDialog {
|
|||
boolean isWorkspaceSelected = (indexPathKind == COMBO_PATH_INDEX_WORKSPACE);
|
||||
boolean isFilesystemSelected = (indexPathKind == COMBO_PATH_INDEX_FILESYSTEM);
|
||||
|
||||
String path = inputName.getText();
|
||||
if (path.trim().length() == 0) {
|
||||
String path = inputName.getText().trim();
|
||||
if (path.isEmpty()) {
|
||||
buttonOk.setEnabled(false);
|
||||
} else {
|
||||
buttonOk.setEnabled((isProjectSelected && !path.startsWith(SLASH)) ||
|
||||
|
@ -489,27 +511,28 @@ public class LanguageSettingEntryDialog extends AbstractPropertyDialog {
|
|||
public void buttonPressed(SelectionEvent e) {
|
||||
String str = null;
|
||||
if (e.widget.equals(buttonOk)) {
|
||||
String name = inputName.getText();
|
||||
String name = inputName.getText().trim();
|
||||
text1 = name;
|
||||
String value = inputValue.getText();
|
||||
String value = inputValue.getText().trim();
|
||||
result = true;
|
||||
|
||||
int flagBuiltIn = checkBoxBuiltIn.getSelection() ? ICSettingEntry.BUILTIN : 0;
|
||||
int flagFramework = checkBoxFramework.getSelection() ? ICSettingEntry.FRAMEWORKS_MAC : 0;
|
||||
int flagBuiltIn = checkBoxBuiltIn.isVisible() && checkBoxBuiltIn.getSelection() ? ICSettingEntry.BUILTIN : 0;
|
||||
int flagSystem = checkBoxSystem.isVisible() && checkBoxSystem.getSelection() ? 0 : ICSettingEntry.LOCAL;
|
||||
int flagFramework = checkBoxFramework.isVisible() && checkBoxFramework.getSelection() ? ICSettingEntry.FRAMEWORKS_MAC : 0;
|
||||
int indexPathKind = comboPathCategory.getSelectionIndex();
|
||||
int kind = comboKind.getSelectionIndex();
|
||||
boolean isProjectPath = indexPathKind == COMBO_PATH_INDEX_PROJECT;
|
||||
boolean isWorkspacePath = (kind != COMBO_INDEX_MACRO) && (isProjectPath || indexPathKind == COMBO_PATH_INDEX_WORKSPACE);
|
||||
int flagWorkspace = isWorkspacePath ? ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED : 0;
|
||||
int flags = flagBuiltIn | flagWorkspace | flagFramework;
|
||||
int flags = flagBuiltIn | flagWorkspace | flagSystem | flagFramework;
|
||||
|
||||
ICLanguageSettingEntry entry = null;
|
||||
switch (comboKind.getSelectionIndex()) {
|
||||
case COMBO_INDEX_INCLUDE_PATH:
|
||||
switch (kind) {
|
||||
case COMBO_INDEX_INCLUDE_DIR:
|
||||
entry = CDataUtil.createCIncludePathEntry(name, flags);
|
||||
break;
|
||||
case COMBO_INDEX_MACRO:
|
||||
// note that value=null is not supported by CMacroEntry
|
||||
// Note that value=null is not supported by CMacroEntry
|
||||
entry = CDataUtil.createCMacroEntry(name, value, flags);
|
||||
break;
|
||||
case COMBO_INDEX_INCLUDE_FILE:
|
||||
|
@ -518,7 +541,7 @@ public class LanguageSettingEntryDialog extends AbstractPropertyDialog {
|
|||
case COMBO_INDEX_MACRO_FILE:
|
||||
entry = CDataUtil.createCMacroFileEntry(name, flags);
|
||||
break;
|
||||
case COMBO_INDEX_LIBRARY_PATH:
|
||||
case COMBO_INDEX_LIBRARY_DIR:
|
||||
entry = CDataUtil.createCLibraryPathEntry(name, flags);
|
||||
break;
|
||||
case COMBO_INDEX_LIBRARY_FILE:
|
||||
|
@ -536,8 +559,8 @@ public class LanguageSettingEntryDialog extends AbstractPropertyDialog {
|
|||
boolean isDirectory = false;
|
||||
boolean isFile = false;
|
||||
switch (comboKind.getSelectionIndex()) {
|
||||
case COMBO_INDEX_INCLUDE_PATH:
|
||||
case COMBO_INDEX_LIBRARY_PATH:
|
||||
case COMBO_INDEX_INCLUDE_DIR:
|
||||
case COMBO_INDEX_LIBRARY_DIR:
|
||||
isDirectory = true;
|
||||
break;
|
||||
case COMBO_INDEX_INCLUDE_FILE:
|
||||
|
@ -552,25 +575,25 @@ public class LanguageSettingEntryDialog extends AbstractPropertyDialog {
|
|||
if (isDirectory) {
|
||||
switch (comboPathCategory.getSelectionIndex()) {
|
||||
case COMBO_PATH_INDEX_WORKSPACE:
|
||||
str = AbstractCPropertyTab.getWorkspaceDirDialog(shell, inputName.getText());
|
||||
str = AbstractCPropertyTab.getWorkspaceDirDialog(shell, inputName.getText().trim());
|
||||
break;
|
||||
case COMBO_PATH_INDEX_PROJECT:
|
||||
str = AbstractCPropertyTab.getProjectDirDialog(shell, inputName.getText(), project);
|
||||
str = AbstractCPropertyTab.getProjectDirDialog(shell, inputName.getText().trim(), project);
|
||||
break;
|
||||
case COMBO_PATH_INDEX_FILESYSTEM:
|
||||
str = AbstractCPropertyTab.getFileSystemDirDialog(shell, inputName.getText());
|
||||
str = AbstractCPropertyTab.getFileSystemDirDialog(shell, inputName.getText().trim());
|
||||
break;
|
||||
}
|
||||
} else if (isFile) {
|
||||
switch (comboPathCategory.getSelectionIndex()) {
|
||||
case COMBO_PATH_INDEX_WORKSPACE:
|
||||
str = AbstractCPropertyTab.getWorkspaceFileDialog(shell, inputName.getText());
|
||||
str = AbstractCPropertyTab.getWorkspaceFileDialog(shell, inputName.getText().trim());
|
||||
break;
|
||||
case COMBO_PATH_INDEX_PROJECT:
|
||||
str = AbstractCPropertyTab.getProjectFileDialog(shell, inputName.getText(), project);
|
||||
str = AbstractCPropertyTab.getProjectFileDialog(shell, inputName.getText().trim(), project);
|
||||
break;
|
||||
case COMBO_PATH_INDEX_FILESYSTEM:
|
||||
str = AbstractCPropertyTab.getFileSystemFileDialog(shell, inputName.getText());
|
||||
str = AbstractCPropertyTab.getFileSystemFileDialog(shell, inputName.getText().trim());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -600,10 +623,11 @@ public class LanguageSettingEntryDialog extends AbstractPropertyDialog {
|
|||
|
||||
int kind = comboIndexToKind(indexEntryKind);
|
||||
int flagBuiltin = checkBoxBuiltIn.getSelection() ? ICSettingEntry.BUILTIN : 0;
|
||||
int flagSystem = checkBoxSystem.getSelection() ? 0 : ICSettingEntry.LOCAL;
|
||||
int flagFramework = checkBoxFramework.getSelection() ? ICSettingEntry.FRAMEWORKS_MAC : 0;
|
||||
boolean isWorkspacePath = indexPathKind == COMBO_PATH_INDEX_PROJECT || indexPathKind == COMBO_PATH_INDEX_WORKSPACE;
|
||||
int flagWorkspace = isWorkspacePath ? ICSettingEntry.VALUE_WORKSPACE_PATH | ICSettingEntry.RESOLVED : 0;
|
||||
int flags = flagBuiltin | flagWorkspace | flagFramework;
|
||||
int flags = flagBuiltin | flagWorkspace | flagSystem | flagFramework;
|
||||
Image image = LanguageSettingsImages.getImage(kind, flags, indexPathKind == COMBO_PATH_INDEX_PROJECT);
|
||||
|
||||
iconComboKind.setImage(image);
|
||||
|
|
|
@ -192,6 +192,7 @@ public class Messages extends NLS {
|
|||
public static String IncludeTab_import;
|
||||
public static String LanguageSettingEntryDialog_Add;
|
||||
public static String LanguageSettingEntryDialog_BuiltInFlag;
|
||||
public static String LanguageSettingEntryDialog_ContainsSystemHeaders;
|
||||
public static String LanguageSettingEntryDialog_Directory;
|
||||
public static String LanguageSettingEntryDialog_File;
|
||||
public static String LanguageSettingEntryDialog_Filesystem;
|
||||
|
|
|
@ -169,9 +169,10 @@ IncludeDialog_2=Add to all configurations
|
|||
IncludeDialog_3=Add to all languages
|
||||
LanguageSettingEntryDialog_Add=Add
|
||||
LanguageSettingEntryDialog_BuiltInFlag=Treat as built-in
|
||||
LanguageSettingEntryDialog_Directory=Dir:
|
||||
LanguageSettingEntryDialog_ContainsSystemHeaders=Contains system headers
|
||||
LanguageSettingEntryDialog_Directory=Directory:
|
||||
LanguageSettingEntryDialog_File=File:
|
||||
LanguageSettingEntryDialog_Filesystem=Filesystem
|
||||
LanguageSettingEntryDialog_Filesystem=File System Path
|
||||
LanguageSettingEntryDialog_FrameworkFolder=Framework folder (Mac only)
|
||||
LanguageSettingEntryDialog_IncludeDirectory=Include Directory
|
||||
LanguageSettingEntryDialog_IncludeFile=Include File
|
||||
|
|
Loading…
Add table
Reference in a new issue