Add ability to clone connections for #124

This commit is contained in:
crschnick 2023-12-24 13:49:15 +00:00
parent 8c8dd99ad2
commit cbcafb12e3
4 changed files with 72 additions and 0 deletions

View file

@ -101,6 +101,10 @@ public interface DataStoreProvider {
return null;
}
default boolean canClone() {
return getCreationCategory() != null;
}
default DataStoreEntry getDisplayParent(DataStoreEntry store) {
return getSyntheticParent(store);
}

View file

@ -0,0 +1,66 @@
package io.xpipe.ext.base.action;
import io.xpipe.app.core.AppI18n;
import io.xpipe.app.ext.ActionProvider;
import io.xpipe.app.storage.DataStorage;
import io.xpipe.app.storage.DataStoreEntry;
import io.xpipe.app.storage.DataStoreEntryRef;
import io.xpipe.core.store.DataStore;
import javafx.beans.value.ObservableValue;
import lombok.Value;
public class CloneStoreAction implements ActionProvider {
@Value
static class Action implements ActionProvider.Action {
DataStoreEntry store;
@Override
public boolean requiresJavaFXPlatform() {
return false;
}
@Override
public void execute() {
DataStorage.get().addStoreEntryIfNotPresent(
DataStoreEntry.createNew(store.getName() + " (Copy)",store.getStore()));
}
}
@Override
public DataStoreCallSite<?> getDataStoreCallSite() {
return new DataStoreCallSite<>() {
@Override
public boolean isSystemAction() {
return true;
}
@Override
public ActionProvider.Action createAction(DataStoreEntryRef<DataStore> store) {
return new Action(store.get());
}
@Override
public Class<DataStore> getApplicableClass() {
return DataStore.class;
}
@Override
public boolean isApplicable(DataStoreEntryRef<DataStore> o) {
return o.get().getProvider().canClone();
}
@Override
public ObservableValue<String> getName(DataStoreEntryRef<DataStore> store) {
return AppI18n.observable("base.clone");
}
@Override
public String getIcon(DataStoreEntryRef<DataStore> store) {
return "mdi2c-content-copy";
}
};
}
}

View file

@ -50,6 +50,7 @@ open module io.xpipe.ext.base {
JavapAction,
JarAction;
provides ActionProvider with
CloneStoreAction,
RefreshStoreAction,
ScanAction,
LaunchAction,

View file

@ -19,6 +19,7 @@ observe=Start observing
stopObserve=Stop observing
createShortcut=Create desktop shortcut
browseFiles=Browse Files
clone=Clone
targetPath=Target path
newDirectory=New directory
copyShareLink=Copy link