提交 51cce0fb 编写于 作者: S Serge Rider

OLC refactoring

上级 f5bdd944
......@@ -104,12 +104,32 @@ public class ViewerColumnController {
}
public void addColumn(String name, String description, int style, boolean defaultVisible, boolean required, CellLabelProvider labelProvider)
{
addColumn(name, description, style, defaultVisible, required, null, labelProvider, null);
}
public void addColumn(String name, String description, int style, boolean defaultVisible, boolean required, Object userData, CellLabelProvider labelProvider, EditingSupport editingSupport)
{
columns.add(
new ColumnInfo(name, description, style, defaultVisible, required, labelProvider, columns.size()));
new ColumnInfo(
name,
description,
style,
defaultVisible,
required,
userData,
labelProvider,
editingSupport,
columns.size()));
}
public void clearColumns() {
for (ColumnInfo columnInfo : columns) {
if (columnInfo.column != null) {
columnInfo.column.dispose();
columnInfo.column = null;
}
}
columns.clear();
}
......@@ -188,8 +208,10 @@ public class ViewerColumnController {
boolean hasLazyColumns = false;
for (final ColumnInfo columnInfo : getVisibleColumns()) {
final Item colItem;
ViewerColumn viewerColumn;
if (viewer instanceof TreeViewer) {
final TreeViewerColumn item = new TreeViewerColumn((TreeViewer) viewer, columnInfo.style);
viewerColumn = item;
final TreeColumn column = item.getColumn();
colItem = column;
column.setText(columnInfo.name);
......@@ -198,7 +220,6 @@ public class ViewerColumnController {
if (!CommonUtils.isEmpty(columnInfo.description)) {
column.setToolTipText(columnInfo.description);
}
item.setLabelProvider(columnInfo.labelProvider);
column.addControlListener(new ControlAdapter() {
@Override
public void controlResized(ControlEvent e)
......@@ -210,6 +231,7 @@ public class ViewerColumnController {
columnInfo.column = column;
} else if (viewer instanceof TableViewer) {
final TableViewerColumn item = new TableViewerColumn((TableViewer) viewer, columnInfo.style);
viewerColumn = item;
final TableColumn column = item.getColumn();
colItem = column;
column.setText(columnInfo.name);
......@@ -218,7 +240,6 @@ public class ViewerColumnController {
if (!CommonUtils.isEmpty(columnInfo.description)) {
column.setToolTipText(columnInfo.description);
}
item.setLabelProvider(columnInfo.labelProvider);
column.addControlListener(new ControlAdapter() {
@Override
public void controlResized(ControlEvent e)
......@@ -231,6 +252,8 @@ public class ViewerColumnController {
} else {
continue;
}
viewerColumn.setLabelProvider(columnInfo.labelProvider);
viewerColumn.setEditingSupport(columnInfo.editingSupport);
colItem.setData(columnInfo);
if (columnInfo.labelProvider instanceof ILazyLabelProvider) {
hasLazyColumns = true;
......@@ -329,7 +352,9 @@ public class ViewerColumnController {
final int style;
final boolean defaultVisible;
final boolean required;
final Object userData;
final CellLabelProvider labelProvider;
final EditingSupport editingSupport;
boolean visible;
int order;
......@@ -337,15 +362,17 @@ public class ViewerColumnController {
Item column;
SortListener sortListener;
private ColumnInfo(String name, String description, int style, boolean defaultVisible, boolean required, CellLabelProvider labelProvider, int order)
private ColumnInfo(String name, String description, int style, boolean defaultVisible, boolean required, Object userData, CellLabelProvider labelProvider, EditingSupport editingSupport, int order)
{
this.name = name;
this.description = description;
this.style = style;
this.defaultVisible = defaultVisible;
this.required = required;
this.userData = userData;
this.visible = defaultVisible;
this.labelProvider = labelProvider;
this.editingSupport = editingSupport;
this.order = order;
}
......
......@@ -36,6 +36,7 @@ import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.core.CoreMessages;
import org.jkiss.dbeaver.core.DBeaverUI;
import org.jkiss.dbeaver.model.DBConstants;
import org.jkiss.dbeaver.model.DBPImage;
import org.jkiss.dbeaver.model.preferences.DBPPropertyDescriptor;
import org.jkiss.dbeaver.model.IDataSourceContainerProvider;
......@@ -63,7 +64,6 @@ public abstract class ObjectListControl<OBJECT_TYPE> extends ProgressPageControl
private static final Log log = Log.getLog(ObjectListControl.class);
private final static LazyValue DEF_LAZY_VALUE = new LazyValue("..."); //$NON-NLS-1$
private final static String DATA_OBJECT_COLUMN = "objectColumn"; //$NON-NLS-1$
private final static int LAZY_LOAD_DELAY = 100;
private final static Object NULL_VALUE = new Object();
......@@ -189,9 +189,15 @@ public abstract class ObjectListControl<OBJECT_TYPE> extends ProgressPageControl
setInfo(status);
}
});
}
// Columns controller
columnController = new ViewerColumnController("NodeList", getItemsViewer());
/**
* Usd to save/load columns configuration.
* Must depend on object types
*/
@NotNull
protected String getListTypeId() {
return getClass().getSimpleName();
}
protected int getDefaultListStyle() {
......@@ -354,13 +360,14 @@ public abstract class ObjectListControl<OBJECT_TYPE> extends ProgressPageControl
if (itemsControl.isDisposed()) {
return;
}
columnController.clearColumns();
itemsControl.setRedraw(false);
try {
final boolean reload = !append && (objectList == null) || (columns.isEmpty());
if (reload) {
clearListData();
columnController = new ViewerColumnController(getListTypeId(), getItemsViewer());
}
{
......@@ -482,6 +489,11 @@ public abstract class ObjectListControl<OBJECT_TYPE> extends ProgressPageControl
public void clearListData()
{
if (columnController != null) {
columnController.clearColumns();
columnController = null;
}
for (ObjectColumn column : columns) {
column.item.dispose();
}
......@@ -753,10 +765,17 @@ public abstract class ObjectListControl<OBJECT_TYPE> extends ProgressPageControl
objectColumn = new ObjectColumn(newColumn, columnItem, prop.getId(), prop.getDisplayName());
objectColumn.addProperty(propClass, prop);
this.columns.add(objectColumn);
columnItem.setData(DATA_OBJECT_COLUMN, objectColumn);
// Add column in controller
columnController.addColumn(prop.getDisplayName(), prop.getDescription(), numeric ? SWT.RIGHT : SWT.NONE, true, false, labelProvider);
columnController.addColumn(
prop.getDisplayName(),
prop.getDescription(),
numeric ? SWT.RIGHT : SWT.NONE,
prop.isViewable(),
prop.getId().equals(DBConstants.PROP_ID_NAME),
objectColumn,
labelProvider,
editingSupport);
} else {
objectColumn.addProperty(propClass, prop);
String oldTitle = objectColumn.item.getText();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册