diff --git a/eclipse-scout-core/src/form/fields/clipboardfield/ClipboardField.ts b/eclipse-scout-core/src/form/fields/clipboardfield/ClipboardField.ts index 6ed6cd953df..5b46ba4985b 100644 --- a/eclipse-scout-core/src/form/fields/clipboardfield/ClipboardField.ts +++ b/eclipse-scout-core/src/form/fields/clipboardfield/ClipboardField.ts @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2023 BSI Business Systems Integration AG + * Copyright (c) 2010, 2026 BSI Business Systems Integration AG * * This program and the accompanying materials are made * available under the terms of the Eclipse Public License 2.0 @@ -7,7 +7,7 @@ * * SPDX-License-Identifier: EPL-2.0 */ -import {arrays, BlobWithName, ClipboardFieldModel, Device, DragAndDropOptions, FatalMessageOptions, InputFieldKeyStrokeContext, keys, KeyStrokeContext, mimeTypes, scout, Session, strings, ValueField} from '../../../index'; +import {arrays, BlobWithName, ClipboardFieldModel, Device, DragAndDropOptions, FatalMessageOptions, keys, mimeTypes, scout, Session, strings, ValueField} from '../../../index'; import $ from 'jquery'; export class ClipboardField extends ValueField implements ClipboardFieldModel { @@ -32,7 +32,6 @@ export class ClipboardField extends ValueField implements ClipboardField static NON_DESTRUCTIVE_KEYS = [ // Default form handling keys.ESC, - keys.ENTER, keys.TAB, // Navigate and mark text keys.PAGE_UP, @@ -58,16 +57,12 @@ export class ClipboardField extends ValueField implements ClipboardField keys.F12 ]; - // Keys that always alter the content of a text field, independent from the modifier keys + // Keys that always alter the content of a text field, independent of the modifier keys static ALWAYS_DESTRUCTIVE_KEYS = [ keys.BACKSPACE, keys.DELETE ]; - protected override _createKeyStrokeContext(): KeyStrokeContext { - return new InputFieldKeyStrokeContext(); - } - protected override _render() { // We don't use makeDiv() here intentionally because the DIV created must // not have the 'unselectable' attribute. @@ -137,19 +132,28 @@ export class ClipboardField extends ValueField implements ClipboardField return selection; } - protected _onKeyDown(event: JQuery.KeyDownEvent): boolean { + protected _onKeyDown(event: JQuery.KeyDownEvent) { + if (this._isDestructiveKey(event)) { + // do not allow to enter something manually, but allow the event to bubble up to the form + event.preventDefault(); + } + } + + /** + * Returns true if the given keystroke would change the value of the field, false otherwise. + */ + protected _isDestructiveKey(event: JQuery.KeyboardEventBase): boolean { if (scout.isOneOf(event.which, ClipboardField.ALWAYS_DESTRUCTIVE_KEYS)) { - return false; // never allowed + return true; } if (event.ctrlKey || event.altKey || event.metaKey || scout.isOneOf(event.which, ClipboardField.NON_DESTRUCTIVE_KEYS)) { - return; // allow bubble to other event handlers + return false; } - // do not allow to enter something manually - return false; + return true; } protected _onInput(event: JQuery.TriggeredEvent): boolean { - // if the user somehow managed to fire to input something (e.g. "delete" menu in FF & IE), just reset the value to the previous content + // if the user somehow managed to fire to input something (e.g. "delete" action in context menu or touch bar actions in safari), just reset the value to the previous content this._renderDisplayText(); return false; } @@ -433,4 +437,58 @@ export class ClipboardField extends ValueField implements ClipboardField arrays.remove(files, jpgImage); } } + + /** + * Returns the plain text of the selected content. If the field is not rendered or the field contains + * no selection, `null` is returned. If the selection starts or ends outside the field, only the part + * contained within the field is returned. + */ + getSelectedText(): string { + let field = this.$field?.[0]; + let document = field?.ownerDocument; + if (!field || !document) { + return null; + } + + let selection = document.getSelection(); + if (!selection?.rangeCount) { + return null; + } + + let selectedRange = selection.getRangeAt(0); + + // Ignore selection if it is completely outside the field + let fieldRange = document.createRange(); + fieldRange.selectNodeContents(field); + if (selectedRange.compareBoundaryPoints(Range.END_TO_START, fieldRange) > 0) { + return null; // end of selectedRange is before start of fieldRange + } + if (selectedRange.compareBoundaryPoints(Range.START_TO_END, fieldRange) < 0) { + return null; // start of selectedRange is after end of fieldRange + } + + // Build a new range consisting of only the selected part withing field + let selectedFieldRange = selectedRange.cloneRange(); + if (selectedRange.compareBoundaryPoints(Range.START_TO_START, fieldRange) < 0) { + // start of selectedRange is before start of fieldRange -> truncate to fieldRange + selectedFieldRange.setStart(fieldRange.startContainer, fieldRange.startOffset); + } + if (selectedRange.compareBoundaryPoints(Range.END_TO_END, fieldRange) > 0) { + // end of selectedRange is after end of fieldRange -> truncate to fieldRange + selectedFieldRange.setEnd(fieldRange.endContainer, fieldRange.endOffset); + } + + // Range#toString only returns the content of text nodes, therefore newlines represented by
are missing, + // see https://dom.spec.whatwg.org/#dom-range-stringifier. To retain the newline characters, we create a temporary + // element with the cloned content and use to 'innerText' property to convert it to plain text. Because
only + // has an effect when rendered, we have to insert the temporary element in the DOM tree. Hiding the element is + // not necessary, since we remove it again immediately. + let tmp = document.createElement('div'); + tmp.appendChild(selectedFieldRange.cloneContents()); + document.body.appendChild(tmp); + let text = tmp.innerText; + tmp.remove(); + + return text; + } } diff --git a/eclipse-scout-core/src/form/fields/clipboardfield/ClipboardFormCopyAndCloseButton.ts b/eclipse-scout-core/src/form/fields/clipboardfield/ClipboardFormCopyAndCloseButton.ts new file mode 100644 index 00000000000..b3be3b0d7fd --- /dev/null +++ b/eclipse-scout-core/src/form/fields/clipboardfield/ClipboardFormCopyAndCloseButton.ts @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2010, 2026 BSI Business Systems Integration AG + * + * This program and the accompanying materials are made + * available under the terms of the Eclipse Public License 2.0 + * which is available at https://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + */ +import {Button, clipboard, ClipboardField} from '../../../index'; + +/** + * Finds a field of type {@link ClipboardField} on the surrounding form and copies its content to the clipboard. + * Intended to be used as a model variant on the ClipboardForm. + */ +export class ClipboardFormCopyAndCloseButton extends Button { + + protected override _doAction() { + this._copyTextToClipboard(); + super._doAction(); + } + + protected _copyTextToClipboard() { + let clipboardField = this.getForm()?.findChild(ClipboardField); + let textToCopy = clipboardField?.getSelectedText() || clipboardField?.displayText; + if (textToCopy) { + clipboard.copyText({ + parent: this, + text: textToCopy + }); + } + } +} diff --git a/eclipse-scout-core/src/index.ts b/eclipse-scout-core/src/index.ts index b0b1374586c..0108b3117fa 100644 --- a/eclipse-scout-core/src/index.ts +++ b/eclipse-scout-core/src/index.ts @@ -789,6 +789,7 @@ export * from './form/fields/checkbox/CheckBoxToggleKeyStroke'; export * from './form/fields/clipboardfield/ClipboardField'; export * from './form/fields/clipboardfield/ClipboardFieldModel'; export * from './form/fields/clipboardfield/ClipboardFieldAdapter'; +export * from './form/fields/clipboardfield/ClipboardFormCopyAndCloseButton'; export * from './form/fields/colorfield/ColorField'; export * from './form/fields/colorfield/ColorFieldAdapter'; export * from './form/fields/datefield/DatePredictionFailedStatus'; diff --git a/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/form/clipboard/ClipboardForm.java b/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/form/clipboard/ClipboardForm.java index ae798b18606..0ca9eaace5b 100644 --- a/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/form/clipboard/ClipboardForm.java +++ b/org.eclipse.scout.rt.client/src/main/java/org/eclipse/scout/rt/client/ui/form/clipboard/ClipboardForm.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010, 2023 BSI Business Systems Integration AG + * Copyright (c) 2010, 2026 BSI Business Systems Integration AG * * This program and the accompanying materials are made * available under the terms of the Eclipse Public License 2.0 @@ -15,16 +15,17 @@ import org.eclipse.scout.rt.client.dto.FormData; import org.eclipse.scout.rt.client.dto.FormData.DefaultSubtypeSdkCommand; import org.eclipse.scout.rt.client.dto.FormData.SdkCommand; -import org.eclipse.scout.rt.client.ui.action.keystroke.AbstractKeyStroke; -import org.eclipse.scout.rt.client.ui.action.keystroke.IKeyStroke; import org.eclipse.scout.rt.client.ui.form.AbstractForm; import org.eclipse.scout.rt.client.ui.form.AbstractFormHandler; import org.eclipse.scout.rt.client.ui.form.clipboard.ClipboardForm.MainBox.CancelButton; import org.eclipse.scout.rt.client.ui.form.clipboard.ClipboardForm.MainBox.ClipboardField; import org.eclipse.scout.rt.client.ui.form.clipboard.ClipboardForm.MainBox.ClipboardLabel; +import org.eclipse.scout.rt.client.ui.form.clipboard.ClipboardForm.MainBox.CopyAndCloseButton; import org.eclipse.scout.rt.client.ui.form.clipboard.ClipboardForm.MainBox.OkButton; +import org.eclipse.scout.rt.client.ui.form.fields.ModelVariant; import org.eclipse.scout.rt.client.ui.form.fields.button.AbstractCancelButton; import org.eclipse.scout.rt.client.ui.form.fields.button.AbstractOkButton; +import org.eclipse.scout.rt.client.ui.form.fields.button.IButton; import org.eclipse.scout.rt.client.ui.form.fields.clipboardfield.AbstractClipboardField; import org.eclipse.scout.rt.client.ui.form.fields.groupbox.AbstractGroupBox; import org.eclipse.scout.rt.client.ui.form.fields.labelfield.AbstractLabelField; @@ -47,6 +48,11 @@ protected ClipboardForm(boolean callInitializer) { super(callInitializer); } + @Override + protected boolean getConfiguredInheritAccessibility() { + return false; + } + public MimeType[] getMimeTypes() { return m_mimeTypes; } @@ -65,7 +71,8 @@ public void setMimeTypes(MimeType... mimeTypes) { protected void checkOkButtonEnabled() { boolean okButtonEnabled = getHandler() instanceof CopyHandler || getClipboardField().getValue() != null && !getClipboardField().getValue().isEmpty(); - getOkButton().setEnabled(okButtonEnabled, true); + IButton okButton = getCopyAndCloseButton().isVisible() ? getCopyAndCloseButton() : getOkButton(); + okButton.setEnabled(okButtonEnabled); } @Override @@ -83,6 +90,10 @@ public void startPaste() { start(); } + public MainBox getMainBox() { + return getFieldByClass(MainBox.class); + } + public ClipboardLabel getClipboardLabel() { return getFieldByClass(ClipboardLabel.class); } @@ -91,6 +102,10 @@ public ClipboardField getClipboardField() { return getFieldByClass(ClipboardField.class); } + public CopyAndCloseButton getCopyAndCloseButton() { + return getFieldByClass(CopyAndCloseButton.class); + } + public OkButton getOkButton() { return getFieldByClass(OkButton.class); } @@ -112,6 +127,16 @@ protected String getConfiguredBorderDecoration() { return BORDER_DECORATION_EMPTY; } + @Override + protected int getConfiguredHeightInPixel() { + return 340; + } + + @Override + protected int getConfiguredWidthInPixel() { + return 730; + } + @Order(10) @ClassId("7f2f4401-7bc8-45aa-9cf5-e23129aafd44") public class ClipboardLabel extends AbstractLabelField { @@ -140,22 +165,17 @@ protected boolean getConfiguredLabelVisible() { protected boolean getConfiguredWrapText() { return true; } + + @Override + protected boolean getConfiguredSelectable() { + return false; + } } @Order(20) @ClassId("5c81521d-f16d-411a-85f1-c349d8b71a28") public class ClipboardField extends AbstractClipboardField { - @Override - protected int getConfiguredHeightInPixel() { - return 190; - } - - @Override - protected int getConfiguredWidthInPixel() { - return 705; - } - @Override protected double getConfiguredGridWeightX() { return 1; @@ -187,6 +207,22 @@ protected void execChangedValue() { } } + @Order(29) + @ClassId("f869f3c0-02cf-4eaf-9369-36f0b72b6d2a") + @ModelVariant("ClipboardFormCopyAndClose") + public class CopyAndCloseButton extends AbstractOkButton { + + @Override + protected void execInitField() { + setVisibleGranted(false); // only visible in "copy" mode (instead of the OkButton) + } + + @Override + protected String getConfiguredLabel() { + return TEXTS.get("Copy"); + } + } + @Order(30) @ClassId("818d7930-126e-481e-ac47-b7e8654e8060") public class OkButton extends AbstractOkButton { @@ -196,38 +232,21 @@ public class OkButton extends AbstractOkButton { @ClassId("a54fc3fc-ee5a-4351-b82f-3168e96c2f34") public class CancelButton extends AbstractCancelButton { } - - /** - * Escape keyStroke is required in CopyHandler case, when form has no cancel-button but user should be able to close - * form with ESC anyway. - */ - @Order(50) - @ClassId("18fc9914-495f-4523-b75c-41259de828db") - public class EscapeKeyStroke extends AbstractKeyStroke { - - @Override - protected String getConfiguredKeyStroke() { - return IKeyStroke.ESCAPE; - } - - @Override - protected void execAction() { - doClose(); - } - } } public class CopyHandler extends AbstractFormHandler { @Override protected void execLoad() { - // use setVisibleGranted here because we don't want to send the cancel-button (incl. ESC keyStroke) to the UI - super.execLoad(); + setTitle(TEXTS.get("CopyToClipboard")); getClipboardLabel().setValue(TEXTS.get("CopyToClipboardFromFieldBelow")); - getCancelButton().setVisibleGranted(false); - getOkButton().setLabel(TEXTS.get("CloseButton")); - checkOkButtonEnabled(); + getClipboardLabel().setVisibleGranted(false); + // Switch to "copy" mode getClipboardField().setReadOnly(true); + // Show copy button (with model variant) instead of normal ok button + getOkButton().setVisibleGranted(false); + getCopyAndCloseButton().setVisibleGranted(true); + checkOkButtonEnabled(); } } @@ -235,7 +254,7 @@ public class PasteHandler extends AbstractFormHandler { @Override protected void execLoad() { - super.execLoad(); + setTitle(TEXTS.get("InsertFromClipboard")); getClipboardLabel().setValue(TEXTS.get("PasteClipboardContentsInFieldBelow")); checkOkButtonEnabled(); } diff --git a/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts.properties b/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts.properties index 3ba4e8a9ea1..311182b7986 100644 --- a/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts.properties +++ b/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts.properties @@ -61,6 +61,7 @@ Configurations=Configurations Configure=Configuration ConfirmApplyChanges=Would you like to apply the changes? Copy=Copy +CopyToClipboard=Copy to clipboard CopyToClipboardFromFieldBelow=Please use the context menu or shortcut to copy field contents below to clipboard. CorrelationId=Correlation ID Criteria=Criteria @@ -150,6 +151,7 @@ InactiveState=inactive InactiveStates=Inactive Info=Info Information=Information +InsertFromClipboard=Insert from clipboard InternalProcessingErrorMsg=An internal processing error has occurred{0}. Interrupted=Canceled InterruptedErrorText=The process was canceled. @@ -259,7 +261,7 @@ PasswordUsernameNotPartOfPass=The username must not be part of the password. PasswordWillExpireHeaderX=Your password expires {0}. PasswordWillExpireInfo=Would you like to change it now? PasswordsDoNotMatch=The two passwords do not match. -PasteClipboardContentsInFieldBelow=Please use the context menu, shortcut or drag and drop to paste clipboard contents into the field below.\r\nDepending on your browser text, image and file contents can be pasted. +PasteClipboardContentsInFieldBelow=Please use the context menu, shortcut or drag and drop to paste clipboard contents into the field below. Path=Path Pending=Waiting... PleaseTryAgainLater=Please try again later. diff --git a/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts_de.properties b/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts_de.properties index 6d09de1454d..0a143fa1d8a 100644 --- a/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts_de.properties +++ b/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts_de.properties @@ -61,7 +61,8 @@ Configurations=Konfigurationen Configure=Konfiguration ConfirmApplyChanges=Möchten Sie die Änderungen übernehmen? Copy=Kopieren -CopyToClipboardFromFieldBelow=Bitte mithilfe des Kontextmenüs oder der Tastenkombination den Feldinhalt in die Zwischenablage kopieren +CopyToClipboard=In Zwischenablage kopieren +CopyToClipboardFromFieldBelow=Bitte mithilfe des Kontextmenüs oder der Tastenkombination den Feldinhalt in die Zwischenablage kopieren. CorrelationId=Analyse-ID Criteria=Kriterien CustomColumAbbreviation=C @@ -150,6 +151,7 @@ InactiveState=inaktiv InactiveStates=Inaktive Info=Info Information=Informationen +InsertFromClipboard=Aus Zwischenablage einfügen InternalProcessingErrorMsg=Ein interner Verarbeitungsfehler ist aufgetreten {0}. Interrupted=Abgebrochen InterruptedErrorText=Der Vorgang wurde abgebrochen. @@ -259,7 +261,7 @@ PasswordUsernameNotPartOfPass=Der Benutzername darf nicht Teil des Passwortes se PasswordWillExpireHeaderX=Ihr Passwort läuft {0} ab. PasswordWillExpireInfo=Möchten Sie es jetzt ändern? PasswordsDoNotMatch=Die zwei Passwörter stimmen nicht überein. -PasteClipboardContentsInFieldBelow=Bitte mithilfe von Kontextmenü, Tastenkombination oder Drag-and-drop Inhalte aus der Zwischenablage in untenstehendes Feld einfügen.\r\nAbhängig vom Browser können Text-, Bildinhalte und Dateien eingefügt werden. +PasteClipboardContentsInFieldBelow=Bitte mithilfe von Kontextmenü, Tastenkombination oder Drag-and-drop Inhalte aus der Zwischenablage in untenstehendes Feld einfügen. Path=Pfad Pending=Warten... PleaseTryAgainLater=Bitte versuchen Sie es später noch einmal. diff --git a/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts_es.properties b/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts_es.properties index f9c74e1d708..6ca8f25a113 100644 --- a/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts_es.properties +++ b/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts_es.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2010, 2025 BSI Business Systems Integration AG +# Copyright (c) 2010, 2026 BSI Business Systems Integration AG # # This program and the accompanying materials are made # available under the terms of the Eclipse Public License 2.0 @@ -226,7 +226,7 @@ PasswordHasExpiredTitle=Contraseña caducada PasswordWillExpireHeaderX=Su contraseña caduca PasswordWillExpireInfo=¿Quiere cambiarla ahora? PasswordsDoNotMatch=Las dos contraseñas no son las mismas -PasteClipboardContentsInFieldBelow=Use el menú contextual, el acceso directo o la función arrastrar y soltar para pegar contenido del portapapeles en el siguiente campo.\n\nSegún el texto del navegador, se pueden pegar los contenidos de la imagen y el archivo. +PasteClipboardContentsInFieldBelow=Use el menú contextual, el acceso directo o la función arrastrar y soltar para pegar contenido del portapapeles en el siguiente campo. Path=Ruta Pending=Esperando PleaseTryAgainLater=Vuelva a intentarlo más tarde. diff --git a/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts_fr.properties b/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts_fr.properties index ca8ec17e8e4..88c81d1b883 100644 --- a/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts_fr.properties +++ b/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts_fr.properties @@ -61,6 +61,7 @@ Configurations=Configurations Configure=Configuration ConfirmApplyChanges=Voulez-vous appliquer les modifications ? Copy=Copier +CopyToClipboard=Copier dans le presse-papiers CopyToClipboardFromFieldBelow=Veuillez copier le contenu du champ dans le presse-papier à l'aide du menu contextuel ou de la combinaison de touches. CorrelationId=Analyse de l'ID Criteria=Critères de recherche @@ -150,6 +151,7 @@ InactiveState=Inactif InactiveStates=Inactifs Info=Info Information=Informations +InsertFromClipboard=Insérer à partir du presse-papiers InternalProcessingErrorMsg=Une erreur de traitement interne est survenue {0}. Interrupted=Interrompu InterruptedErrorText=Le processus a été interrompu. @@ -259,7 +261,7 @@ PasswordUsernameNotPartOfPass=Le nom d'utilisateur ne peut pas être partie du m PasswordWillExpireHeaderX=Votre mot de passe expire {0}. PasswordWillExpireInfo=Voulez-vous le modifier maintenant ? PasswordsDoNotMatch=Les deux mots de passe ne correspondent pas. -PasteClipboardContentsInFieldBelow=À l'aide du menu contextuel, de la combinaison de touches ou de drag-and-drop insérer les contenus de presse-papiers dans le champ ci-dessous.\r\nEn fonction de votre navigateur, il est possible d'insérer du texte, des images et des fichiers. +PasteClipboardContentsInFieldBelow=À l'aide du menu contextuel, de la combinaison de touches ou de drag-and-drop insérer les contenus de presse-papiers dans le champ ci-dessous. Path=Chemin Pending=Attendre... PleaseTryAgainLater=Veuillez réessayer plus tard. diff --git a/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts_it.properties b/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts_it.properties index 8d5e133ebb4..5fcb878f191 100644 --- a/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts_it.properties +++ b/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts_it.properties @@ -61,6 +61,7 @@ Configurations=Configurazioni Configure=Configurazione ConfirmApplyChanges=Applicare le modifiche? Copy=Copia +CopyToClipboard=Copia negli appunti CopyToClipboardFromFieldBelow=Si prega di copiare il contenuto del campo mediante negli appunti tramite il menu contestuale o con la combinazione di tasti. CorrelationId=ID analisi Criteria=Criteri @@ -150,6 +151,7 @@ InactiveState=inattivo InactiveStates=Inattivi Info=Informazione Information=Informazioni +InsertFromClipboard=Incolla dagli appunti InternalProcessingErrorMsg=Si è verificato un errore di elaborazione interno {0}. Interrupted=Interrotto InterruptedErrorText=Il processo è stato interrotto. @@ -259,7 +261,7 @@ PasswordUsernameNotPartOfPass=Il nome utente non deve essere incluso nella parol PasswordWillExpireHeaderX=La parola d'accesso scadrà tra {0}. PasswordWillExpireInfo=Volete cambiarla ora? PasswordsDoNotMatch=Le due parole d'accesso non corrispondono. -PasteClipboardContentsInFieldBelow=Si prega di incollare i contenuti degli appunti nel campo sottostante tramite il menu contestuale, con la combinazione di tasti o tramite drag and drop.\r\nA seconda del browser, si possono inserire testi, immagini e file. +PasteClipboardContentsInFieldBelow=Si prega di incollare i contenuti degli appunti nel campo sottostante tramite il menu contestuale, con la combinazione di tasti o tramite drag and drop. Path=Percorso Pending=Attendere... PleaseTryAgainLater=Si prega di riprovare più tardi. diff --git a/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts_ja.properties b/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts_ja.properties index b339622d5ec..a26d1e9b19f 100644 --- a/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts_ja.properties +++ b/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts_ja.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2010, 2025 BSI Business Systems Integration AG +# Copyright (c) 2010, 2026 BSI Business Systems Integration AG # # This program and the accompanying materials are made # available under the terms of the Eclipse Public License 2.0 @@ -226,7 +226,7 @@ PasswordHasExpiredTitle=パスワード期限切れ PasswordWillExpireHeaderX=パスワードの有効期限は{0}です。 PasswordWillExpireInfo=今すぐ変更しますか? PasswordsDoNotMatch=パスワードが一致しません -PasteClipboardContentsInFieldBelow=クリップボードの内容を下のフィールドに貼り付けるには、右クリックメニューのショートカットまたはドラッグアンドドロップを使用してください。\n\nブラウザのテキストに応じて、画像とファイルの内容を貼り付けることができます。 +PasteClipboardContentsInFieldBelow=クリップボードの内容を下のフィールドに貼り付けるには、右クリックメニューのショートカットまたはドラッグアンドドロップを使用してください。 Path=Path Pending=待つ PleaseTryAgainLater=後でもう一度お試しください。 diff --git a/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts_nl.properties b/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts_nl.properties index acf85d197a6..f8a5f5b9407 100644 --- a/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts_nl.properties +++ b/org.eclipse.scout.rt.nls/src/main/resources/org/eclipse/scout/rt/nls/texts/ScoutTexts_nl.properties @@ -1,5 +1,5 @@ # -# Copyright (c) 2010, 2025 BSI Business Systems Integration AG +# Copyright (c) 2010, 2026 BSI Business Systems Integration AG # # This program and the accompanying materials are made # available under the terms of the Eclipse Public License 2.0 @@ -225,7 +225,7 @@ PasswordHasExpiredTitle=Wachtwoord vervallen PasswordWillExpireHeaderX=Uw wachtwoord vervalt {0}. PasswordWillExpireInfo=Wilt u het nu wijzigen? PasswordsDoNotMatch=De twee wachtwoorden komen niet overeen. -PasteClipboardContentsInFieldBelow=Gebruik het rechtsklikmenu of de snelkoppeling, of versleep de inhoud van het klembord naar het onderstaande veld. Afhankelijk van de tekst in uw browser, kan de afbeelding en inhoud van uw bestand worden geplaatst. +PasteClipboardContentsInFieldBelow=Gebruik het rechtsklikmenu of de snelkoppeling, of versleep de inhoud van het klembord naar het onderstaande veld. Path=Pad Pending=Even geduld… PleaseTryAgainLater=Probeer later opnieuw.