use crate::Id;
use super::{TableColumnFlags, TableColumnIndent, TableColumnWidth, assert_explicit_user_id};
#[derive(Clone, Debug)]
pub struct TableColumnSetup<Name> {
pub name: Name,
pub flags: TableColumnFlags,
pub width: Option<TableColumnWidth>,
pub indent: Option<TableColumnIndent>,
pub user_id: Option<Id>,
}
impl<Name> TableColumnSetup<Name> {
pub fn new(name: Name) -> Self {
Self {
name,
flags: TableColumnFlags::NONE,
width: None,
indent: None,
user_id: None,
}
}
pub fn flags(mut self, flags: TableColumnFlags) -> Self {
self.flags = flags;
self
}
pub fn fixed_width(mut self, width: f32) -> Self {
self.width = Some(TableColumnWidth::Fixed(width));
self
}
pub fn stretch_weight(mut self, weight: f32) -> Self {
self.width = Some(TableColumnWidth::Stretch(weight));
self
}
pub fn indent(mut self, indent: TableColumnIndent) -> Self {
self.indent = Some(indent);
self
}
pub fn indent_enabled(mut self, enabled: bool) -> Self {
self.indent = Some(if enabled {
TableColumnIndent::Enable
} else {
TableColumnIndent::Disable
});
self
}
pub fn user_id(mut self, id: Id) -> Self {
self.user_id = Some(assert_explicit_user_id(id, "TableColumnSetup::user_id()"));
self
}
}