提交 89a2634b 编写于 作者: S Serge Rider

OLC refactoring


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