提交 759e7f4e 编写于 作者: S serge-rider

#5963 Data transfer/CopyAs: support HTML clipboard format

上级 81ca0f01
......@@ -111,7 +111,7 @@ public class OpenSpreadsheetHandler extends AbstractHandler
settings.setOutputFilePattern(tempFile.getName());
Map<Object, Object> properties = DataExporterXLSX.getDefaultProperties();
consumer.initTransfer(dataContainer, settings, new IDataTransferConsumer.TransferParameters(true), exporter, properties);
consumer.initTransfer(dataContainer, settings, new IDataTransferConsumer.TransferParameters(true, false), exporter, properties);
DBDDataFilter dataFilter = resultSet.getModel().getDataFilter();
DatabaseTransferProducer producer = new DatabaseTransferProducer(dataContainer, dataFilter);
......
......@@ -173,6 +173,7 @@
label="%dataTransfer.processor.html.name"
appFileExtension="html"
appName="%dataTransfer.processor.web.name"
html="true"
order="20">
<propertyGroup label="%dataTransfer.processor.html.propertyGroup.general.label">
<property id="extension" label="%dataTransfer.processor.html.property.extension.label" defaultValue="html"/>
......
......@@ -33,12 +33,14 @@ public interface IDataTransferConsumer<SETTINGS extends IDataTransferSettings, P
public int orderNumber;
public int totalConsumers;
public boolean isBinary;
public boolean isHTML;
public TransferParameters() {
}
public TransferParameters(boolean isBinary) {
public TransferParameters(boolean isBinary, boolean isHTML) {
this.isBinary = isBinary;
this.isHTML = isHTML;
}
}
......
......@@ -51,6 +51,7 @@ public class DataTransferProcessorDescriptor extends AbstractDescriptor implemen
private final DBPImage icon;
private final List<DBPPropertyDescriptor> properties = new ArrayList<>();
private boolean isBinary;
private boolean isHTML;
private transient ProgramInfo program;
......@@ -63,6 +64,7 @@ public class DataTransferProcessorDescriptor extends AbstractDescriptor implemen
this.description = config.getAttribute("description");
this.icon = iconToImage(config.getAttribute("icon"), DBIcon.TYPE_UNKNOWN);
this.isBinary = CommonUtils.getBoolean(config.getAttribute("binary"), false);
this.isHTML = CommonUtils.getBoolean(config.getAttribute("html"), false);
this.appFileExtension = config.getAttribute("appFileExtension");
this.appName = config.getAttribute("appName");
this.order = CommonUtils.toInt(config.getAttribute("order"));
......@@ -169,6 +171,10 @@ public class DataTransferProcessorDescriptor extends AbstractDescriptor implemen
return isBinary;
}
public boolean isHTMLFormat() {
return isHTML;
}
public String getFullId() {
return node.getId() + ":" + getId();
}
......
......@@ -18,6 +18,7 @@ package org.jkiss.dbeaver.tools.transfer.stream;
import org.eclipse.core.resources.IProject;
import org.eclipse.swt.dnd.Clipboard;
import org.eclipse.swt.dnd.HTMLTransfer;
import org.eclipse.swt.dnd.TextTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.graphics.Color;
......@@ -371,10 +372,20 @@ public class StreamTransferConsumer implements IDataTransferConsumer<StreamConsu
if (!parameters.isBinary && settings.isOutputClipboard()) {
if (outputBuffer != null) {
UIUtils.syncExec(() -> {
TextTransfer textTransfer = TextTransfer.getInstance();
new Clipboard(UIUtils.getDisplay()).setContents(
new Object[]{outputBuffer.toString()},
new Transfer[]{textTransfer});
String strContents = outputBuffer.toString();
Clipboard clipboard = new Clipboard(UIUtils.getDisplay());
if (parameters.isHTML) {
HTMLTransfer htmlTransfer = HTMLTransfer.getInstance();
clipboard.setContents(
new Object[]{strContents, strContents},
new Transfer[]{textTransfer, htmlTransfer});
} else {
clipboard.setContents(
new Object[]{strContents},
new Transfer[]{textTransfer});
}
});
outputBuffer = null;
}
......
......@@ -131,7 +131,8 @@ class DataTransferPageFinal extends ActiveWizardPage<DataTransferWizard> {
}
IDataTransferConsumer.TransferParameters parameters = new IDataTransferConsumer.TransferParameters(
processorDescriptor != null && processorDescriptor.isBinaryFormat());
processorDescriptor != null && processorDescriptor.isBinaryFormat(),
processorDescriptor != null && processorDescriptor.isHTMLFormat());
parameters.orderNumber = i;
parameters.totalConsumers = dataPipes.size();
consumer.initTransfer(
......
......@@ -341,7 +341,8 @@ public class DataTransferSettings {
IDataTransferConsumer consumerNode = (IDataTransferConsumer) consumer.createNode();
if (pipe.getProducer() != null) {
IDataTransferConsumer.TransferParameters parameters = new IDataTransferConsumer.TransferParameters(
processor != null && processor.isBinaryFormat());
processor != null && processor.isBinaryFormat(),
processor != null && processor.isHTMLFormat());
parameters.orderNumber = i;
parameters.totalConsumers = dataPipes.size();
......
......@@ -149,7 +149,7 @@ public class ResultSetHandlerCopyAs extends AbstractHandler implements IElementU
consumer.initTransfer(
dataContainer,
settings,
new IDataTransferConsumer.TransferParameters(processor.isBinaryFormat()),
new IDataTransferConsumer.TransferParameters(processor.isBinaryFormat(), processor.isHTMLFormat()),
exporter,
properties);
......
......@@ -184,7 +184,7 @@ public class ResultSetHandlerOpenWith extends AbstractHandler implements IElemen
consumer.initTransfer(
dataContainer,
settings,
new IDataTransferConsumer.TransferParameters(processor.isBinaryFormat()),
new IDataTransferConsumer.TransferParameters(processor.isBinaryFormat(), processor.isHTMLFormat()),
exporter,
properties);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册