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

#6569 Project explorer columns visibility fix

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