我有一个首选项页面,里面有一个表格查看器,表格的每一行都是一个包含字符串,背景颜色和前景色的对象。
是否可以将此表查看器的数据存储在首选项存储中,因为首选项是键/值对,如何在单击“应用”时存储此信息,还可以在以后从首选项存储中填充该表?
@Override
protected void performApply() {
for (TableItem item : this.viewer.getTable().getItems()) {
Content c = (Content) item.getData();
String name = c.getName();
RGB bc = c.getBackgroundColor();
RGB fc = c.getForegroundColor();
}
}
谢谢
答案 0 :(得分:0)
没有标准的方法可以做到这一点。您可以使用一个带有逗号分隔值的条目或多个带有键名称为“xxx1”,“xxx2”的条目,....
对于RGB
值,StringConverter
类将转换为适合首选项的字符串:
RGB rgb = ...
String rgbString = StringConverter.asString(rgb);
RGB rgb = StringConverter.asRGB(rgbString);
(也处理许多其他类型)。
由于每行有三个值可以保存,因此每行使用三个首选项会更简单:
int row = 0;
for (TableItem item : this.viewer.getTable().getItems()) {
Content c = (Content) item.getData();
String name = c.getName();
RGB bc = c.getBackgroundColor();
RGB fc = c.getForegroundColor();
String nameKey = "name" + row;
String bcKey = "bc" + row;
String fcKey = "fc" + row;
prefStore.setValue(nameKey, name);
prefStore.setValue(bcKey, StringConverter.asString(bc));
prefStore.setValue(fcKey, StringConverter.asString(fc));
++row;
}
prefStore.setValue("rowCount", row);
读:
int rows = prefStore.getInt("rowCount");
for (int row = 0; row < rows; ++row) {
String nameKey = "name" + row;
String bcKey = "bc" + row;
String fcKey = "fc" + row;
String name = prefStore.getString(nameKey);
RGB bc = StringConverter.asRGB(prefStore.getString(bcKey));
RGB fc = StringConverter.asRGB(prefStore.getString(fcKey));
...
}