CertainTrustTViz.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import CertainTrust.CertainTrust;
  4. import javafx.application.Application;
  5. import javafx.scene.Group;
  6. import javafx.scene.Node;
  7. import javafx.scene.Scene;
  8. import javafx.scene.control.Label;
  9. import javafx.scene.effect.Lighting;
  10. import javafx.scene.paint.Color;
  11. import javafx.scene.shape.Arc;
  12. import javafx.scene.shape.ArcType;
  13. import javafx.scene.shape.Circle;
  14. import javafx.stage.Stage;
  15. public class CertainTrustTViz extends Application {
  16. public static void main(String[] args) {
  17. Application.launch(args);
  18. }
  19. @Override
  20. public void start(Stage primaryStage) {
  21. primaryStage.setTitle("CertainTrust TViz for JavaFx");
  22. //Lighting glow = new Lighting();
  23. Group root = new Group(); // Creating layout
  24. //root.setEffect(glow);
  25. Scene scene = new Scene(root, 550, 550);
  26. Circle circle1 = new Circle();
  27. circle1.setCenterX(275.0f);
  28. circle1.setCenterY(275.0f);
  29. circle1.setRadius(65.0f);
  30. circle1.setFill(Color.TRANSPARENT);
  31. circle1.setStroke(Color.BLACK);
  32. circle1.setStrokeWidth(0.15);
  33. Circle circle2 = new Circle();
  34. circle2.setCenterX(275.0f);
  35. circle2.setCenterY(275.0f);
  36. circle2.setRadius(105.0f);
  37. circle2.setFill(Color.TRANSPARENT);
  38. circle2.setStroke(Color.BLACK);
  39. circle2.setStrokeWidth(0.15);
  40. Circle circle3 = new Circle();
  41. circle3.setCenterX(275.0f);
  42. circle3.setCenterY(275.0f);
  43. circle3.setRadius(145.0f);
  44. circle3.setFill(Color.TRANSPARENT);
  45. circle3.setStroke(Color.BLACK);
  46. circle3.setStrokeWidth(0.15);
  47. Circle circle4 = new Circle();
  48. circle4.setCenterX(275.0f);
  49. circle4.setCenterY(275.0f);
  50. circle4.setRadius(185.0f);
  51. circle4.setFill(Color.TRANSPARENT);
  52. circle4.setStroke(Color.BLACK);
  53. circle4.setStrokeWidth(0.15);
  54. List<CertainTrust> ctObject = new ArrayList<>();
  55. CertainTrust a = new CertainTrust(0.9,1,0.9,100);
  56. a.setName("Cloud A");
  57. CertainTrust b = new CertainTrust(0.75,1,0.9,100);
  58. b.setName("Cloud B");
  59. CertainTrust c = new CertainTrust(0.5,1,0.9,100);
  60. c.setName("Cloud C");
  61. CertainTrust d = new CertainTrust(0.25,1,0.9,100);
  62. d.setName("Cloud D");
  63. CertainTrust e = new CertainTrust(0.15,1,0.9,100);
  64. e.setName("Cloud E");
  65. CertainTrust f = new CertainTrust(0.35,1,0.9,100);
  66. f.setName("Cloud F");
  67. ctObject.add(a);
  68. ctObject.add(b);
  69. ctObject.add(c);
  70. ctObject.add(d);
  71. ctObject.add(e);
  72. //ctObject.add(f);
  73. int size = ctObject.size();
  74. float arcSize = 360/size;
  75. float avg=0;
  76. for(int i = 0; i < size; i++) {
  77. avg = (float) (avg + ctObject.get(i).getT());
  78. }
  79. int temp = (int)(avg / size *100);
  80. String midData = String.valueOf(temp);
  81. midData = midData + "%";
  82. Circle middle = new Circle();
  83. middle.setCenterX(275.0f);
  84. middle.setCenterY(275.0f);
  85. middle.setRadius(25.0f);
  86. middle.setFill(Color.WHITE);
  87. middle.setStroke(Color.BLACK);
  88. Label label = new Label(midData);
  89. label.setTranslateX(265);
  90. label.setTranslateY(265);
  91. List<Node> list = new ArrayList<>();
  92. root.getChildren().add(circle1);
  93. root.getChildren().add(circle2);
  94. root.getChildren().add(circle3);
  95. root.getChildren().add(circle4);
  96. // Create arcs dynamically
  97. for(int i = 0; i < size; i++) {
  98. // color calculation for arcs
  99. double resultp2 = ((1-ctObject.get(i).getC())*ctObject.get(i).getF());
  100. double result = (ctObject.get(i).getT()*ctObject.get(i).getC()) + resultp2;
  101. int R = 0;
  102. int G = 0;
  103. int B = 0;
  104. if (result < 0.5) {
  105. R = 255;
  106. G = (int) Math.min(255, (255 * 2 * result));
  107. } else {
  108. R = (int) Math.min(255, ((2 - (2 * result)) * 255));
  109. G = 255;
  110. }
  111. Arc newArc = new Arc();
  112. newArc.setCenterX(275.0f);
  113. newArc.setCenterY(275.0f);
  114. newArc.setRadiusX(ctObject.get(i).getT()*225);
  115. newArc.setRadiusY(ctObject.get(i).getT()*225);
  116. newArc.setStartAngle(0.0+i*arcSize);
  117. newArc.setLength(arcSize);
  118. newArc.setType(ArcType.ROUND);
  119. newArc.setFill(Color.rgb(R,G,B));
  120. Arc arcBorder = new Arc();
  121. arcBorder.setCenterX(275.0f);
  122. arcBorder.setCenterY(275.0f);
  123. arcBorder.setRadiusX(225.0f);
  124. arcBorder.setRadiusY(225.0f);
  125. arcBorder.setStartAngle(i*arcSize);
  126. arcBorder.setLength(arcSize);
  127. arcBorder.setType(ArcType.ROUND);
  128. arcBorder.setFill(Color.TRANSPARENT);
  129. arcBorder.setStroke(Color.BLACK);
  130. int labelx;
  131. int labely;
  132. float angle = ((i * arcSize) + (arcSize/2)) * (-1);
  133. labelx = (int) (225*(Math.cos(Math.toRadians(angle))) + 275);
  134. labely = (int)(225*(Math.sin(Math.toRadians(angle))) + 275);
  135. Label arcLabel = new Label(ctObject.get(i).getName());
  136. arcLabel.setTranslateX(labelx);
  137. arcLabel.setTranslateY(labely);
  138. list.add(newArc);
  139. list.add(arcBorder);
  140. list.add(arcLabel);
  141. }
  142. for(int i = 0; i < size*3; i++) {
  143. root.getChildren().add(list.get(i));
  144. }
  145. root.getChildren().add(middle);
  146. root.getChildren().add(label);
  147. primaryStage.setScene(scene);
  148. primaryStage.show();
  149. }
  150. }