123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- import java.util.ArrayList;
- import java.util.List;
- import CertainTrust.CertainTrust;
- import javafx.application.Application;
- import javafx.scene.Group;
- import javafx.scene.Node;
- import javafx.scene.Scene;
- import javafx.scene.control.Label;
- import javafx.scene.effect.Lighting;
- import javafx.scene.paint.Color;
- import javafx.scene.shape.Arc;
- import javafx.scene.shape.ArcType;
- import javafx.scene.shape.Circle;
- import javafx.stage.Stage;
- public class CertainTrustTViz extends Application {
-
- public static void main(String[] args) {
- Application.launch(args);
- }
- @Override
- public void start(Stage primaryStage) {
- primaryStage.setTitle("CertainTrust TViz for JavaFx");
- //Lighting glow = new Lighting();
-
- Group root = new Group(); // Creating layout
- //root.setEffect(glow);
-
- Scene scene = new Scene(root, 550, 550);
-
- Circle circle1 = new Circle();
- circle1.setCenterX(275.0f);
- circle1.setCenterY(275.0f);
- circle1.setRadius(65.0f);
- circle1.setFill(Color.TRANSPARENT);
- circle1.setStroke(Color.BLACK);
- circle1.setStrokeWidth(0.15);
-
- Circle circle2 = new Circle();
- circle2.setCenterX(275.0f);
- circle2.setCenterY(275.0f);
- circle2.setRadius(105.0f);
- circle2.setFill(Color.TRANSPARENT);
- circle2.setStroke(Color.BLACK);
- circle2.setStrokeWidth(0.15);
-
- Circle circle3 = new Circle();
- circle3.setCenterX(275.0f);
- circle3.setCenterY(275.0f);
- circle3.setRadius(145.0f);
- circle3.setFill(Color.TRANSPARENT);
- circle3.setStroke(Color.BLACK);
- circle3.setStrokeWidth(0.15);
-
- Circle circle4 = new Circle();
- circle4.setCenterX(275.0f);
- circle4.setCenterY(275.0f);
- circle4.setRadius(185.0f);
- circle4.setFill(Color.TRANSPARENT);
- circle4.setStroke(Color.BLACK);
- circle4.setStrokeWidth(0.15);
-
- List<CertainTrust> ctObject = new ArrayList<>();
- CertainTrust a = new CertainTrust(0.9,1,0.9,100);
- a.setName("Cloud A");
- CertainTrust b = new CertainTrust(0.75,1,0.9,100);
- b.setName("Cloud B");
- CertainTrust c = new CertainTrust(0.5,1,0.9,100);
- c.setName("Cloud C");
- CertainTrust d = new CertainTrust(0.25,1,0.9,100);
- d.setName("Cloud D");
- CertainTrust e = new CertainTrust(0.15,1,0.9,100);
- e.setName("Cloud E");
- CertainTrust f = new CertainTrust(0.35,1,0.9,100);
- f.setName("Cloud F");
- ctObject.add(a);
- ctObject.add(b);
- ctObject.add(c);
- ctObject.add(d);
- ctObject.add(e);
- //ctObject.add(f);
- int size = ctObject.size();
- float arcSize = 360/size;
-
- float avg=0;
-
- for(int i = 0; i < size; i++) {
- avg = (float) (avg + ctObject.get(i).getT());
- }
-
- int temp = (int)(avg / size *100);
- String midData = String.valueOf(temp);
- midData = midData + "%";
-
- Circle middle = new Circle();
- middle.setCenterX(275.0f);
- middle.setCenterY(275.0f);
- middle.setRadius(25.0f);
- middle.setFill(Color.WHITE);
- middle.setStroke(Color.BLACK);
-
- Label label = new Label(midData);
- label.setTranslateX(265);
- label.setTranslateY(265);
-
- List<Node> list = new ArrayList<>();
- root.getChildren().add(circle1);
- root.getChildren().add(circle2);
- root.getChildren().add(circle3);
- root.getChildren().add(circle4);
-
- // Create arcs dynamically
- for(int i = 0; i < size; i++) {
-
- // color calculation for arcs
- double resultp2 = ((1-ctObject.get(i).getC())*ctObject.get(i).getF());
- double result = (ctObject.get(i).getT()*ctObject.get(i).getC()) + resultp2;
-
- int R = 0;
- int G = 0;
- int B = 0;
-
- if (result < 0.5) {
- R = 255;
- G = (int) Math.min(255, (255 * 2 * result));
- } else {
- R = (int) Math.min(255, ((2 - (2 * result)) * 255));
- G = 255;
- }
-
- Arc newArc = new Arc();
- newArc.setCenterX(275.0f);
- newArc.setCenterY(275.0f);
- newArc.setRadiusX(ctObject.get(i).getT()*225);
- newArc.setRadiusY(ctObject.get(i).getT()*225);
- newArc.setStartAngle(0.0+i*arcSize);
- newArc.setLength(arcSize);
- newArc.setType(ArcType.ROUND);
- newArc.setFill(Color.rgb(R,G,B));
-
- Arc arcBorder = new Arc();
- arcBorder.setCenterX(275.0f);
- arcBorder.setCenterY(275.0f);
- arcBorder.setRadiusX(225.0f);
- arcBorder.setRadiusY(225.0f);
- arcBorder.setStartAngle(i*arcSize);
- arcBorder.setLength(arcSize);
- arcBorder.setType(ArcType.ROUND);
- arcBorder.setFill(Color.TRANSPARENT);
- arcBorder.setStroke(Color.BLACK);
-
- int labelx;
- int labely;
- float angle = ((i * arcSize) + (arcSize/2)) * (-1);
-
- labelx = (int) (225*(Math.cos(Math.toRadians(angle))) + 275);
- labely = (int)(225*(Math.sin(Math.toRadians(angle))) + 275);
-
- Label arcLabel = new Label(ctObject.get(i).getName());
- arcLabel.setTranslateX(labelx);
- arcLabel.setTranslateY(labely);
-
- list.add(newArc);
- list.add(arcBorder);
- list.add(arcLabel);
- }
-
- for(int i = 0; i < size*3; i++) {
- root.getChildren().add(list.get(i));
- }
-
- root.getChildren().add(middle);
- root.getChildren().add(label);
-
- primaryStage.setScene(scene);
- primaryStage.show();
- }
- }
|