mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
bug 322695: Can't access preferences of any unrelated CDT project having "bad" project in workspace
This commit is contained in:
parent
cb668b62b8
commit
cb1a62793d
3 changed files with 36 additions and 26 deletions
|
@ -216,10 +216,11 @@ public class Messages extends NLS {
|
|||
public static String ProjectContentsArea_7;
|
||||
public static String ProjectContentsArea_8;
|
||||
public static String ProjectContentsArea_9;
|
||||
public static String RefsTab_0;
|
||||
public static String RefsTab_2;
|
||||
public static String RefsTab_3;
|
||||
public static String RefsTab_4;
|
||||
public static String RefsTab_ExpandAll;
|
||||
public static String RefsTab_CollapseAll;
|
||||
public static String RefsTab_Active;
|
||||
public static String RefsTab_ProjectsList;
|
||||
public static String RefsTab_ConfigurationsAccessError;
|
||||
public static String RenameConfiguration_error_caseName;
|
||||
public static String RenameConfiguration_error_duplicateName;
|
||||
public static String RenameConfiguration_error_invalidName;
|
||||
|
|
|
@ -165,10 +165,11 @@ LibraryPathTab_1=Add...
|
|||
LibraryPathTab_2=Edit...
|
||||
LibraryTab_1=Add...
|
||||
LibraryTab_2=Edit...
|
||||
RefsTab_0=Expand All
|
||||
RefsTab_2=Collapse All
|
||||
RefsTab_3=Active
|
||||
RefsTab_4=Projects list
|
||||
RefsTab_ExpandAll=Expand All
|
||||
RefsTab_CollapseAll=Collapse All
|
||||
RefsTab_Active=Active
|
||||
RefsTab_ProjectsList=Projects list
|
||||
RefsTab_ConfigurationsAccessError=Internal error trying access configurations of project
|
||||
SymbolTab_0=Symbol
|
||||
SymbolTab_1=Value
|
||||
SymbolTab_2=Add symbol
|
||||
|
|
|
@ -39,6 +39,7 @@ import org.eclipse.swt.widgets.TreeItem;
|
|||
|
||||
import org.eclipse.cdt.core.settings.model.ICConfigurationDescription;
|
||||
import org.eclipse.cdt.core.settings.model.ICResourceDescription;
|
||||
import org.eclipse.cdt.ui.CUIPlugin;
|
||||
|
||||
import org.eclipse.cdt.internal.ui.newui.Messages;
|
||||
|
||||
|
@ -52,7 +53,7 @@ public class RefsTab extends AbstractCPropertyTab {
|
|||
public Composite comp;
|
||||
private Tree tree;
|
||||
|
||||
static private final String ACTIVE = "[" + Messages.RefsTab_3 + "]"; //$NON-NLS-1$ //$NON-NLS-2$
|
||||
static private final String ACTIVE = "[" + Messages.RefsTab_Active + "]"; //$NON-NLS-1$ //$NON-NLS-2$
|
||||
|
||||
private static final int EXPAND_ALL_BUTTON = 0;
|
||||
private static final int COLLAPSE_ALL_BUTTON = 1;
|
||||
|
@ -63,8 +64,8 @@ public class RefsTab extends AbstractCPropertyTab {
|
|||
public void createControls(Composite parent) {
|
||||
super.createControls(parent);
|
||||
initButtons(new String[] {
|
||||
Messages.RefsTab_0,
|
||||
Messages.RefsTab_2,
|
||||
Messages.RefsTab_ExpandAll,
|
||||
Messages.RefsTab_CollapseAll,
|
||||
null,
|
||||
MOVEUP_STR,
|
||||
MOVEDOWN_STR}, 120);
|
||||
|
@ -73,10 +74,10 @@ public class RefsTab extends AbstractCPropertyTab {
|
|||
tree = new Tree(usercomp, SWT.SINGLE | SWT.CHECK | SWT.BORDER);
|
||||
tree.setLayoutData(new GridData(GridData.FILL_BOTH));
|
||||
tree.getAccessible().addAccessibleListener(
|
||||
new AccessibleAdapter() {
|
||||
new AccessibleAdapter() {
|
||||
@Override
|
||||
public void getName(AccessibleEvent e) {
|
||||
e.result = Messages.RefsTab_4;
|
||||
e.result = Messages.RefsTab_ProjectsList;
|
||||
}
|
||||
}
|
||||
);
|
||||
|
@ -134,12 +135,12 @@ public class RefsTab extends AbstractCPropertyTab {
|
|||
|
||||
tree.addTreeListener(new TreeListener() {
|
||||
public void treeCollapsed(TreeEvent e) {
|
||||
updateExpandButtons(e, false, true);
|
||||
updateExpandButtons(e, false, true);
|
||||
}
|
||||
public void treeExpanded(TreeEvent e) {
|
||||
updateExpandButtons(e, true, false);
|
||||
updateExpandButtons(e, true, false);
|
||||
}});
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -148,7 +149,7 @@ public class RefsTab extends AbstractCPropertyTab {
|
|||
{
|
||||
case COLLAPSE_ALL_BUTTON:
|
||||
case EXPAND_ALL_BUTTON:
|
||||
for (TreeItem item : tree.getItems())
|
||||
for (TreeItem item : tree.getItems())
|
||||
item.setExpanded(n==EXPAND_ALL_BUTTON);
|
||||
updateButtons();
|
||||
break;
|
||||
|
@ -185,7 +186,7 @@ public class RefsTab extends AbstractCPropertyTab {
|
|||
if (page.isMultiCfg()) {
|
||||
setAllVisible(false, null);
|
||||
} else {
|
||||
if (!usercomp.isVisible())
|
||||
if (!usercomp.isVisible())
|
||||
setAllVisible(true, null);
|
||||
initData();
|
||||
}
|
||||
|
@ -218,7 +219,7 @@ public class RefsTab extends AbstractCPropertyTab {
|
|||
|
||||
/**
|
||||
* Initialises the tree.
|
||||
*
|
||||
*
|
||||
* TreeItems are either
|
||||
* TI: Text , Data
|
||||
* {IProject.getName()} , {IProject}
|
||||
|
@ -253,8 +254,15 @@ public class RefsTab extends AbstractCPropertyTab {
|
|||
for (String pname : projects) {
|
||||
// The referenced configuration ID
|
||||
String ref = refs.get(pname);
|
||||
IProject prj = p.getWorkspace().getRoot().getProject(pname);
|
||||
ICConfigurationDescription[] cfgs = page.getCfgsReadOnly(prj);
|
||||
IProject prj;
|
||||
ICConfigurationDescription[] cfgs;
|
||||
try {
|
||||
prj = p.getWorkspace().getRoot().getProject(pname);
|
||||
cfgs = page.getCfgsReadOnly(prj);
|
||||
} catch (Exception e) {
|
||||
CUIPlugin.log(Messages.RefsTab_ConfigurationsAccessError+pname, e);
|
||||
continue;
|
||||
}
|
||||
if (cfgs == null || cfgs.length == 0) {
|
||||
// If the project is referenced, then make sure the user knows about it!
|
||||
if (ref != null) {
|
||||
|
@ -338,7 +346,7 @@ public class RefsTab extends AbstractCPropertyTab {
|
|||
getResDesc().getConfiguration().setReferenceInfo(new HashMap<String, String>());
|
||||
initData();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void updateButtons() {
|
||||
updateExpandButtons(null, false, false);
|
||||
|
@ -359,11 +367,11 @@ public class RefsTab extends AbstractCPropertyTab {
|
|||
continue;
|
||||
if (item.getExpanded())
|
||||
cntE = true;
|
||||
else
|
||||
else
|
||||
cntC = true;
|
||||
}
|
||||
buttonSetEnabled(EXPAND_ALL_BUTTON, cntC); // Expand All
|
||||
buttonSetEnabled(COLLAPSE_ALL_BUTTON, cntE); // Collapse all
|
||||
buttonSetEnabled(EXPAND_ALL_BUTTON, cntC); // Expand All
|
||||
buttonSetEnabled(COLLAPSE_ALL_BUTTON, cntE); // Collapse all
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -375,7 +383,7 @@ public class RefsTab extends AbstractCPropertyTab {
|
|||
// Is a project selected?
|
||||
if (ti.getParentItem() == null && ti.getChecked()) {
|
||||
int index = tree.indexOf(ti);
|
||||
buttonSetEnabled(MOVEUP_BUTTON, index > 0);
|
||||
buttonSetEnabled(MOVEUP_BUTTON, index > 0);
|
||||
buttonSetEnabled(MOVEDOWN_BUTTON, index < tree.getItemCount() - 1);
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue