1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-09-07 18:43:32 +02:00

bug 274684: Indicators of string list modes for multi-configuration edits look like debug texts

Added higher level getter and setter for dealing with the string list properties in consistent way
This commit is contained in:
Andrew Gvozdev 2010-12-06 21:01:03 +00:00
parent b9c7e81375
commit 7047d32a98
6 changed files with 98 additions and 34 deletions

View file

@ -82,16 +82,14 @@ public class PropertyMultiCfgTab extends AbstractCPropertyTab {
w_1 = new Button(wGrp, SWT.RADIO);
w_1.setText(Messages.PropertyMultiCfgTab_11);
switch (CDTPrefUtil.getInt(CDTPrefUtil.KEY_DMODE)) {
switch (CDTPrefUtil.getMultiCfgStringListDisplayMode()) {
case CDTPrefUtil.DMODE_CONJUNCTION: d_1.setSelection(true); break;
case CDTPrefUtil.DMODE_DISJUNCTION: d_2.setSelection(true); break;
default: d_1.setSelection(true); break;
}
switch (CDTPrefUtil.getInt(CDTPrefUtil.KEY_WMODE)) {
switch (CDTPrefUtil.getMultiCfgStringListWriteMode()) {
case CDTPrefUtil.WMODE_MODIFY: w_0.setSelection(true); break;
case CDTPrefUtil.WMODE_REPLACE: w_1.setSelection(true); break;
default: w_0.setSelection(true); break;
}
}
@ -102,13 +100,13 @@ public class PropertyMultiCfgTab extends AbstractCPropertyTab {
x = CDTPrefUtil.DMODE_CONJUNCTION;
else if (d_2.getSelection())
x = CDTPrefUtil.DMODE_DISJUNCTION;
CDTPrefUtil.setInt(CDTPrefUtil.KEY_DMODE, x);
CDTPrefUtil.setMultiCfgStringListDisplayMode(x);
if (w_0.getSelection())
x = CDTPrefUtil.WMODE_MODIFY;
else if (w_1.getSelection())
x = CDTPrefUtil.WMODE_REPLACE;
CDTPrefUtil.setInt(CDTPrefUtil.KEY_WMODE, x);
CDTPrefUtil.setMultiCfgStringListWriteMode(x);
}
@Override

View file

@ -233,7 +233,7 @@ public class CPropertyVarsTab extends AbstractCPropertyTab {
private void replaceMacros() {
if (!page.isMultiCfg() ||
cfgd == null ||
CDTPrefUtil.getInt(CDTPrefUtil.KEY_WMODE) != CDTPrefUtil.WMODE_REPLACE)
CDTPrefUtil.getMultiCfgStringListWriteMode() != CDTPrefUtil.WMODE_REPLACE)
return;
ICdtVariable[] vars = getVariables();
for (int i=0; i<vars.length; i++)

View file

@ -705,7 +705,7 @@ public abstract class AbstractCPropertyTab implements ICPropertyTab {
* entries are preserved.
*/
protected boolean isWModifyMode() {
int wmode = CDTPrefUtil.getInt(CDTPrefUtil.KEY_WMODE);
int wmode = CDTPrefUtil.getMultiCfgStringListWriteMode();
return (wmode == CDTPrefUtil.WMODE_MODIFY);
}

View file

@ -58,12 +58,18 @@ public class CDTPrefUtil {
public static final int DISC_NAMING_ALWAYS_IDS = 3;
public static final int DISC_NAMING_DEFAULT = DISC_NAMING_UNIQUE_OR_BOTH;
/** Property key used for string list display mode for multi-configuration edits (conjunction/disjunction) */
public static final String KEY_DMODE = "properties.multi.displ.mode"; //$NON-NLS-1$
/** Conjunction implies showing only common elements (intersection) */
public static final int DMODE_CONJUNCTION = 1;
/** Disjunction implies showing all elements (union) */
public static final int DMODE_DISJUNCTION = 2;
/** Property key used for string list write mode for multi-configuration edits (modify/replace) */
public static final String KEY_WMODE = "properties.multi.write.mode"; //$NON-NLS-1$
/** Modify implies changing only given elements and not changing any others */
public static final int WMODE_MODIFY = 4;
/** Replace implies replacing the whole list with the given one, overwriting old entries */
public static final int WMODE_REPLACE = 8;
public static final String NULL = "NULL"; //$NON-NLS-1$
@ -115,17 +121,69 @@ public class CDTPrefUtil {
setStr(KEY_PREFTC, b.toString().trim());
}
/**
* Returns string list display mode for multi-configuration edits (conjunction/disjunction).
*
* @return the mode which can be either {@link CDTPrefUtil#DMODE_CONJUNCTION} (default value)
* or else {@link CDTPrefUtil#DMODE_DISJUNCTION}.
*
* @since 5.3
*/
public static int getMultiCfgStringListDisplayMode() {
int mode = getInt(KEY_DMODE);
if (mode!=DMODE_CONJUNCTION && mode!=DMODE_DISJUNCTION) {
mode = DMODE_CONJUNCTION;
}
return mode;
}
/**
* Sets string list display mode for multi-configuration edits (conjunction/disjunction).
*
* @param mode must be either {@link CDTPrefUtil#DMODE_CONJUNCTION}
* or {@link CDTPrefUtil#DMODE_DISJUNCTION}.
*
* @since 5.3
*/
public static void setMultiCfgStringListDisplayMode(int mode) {
setInt(KEY_DMODE, mode);
}
/**
* Returns string list write mode for multi-configuration edits (modify/replace).
*
* @return the mode which can be either {@link CDTPrefUtil#WMODE_MODIFY} (default value)
* or else {@link CDTPrefUtil#WMODE_REPLACE}.
*
* @since 5.3
*/
public static int getMultiCfgStringListWriteMode() {
int mode = getInt(KEY_WMODE);
if (mode!=WMODE_MODIFY && mode!=WMODE_REPLACE) {
mode = WMODE_MODIFY;
}
return mode;
}
/**
* Sets string list write mode for multi-configuration edits (modify/replace).
*
* @param mode must be either {@link CDTPrefUtil#WMODE_MODIFY}
* or {@link CDTPrefUtil#WMODE_REPLACE}.
*
* @since 5.3
*/
public static void setMultiCfgStringListWriteMode(int mode) {
setInt(KEY_WMODE, mode);
}
/**
* @deprecated as of CDT 8.0. Use {@link StringListModeControl} to display string list modes.
*/
@SuppressWarnings("fallthrough")
@Deprecated
public static String getDMode() {
String s = null;
switch(getInt(KEY_DMODE)) {
default:
setInt(KEY_DMODE, DMODE_CONJUNCTION);
// fallthrough
switch(getMultiCfgStringListDisplayMode()) {
case DMODE_CONJUNCTION:
s = Messages.EnvironmentTab_17;
break;
@ -139,14 +197,10 @@ public class CDTPrefUtil {
/**
* @deprecated as of CDT 8.0. Use {@link StringListModeControl} to display string list modes.
*/
@SuppressWarnings("fallthrough")
@Deprecated
public static String getWMode() {
String s = null;
switch(getInt(KEY_WMODE)) {
default:
setInt(KEY_WMODE, WMODE_MODIFY);
// fallthrough
switch(getMultiCfgStringListWriteMode()) {
case WMODE_MODIFY:
s = Messages.EnvironmentTab_24;
break;
@ -157,33 +211,45 @@ public class CDTPrefUtil {
return Messages.EnvironmentTab_22 + s;
}
/**
* Toggle string list display mode: conjunction <-> disjunction.
*/
public static void spinDMode() {
setInt(KEY_DMODE,
((getInt(KEY_DMODE) == DMODE_CONJUNCTION) ?
DMODE_DISJUNCTION :
DMODE_CONJUNCTION));
int mode = getMultiCfgStringListDisplayMode();
if (mode==DMODE_CONJUNCTION) {
mode = DMODE_DISJUNCTION;
} else {
mode = DMODE_CONJUNCTION;
}
setMultiCfgStringListDisplayMode(mode);
}
/**
* Toggle string list display mode: modify <-> replace.
*/
public static void spinWMode() {
setInt(KEY_WMODE,
((getInt(KEY_WMODE) == WMODE_MODIFY) ?
WMODE_REPLACE :
WMODE_MODIFY));
int mode = getMultiCfgStringListWriteMode();
if (mode==WMODE_MODIFY) {
mode = WMODE_REPLACE;
} else {
mode = WMODE_MODIFY;
}
setMultiCfgStringListWriteMode(mode);
}
public static final String[] getStrListForDisplay(String[][] input) {
return getStrListForDisplay(input, getInt(KEY_DMODE));
return getStrListForDisplay(input, getMultiCfgStringListDisplayMode());
}
private static final String[] getStrListForDisplay(String[][] input, int mode) {
Object[] ob = getListForDisplay(input, getInt(KEY_DMODE), null);
Object[] ob = getListForDisplay(input, getMultiCfgStringListDisplayMode(), null);
String[] ss = new String[ob.length];
System.arraycopy(ob, 0, ss, 0, ob.length);
return ss;
}
public static final Object[] getListForDisplay(Object[][] input, Comparator<Object> cmp) {
return getListForDisplay(input, getInt(KEY_DMODE), cmp);
return getListForDisplay(input, getMultiCfgStringListDisplayMode(), cmp);
}
/**
* Utility method forms string list
@ -205,7 +271,7 @@ public class CDTPrefUtil {
if (s1 == null ||
s1.length == 0)
return EMPTY_ARRAY;
if (getInt(KEY_DMODE) == DMODE_CONJUNCTION)
if (getMultiCfgStringListDisplayMode() == DMODE_CONJUNCTION)
{
ArrayList<Object> lst = new ArrayList<Object>();
for (int i=0; i<s1.length; i++) {

View file

@ -164,12 +164,12 @@ public class MultiCfgContributedEnvironment implements IContributedEnvironment {
private int getDispMode(ICConfigurationDescription des) {
if (isMulti && des instanceof MultiItemsHolder)
return CDTPrefUtil.getInt(CDTPrefUtil.KEY_DMODE);
return CDTPrefUtil.getMultiCfgStringListDisplayMode();
return 0;
}
private boolean isModifyMode() {
int wmode = CDTPrefUtil.getInt(CDTPrefUtil.KEY_WMODE);
int wmode = CDTPrefUtil.getMultiCfgStringListWriteMode();
return (wmode == CDTPrefUtil.WMODE_MODIFY);
}

View file

@ -106,7 +106,7 @@ public class StringListModeControl {
if (isMultiCfg) {
String modeUnknown = Messages.AbstractLangsListTab_UnknownMode;
String modeDisplay = modeUnknown;
switch (CDTPrefUtil.getInt(CDTPrefUtil.KEY_DMODE)) {
switch (CDTPrefUtil.getMultiCfgStringListDisplayMode()) {
case CDTPrefUtil.DMODE_CONJUNCTION:
modeDisplay = Messages.AbstractLangsListTab_Conjunction;
break;
@ -116,7 +116,7 @@ public class StringListModeControl {
}
String modeWrite = modeUnknown;
switch (CDTPrefUtil.getInt(CDTPrefUtil.KEY_WMODE)) {
switch (CDTPrefUtil.getMultiCfgStringListWriteMode()) {
case CDTPrefUtil.WMODE_MODIFY:
modeWrite = Messages.AbstractLangsListTab_Modify;
break;