Hallo Fabian,
spontan fällt mir hier der Umweg über einen ClientService ein, der als eine Art eigenes Clipboard dient. Dazu müsstest Du ein Modul bauen.
Grobe Idee:
ClientService (=eigenes Interface), z.B.
import de.espirit.firstspirit.access.editor.value.Table;
interface TableValueClipboard {
storeValue(Table tableValue);
@Nullable Table getValue();
}
... mit einer entsprechenden - ganz einfachen - Implementierung die sich einfach nur den Wert in einem
private Table value;
merkt.
Um den ClientService zur Verfügung zu stellen, muss er über ein PermanentPlugin (dieses muss dann in die module.xml als PUBLIC-Komponente eingetragen werden) registriert werden:
public class TableValueClipboardPlugin implements JavaClientPermanentPlugin, WebeditPermanentPlugin{
@Override
public void setUp(BaseContext context) {
ClientServiceRegistryAgent clientServiceRegistryAgent = context.requireSpecialist(ClientServiceRegistryAgent.TYPE);
TableValueClipboard clipboard = new TableValueClipboardImpl();
clientServiceRegistryAgent.registerClientService(TableValueClipboard.class, clipboard);
}
...
}
Im Formular dann ein FS_BUTTON (bzw. zwei - einer zum Kopieren und einer zum Einfügen) mit einem Script (bzw. besser: Executable). Der Button bekäme die jeweilige DOMTABLE-Eingabekomponente als Parameter:
<FS_BUTTON name="st_btnCopy" onClick="class:TableCopyExecutable">
<PARAM name="source">#field.st_domtable</PARAM>
...
Das Executable (ebenfalls im Modul) legt dann den Wert des Feldes im ClientService ab:
context.requireSpecialist(ServicesBroker.TYPE).getService(TableValueClipboard.class).store(source.get());
Analog dazu als Gegenstück der Paste-Teil:
<FS_BUTTON name="st_btnCopy" onClick="class:TablePasteExecutable">
<PARAM name="target">#field.st_otherDomtable</PARAM>
...
Executable:
Table tableValue = context.requireSpecialist(ServicesBroker.TYPE).getService(TableValueClipboard.class).getValue();
target.set(tableValue);
Du kannst hier natürlich auch nur ein einzelnes "TableClipboardExecutable" bauen, das über einen weiteren Parameter (z.B. "action") entscheidet ob es kopieren oder einfügen soll.
Viele Grüße
Michael