JavaFX/Classes/css/user/ArticleStylesheet.java

142 lines
3.4 KiB
Java

package Classes.css.user;
import java.util.ArrayList;
import Classes.css.core.Context;
import Classes.css.core.Ruleset;
import javafx.scene.Node;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.text.Text;
public class ArticleStylesheet{
/* Builds all necessary CSS/layout rules */
public ArticleStylesheet(Node target) throws Exception{
/* (1) Useful cast */
AnchorPane _target = (AnchorPane) target;
HBox _hc = (HBox) _target.getChildren().get(3);
/* (2) Set rules for parent */
Ruleset.load(_target)
.add("min-width", Context.getInt("article-width"))
.add("max-width", Context.getInt("article-width"))
.add("min-height", Context.getInt("article-height"))
// .add("max-height", Context.getInt("article-height"))
.add("pref-width", Context.getString("article-width"))
// .add("pref-height", Context.getString("article-height"))
// border
.add("border-insets", "10")
.add("border-radius", "3")
.add("border-color", "#ddd")
// bg
.add("background-radius", "3")
.add("background-color", "#fff")
.apply();
/* (2) Get children ruleset: picture, content, date, header_container */
this.Picture( (ImageView) _target.getChildren().get(0) ).apply();
this.Content( (Text) _target.getChildren().get(1) ).apply();
this.RelativeDate( (Text) _target.getChildren().get(2) ).apply();
this.HeaderContainer( (HBox) _target.getChildren().get(3) ).apply();
/* (3) Header container children: title, tag1, tag2, ... */
this.HeaderTitle( (Text) _hc.getChildren().get(0) ).apply();
for( int i = 0 ; i < _hc.getChildren().size()-1 ; i++ ){
Pane _tmp = (Pane) _hc.getChildren().get(i+1);
this.HeaderTag(_tmp).apply();
this.HeaderTextTag( (Text) _tmp.getChildren().get(0) ).apply();
}
}
/* Picture of article */
private Ruleset Picture(ImageView target) throws Exception{
return Ruleset.load(target)
.add("top", 20)
.add("left", 20)
.add("bottom", 20);
}
/* Article content */
private Ruleset Content(Text target) throws Exception{
return Ruleset.load(target)
.add("top", 50)
.add("left", 96)
.add("fill", "#808080")
.add("font-family", "Lato Regular")
.add("font-size", "12");
}
/* Header Container */
private Ruleset HeaderContainer(HBox target) throws Exception{
return Ruleset.load(target)
.add("top", 20)
.add("left", 96)
.add("pref-height", "21")
.add("pref-width", "200");
}
/* Relative date of article */
private Ruleset RelativeDate(Text target) throws Exception{
return Ruleset.load(target)
.add("top", 20)
.add("right", 20)
.add("fill", "#757575")
.add("font-family", "Lato Bold")
.add("font-size", "12");
}
/* Header Title */
private Ruleset HeaderTitle(Text target) throws Exception{
return Ruleset.load(target)
.add("font-family", "Lato Bold")
.add("font-size", "17");
}
/* Header Tag */
private Ruleset HeaderTag(Pane target) throws Exception{
return Ruleset.load(target)
.add("pref-width", 55)
.add("pref-height", 20)
.add("background-color", "#f8b02c")
.add("background-radius", "3");
}
/* Header Tag Text */
private Ruleset HeaderTextTag(Text target) throws Exception{
return Ruleset.load(target)
.add("fill", "#fff")
.add("font-family", "Lato Regular")
.add("font-size", "14");
}
}