142 lines
3.4 KiB
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");
|
|
|
|
}
|
|
|
|
}
|