Update docs
This commit is contained in:
@@ -4,4 +4,14 @@
|
|||||||
|
|
||||||
ifndef::snippets[:snippets: ../../../../../src/test/java/org/springframework/shell/docs]
|
ifndef::snippets[:snippets: ../../../../../src/test/java/org/springframework/shell/docs]
|
||||||
|
|
||||||
tbd
|
Views have their own default bindings which can be changed.
|
||||||
|
|
||||||
|
You can subscribe into all key events:
|
||||||
|
|
||||||
|
[source, java, indent=0]
|
||||||
|
----
|
||||||
|
include::{snippets}/KeyHandlingSnippets.java[tag=sample]
|
||||||
|
----
|
||||||
|
|
||||||
|
`KeyEvent` is a record containing info about a binding coming out
|
||||||
|
from a terminal.
|
||||||
|
|||||||
@@ -4,4 +4,12 @@
|
|||||||
|
|
||||||
ifndef::snippets[:snippets: ../../../../../src/test/java/org/springframework/shell/docs]
|
ifndef::snippets[:snippets: ../../../../../src/test/java/org/springframework/shell/docs]
|
||||||
|
|
||||||
tbd
|
You can subscribe into all mouse events:
|
||||||
|
|
||||||
|
[source, java, indent=0]
|
||||||
|
----
|
||||||
|
include::{snippets}/MouseHandlingSnippets.java[tag=sample]
|
||||||
|
----
|
||||||
|
|
||||||
|
`MouseEvent` is a record wrapping _x_ and _Y_ coordinates and
|
||||||
|
`org.jline.terminal.MouseEvent` from JLine library.
|
||||||
|
|||||||
@@ -7,13 +7,8 @@ ifndef::snippets[:snippets: ../../../../../src/test/java/org/springframework/she
|
|||||||
Lets start with a simple app which prints "hello world" in a view.
|
Lets start with a simple app which prints "hello world" in a view.
|
||||||
[source, java, indent=0]
|
[source, java, indent=0]
|
||||||
----
|
----
|
||||||
include::{snippets}/TerminalUiSnippets.java[tag=snippet1]
|
include::{snippets}/TerminalUiSnippets.java[tag=introsample]
|
||||||
----
|
----
|
||||||
|
|
||||||
There is not much to see here other than `TerminalUI` is a class handling
|
There is not much to see here other than `TerminalUI` is a class handling
|
||||||
all logic aroung views and uses `View` as it's root view.
|
all logic aroung views and uses `View` as it's root view.
|
||||||
|
|
||||||
[source, java, indent=0]
|
|
||||||
----
|
|
||||||
include::{snippets}/TerminalUiSnippets.java[tag=snippet2]
|
|
||||||
----
|
|
||||||
|
|||||||
@@ -4,7 +4,33 @@
|
|||||||
ifndef::snippets[:snippets: ../../../../../src/test/java/org/springframework/shell/docs]
|
ifndef::snippets[:snippets: ../../../../../src/test/java/org/springframework/shell/docs]
|
||||||
|
|
||||||
`TerminalUI` is a main implementation to drive ui execution logic.
|
`TerminalUI` is a main implementation to drive ui execution logic.
|
||||||
Running `TerminalUI` execution loop is a blocking operation.
|
|
||||||
|
== Create TerminalUI
|
||||||
|
You can build `TerminalUI` manually but recommended way is to use `TerminalUIBuilder`
|
||||||
|
build is autoconfigured for you and will set needed services.
|
||||||
|
|
||||||
|
[source, java, indent=0]
|
||||||
|
----
|
||||||
|
include::{snippets}/TerminalUiSnippets.java[tag=uibuilderautowire]
|
||||||
|
----
|
||||||
|
|
||||||
|
== Configuring Views
|
||||||
|
`TerminalUI` has a helper method _configure(View)_ which can be used to set
|
||||||
|
needed integrations into _eventloop_ and other services.
|
||||||
|
|
||||||
|
[source, java, indent=0]
|
||||||
|
----
|
||||||
|
include::{snippets}/TerminalUiSnippets.java[tag=configureview]
|
||||||
|
----
|
||||||
|
|
||||||
|
== Running UI Loop
|
||||||
|
Running `TerminalUI` execution loop is a blocking operation. You're going to need
|
||||||
|
a way to exit from a loop, for example <<Exiting App>>.
|
||||||
|
|
||||||
|
[source, java, indent=0]
|
||||||
|
----
|
||||||
|
include::{snippets}/TerminalUiSnippets.java[tag=uirun]
|
||||||
|
----
|
||||||
|
|
||||||
== Exiting App
|
== Exiting App
|
||||||
|
|
||||||
@@ -13,5 +39,5 @@ events and request _interrupt_.
|
|||||||
|
|
||||||
[source, java, indent=0]
|
[source, java, indent=0]
|
||||||
----
|
----
|
||||||
include::{snippets}/TerminalUiSnippets.java[tag=snippet3]
|
include::{snippets}/TerminalUiSnippets.java[tag=exitingfromloop]
|
||||||
----
|
----
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2023 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.springframework.shell.docs;
|
||||||
|
|
||||||
|
import org.springframework.shell.component.view.event.EventLoop;
|
||||||
|
import org.springframework.shell.component.view.event.KeyEvent;
|
||||||
|
|
||||||
|
class KeyHandlingSnippets {
|
||||||
|
|
||||||
|
EventLoop eventLoop;
|
||||||
|
|
||||||
|
void dump1() {
|
||||||
|
// tag::sample[]
|
||||||
|
eventLoop.keyEvents().subscribe((KeyEvent event) -> {
|
||||||
|
// do something with key event
|
||||||
|
});
|
||||||
|
// end::sample[]
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2023 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
package org.springframework.shell.docs;
|
||||||
|
|
||||||
|
import org.springframework.shell.component.view.event.EventLoop;
|
||||||
|
import org.springframework.shell.component.view.event.MouseEvent;
|
||||||
|
|
||||||
|
class MouseHandlingSnippets {
|
||||||
|
|
||||||
|
EventLoop eventLoop;
|
||||||
|
|
||||||
|
void dump1() {
|
||||||
|
// tag::sample[]
|
||||||
|
eventLoop.mouseEvents().subscribe((MouseEvent event) -> {
|
||||||
|
// do something with mouse event
|
||||||
|
});
|
||||||
|
// end::sample[]
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -20,6 +20,7 @@ import org.jline.terminal.Terminal;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.shell.component.message.ShellMessageBuilder;
|
import org.springframework.shell.component.message.ShellMessageBuilder;
|
||||||
import org.springframework.shell.component.view.TerminalUI;
|
import org.springframework.shell.component.view.TerminalUI;
|
||||||
|
import org.springframework.shell.component.view.TerminalUIBuilder;
|
||||||
import org.springframework.shell.component.view.control.BoxView;
|
import org.springframework.shell.component.view.control.BoxView;
|
||||||
import org.springframework.shell.component.view.event.EventLoop;
|
import org.springframework.shell.component.view.event.EventLoop;
|
||||||
import org.springframework.shell.component.view.event.KeyEvent.Key;
|
import org.springframework.shell.component.view.event.KeyEvent.Key;
|
||||||
@@ -28,14 +29,14 @@ import org.springframework.shell.geom.VerticalAlign;
|
|||||||
|
|
||||||
class TerminalUiSnippets {
|
class TerminalUiSnippets {
|
||||||
|
|
||||||
class Sample1 {
|
class SampleIntro {
|
||||||
|
|
||||||
// tag::snippet1[]
|
// tag::introsample[]
|
||||||
@Autowired
|
@Autowired
|
||||||
Terminal terminal;
|
TerminalUIBuilder builder;
|
||||||
|
|
||||||
void sample() {
|
void sample() {
|
||||||
TerminalUI ui = new TerminalUI(terminal);
|
TerminalUI ui = builder.build();
|
||||||
BoxView view = new BoxView();
|
BoxView view = new BoxView();
|
||||||
view.setDrawFunction((screen, rect) -> {
|
view.setDrawFunction((screen, rect) -> {
|
||||||
screen.writerBuilder()
|
screen.writerBuilder()
|
||||||
@@ -46,33 +47,12 @@ class TerminalUiSnippets {
|
|||||||
ui.setRoot(view, true);
|
ui.setRoot(view, true);
|
||||||
ui.run();
|
ui.run();
|
||||||
}
|
}
|
||||||
// end::snippet1[]
|
// end::introsample[]
|
||||||
}
|
|
||||||
|
|
||||||
class Sample2 {
|
|
||||||
|
|
||||||
// tag::snippet2[]
|
|
||||||
@Autowired
|
|
||||||
Terminal terminal;
|
|
||||||
|
|
||||||
void sample() {
|
|
||||||
TerminalUI ui = new TerminalUI(terminal);
|
|
||||||
BoxView view = new BoxView();
|
|
||||||
view.setDrawFunction((screen, rect) -> {
|
|
||||||
screen.writerBuilder()
|
|
||||||
.build()
|
|
||||||
.text("Hello World", rect, HorizontalAlign.CENTER, VerticalAlign.CENTER);
|
|
||||||
return rect;
|
|
||||||
});
|
|
||||||
ui.setRoot(view, false);
|
|
||||||
ui.run();
|
|
||||||
}
|
|
||||||
// end::snippet2[]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class Sample3 {
|
class Sample3 {
|
||||||
|
|
||||||
// tag::snippet3[]
|
// tag::exitingfromloop[]
|
||||||
@Autowired
|
@Autowired
|
||||||
Terminal terminal;
|
Terminal terminal;
|
||||||
|
|
||||||
@@ -89,7 +69,44 @@ class TerminalUiSnippets {
|
|||||||
});
|
});
|
||||||
ui.run();
|
ui.run();
|
||||||
}
|
}
|
||||||
// end::snippet3[]
|
// end::exitingfromloop[]
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
class SampleUiAutowire {
|
||||||
|
|
||||||
|
// tag::uibuilderautowire[]
|
||||||
|
@Autowired
|
||||||
|
TerminalUIBuilder builder;
|
||||||
|
|
||||||
|
void sample() {
|
||||||
|
TerminalUI ui = builder.build();
|
||||||
|
// do something with ui
|
||||||
|
}
|
||||||
|
// end::uibuilderautowire[]
|
||||||
|
}
|
||||||
|
|
||||||
|
class SampleConfigureView {
|
||||||
|
|
||||||
|
// tag::configureview[]
|
||||||
|
TerminalUI ui;
|
||||||
|
|
||||||
|
void sample() {
|
||||||
|
BoxView view = new BoxView();
|
||||||
|
ui.configure(view);
|
||||||
|
}
|
||||||
|
// end::configureview[]
|
||||||
|
}
|
||||||
|
|
||||||
|
class SampleUiLoop {
|
||||||
|
|
||||||
|
// tag::uirun[]
|
||||||
|
TerminalUI ui;
|
||||||
|
|
||||||
|
void sample() {
|
||||||
|
ui.run();
|
||||||
|
}
|
||||||
|
// end::uirun[]
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user