提交 178d3afe 编写于 作者: S serge-rider

#6569 Project explorer columns visibility fix

上级 ae8bdec8
...@@ -61,6 +61,7 @@ public class ViewerColumnController<COLUMN, ELEMENT> { ...@@ -61,6 +61,7 @@ public class ViewerColumnController<COLUMN, ELEMENT> {
private boolean clickOnHeader; private boolean clickOnHeader;
private boolean isPacking, isInitializing; private boolean isPacking, isInitializing;
private DBIcon defaultIcon; private DBIcon defaultIcon;
private boolean forceAutoSize;
private transient Listener menuListener; private transient Listener menuListener;
...@@ -110,6 +111,10 @@ public class ViewerColumnController<COLUMN, ELEMENT> { ...@@ -110,6 +111,10 @@ public class ViewerColumnController<COLUMN, ELEMENT> {
return clickOnHeader; return clickOnHeader;
} }
public void setForceAutoSize(boolean forceAutoSize) {
this.forceAutoSize = forceAutoSize;
}
public void setDefaultIcon(DBIcon defaultIcon) { public void setDefaultIcon(DBIcon defaultIcon) {
this.defaultIcon = defaultIcon; this.defaultIcon = defaultIcon;
} }
...@@ -212,6 +217,9 @@ public class ViewerColumnController<COLUMN, ELEMENT> { ...@@ -212,6 +217,9 @@ public class ViewerColumnController<COLUMN, ELEMENT> {
} }
} }
createVisibleColumns(); createVisibleColumns();
if (needRefresh) {
viewer.refresh();
}
if (pack && !isAllSized()) { if (pack && !isAllSized()) {
repackColumns(); repackColumns();
control.addControlListener(new ControlAdapter() { control.addControlListener(new ControlAdapter() {
...@@ -223,16 +231,12 @@ public class ViewerColumnController<COLUMN, ELEMENT> { ...@@ -223,16 +231,12 @@ public class ViewerColumnController<COLUMN, ELEMENT> {
} }
} }
}); });
} } else if (needRefresh && pack) {
if (needRefresh && pack) { for (ColumnInfo columnInfo : getVisibleColumns()) {
viewer.refresh(); if (columnInfo.column instanceof TreeColumn) {
if (needRefresh || !isAllSized()) { ((TreeColumn) columnInfo.column).pack();
for (ColumnInfo columnInfo : getVisibleColumns()) { } else {
if (columnInfo.column instanceof TreeColumn) { ((TableColumn) columnInfo.column).pack();
((TreeColumn) columnInfo.column).pack();
} else {
((TableColumn) columnInfo.column).pack();
}
} }
} }
} }
...@@ -265,10 +269,10 @@ public class ViewerColumnController<COLUMN, ELEMENT> { ...@@ -265,10 +269,10 @@ public class ViewerColumnController<COLUMN, ELEMENT> {
if (((TreeViewer) viewer).getTree().getColumnCount() == 2) { if (((TreeViewer) viewer).getTree().getColumnCount() == 2) {
ratios = new float[]{0.6f, 0.4f}; ratios = new float[]{0.6f, 0.4f};
} }
UIUtils.packColumns(((TreeViewer) viewer).getTree(), false, ratios); UIUtils.packColumns(((TreeViewer) viewer).getTree(), forceAutoSize, ratios);
} else if (viewer instanceof TableViewer) { } else if (viewer instanceof TableViewer) {
itemCount = ((TableViewer) viewer).getTable().getItemCount(); itemCount = ((TableViewer) viewer).getTable().getItemCount();
UIUtils.packColumns(((TableViewer)viewer).getTable()); UIUtils.packColumns(((TableViewer)viewer).getTable(), forceAutoSize);
} }
if (itemCount == 0) { if (itemCount == 0) {
...@@ -293,6 +297,17 @@ public class ViewerColumnController<COLUMN, ELEMENT> { ...@@ -293,6 +297,17 @@ public class ViewerColumnController<COLUMN, ELEMENT> {
} }
} }
public void autoSizeColumns() {
UIUtils.asyncExec(() -> {
Control control = this.viewer.getControl();
if (control instanceof Tree) {
UIUtils.packColumns((Tree) control, true, null);
} else if (control instanceof Table) {
UIUtils.packColumns((Table) control, true);
}
});
}
public void sortByColumn(int index, int direction) { public void sortByColumn(int index, int direction) {
final ColumnInfo columnInfo = columns.get(index); final ColumnInfo columnInfo = columns.get(index);
columnInfo.sortListener.sortViewer(columnInfo.column, direction); columnInfo.sortListener.sortViewer(columnInfo.column, direction);
...@@ -462,13 +477,14 @@ public class ViewerColumnController<COLUMN, ELEMENT> { ...@@ -462,13 +477,14 @@ public class ViewerColumnController<COLUMN, ELEMENT> {
return newArray; return newArray;
} }
public void configureColumns() public boolean configureColumns()
{ {
ConfigDialog configDialog = new ConfigDialog(); ConfigDialog configDialog = new ConfigDialog();
if (configDialog.open() != IDialogConstants.OK_ID) { if (configDialog.open() != IDialogConstants.OK_ID) {
return; return false;
} }
saveColumnConfig(); saveColumnConfig();
return true;
} }
private void updateColumnOrder(Item column, int[] order) { private void updateColumnOrder(Item column, int[] order) {
......
...@@ -45,8 +45,7 @@ import java.util.Date; ...@@ -45,8 +45,7 @@ import java.util.Date;
/** /**
* ProjectExplorerView * ProjectExplorerView
*/ */
public class ProjectExplorerView extends NavigatorViewBase implements DBPProjectListener public class ProjectExplorerView extends NavigatorViewBase implements DBPProjectListener {
{
//static final Log log = Log.getLog(ProjectExplorerView.class); //static final Log log = Log.getLog(ProjectExplorerView.class);
...@@ -58,18 +57,15 @@ public class ProjectExplorerView extends NavigatorViewBase implements DBPProject ...@@ -58,18 +57,15 @@ public class ProjectExplorerView extends NavigatorViewBase implements DBPProject
} }
@Override @Override
public DBNNode getRootNode() public DBNNode getRootNode() {
{
DBNProject projectNode = getModel().getRoot().getProjectNode(DBWorkbench.getPlatform().getWorkspace().getActiveProject()); DBNProject projectNode = getModel().getRoot().getProjectNode(DBWorkbench.getPlatform().getWorkspace().getActiveProject());
return projectNode != null ? projectNode : getModel().getRoot(); return projectNode != null ? projectNode : getModel().getRoot();
} }
@Override @Override
public void createPartControl(Composite parent) public void createPartControl(Composite parent) {
{
super.createPartControl(parent); super.createPartControl(parent);
final TreeViewer viewer = getNavigatorViewer(); final TreeViewer viewer = getNavigatorViewer();
assert viewer != null;
viewer.getTree().setHeaderVisible(true); viewer.getTree().setHeaderVisible(true);
createColumns(viewer); createColumns(viewer);
UIUtils.setHelp(parent, IHelpContextIds.CTX_PROJECT_EXPLORER); UIUtils.setHelp(parent, IHelpContextIds.CTX_PROJECT_EXPLORER);
...@@ -83,12 +79,12 @@ public class ProjectExplorerView extends NavigatorViewBase implements DBPProject ...@@ -83,12 +79,12 @@ public class ProjectExplorerView extends NavigatorViewBase implements DBPProject
updateTitle(); updateTitle();
} }
private void createColumns(final TreeViewer viewer) private void createColumns(final TreeViewer viewer) {
{
final Color shadowColor = viewer.getControl().getDisplay().getSystemColor(SWT.COLOR_WIDGET_DARK_SHADOW); final Color shadowColor = viewer.getControl().getDisplay().getSystemColor(SWT.COLOR_WIDGET_DARK_SHADOW);
final ILabelProvider mainLabelProvider = (ILabelProvider) viewer.getLabelProvider(); final ILabelProvider mainLabelProvider = (ILabelProvider) viewer.getLabelProvider();
columnController = new ViewerColumnController("projectExplorer", viewer); columnController = new ViewerColumnController("projectExplorer", viewer);
columnController.setForceAutoSize(true);
columnController.addColumn("Name", "Resource name", SWT.LEFT, true, true, new TreeColumnViewerLabelProvider(new LabelProvider() { columnController.addColumn("Name", "Resource name", SWT.LEFT, true, true, new TreeColumnViewerLabelProvider(new LabelProvider() {
@Override @Override
public String getText(Object element) { public String getText(Object element) {
...@@ -192,18 +188,16 @@ public class ProjectExplorerView extends NavigatorViewBase implements DBPProject ...@@ -192,18 +188,16 @@ public class ProjectExplorerView extends NavigatorViewBase implements DBPProject
return ""; return "";
} }
})); }));
columnController.createColumns(false); UIUtils.asyncExec(() -> columnController.createColumns(true));
} }
@Override @Override
protected int getTreeStyle() protected int getTreeStyle() {
{
return super.getTreeStyle() | SWT.FULL_SELECTION; return super.getTreeStyle() | SWT.FULL_SELECTION;
} }
@Override @Override
public void dispose() public void dispose() {
{
DBWorkbench.getPlatform().getWorkspace().removeProjectListener(this); DBWorkbench.getPlatform().getWorkspace().removeProjectListener(this);
super.dispose(); super.dispose();
} }
...@@ -219,17 +213,15 @@ public class ProjectExplorerView extends NavigatorViewBase implements DBPProject ...@@ -219,17 +213,15 @@ public class ProjectExplorerView extends NavigatorViewBase implements DBPProject
} }
@Override @Override
public void handleActiveProjectChange(DBPProject oldValue, DBPProject newValue) public void handleActiveProjectChange(DBPProject oldValue, DBPProject newValue) {
{
UIUtils.asyncExec(() -> { UIUtils.asyncExec(() -> {
getNavigatorTree().reloadTree(getRootNode()); getNavigatorTree().reloadTree(getRootNode());
updateTitle(); updateTitle();
UIUtils.packColumns(getNavigatorTree().getViewer().getTree(), true, null);
}); });
//columnController.autoSizeColumns();
} }
private void updateTitle() private void updateTitle() {
{
setPartName("Project - " + getRootNode().getNodeName()); setPartName("Project - " + getRootNode().getNodeName());
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册