Skip to content

Commit cf4d509

Browse files
committed
add wrapping example to demo
1 parent 89b44fa commit cf4d509

File tree

3 files changed

+107
-1
lines changed

3 files changed

+107
-1
lines changed

examples/demo/src/apps/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ pub mod custom_input;
77
pub mod editor;
88
pub mod search;
99
pub mod toggle_buttons;
10+
pub mod wrapping;
1011

1112
pub trait Show {
1213
fn title(&self) -> &'static str;

examples/demo/src/apps/wrapping.rs

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
use egui::{DragValue, Ui};
2+
use egui_json_tree::{
3+
DefaultExpand, JsonTree, JsonTreeMaxWidth, JsonTreeStyle, JsonTreeWrapping,
4+
JsonTreeWrappingParams,
5+
};
6+
use serde_json::Value;
7+
8+
use super::Show;
9+
10+
pub struct WrappingExample {
11+
value: Value,
12+
state: JsonTreeWrapping,
13+
}
14+
15+
impl WrappingExample {
16+
pub fn new(value: Value) -> Self {
17+
Self {
18+
value,
19+
state: JsonTreeWrapping {
20+
max_rows: 1,
21+
max_width: JsonTreeMaxWidth::UiAvailableWidth,
22+
},
23+
}
24+
}
25+
}
26+
27+
impl Show for WrappingExample {
28+
fn title(&self) -> &'static str {
29+
"Wrapping"
30+
}
31+
32+
fn show(&mut self, ui: &mut Ui) {
33+
ui.hyperlink_to("Source", "https://github.com/dmackdev/egui_json_tree/blob/master/examples/demo/src/apps/wrapping.rs");
34+
ui.add_space(10.0);
35+
36+
ui.label(egui::RichText::new("Max Rows:").monospace());
37+
ui.add(
38+
DragValue::new(&mut self.state.max_rows)
39+
.speed(0.1)
40+
.range(1..=5),
41+
);
42+
43+
ui.label(egui::RichText::new("Max Width:").monospace());
44+
ui.horizontal(|ui| {
45+
if ui
46+
.selectable_label(
47+
matches!(self.state.max_width, JsonTreeMaxWidth::Pt(pts) if pts.is_finite()),
48+
"Points",
49+
)
50+
.clicked()
51+
{
52+
self.state.max_width = JsonTreeMaxWidth::Pt(100.0);
53+
}
54+
if let JsonTreeMaxWidth::Pt(ref mut pts) = &mut self.state.max_width {
55+
if pts.is_finite() {
56+
ui.add(DragValue::new(pts).speed(10.0).range(100.0..=10000.0));
57+
}
58+
}
59+
});
60+
61+
if ui
62+
.selectable_label(
63+
matches!(self.state.max_width, JsonTreeMaxWidth::UiAvailableWidth),
64+
"Available Width",
65+
)
66+
.clicked()
67+
{
68+
self.state.max_width = JsonTreeMaxWidth::UiAvailableWidth;
69+
}
70+
71+
if ui
72+
.selectable_label(
73+
matches!(self.state.max_width, JsonTreeMaxWidth::Pt(pts) if pts.is_infinite()),
74+
"Infinite",
75+
)
76+
.clicked()
77+
{
78+
self.state.max_width = JsonTreeMaxWidth::Pt(f32::INFINITY);
79+
}
80+
81+
JsonTree::new(self.title(), &self.value)
82+
.style(JsonTreeStyle::new().wrap(JsonTreeWrappingParams {
83+
value_no_parent: self.state,
84+
value_expanded_parent: self.state,
85+
value_collapsed_root: self.state,
86+
}))
87+
.default_expand(DefaultExpand::All)
88+
.show(ui);
89+
}
90+
}

examples/demo/src/main.rs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use apps::{
22
copy_to_clipboard::CopyToClipboardExample, custom_input::CustomExample,
33
editor::JsonEditorExample, search::SearchExample,
4-
toggle_buttons::ToggleButtonsCustomisationDemo, Example, Show,
4+
toggle_buttons::ToggleButtonsCustomisationDemo, wrapping::WrappingExample, Example, Show,
55
};
66
use serde_json::json;
77

@@ -16,6 +16,20 @@ struct DemoApp {
1616
impl Default for DemoApp {
1717
fn default() -> Self {
1818
let complex_object = json!({"foo": [1, 2, [3]], "bar": { "qux" : false, "thud": { "a/b": [4, 5, { "m~n": "Greetings!" }]}, "grep": 21}, "baz": null});
19+
let long_strings_object = json!({
20+
"baz": "Ullamco ipsum proident occaecat eiusmod ea aute ex non cupidatat laboris duis amet cupidatat. Ullamco sint do enim consectetur Lorem occaecat mollit. Aliquip voluptate ullamco consectetur adipisicing elit fugiat labore laboris. Occaecat non incididunt duis consectetur aliquip dolore cillum eiusmod. Qui sunt est excepteur laborum.",
21+
"bar": [
22+
"Laboris id occaecat sit quis aliqua et. Fugiat nisi nulla nostrud voluptate id enim do esse deserunt non culpa incididunt eiusmod. Minim nulla reprehenderit irure duis amet commodo commodo aliquip ut. Lorem amet ipsum excepteur consectetur qui dolore. In occaecat dolor ullamco voluptate dolore qui incididunt occaecat pariatur est qui aliquip labore non.",
23+
"Velit ex nisi in et enim veniam ullamco reprehenderit consectetur Lorem. Dolor commodo pariatur Lorem proident. Ad minim aliquip excepteur officia consequat nulla mollit adipisicing ut veniam Lorem. Sint mollit occaecat velit do. Nulla aute Lorem non excepteur.",
24+
"Officia culpa in adipisicing sunt qui culpa voluptate ad veniam adipisicing anim ex aute. Laboris ipsum id est cillum minim quis sint ex culpa dolore minim. Lorem excepteur deserunt voluptate minim consequat qui quis enim. Do non irure pariatur exercitation commodo laboris sit. Sunt magna nulla magna Lorem reprehenderit dolore et tempor Lorem esse quis exercitation tempor commodo."
25+
],
26+
"qux": {
27+
"thud": "Et mollit occaecat et aliqua officia adipisicing adipisicing. Fugiat cillum dolor eu laborum cupidatat aliqua et reprehenderit do laboris velit in. Dolor voluptate Lorem pariatur voluptate enim labore in et pariatur consequat esse elit. Do qui aute proident in aliquip. Ea velit quis ex enim proident tempor laboris exercitation aute consectetur minim.",
28+
"fizz": {
29+
"buzz": "Sunt Lorem officia reprehenderit ea esse aliqua in veniam. Do irure amet dolore magna amet tempor anim sit irure tempor proident laborum dolore. Aute et ullamco eiusmod culpa et esse. Minim ut elit laboris est. Est mollit et mollit dolore ea adipisicing nostrud excepteur."
30+
}
31+
}
32+
});
1933

2034
Self {
2135
examples: vec![
@@ -40,6 +54,7 @@ impl Default for DemoApp {
4054
Box::new(CopyToClipboardExample::new(complex_object.clone())),
4155
Box::new(JsonEditorExample::new(complex_object.clone())),
4256
Box::new(ToggleButtonsCustomisationDemo::new(complex_object)),
57+
Box::new(WrappingExample::new(long_strings_object)),
4358
],
4459
open_example_idx: None,
4560
left_sidebar_expanded: true,

0 commit comments

Comments
 (0)