use of org.eclipse.swt.dnd.Transfer in project dbeaver by serge-rider.
the class GISLeafletViewer method updateToolbar.
private void updateToolbar() {
toolBarManager.removeAll();
toolBarManager.add(new Action(GISMessages.panel_leaflet_viewer_tool_bar_action_text_open, DBeaverIcons.getImageDescriptor(UIIcon.BROWSER)) {
@Override
public void run() {
UIUtils.launchProgram(scriptFile.getAbsolutePath());
}
});
toolBarManager.add(new Action(GISMessages.panel_leaflet_viewer_tool_bar_action_text_copy_as, DBeaverIcons.getImageDescriptor(UIIcon.PICTURE)) {
@Override
public void run() {
Image image = new Image(Display.getDefault(), browser.getBounds());
GC gc = new GC(image);
try {
browser.print(gc);
} finally {
gc.dispose();
}
ImageTransfer imageTransfer = ImageTransfer.getInstance();
Clipboard clipboard = new Clipboard(Display.getCurrent());
clipboard.setContents(new Object[] { image.getImageData() }, new Transfer[] { imageTransfer });
}
});
toolBarManager.add(new Action(GISMessages.panel_leaflet_viewer_tool_bar_action_text_save_as, DBeaverIcons.getImageDescriptor(UIIcon.PICTURE_SAVE)) {
@Override
public void run() {
final Shell shell = browser.getShell();
FileDialog saveDialog = new FileDialog(shell, SWT.SAVE);
String[] extensions = new String[SUPPORTED_FORMATS.length];
String[] filterNames = new String[SUPPORTED_FORMATS.length];
for (int i = 0; i < SUPPORTED_FORMATS.length; i++) {
extensions[i] = "*." + SUPPORTED_FORMATS[i];
filterNames[i] = SUPPORTED_FORMATS[i].toUpperCase() + " (*." + SUPPORTED_FORMATS[i] + ")";
}
saveDialog.setFilterExtensions(extensions);
saveDialog.setFilterNames(filterNames);
String filePath = DialogUtils.openFileDialog(saveDialog);
if (filePath == null) {
return;
}
int imageType = SWT.IMAGE_BMP;
{
String filePathLower = filePath.toLowerCase();
if (filePathLower.endsWith(".png")) {
imageType = SWT.IMAGE_PNG;
} else if (filePathLower.endsWith(".gif")) {
imageType = SWT.IMAGE_GIF;
}
}
Image image = new Image(Display.getDefault(), browser.getBounds());
GC gc = new GC(image);
try {
browser.print(gc);
} finally {
gc.dispose();
}
ImageLoader imageLoader = new ImageLoader();
imageLoader.data = new ImageData[1];
imageLoader.data[0] = image.getImageData();
File outFile = new File(filePath);
try (OutputStream fos = new FileOutputStream(outFile)) {
imageLoader.save(fos, imageType);
} catch (IOException e) {
DBWorkbench.getPlatformUI().showError("Image save error", "Error saving as picture", e);
}
UIUtils.launchProgram(outFile.getAbsolutePath());
}
});
toolBarManager.add(new Action(GISMessages.panel_leaflet_viewer_tool_bar_action_text_print, DBeaverIcons.getImageDescriptor(UIIcon.PRINT)) {
@Override
public void run() {
GC gc = new GC(browser.getDisplay());
try {
browser.execute("javascript:window.print();");
} finally {
gc.dispose();
}
}
});
toolBarManager.add(new Separator());
Action crsSelectorAction = new SelectCRSAction(this);
toolBarManager.add(ActionUtils.makeActionContribution(crsSelectorAction, true));
Action tilesSelectorAction = new SelectTilesAction(this);
toolBarManager.add(ActionUtils.makeActionContribution(tilesSelectorAction, true));
toolBarManager.add(new Action(GISMessages.panel_leaflet_viewer_tool_bar_action_text_flip, Action.AS_CHECK_BOX) {
{
setToolTipText(GISMessages.panel_leaflet_viewer_tool_bar_action_tool_tip_text_flip);
setImageDescriptor(DBeaverIcons.getImageDescriptor(UIIcon.LINK_TO_EDITOR));
}
@Override
public boolean isChecked() {
return flipCoordinates;
}
@Override
public void run() {
flipCoordinates = !flipCoordinates;
try {
reloadGeometryData(lastValue, true);
} catch (DBException e) {
DBWorkbench.getPlatformUI().showError("Render error", "Error rendering geometry", e);
}
saveAttributeSettings();
updateToolbar();
}
});
toolBarManager.add(new Separator());
toolBarManager.add(new Action(GISMessages.panel_leaflet_viewer_tool_bar_action_text_show_hide, Action.AS_CHECK_BOX) {
{
setImageDescriptor(DBeaverIcons.getImageDescriptor(UIIcon.PALETTE));
}
@Override
public boolean isChecked() {
return toolsVisible;
}
@Override
public void run() {
toolsVisible = !toolsVisible;
updateControlsVisibility();
updateToolbar();
}
});
toolBarManager.update(true);
}
use of org.eclipse.swt.dnd.Transfer in project dbeaver by serge-rider.
the class ResultSetUtils method copyToClipboard.
public static void copyToClipboard(Map<Transfer, Object> formats) {
if (!formats.isEmpty()) {
Clipboard clipboard = new Clipboard(Display.getCurrent());
try {
Transfer[] transfers = new Transfer[formats.size()];
Object[] values = new Object[formats.size()];
int index = 0;
for (Map.Entry<Transfer, Object> fmtEntry : formats.entrySet()) {
transfers[index] = fmtEntry.getKey();
values[index] = fmtEntry.getValue();
index++;
}
clipboard.setContents(values, transfers);
} finally {
clipboard.dispose();
}
}
}
use of org.eclipse.swt.dnd.Transfer in project dbeaver by serge-rider.
the class SpreadsheetPresentation method copySelection.
@NotNull
@Override
public Map<Transfer, Object> copySelection(ResultSetCopySettings settings) {
boolean copyHTML = settings.isCopyHTML();
StringBuilder tdt = new StringBuilder();
StringBuilder html = new StringBuilder();
byte[] binaryData = null;
Map<Transfer, Object> formats = new LinkedHashMap<>();
String columnDelimiter = settings.getColumnDelimiter();
if (columnDelimiter == null) {
columnDelimiter = "\t";
}
String rowDelimiter = settings.getRowDelimiter();
if (rowDelimiter == null) {
rowDelimiter = GeneralUtils.getDefaultLineSeparator();
}
String quoteString = settings.getQuoteString();
if ((CommonUtils.isEmpty(quoteString))) {
quoteString = "\"";
}
List<Object> selectedColumns = spreadsheet.getColumnSelection();
IGridLabelProvider labelProvider = spreadsheet.getLabelProvider();
if (copyHTML)
html.append("<table border=\"1\">");
if (settings.isCopyHeader()) {
if (copyHTML)
html.append("<thead>");
if (settings.isCopyRowNumbers()) {
tdt.append("#");
if (copyHTML)
html.append("<th>#</th>");
}
for (Object column : selectedColumns) {
if (tdt.length() > 0) {
tdt.append(columnDelimiter);
}
String columnText = labelProvider.getText(column);
tdt.append(columnText);
if (copyHTML)
html.append("<th>").append(XMLUtils.escapeXml(columnText)).append("</th>");
}
tdt.append(rowDelimiter);
if (copyHTML)
html.append("</thead>").append(rowDelimiter);
}
if (copyHTML)
html.append("<tbody>");
List<GridCell> selectedCells = spreadsheet.getCellSelection();
boolean quoteCells = settings.isQuoteCells() && selectedCells.size() > 1;
boolean forceQuotes = settings.isForceQuotes();
GridCell prevCell = null;
for (GridCell cell : selectedCells) {
if (prevCell == null || cell.row != prevCell.row) {
// Next row
if (prevCell != null && prevCell.col != cell.col) {
// Fill empty row tail
int prevColIndex = selectedColumns.indexOf(prevCell.col);
for (int i = prevColIndex; i < selectedColumns.size() - 1; i++) {
tdt.append(columnDelimiter);
if (copyHTML)
html.append("<td></td>");
}
}
if (prevCell != null) {
tdt.append(rowDelimiter);
if (copyHTML)
html.append("</tr>").append(rowDelimiter);
}
if (settings.isCopyRowNumbers()) {
String rowNumber = labelProvider.getText(cell.row);
tdt.append(rowNumber).append(columnDelimiter);
if (copyHTML)
html.append("<td>").append(rowNumber).append("</td>");
}
if (copyHTML)
html.append("<tr>");
}
if (prevCell != null && prevCell.col != cell.col) {
int prevColIndex = selectedColumns.indexOf(prevCell.col);
int curColIndex = selectedColumns.indexOf(cell.col);
for (int i = prevColIndex; i < curColIndex; i++) {
tdt.append(columnDelimiter);
if (i != prevColIndex) {
if (copyHTML)
html.append("<td></td>");
}
}
}
boolean recordMode = controller.isRecordMode();
DBDAttributeBinding column = (DBDAttributeBinding) (!recordMode ? cell.col : cell.row);
ResultSetRow row = (ResultSetRow) (!recordMode ? cell.row : cell.col);
Object value = controller.getModel().getCellValue(column, row);
if (binaryData == null && (column.getDataKind() == DBPDataKind.BINARY || column.getDataKind() == DBPDataKind.CONTENT)) {
if (value instanceof byte[]) {
binaryData = (byte[]) value;
} else if (value instanceof DBDContent && !ContentUtils.isTextContent((DBDContent) value) && value instanceof DBDContentCached) {
try {
binaryData = ContentUtils.getContentBinaryValue(new VoidProgressMonitor(), (DBDContent) value);
} catch (DBCException e) {
log.debug("Error reading content binary value");
}
}
}
String cellText = column.getValueRenderer().getValueDisplayString(column.getAttribute(), value, settings.getFormat());
if (forceQuotes || (quoteCells && !CommonUtils.isEmpty(cellText))) {
if (forceQuotes || cellText.contains(columnDelimiter) || cellText.contains(rowDelimiter)) {
cellText = quoteString + cellText + quoteString;
}
}
tdt.append(cellText);
if (copyHTML)
html.append("<td>").append(XMLUtils.escapeXml(cellText)).append("</td> ");
if (settings.isCut()) {
IValueController valueController = new SpreadsheetValueController(controller, column, row, IValueController.EditType.NONE, null);
if (!valueController.isReadOnly()) {
valueController.updateValue(BaseValueManager.makeNullValue(valueController), false);
}
}
prevCell = cell;
}
if (copyHTML) {
html.append("</tbody>").append(rowDelimiter);
html.append("</table>").append(rowDelimiter);
}
if (settings.isCut()) {
controller.redrawData(false, false);
controller.updatePanelsContent(false);
}
formats.put(TextTransfer.getInstance(), tdt.toString());
if (copyHTML) {
formats.put(HTMLTransfer.getInstance(), html.toString());
}
if (binaryData != null) {
formats.put(SimpleByteArrayTransfer.getInstance(), binaryData);
}
return formats;
}
use of org.eclipse.swt.dnd.Transfer in project dbeaver by serge-rider.
the class ClipboardData method pushToClipboard.
public void pushToClipboard(Display display) {
final int size = formats.size();
final Transfer[] transfers = formats.keySet().toArray(new Transfer[size]);
final Object[] objects = formats.values().toArray(new Object[size]);
Clipboard clipboard = new Clipboard(display);
try {
clipboard.setContents(objects, transfers);
} finally {
clipboard.dispose();
}
}
use of org.eclipse.swt.dnd.Transfer in project GT by Tencent.
the class CopySelectedItemsFromTableViewAction method run.
@Override
public void run() {
StringBuffer sb = getContents();
clipboard = new Clipboard(Display.getCurrent());
Transfer[] transfers = new Transfer[] { TextTransfer.getInstance() };
clipboard.setContents(new String[] { sb.toString() }, transfers);
}
Aggregations