use std::fmt::*;
#[derive(Debug,Eq,PartialEq)]
pub enum Error {
XYParameterUsedWithDock,
AnchorParameterUsedWithDock,
PivotParameterUsedWithDock,
AlignParameterUsedWithDock,
WidthParameterUsedWithTopOrBottomDock,
HeightParameterUsedWithLeftOrRightDock,
WidthOrHeightParameterUsedWithDockFill,
XYParameterUsedWithAlign,
AnchorParameterUsedWithAlign,
PivotParameterUsedWithAlign,
DockParameterUsedWithAlign,
AnchorParameterUsedWithXY,
CornerAnchorParameterUsedWithXY,
CornerAnchorParameterUsedWithPivot,
AllAnchorsParameterUsedWithXY,
AllAnchorsParameterUsedWithSize,
AllAnchorsParameterUsedWithPivot,
LeftTopRightAnchorsUsedWithXY,
LeftTopRightAnchorsUsedWithWidth,
LeftTopRightAnchorsUsedWithPivot,
LeftRightAnchorsUsedWithX,
LeftRightAnchorsUsedWithWidth,
LeftRightAnchorsUsedWithoutPivot,
LeftRightAnchorsUsedWithoutY,
LeftBottomRightAnchorsUsedWithXY,
LeftBottomRightAnchorsUsedWithWidth,
LeftBottomRightAnchorsUsedWithPivot,
TopBottomAnchorsUsedWithY,
TopBottomAnchorsUsedWithHeight,
TopBottomAnchorsUsedWithoutX,
TopBottomAnchorsUsedWithoutPivot,
TopBottomAnchorsUsedWithInvalidPivot,
TopLeftBottomAnchorsUsedWithXY,
TopLeftBottomAnchorsUsedWithHeight,
TopLeftBottomAnchorsUsedWithPivot,
TopRightBottomAnchorsUsedWithXY,
TopRightBottomAnchorsUsedWithHeight,
TopRightBottomAnchorsUsedWithPivot,
SingleAnchor,
XWithoutY,
YWithoutX,
PivotWithoutXorY,
NoParameters,
InvalidLayoutRule
}
impl Error {
fn description(&self) -> &'static str {
match self {
Error::NoParameters => "No parameters provided to the LayoutBuilder method ! Please provide either an absolute layout, a docked layout, a pivot layout, an alignment layout or an anchored-based layout !",
Error::XYParameterUsedWithDock => "When ('dock') parameter is used, 'x' and 'y' parameters can not be used !",
Error::AnchorParameterUsedWithDock => "When ('dock') parameter is used, anchor parameters ('top', 'bottom', 'left' and 'right') can not be used !",
Error::PivotParameterUsedWithDock => "When ('dock') parameter is used, 'pivot' parameter can not be used !",
Error::AlignParameterUsedWithDock => "When ('dock') parameter is used, 'align' parameter can not be used !",
Error::WidthParameterUsedWithTopOrBottomDock => "When ('dock') parameter is used with the value 'Dock:Top' or 'Dock:Bottom', the 'width' parameter can not be used as it is infered from the parent's width !",
Error::HeightParameterUsedWithLeftOrRightDock => "When ('dock') parameter is used with the value 'Dock:Left' or 'Dock:Right', the 'height' parameter can not be used as it is infered from the parent's height !",
Error::WidthOrHeightParameterUsedWithDockFill => "When ('dock') parameter is used with the value 'Dock:Fill', the 'width' and 'height' parameters can not be used as they are infered from the parent's width and height !",
Error::XYParameterUsedWithAlign => "When ('align') parameter is used,'x' and 'y' parameters can not be used !",
Error::AnchorParameterUsedWithAlign => "When ('align') parameter is used, anchor parameters ('top', 'bottom', 'left' and 'right') can not be used !",
Error::PivotParameterUsedWithAlign => "When ('align') parameter is used, 'pivot' parameter can not be used !",
Error::DockParameterUsedWithAlign => "When ('align') parameter is used, 'dock' parameter can not be used !",
Error::AnchorParameterUsedWithXY => "When ('x' and 'y') parameters are used, anchor parameters ('top', 'bottom', 'left' and 'right') can not be used !",
Error::CornerAnchorParameterUsedWithXY => "When a corner anchor is provided - e.g ('top' with `left`, 'top' with `right`, 'bottom' with `left` or 'bottom' with `right`) - 'x' and 'y' parameters can not be used as they are infered from the anchor !",
Error::CornerAnchorParameterUsedWithPivot => "When a corner anchor is provided - e.g ('top' with `left`, 'top' with `right`, 'bottom' with `left` or 'bottom' with `right`) - 'pivot' parameter can not be used as it is infered from the anchor !",
Error::InvalidLayoutRule => "The layout rule (combination of parameters) is invalid !",
Error::AllAnchorsParameterUsedWithXY => "When all anchor parameters ('left', 'top', 'right' and 'bottom') are used, 'x' and 'y' parameters can not be used as they are infered from the anchors !",
Error::AllAnchorsParameterUsedWithSize => "When all anchor parameters ('left', 'top', 'right' and 'bottom') are used, 'width' and 'height' parameters can not be used as they are infered from the anchors !",
Error::AllAnchorsParameterUsedWithPivot => "When all anchor parameters ('left', 'top', 'right' and 'bottom') are used, 'pivot' parameter can not be used as it is infered from the anchors !",
Error::LeftTopRightAnchorsUsedWithXY => "When (left,top,right) anchors are used together, 'x' and 'y' parameter can not be used as they are infered from the anchors !",
Error::LeftTopRightAnchorsUsedWithWidth => "When (left,top,right) anchors are used together, 'width' parameter can not be used as it is infered from the anchors !",
Error::LeftTopRightAnchorsUsedWithPivot => "When (left,top,right) anchors are used together, 'pivot' parameter can not be used as it is infered from the anchors !",
Error::LeftRightAnchorsUsedWithX => "When (left,right) anchors are used together, 'x' parameter can not be used as it is infered from the anchors !",
Error::LeftRightAnchorsUsedWithWidth => "When (left,right) anchors are used together, 'width' parameter can not be used as it is infered from the anchors !",
Error::LeftRightAnchorsUsedWithoutPivot => "When (left,right) anchors are used together, 'pivot' parameter must be provided !",
Error::LeftRightAnchorsUsedWithoutY => "When (left,right) anchors are used together, 'y' parameter must be provided !",
Error::LeftBottomRightAnchorsUsedWithXY => "When (left,bottom,right) anchors are used together, 'x' and 'y' parameter can not be used as they are infered from the anchors !",
Error::LeftBottomRightAnchorsUsedWithWidth => "When (left,bottom,right) anchors are used together, 'width' parameter can not be used as it is infered from the anchors !",
Error::LeftBottomRightAnchorsUsedWithPivot => "When (left,bottom,right) anchors are used together, 'pivot' parameter can not be used as it is infered from the anchors !",
Error::TopBottomAnchorsUsedWithY => "When (top,bottom) anchors are used together, 'y' parameter can not be used as it is infered from the anchors !",
Error::TopBottomAnchorsUsedWithHeight => "When (top,bottom) anchors are used together, 'height' parameter can not be used as it is infered from the anchors !",
Error::TopBottomAnchorsUsedWithoutX => "When (top,bottom) anchors are used together, 'x' parameter must be provided !",
Error::TopBottomAnchorsUsedWithoutPivot => "When (top,bottom) anchors are used together, 'pivot' parameter must be provided !",
Error::TopBottomAnchorsUsedWithInvalidPivot => "When (top,bottom) anchors are used together, only Pivot::LeftCenter, Pivot::Center and Pivot::RightCenter pivot values are allowed !",
Error::TopLeftBottomAnchorsUsedWithXY => "When (top,left,bottom) anchors are used together, 'x' and 'y' parameter can not be used as they are infered from the anchors !",
Error::TopLeftBottomAnchorsUsedWithHeight => "When (top,left,bottom) anchors are used together, 'height' parameter can not be used as it is infered from the anchors !",
Error::TopLeftBottomAnchorsUsedWithPivot => "When (top,left,bottom) anchors are used together, 'pivot' parameter can not be used as it is infered from the anchors !",
Error::TopRightBottomAnchorsUsedWithXY => "When (top,right,bottom) anchors are used together, 'x' and 'y' parameter can not be used as they are infered from the anchors !",
Error::TopRightBottomAnchorsUsedWithHeight => "When (top,right,bottom) anchors are used together, 'height' parameter can not be used as it is infered from the anchors !",
Error::TopRightBottomAnchorsUsedWithPivot => "When (top,right,bottom) anchors are used together, 'pivot' parameter can not be used as it is infered from the anchors !",
Error::SingleAnchor => "Using a single anchor (left, right, top, bottom) is no different than using a pivot. Consider using a pivot instead, combined with (x,y) and optionally and width and a height",
Error::XWithoutY => "You need to provide the 'y' parameter as well to create a point for an absolute or pivoting layout !",
Error::YWithoutX => "You need to provide the 'x' parameter as well to create a point for an absolute or pivoting layout !",
Error::PivotWithoutXorY => "You need to provide both 'x' and 'y' parameter if you provide a pivot value !",
}
}
}
impl Display for Error {
fn fmt(&self, f: &mut Formatter<'_>) -> Result {
write!(f, "Layout error: {}", self.description())
}
}