ampersand83
I'm new here

Kopieren von Inhalten einer DOMTABLE in andere DOMTABLE

Hallo,

ist es irgendwie möglich die Inhalte einer DOMTABLE inklusive aller Zeilen und Spalten in eine andere DOMTABLE zu kopieren.

Zumindest per Copy&Paste scheint es nicht zu funktionieren. Gibt es hierfür eine andere Möglichkeit oder ist dies schlichtweg nicht möglich?

Gruß

Stefan

0 Kudos
4 Replies
feddersen
Community Manager

Ein Kopieren mittels Skript sollte auf jeden Fall möglich sein, ggf. auch getriggert über einen FS_BUTTON.

0 Kudos
fabian_koenig
I'm new here

Ist hierfür schon eine Lösung gefunden worden?

Liebe Grüße

Fabian

0 Kudos

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

0 Kudos

Vielen Dank für die ausführliche Hilfe!
Für den aktuellen Stand reicht uns die "Übersetzungshilfe" unter "Extras->Übersetzungshilfe". Damit kann eine Tabelle in eine andere Sprache kopiert werden.

Falls dies irgendwann nicht mehr ausreichen sollte, werde ich auf deine Implementierungshilfe zurückkommen Smiley Happy

0 Kudos