mirror of
https://github.com/xpipe-io/xpipe.git
synced 2024-11-25 00:50:31 +00:00
Rework launchable stores
This commit is contained in:
parent
9b7cca8589
commit
41f71d45a7
6 changed files with 8 additions and 64 deletions
|
@ -9,7 +9,7 @@ public enum ShellTtyState {
|
||||||
@JsonProperty("none")
|
@JsonProperty("none")
|
||||||
NONE(true, false, false, true, true),
|
NONE(true, false, false, true, true),
|
||||||
@JsonProperty("merged")
|
@JsonProperty("merged")
|
||||||
MERGED_STDERR(false, false, false, false, true),
|
MERGED_STDERR(false, true, false, false, false),
|
||||||
@JsonProperty("pty")
|
@JsonProperty("pty")
|
||||||
PTY_ALLOCATED(false, true, true, false, false);
|
PTY_ALLOCATED(false, true, true, false, false);
|
||||||
|
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
package io.xpipe.core.store;
|
|
||||||
|
|
||||||
public interface LaunchableStore extends DataStore {
|
|
||||||
|
|
||||||
default void launch() throws Exception {}
|
|
||||||
}
|
|
|
@ -3,7 +3,7 @@ package io.xpipe.core.store;
|
||||||
import io.xpipe.core.process.ProcessControl;
|
import io.xpipe.core.process.ProcessControl;
|
||||||
import io.xpipe.core.process.ShellControl;
|
import io.xpipe.core.process.ShellControl;
|
||||||
|
|
||||||
public interface ShellStore extends DataStore, LaunchableStore, FileSystemStore, ValidatableStore {
|
public interface ShellStore extends DataStore, FileSystemStore, ValidatableStore {
|
||||||
|
|
||||||
static boolean isLocal(ShellStore s) {
|
static boolean isLocal(ShellStore s) {
|
||||||
return s instanceof LocalStore;
|
return s instanceof LocalStore;
|
||||||
|
|
|
@ -2,19 +2,10 @@ package io.xpipe.ext.base.action;
|
||||||
|
|
||||||
import io.xpipe.app.core.AppI18n;
|
import io.xpipe.app.core.AppI18n;
|
||||||
import io.xpipe.app.ext.ActionProvider;
|
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.app.storage.DataStoreEntryRef;
|
||||||
import io.xpipe.app.util.TerminalLauncher;
|
|
||||||
import io.xpipe.core.store.DataStore;
|
import io.xpipe.core.store.DataStore;
|
||||||
import io.xpipe.core.store.LaunchableStore;
|
|
||||||
import io.xpipe.core.store.ShellStore;
|
|
||||||
import io.xpipe.ext.base.script.ScriptStore;
|
|
||||||
|
|
||||||
import javafx.beans.value.ObservableValue;
|
import javafx.beans.value.ObservableValue;
|
||||||
|
|
||||||
import lombok.Value;
|
|
||||||
|
|
||||||
public class LaunchStoreAction implements ActionProvider {
|
public class LaunchStoreAction implements ActionProvider {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -33,7 +24,7 @@ public class LaunchStoreAction implements ActionProvider {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionProvider.Action createAction(DataStoreEntryRef<DataStore> store) {
|
public ActionProvider.Action createAction(DataStoreEntryRef<DataStore> store) {
|
||||||
return new Action(store.get());
|
return store.get().getProvider().launchAction(store.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -44,8 +35,7 @@ public class LaunchStoreAction implements ActionProvider {
|
||||||
@Override
|
@Override
|
||||||
public boolean isApplicable(DataStoreEntryRef<DataStore> o) {
|
public boolean isApplicable(DataStoreEntryRef<DataStore> o) {
|
||||||
return o.get().getValidity().isUsable()
|
return o.get().getValidity().isUsable()
|
||||||
&& (o.getStore() instanceof LaunchableStore
|
&& (o.get().getProvider().launchAction(o.get()) != null);
|
||||||
|| o.get().getProvider().launchAction(o.get()) != null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -66,7 +56,7 @@ public class LaunchStoreAction implements ActionProvider {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ActionProvider.Action createAction(DataStoreEntryRef<DataStore> store) {
|
public ActionProvider.Action createAction(DataStoreEntryRef<DataStore> store) {
|
||||||
return new Action(store.get());
|
return store.get().getProvider().launchAction(store.get());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -77,33 +67,8 @@ public class LaunchStoreAction implements ActionProvider {
|
||||||
@Override
|
@Override
|
||||||
public boolean isApplicable(DataStoreEntryRef<DataStore> o) {
|
public boolean isApplicable(DataStoreEntryRef<DataStore> o) {
|
||||||
return o.get().getValidity().isUsable()
|
return o.get().getValidity().isUsable()
|
||||||
&& (o.getStore() instanceof LaunchableStore
|
&& (o.get().getProvider().launchAction(o.get()) != null);
|
||||||
|| o.get().getProvider().launchAction(o.get()) != null);
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Value
|
|
||||||
static class Action implements ActionProvider.Action {
|
|
||||||
|
|
||||||
DataStoreEntry entry;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void execute() throws Exception {
|
|
||||||
var storeName = DataStorage.get().getStoreEntryDisplayName(entry);
|
|
||||||
if (entry.getStore() instanceof ShellStore s) {
|
|
||||||
TerminalLauncher.open(entry, storeName, null, ScriptStore.controlWithDefaultScripts(s.control()));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (entry.getStore() instanceof LaunchableStore s) {
|
|
||||||
s.launch();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (entry.getProvider().launchAction(entry) != null) {
|
|
||||||
entry.getProvider().launchAction(entry).execute();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,7 +43,8 @@ public class XPipeUrlAction implements ActionProvider {
|
||||||
if (!entry.getValidity().isUsable()) {
|
if (!entry.getValidity().isUsable()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return new LaunchStoreAction.Action(entry);
|
var p = entry.getProvider();
|
||||||
|
return p.launchAction(entry);
|
||||||
}
|
}
|
||||||
case "action" -> {
|
case "action" -> {
|
||||||
var id = args.get(1);
|
var id = args.get(1);
|
||||||
|
|
|
@ -1,16 +0,0 @@
|
||||||
package io.xpipe.ext.base.store;
|
|
||||||
|
|
||||||
import io.xpipe.app.util.TerminalLauncher;
|
|
||||||
import io.xpipe.core.process.ProcessControl;
|
|
||||||
import io.xpipe.core.store.LaunchableStore;
|
|
||||||
import io.xpipe.ext.base.SelfReferentialStore;
|
|
||||||
|
|
||||||
public interface LaunchableTerminalStore extends SelfReferentialStore, LaunchableStore {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
default void launch() throws Exception {
|
|
||||||
TerminalLauncher.open(getSelfEntry(), getSelfEntry().getName(), null, prepareLaunchCommand());
|
|
||||||
}
|
|
||||||
|
|
||||||
ProcessControl prepareLaunchCommand() throws Exception;
|
|
||||||
}
|
|
Loading…
Reference in a new issue