/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package transformatorcalcfx;
import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.geometry.Insets;
import javafx.geometry.Orientation;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.Separator;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import org.controlsfx.dialog.Dialog;
import org.controlsfx.dialog.Dialogs;
/**
*
* @author arief
*/
public class TransformatorCalcFX extends Application {
TextField txtN1,txtN2,txtV1,txtV2,txtI1,txtI2;
Text txtStatus,txtInput,txtResult;
@Override
public void start(Stage primaryStage) {
String fontname="Comic Sans MS";
primaryStage.getIcons().add(new Image(getClass().getResourceAsStream("assets/abacus.png")));
GridPane pane1= new GridPane();
pane1.setAlignment(Pos.CENTER);
pane1.setPadding(new Insets(5,5,5,5));
pane1.setHgap(10);
pane1.setVgap(10);
pane1.setPrefSize(400, 150);
pane1.setId("1pane");
GridPane pane2= new GridPane();
pane2.setAlignment(Pos.CENTER);
pane2.setPadding(new Insets(5,5,5,5));
pane2.setHgap(30);
pane2.setVgap(10);
pane2.setPrefSize(400, 150);
pane2.setId("2pane");
VBox vbox = new VBox(10);
vbox.setAlignment(Pos.CENTER);
vbox.setPrefSize(450, 640);
vbox.setId("boxv");
HBox hbox = new HBox(10);
hbox.setAlignment(Pos.CENTER);
hbox.setPadding(new Insets(5,5,5,5));
hbox.setPrefSize(450, 35);
hbox.setId("hbox");
Button btnProses = new Button("Process");
btnProses.setPrefSize(100, 30);
btnProses.setAlignment(Pos.CENTER);
Button btnHapus = new Button("Clear");
btnHapus.setPrefSize(100, 30);
btnHapus.setAlignment(Pos.CENTER);
Button btnTentang = new Button("About");
btnTentang.setPrefSize(100, 30);
btnTentang.setAlignment(Pos.CENTER);
Button btnTutup = new Button("Close");
btnTutup.setPrefSize(100, 30);
btnTutup.setAlignment(Pos.CENTER);
txtInput = new Text("Input");
txtInput.setFont(Font.font(fontname, FontWeight.BOLD, 18));
txtResult = new Text("Result");
txtResult.setFont(Font.font(fontname, FontWeight.BOLD, 18));
txtStatus = new Text("");
txtStatus.setId("status");
txtStatus.setFill(Color.FIREBRICK);
txtStatus.setFont(Font.font(fontname, FontWeight.BOLD, 18));
Label N1 = new Label("Jumlah Lilitan Primer");
Label N2 = new Label("Jumlah Lilitan Sekunder");
Label V1 = new Label("Tegangan Primer");
Label I1 = new Label("Kuat Arus Primer");
Label V2 = new Label("Tegangan Sekunder");
Label I2 = new Label("Kuat Arus Sekunder");
txtN1 = new TextField(){
@Override
public void replaceText(int start, int end, String text) {
if (text.matches("[0-9]*")) {
super.replaceText(start, end, text);
}
}
@Override
public void replaceSelection(String text) {
if (text.matches("[0-9]*")) {
super.replaceSelection(text);
}
}
};
txtN1.setPromptText("Lilitan Primer");
txtN2 = new TextField(){
@Override
public void replaceText(int start, int end, String text) {
if (text.matches("[0-9]*")) {
super.replaceText(start, end, text);
}
}
@Override
public void replaceSelection(String text) {
if (text.matches("[0-9]*")) {
super.replaceSelection(text);
}
}
};
txtN2.setPromptText("Lilitan Sekunder");
txtV1 = new TextField(){
@Override
public void replaceText(int start, int end, String text) {
if (text.matches("[0-9]*")) {
super.replaceText(start, end, text);
}
}
@Override
public void replaceSelection(String text) {
if (text.matches("[0-9]*")) {
super.replaceSelection(text);
}
}
};
txtV1.setPromptText("Tegangan Primer");
txtV2 = new TextField();
txtV2.setPromptText("Tegangan Sekunder");
txtV2.setEditable(false);
txtI1 = new TextField(){
@Override
public void replaceText(int start, int end, String text) {
if (text.matches("[0-9]*")) {
super.replaceText(start, end, text);
}
}
@Override
public void replaceSelection(String text) {
if (text.matches("[0-9]*")) {
super.replaceSelection(text);
}
}
};
txtI1.setPromptText("Kuat Arus Primer");
txtI2 = new TextField();
txtI2.setPromptText("Kuat Arus Sekunder");
txtI2.setEditable(false);
Separator sh1 = new Separator(Orientation.HORIZONTAL);
sh1.prefHeight(5);
sh1.prefWidth(450);
Separator sh2 = new Separator(Orientation.HORIZONTAL);
sh2.prefHeight(5);
sh2.prefWidth(450);
Separator sh3 = new Separator(Orientation.HORIZONTAL);
sh3.prefHeight(5);
sh3.prefWidth(450);
pane1.add(txtInput, 0, 0, 2, 1);
pane1.add(N1, 0, 1);
pane1.add(N2, 0, 2);
pane1.add(V1, 0, 3);
pane1.add(I1, 0, 4);
pane1.add(txtN1, 1, 1);
pane1.add(txtN2, 1, 2);
pane1.add(txtV1, 1, 3);
pane1.add(txtI1, 1, 4);
pane2.add(txtResult, 0, 0, 2, 1);
pane2.add(V2, 0, 1);
pane2.add(I2, 0, 2);
pane2.add(txtV2, 1, 1);
pane2.add(txtI2, 1, 2);
hbox.getChildren().addAll(btnProses,btnHapus,btnTentang,btnTutup);
vbox.getChildren().addAll(pane1,sh1,pane2,sh2,txtStatus,sh3,hbox);
btnProses.setOnAction((ActionEvent event) -> {
if((("".equals(txtN1.getText()))&&("".equals(txtN2.getText())))&&(("".equals(txtV1.getText()))&&("".equals(txtI1.getText())))){
Dialogs.create().owner(primaryStage).title("Warning")
.message(txtN1.getPromptText()+", "+txtN2.getPromptText()+", "+txtV1.getPromptText()+" & "+txtI1.getPromptText()+" are empty.")
.styleClass(Dialog.STYLE_CLASS_CROSS_PLATFORM).showWarning();
}else if(("".equals(txtN1.getText()))&&("".equals(txtN2.getText()))&&("".equals(txtV1.getText()))){
Dialogs.create().owner(primaryStage).title("Warning")
.message(txtN1.getPromptText()+", "+txtN2.getPromptText()+" & "+txtV1.getPromptText()+" are empty.")
.styleClass(Dialog.STYLE_CLASS_CROSS_PLATFORM).showWarning();
}else if(("".equals(txtN1.getText()))&&("".equals(txtN2.getText()))&&("".equals(txtI1.getText()))){
Dialogs.create().owner(primaryStage).title("Warning")
.message(txtN1.getPromptText()+", "+txtN2.getPromptText()+" & "+txtI1.getPromptText()+" are empty.")
.styleClass(Dialog.STYLE_CLASS_CROSS_PLATFORM).showWarning();
}else if(("".equals(txtN1.getText()))&&("".equals(txtV1.getText()))&&("".equals(txtI1.getText()))){
Dialogs.create().owner(primaryStage).title("Warning")
.message(txtN1.getPromptText()+", "+txtV1.getPromptText()+" & "+txtI1.getPromptText()+" are empty.")
.styleClass(Dialog.STYLE_CLASS_CROSS_PLATFORM).showWarning();
}else if(("".equals(txtN2.getText()))&&("".equals(txtV1.getText()))&&("".equals(txtI1.getText()))){
Dialogs.create().owner(primaryStage).title("Warning")
.message(txtN2.getPromptText()+", "+txtV1.getPromptText()+" & "+txtI1.getPromptText()+" are empty.")
.styleClass(Dialog.STYLE_CLASS_CROSS_PLATFORM).showWarning();
}else if(("".equals(txtN1.getText()))&&("".equals(txtN2.getText()))){
Dialogs.create().owner(primaryStage).title("Warning").message(txtN1.getPromptText()+" & "+txtN2.getPromptText()+ " are empty.")
.styleClass(Dialog.STYLE_CLASS_CROSS_PLATFORM).showWarning();
}else if(("".equals(txtN1.getText()))&&("".equals(txtV1.getText()))){
Dialogs.create().owner(primaryStage).title("Warning").message(txtN1.getPromptText()+" & "+txtV1.getPromptText()+ " are empty.")
.styleClass(Dialog.STYLE_CLASS_CROSS_PLATFORM).showWarning();
}else if(("".equals(txtN1.getText()))&&("".equals(txtI1.getText()))){
Dialogs.create().owner(primaryStage).title("Warning").message(txtN1.getPromptText()+" & "+txtI1.getPromptText()+ " are empty.")
.styleClass(Dialog.STYLE_CLASS_CROSS_PLATFORM).showWarning();
}else if(("".equals(txtN2.getText()))&&("".equals(txtV1.getText()))){
Dialogs.create().owner(primaryStage).title("Warning").message(txtN2.getPromptText()+" & "+txtV1.getPromptText()+ " are empty.")
.styleClass(Dialog.STYLE_CLASS_CROSS_PLATFORM).showWarning();
}else if(("".equals(txtN2.getText()))&&("".equals(txtI1.getText()))){
Dialogs.create().owner(primaryStage).title("Warning").message(txtN2.getPromptText()+" & "+txtI1.getPromptText()+ " are empty.")
.styleClass(Dialog.STYLE_CLASS_CROSS_PLATFORM).showWarning();
}else if(("".equals(txtV1.getText()))&&("".equals(txtI1.getText()))){
Dialogs.create().owner(primaryStage).title("Warning").message(txtV1.getPromptText()+" & "+txtI1.getPromptText()+ " are empty.")
.styleClass(Dialog.STYLE_CLASS_CROSS_PLATFORM).showWarning();
}else if ("".equals(txtN1.getText())){
Dialogs.create().owner(primaryStage).title("Warning").message(txtN1.getPromptText()+" is empty.")
.styleClass(Dialog.STYLE_CLASS_CROSS_PLATFORM).showWarning();
}else if ("".equals(txtN2.getText())){
Dialogs.create().owner(primaryStage).title("Warning").message(txtN2.getPromptText()+" is empty.")
.styleClass(Dialog.STYLE_CLASS_CROSS_PLATFORM).showWarning();
}else if ("".equals(txtV1.getText())){
Dialogs.create().owner(primaryStage).title("Warning").message(txtV1.getPromptText()+" is empty.")
.styleClass(Dialog.STYLE_CLASS_CROSS_PLATFORM).showWarning();
}else if ("".equals(txtI1.getText())){
Dialogs.create().owner(primaryStage).title("Warning").message(txtI1.getPromptText()+" is empty.")
.styleClass(Dialog.STYLE_CLASS_CROSS_PLATFORM).showWarning();
}else{
double n1 = Double.parseDouble(txtN1.getText());
double n2 = Double.parseDouble(txtN2.getText());
double v1 = Double.parseDouble(txtV1.getText());
double i1 = Double.parseDouble(txtI1.getText());
if(n1>n2){
double DV2 = (v1*n2)/n1;
double DI2 = (i1*n1)/n2;
txtV2.setText(String.valueOf(DV2));
txtI2.setText(String.valueOf(DI2));
txtStatus.setText("Tegangan diturunkan dan Kuat Arus dinaikkan.");
}else if(n1<n2){
double DV2 = (v1*n2)/n1;
double DI2 = (i1*n1)/n2;
txtV2.setText(String.valueOf(DV2));
txtI2.setText(String.valueOf(DI2));
txtStatus.setText("Tegangan dinaikkan dan Kuat Arus diturunkan.");
}else{
double DV2 = (v1*n2)/n1;
double DI2 = (i1*n1)/n2;
txtV2.setText(String.valueOf(DV2));
txtI2.setText(String.valueOf(DI2));
txtStatus.setText("Tegangan dan Kuat Arus tidak berubah.");
}
}
});
btnHapus.setOnAction((ActionEvent event)->{
txtV1.clear();
txtV2.clear();
txtN1.clear();
txtN2.clear();
txtI1.clear();
txtI2.clear();
txtStatus.setText("");
});
btnTentang.setOnAction((ActionEvent event)->{
Dialogs.create().owner(primaryStage).title("About Me").masthead("TransformatorCalcFX")
.message("Aplikasi ini dibuat dengan menggunakan JavaFX 8, JDK 8.0.25, dan Library Controlsfx 8.20.8").showInformation();
});
btnTutup.setOnAction((ActionEvent Event)->{
primaryStage.close();
});
Scene scene = new Scene(vbox, 400, 450);
scene.getStylesheets().add(TransformatorCalcFX.class.getResource("assets/transformatorFX.css").toExternalForm());
primaryStage.setTitle("TransformatorCalcFX");
primaryStage.centerOnScreen();
primaryStage.setScene(scene);
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
}