Skip to content

Commit

Permalink
#4209 Dashboards: grid visibility config. Context menu fix.
Browse files Browse the repository at this point in the history
  • Loading branch information
serge-rider committed Feb 11, 2019
1 parent 3e1dd76 commit 1b1435f
Show file tree
Hide file tree
Showing 6 changed files with 98 additions and 71 deletions.
Expand Up @@ -18,6 +18,7 @@
package org.jkiss.dbeaver.ui.charts;

import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.swt.dnd.Clipboard;
Expand All @@ -28,6 +29,7 @@
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.*;
import org.jfree.chart.plot.Zoomable;
import org.jfree.chart.swt.ChartComposite;
import org.jkiss.dbeaver.runtime.DBWorkbench;
import org.jkiss.dbeaver.ui.DBeaverIcons;
Expand Down Expand Up @@ -63,34 +65,36 @@ public void mouseDoubleClick(MouseEvent event) {
@Override
protected Menu createPopupMenu(boolean properties, boolean save, boolean print, boolean zoom) {
MenuManager manager = new MenuManager();

fillContextMenu(manager);

manager.setRemoveAllWhenShown(true);
manager.addMenuListener(this::fillContextMenu);
Menu contextMenu = manager.createContextMenu(this);
addDisposeListener(e -> manager.dispose());
return contextMenu;
}

protected void fillContextMenu(MenuManager manager) {
manager.add(new Action("Zoom In", DBeaverIcons.getImageDescriptor(UIIcon.ZOOM_IN)) {
@Override
public void runWithEvent(Event e) {
zoomInBoth(e.x, e.y);
}
});
manager.add(new Action("Zoom Out", DBeaverIcons.getImageDescriptor(UIIcon.ZOOM_OUT)) {
@Override
public void runWithEvent(Event e) {
zoomOutBoth(e.x, e.y);
}
});
manager.add(new Action("Zoom Reset", DBeaverIcons.getImageDescriptor(UIIcon.ZOOM)) {
@Override
public void runWithEvent(Event e) {
restoreAutoBounds();
}
});
manager.add(new Separator());
protected void fillContextMenu(IMenuManager manager) {
boolean zoomable = getChart().getPlot() instanceof Zoomable;
if (zoomable) {
manager.add(new Action("Zoom In", DBeaverIcons.getImageDescriptor(UIIcon.ZOOM_IN)) {
@Override
public void runWithEvent(Event e) {
zoomInBoth(e.x, e.y);
}
});
manager.add(new Action("Zoom Out", DBeaverIcons.getImageDescriptor(UIIcon.ZOOM_OUT)) {
@Override
public void runWithEvent(Event e) {
zoomOutBoth(e.x, e.y);
}
});
manager.add(new Action("Zoom Reset", DBeaverIcons.getImageDescriptor(UIIcon.ZOOM)) {
@Override
public void runWithEvent(Event e) {
restoreAutoBounds();
}
});
manager.add(new Separator());
}
manager.add(new Action("Copy to clipboard") {
@Override
public void runWithEvent(Event event) {
Expand Down
Expand Up @@ -63,7 +63,7 @@ protected boolean isSingleChartMode() {
}

@Override
protected void fillContextMenu(MenuManager manager) {
protected void fillContextMenu(IMenuManager manager) {
if (!isSingleChartMode()) {
manager.add(ActionUtils.makeCommandContribution(UIUtils.getActiveWorkbenchWindow(), DashboardConstants.CMD_VIEW_DASHBOARD));
manager.add(new Separator());
Expand All @@ -72,28 +72,25 @@ protected void fillContextMenu(MenuManager manager) {
{
manager.add(new Separator());
MenuManager viewMenu = new MenuManager("View as");
viewMenu.setRemoveAllWhenShown(true);
viewMenu.addMenuListener(manager1 -> {
List<DashboardViewType> viewTypes = DashboardRegistry.getInstance().getSupportedViewTypes(dashboardContainer.getDashboardDataType());
for (DashboardViewType viewType : viewTypes) {
Action changeViewAction = new Action(viewType.getTitle(), Action.AS_RADIO_BUTTON) {
@Override
public boolean isChecked() {
return dashboardContainer.getDashboardViewType() == viewType;
}

@Override
public void runWithEvent(Event event) {
((DashboardItem)dashboardContainer).getDashboardConfig().setViewType(viewType);
dashboardContainer.updateDashboardView();
}
};
if (viewType.getIcon() != null) {
changeViewAction.setImageDescriptor(DBeaverIcons.getImageDescriptor(viewType.getIcon()));
List<DashboardViewType> viewTypes = DashboardRegistry.getInstance().getSupportedViewTypes(dashboardContainer.getDashboardDataType());
for (DashboardViewType viewType : viewTypes) {
Action changeViewAction = new Action(viewType.getTitle(), Action.AS_RADIO_BUTTON) {
@Override
public boolean isChecked() {
return dashboardContainer.getDashboardViewType() == viewType;
}
manager1.add(changeViewAction);

@Override
public void runWithEvent(Event event) {
((DashboardItem) dashboardContainer).getDashboardConfig().setViewType(viewType);
dashboardContainer.updateDashboardView();
}
};
if (viewType.getIcon() != null) {
changeViewAction.setImageDescriptor(DBeaverIcons.getImageDescriptor(viewType.getIcon()));
}
});
viewMenu.add(changeViewAction);
}

manager.add(viewMenu);

Expand All @@ -109,7 +106,7 @@ public void runWithEvent(Event event) {
@Override
public void setChart(JFreeChart chart) {
super.setChart(chart);
if (!isSingleChartMode()) {
if (chart != null && !isSingleChartMode()) {
this.setDomainZoomable(false);
this.setRangeZoomable(false);
}
Expand All @@ -129,8 +126,12 @@ protected boolean showChartConfigDialog() {

@Override
public void mouseDoubleClick(MouseEvent event) {
DashboardItemViewDialog viewDialog = new DashboardItemViewDialog(viewContainer, (DashboardItem) dashboardContainer);
viewDialog.open();
if (viewContainer.isSingleChartMode()) {
restoreAutoBounds();
} else {
DashboardItemViewDialog viewDialog = new DashboardItemViewDialog(viewContainer, (DashboardItem) dashboardContainer);
viewDialog.open();
}
}

}
Expand Up @@ -102,12 +102,7 @@ protected DashboardChartComposite getChartComposite(DashboardContainer container
}

protected DashboardChartComposite createChartComposite(Composite composite, DashboardContainer container, DashboardViewContainer viewContainer, org.eclipse.swt.graphics.Point preferredSize) {
return new DashboardChartComposite(container, viewContainer, composite, SWT.DOUBLE_BUFFERED, preferredSize) {
@Override
protected boolean isSingleChartMode() {
return viewContainer.isSingleChartMode();
}
};
return new DashboardChartComposite(container, viewContainer, composite, SWT.DOUBLE_BUFFERED, preferredSize);
}

protected void createDefaultLegend(DashboardItemViewConfiguration viewConfig, JFreeChart chart) {
Expand Down
Expand Up @@ -145,10 +145,10 @@ public DashboardChartComposite createDashboard(Composite composite, DashboardCon

plot.setDomainGridlinePaint(gridColor);
//plot.setDomainGridlineStroke(gridStroke);
plot.setDomainGridlinesVisible(false);
plot.setDomainGridlinesVisible(viewConfig == null || viewConfig.isGridVisible());
plot.setRangeGridlinePaint(gridColor);
//plot.setRangeGridlineStroke(gridStroke);
plot.setRangeGridlinesVisible(false);
plot.setRangeGridlinesVisible(viewConfig == null || viewConfig.isGridVisible());

DashboardChartComposite chartComposite = createChartComposite(composite, container, viewContainer, preferredSize);
chartComposite.setChart(histogramChart);
Expand Down Expand Up @@ -252,6 +252,9 @@ public void updateDashboardView(DashboardItem dashboardItem) {
plot.getRangeAxis().setVisible(dashboardConfig.isRangeTicksVisible());
plot.getDomainAxis().setVisible(dashboardConfig.isDomainTicksVisible());

plot.setDomainGridlinesVisible(dashboardConfig.isGridVisible());
plot.setRangeGridlinesVisible(dashboardConfig.isGridVisible());

chartComposite.getChart().getLegend().setVisible(dashboardConfig.isLegendVisible());

TimeSeriesCollection chartDataset = (TimeSeriesCollection) plot.getDataset();
Expand Down
Expand Up @@ -34,6 +34,7 @@ public class DashboardItemViewConfiguration {
private int maxItems;
private long maxAge;
private boolean legendVisible;
private boolean gridVisible;
private boolean domainTicksVisible;
private boolean rangeTicksVisible;
private String description;
Expand Down Expand Up @@ -98,6 +99,14 @@ public void setLegendVisible(boolean legendVisible) {
this.legendVisible = legendVisible;
}

public boolean isGridVisible() {
return gridVisible;
}

public void setGridVisible(boolean gridVisible) {
this.gridVisible = gridVisible;
}

public boolean isDomainTicksVisible() {
return domainTicksVisible;
}
Expand Down Expand Up @@ -132,6 +141,7 @@ public void setDescription(String description) {
this.maxAge = dashboardDescriptor.getMaxAge();

this.legendVisible = true;
this.gridVisible = true;
this.domainTicksVisible = true;
this.rangeTicksVisible = true;

Expand All @@ -152,6 +162,7 @@ void copyFrom(DashboardItemViewConfiguration source) {
this.maxAge = source.maxAge;

this.legendVisible = source.legendVisible;
this.gridVisible = source.gridVisible;
this.domainTicksVisible = source.domainTicksVisible;
this.rangeTicksVisible = source.rangeTicksVisible;

Expand All @@ -168,6 +179,7 @@ void serialize(XMLBuilder xml) throws IOException {
xml.addAttribute("maxAge", maxAge);

xml.addAttribute("legendVisible", legendVisible);
xml.addAttribute("gridVisible", gridVisible);
xml.addAttribute("domainTicksVisible", domainTicksVisible);
xml.addAttribute("rangeTicksVisible", rangeTicksVisible);

Expand All @@ -193,9 +205,10 @@ public DashboardItemViewConfiguration(DashboardDescriptor dashboard, Element ele
this.maxItems = CommonUtils.toInt(element.getAttribute("maxItems"), dashboardDescriptor.getMaxItems());
this.maxAge = CommonUtils.toLong(element.getAttribute("maxAge"), dashboardDescriptor.getMaxAge());

legendVisible = CommonUtils.getBoolean(element.getAttribute("legendVisible"), true);
domainTicksVisible = CommonUtils.getBoolean(element.getAttribute("domainTicksVisible"), true);
rangeTicksVisible = CommonUtils.getBoolean(element.getAttribute("rangeTicksVisible"), true);
this.legendVisible = CommonUtils.getBoolean(element.getAttribute("legendVisible"), true);
this.gridVisible = CommonUtils.getBoolean(element.getAttribute("gridVisible"), true);
this.domainTicksVisible = CommonUtils.getBoolean(element.getAttribute("domainTicksVisible"), true);
this.rangeTicksVisible = CommonUtils.getBoolean(element.getAttribute("rangeTicksVisible"), true);

this.description = element.getAttribute("description");
}
Expand Down
Expand Up @@ -71,6 +71,18 @@ protected Composite createDialogArea(Composite parent)
//UIUtils.createLabelText(infoGroup, "ID", dashboardConfig.getDashboardDescriptor().getId(), SWT.BORDER | SWT.READ_ONLY);
UIUtils.createLabelText(infoGroup, "Name", dashboardConfig.getDashboardDescriptor().getName(), SWT.BORDER | SWT.READ_ONLY)
.setLayoutData(new GridData(GridData.FILL, GridData.BEGINNING, true, false, 3, 1));

UIUtils.createControlLabel(infoGroup, "Description").setLayoutData(new GridData(GridData.VERTICAL_ALIGN_BEGINNING));
Text descriptionText = new Text(infoGroup, SWT.BORDER | SWT.MULTI | SWT.WRAP | SWT.V_SCROLL);
descriptionText.setText(CommonUtils.notEmpty(dashboardConfig.getDescription()));
descriptionText.addModifyListener(e -> {
dashboardConfig.setDescription(descriptionText.getText());
});
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
gd.widthHint = 200;
gd.heightHint = 50;
descriptionText.setLayoutData(gd);

/*
UIUtils.createLabelText(infoGroup, "Group", CommonUtils.notEmpty(dashboardConfig.getDashboardDescriptor().getGroup()), SWT.BORDER | SWT.READ_ONLY)
.setLayoutData(new GridData(GridData.FILL, GridData.BEGINNING, true, false, 3, 1));
Expand Down Expand Up @@ -143,26 +155,20 @@ public void widgetSelected(SelectionEvent e) {
});
}

Text widthRatioText = UIUtils.createLabelText(viewGroup, "Width ratio", String.valueOf(dashboardConfig.getWidthRatio()), SWT.BORDER, new GridData(GridData.FILL_HORIZONTAL));
widthRatioText.addModifyListener(e -> {
dashboardConfig.setWidthRatio((float) CommonUtils.toDouble(widthRatioText.getText(), dashboardConfig.getWidthRatio()));
});
Text descriptionText = UIUtils.createLabelText(viewGroup, "Description", CommonUtils.notEmpty(dashboardConfig.getDescription()), SWT.BORDER | SWT.MULTI | SWT.WRAP | SWT.V_SCROLL);
descriptionText.addModifyListener(e -> {
dashboardConfig.setDescription(widthRatioText.getText());
});
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
gd.widthHint = 200;
gd.heightHint = 50;
descriptionText.setLayoutData(gd);

UIUtils.createCheckbox(viewGroup, "Show legend", "Show dashboard chart legend", dashboardConfig.isLegendVisible(), 2)
.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
dashboardConfig.setLegendVisible(((Button)e.widget).getSelection());
}
});
UIUtils.createCheckbox(viewGroup, "Show grid", "Show dashboard grid", dashboardConfig.isGridVisible(), 2)
.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
dashboardConfig.setGridVisible(((Button)e.widget).getSelection());
}
});
UIUtils.createCheckbox(viewGroup, "Show domain axis", "Show domain (horizontal) axis", dashboardConfig.isDomainTicksVisible(), 2)
.addSelectionListener(new SelectionAdapter() {
@Override
Expand All @@ -177,6 +183,11 @@ public void widgetSelected(SelectionEvent e) {
dashboardConfig.setRangeTicksVisible(((Button)e.widget).getSelection());
}
});
Text widthRatioText = UIUtils.createLabelText(viewGroup, "Width ratio", String.valueOf(dashboardConfig.getWidthRatio()), SWT.BORDER, new GridData(GridData.FILL_HORIZONTAL));
widthRatioText.addModifyListener(e -> {
dashboardConfig.setWidthRatio((float) CommonUtils.toDouble(widthRatioText.getText(), dashboardConfig.getWidthRatio()));
});


}

Expand Down

0 comments on commit 1b1435f

Please sign in to comment.