windjammer-ui 0.3.6

Cross-platform UI framework for Windjammer (Web, Desktop, Mobile)
Documentation

use super::traits::Renderable
pub enum SplitDirection {
    Horizontal,
    Vertical,
}

pub struct SplitPanel {
    left: string,
    right: string,
    direction: SplitDirection,
    initial_size: i32,
}

impl SplitPanel {
    pub fn new(left: string, right: string) -> SplitPanel {
        SplitPanel {
            left,
            right,
            direction: SplitDirection::Vertical,
            initial_size: 50,
        }
    }

    pub fn direction(self, direction: SplitDirection) -> SplitPanel {
        self.direction = direction
        self
    }

    pub fn initial_size(self, size: i32) -> SplitPanel {
        self.initial_size = size
        self
    }


}

impl Renderable for SplitPanel {
pub fn render(self) -> string {
        let flex_direction = match self.direction {
            SplitDirection::Horizontal => "column",
            SplitDirection::Vertical => "row",
        }

        format!("<div class='wj-split-panel' style='display: flex; flex-direction: {}; height: 100%;'>
  <div class='wj-split-pane' style='flex: {}%;'>
    {}
  </div>
  <div class='wj-split-divider'></div>
  <div class='wj-split-pane' style='flex: {}%;'>
    {}
  </div>
</div>", flex_direction, self.initial_size, self.left, 100 - self.initial_size, self.right)
    }
}

fn main() {
    let split = SplitPanel::new("<p>Left pane</p>".to_string(), "<p>Right pane</p>".to_string())
        .initial_size(40)

    println!("{}", split.render())
}