Skip to content

Commit 9945b1d

Browse files
committed
copy text to browser's clipboard
1 parent 36c5fe8 commit 9945b1d

File tree

5 files changed

+55
-33
lines changed

5 files changed

+55
-33
lines changed

logicaldoc-gui/src/main/java/com/logicaldoc/gui/common/client/util/Util.java

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import com.logicaldoc.gui.common.client.controllers.FolderController;
2929
import com.logicaldoc.gui.common.client.i18n.I18N;
3030
import com.logicaldoc.gui.common.client.log.EventPanel;
31+
import com.logicaldoc.gui.common.client.log.GuiLog;
3132
import com.logicaldoc.gui.common.client.widgets.ApplicationRestarting;
3233
import com.logicaldoc.gui.common.client.widgets.ToastNotification;
3334
import com.smartgwt.client.widgets.Canvas;
@@ -506,6 +507,27 @@ public static boolean isEmailFile(String fileName) {
506507
return false;
507508
}
508509

510+
/**
511+
* Copies a text into the client's clipboard
512+
*
513+
* @param text the content to put into the clipboards
514+
* @return The formated file size.
515+
*/
516+
public static void copyText(String text) {
517+
writeToClipboard(text);
518+
GuiLog.info(I18N.message("texthascopied"));
519+
};
520+
521+
/**
522+
* Writes a text into the client's clipboard
523+
*
524+
* @param text the content to put into the clipboards
525+
* @return The formated file size.
526+
*/
527+
private static native void writeToClipboard(String text) /*-{
528+
navigator.clipboard.writeText(text);
529+
}-*/;
530+
509531
/**
510532
* Format file size in Bytes, KBytes, MBytes or GBytes.
511533
*
@@ -756,10 +778,6 @@ public static native String getUserAgent() /*-{
756778
}
757779
}-*/;
758780

759-
public static native void copyToClipboard(String text) /*-{
760-
new $wnd.copyToClipboard(text);
761-
}-*/;
762-
763781
public static native boolean isValidEmail(String email) /*-{
764782
var reg1 = /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/; // not valid
765783
var reg2 = /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/; // valid
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.logicaldoc.gui.common.client.widgets;
2+
3+
import com.logicaldoc.gui.common.client.i18n.I18N;
4+
import com.logicaldoc.gui.common.client.util.Util;
5+
import com.smartgwt.client.widgets.form.fields.FormItemIcon;
6+
7+
/**
8+
* An icon to be used to copy into the clipboard the value of a form item
9+
*
10+
* @author Marco Meschieri - LogicalDOC
11+
* @since 8.9
12+
*/
13+
public class CopyTextFormItemIcon extends FormItemIcon {
14+
/**
15+
* The constructor
16+
*
17+
* @param text the text to copy into the clipboard
18+
*/
19+
public CopyTextFormItemIcon(String text) {
20+
setPrompt(I18N.message("copytext"));
21+
setSrc("[SKIN]/page_white_paste.png");
22+
setWidth(16);
23+
setHeight(16);
24+
addFormItemClickHandler(event -> Util.copyText(text));
25+
}
26+
}

logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/document/StandardPropertiesPanel.java

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
import com.logicaldoc.gui.common.client.log.GuiLog;
1616
import com.logicaldoc.gui.common.client.util.DocUtil;
1717
import com.logicaldoc.gui.common.client.util.ItemFactory;
18-
import com.logicaldoc.gui.common.client.util.LD;
1918
import com.logicaldoc.gui.common.client.util.Util;
19+
import com.logicaldoc.gui.common.client.widgets.CopyTextFormItemIcon;
2020
import com.logicaldoc.gui.common.client.widgets.preview.PreviewTile;
2121
import com.logicaldoc.gui.frontend.client.services.DocumentService;
2222
import com.smartgwt.client.data.Record;
@@ -197,25 +197,13 @@ private void prepareForm1() {
197197
private LinkItem prepareFolderItem() {
198198
String path = document.getPathExtended();
199199

200-
FormItemIcon copyPath = new FormItemIcon();
201-
copyPath.setPrompt(I18N.message("copypath"));
202-
copyPath.setSrc("[SKIN]/page_white_paste.png");
203-
copyPath.setWidth(16);
204-
copyPath.setHeight(16);
205-
copyPath.addFormItemClickHandler(event -> {
206-
LD.askForValue(I18N.message("path"), I18N.message("path"), path, value -> {
207-
// Nothing to do
208-
});
209-
event.cancel();
210-
});
211-
212200
LinkItem folder = ItemFactory.newLinkItem("folder", Util.padLeft(path, 40));
213201
folder.setTitle(I18N.message("folder"));
214202
folder.setValue(Util.displayURL(null, document.getFolder().getId()));
215203
folder.setTooltip(document.getPathExtended());
216204
folder.setWrap(false);
217205
folder.setWidth(DEFAULT_ITEM_WIDTH);
218-
folder.setIcons(copyPath);
206+
folder.setIcons(new CopyTextFormItemIcon(path));
219207
return folder;
220208
}
221209

logicaldoc-gui/src/main/java/com/logicaldoc/gui/frontend/client/folder/FolderStandardPropertiesPanel.java

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.logicaldoc.gui.common.client.util.ItemFactory;
1717
import com.logicaldoc.gui.common.client.util.LD;
1818
import com.logicaldoc.gui.common.client.util.Util;
19+
import com.logicaldoc.gui.common.client.widgets.CopyTextFormItemIcon;
1920
import com.logicaldoc.gui.frontend.client.services.DocumentService;
2021
import com.logicaldoc.gui.frontend.client.services.FolderService;
2122
import com.smartgwt.client.data.Record;
@@ -219,25 +220,12 @@ public void onSuccess(long[] stats) {
219220
private LinkItem preparePathItem() {
220221
String path = folder.getPathExtended() != null ? folder.getPathExtended()
221222
: FolderNavigator.get().getPath(folder.getId());
222-
223-
FormItemIcon copyPath = new FormItemIcon();
224-
copyPath.setPrompt(I18N.message("copypath"));
225-
copyPath.setSrc("[SKIN]/page_white_paste.png");
226-
copyPath.setWidth(16);
227-
copyPath.setHeight(16);
228-
copyPath.addFormItemClickHandler(copyPathClick -> {
229-
LD.askForValue(I18N.message("path"), I18N.message("path"), path, value -> {
230-
// Nothing to do
231-
});
232-
copyPathClick.cancel();
233-
});
234-
235223
LinkItem pathItem = ItemFactory.newLinkItem("path", Util.padLeft(path, 150));
236224
pathItem.setTooltip(path);
237225
pathItem.setTitle(I18N.message("path"));
238226
pathItem.setValue(Util.displayURL(null, folder.getId()));
239227
pathItem.setWidth(400);
240-
pathItem.setIcons(copyPath);
228+
pathItem.setIcons(new CopyTextFormItemIcon(path));
241229
return pathItem;
242230
}
243231

logicaldoc-i18n/src/main/resources/i18n/messages.properties

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3028,4 +3028,6 @@ applyalltotemplates = Apply all to templates
30283028
applyalltotemplatestotemplatesquestion = Force all the settings of this attribute to all the templates that use it?
30293029
resetattributequestion = Do you want to recover all the attribute's settings defined at the attribute set level?
30303030
uploadyourowncert = Upload your own certificate
3031-
dropyourcerthere = Drop your certificate file(.crt format only) from your desktop
3031+
dropyourcerthere = Drop your certificate file(.crt format only) from your desktop
3032+
textcopied = Text has been copied
3033+
copytext = Copy text

0 commit comments

Comments
 (0)