@ -5,9 +5,16 @@
* /
* /
package id.amigogroup.posterminal.pencarian ;
package id.amigogroup.posterminal.pencarian ;
import id.amigogroup.posterminal.FormUtamaController ;
import id.amigogroup.posterminal.api.AmigoPosRx ;
import id.amigogroup.posterminal.model.Barang ;
import id.amigogroup.posterminal.model.Pagination ;
import id.amigogroup.posterminal.util.AlertUtil ;
import io.reactivex.Observer ;
import io.reactivex.disposables.Disposable ;
import java.io.IOException ;
import java.io.IOException ;
import java.net.HttpURLConnection ;
import java.net.URL ;
import java.net.URL ;
import java.util.ArrayList ;
import java.util.List ;
import java.util.List ;
import java.util.ResourceBundle ;
import java.util.ResourceBundle ;
import java.util.logging.Level ;
import java.util.logging.Level ;
@ -19,24 +26,32 @@ import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader ;
import javafx.fxml.FXMLLoader ;
import javafx.fxml.Initializable ;
import javafx.fxml.Initializable ;
import javafx.scene.Parent ;
import javafx.scene.Parent ;
import javafx.scene.control.Alert ;
import javafx.scene.control.Button ;
import javafx.scene.control.Button ;
import javafx.scene.control.Dialog ;
import javafx.scene.control.Dialog ;
import javafx.scene.control.RadioButton ;
import javafx.scene.control.TableColumn ;
import javafx.scene.control.TableColumn ;
import javafx.scene.control.TableView ;
import javafx.scene.control.TableView ;
import javafx.scene.control.TextField ;
import javafx.scene.control.ToggleGroup ;
import javafx.scene.control.cell.PropertyValueFactory ;
import javafx.scene.control.cell.PropertyValueFactory ;
import javafx.scene.input.KeyCode ;
import javafx.scene.input.KeyEvent ;
import javafx.scene.layout.AnchorPane ;
import javafx.scene.layout.AnchorPane ;
import javafx.stage.Window ;
import javafx.stage.Window ;
import retrofit2.HttpException ;
/ * *
/ * *
* FXML Controller class
* FXML Controller class
*
*
* @author ronal
* @author ronal
* /
* /
public class DialogCariBarangController extends Dialog < Stri ng> implements Initializable {
public class DialogCariBarangController extends Dialog < Bara ng> implements Initializable {
@FXML
@FXML
AnchorPane apContent ;
AnchorPane apContent ;
@FXML
private TextField tfPencarian ;
@FXML
@FXML
private TableView < TabelBarangCari > tbvBarang ;
private TableView < TabelBarangCari > tbvBarang ;
@FXML
@FXML
@ -49,11 +64,18 @@ public class DialogCariBarangController extends Dialog<String> implements Initia
private TableColumn < TabelBarangCari , String > tcUkur ;
private TableColumn < TabelBarangCari , String > tcUkur ;
@FXML
@FXML
private TableColumn < TabelBarangCari , String > tcHarga ;
private TableColumn < TabelBarangCari , String > tcHarga ;
// @FXML
// private TableColumn<TabelBarangCari, Button> tcBtnTambah;
@FXML
private ToggleGroup tgTipe ;
@FXML
@FXML
private TableColumn < TabelBarangCari , Button > tcBtnTambah ;
private RadioButton rbKodeBarang ;
@FXML
private RadioButton rbNamaBarang ;
final ObservableList < TabelBarangCari > daftarTabelBarang = FXCollections . observableArrayList ( ) ;
final ObservableList < TabelBarangCari > daftarTabelBarang = FXCollections . observableArrayList ( ) ;
// String str = "Halo";
AmigoPosRx posRx = new AmigoPosRx ( ) ;
private Barang barang = null ;
/ * *
/ * *
* Initializes the controller class .
* Initializes the controller class .
@ -67,40 +89,149 @@ public class DialogCariBarangController extends Dialog<String> implements Initia
tcNama . setCellValueFactory ( new PropertyValueFactory < > ( "nama" ) ) ;
tcNama . setCellValueFactory ( new PropertyValueFactory < > ( "nama" ) ) ;
tcUkur . setCellValueFactory ( new PropertyValueFactory < > ( "ukur" ) ) ;
tcUkur . setCellValueFactory ( new PropertyValueFactory < > ( "ukur" ) ) ;
tcHarga . setCellValueFactory ( new PropertyValueFactory < > ( "harga" ) ) ;
tcHarga . setCellValueFactory ( new PropertyValueFactory < > ( "harga" ) ) ;
tcBtnTambah . setCellValueFactory ( new PropertyValueFactory < > ( "btnTambah" ) ) ;
// tcBtnTambah.setCellValueFactory(new PropertyValueFactory<>("btnTambah"));
tbvBarang . setItems ( daftarTabelBarang ) ;
tbvBarang . setItems ( daftarTabelBarang ) ;
fillTable ( new ArrayList < > ( ) ) ;
// fillTable(new ArrayList<>());
}
}
public DialogCariBarangController ( /*FormPresensiController parent*/ ) {
public DialogCariBarangController ( /*FormPresensiController parent*/ ) {
try {
try {
Window window = getDialogPane ( ) . getScene ( ) . getWindow ( ) ;
Window window = getDialogPane ( ) . getScene ( ) . getWindow ( ) ;
window . setOnCloseRequest ( event - > this . close ( ) ) ;
window . setOnCloseRequest ( event - > this . close ( ) ) ;
FXMLLoader loader = new FXMLLoader ( getClass ( ) . getResource ( "/fxml/DialogCariBarang.fxml" ) ) ;
FXMLLoader loader = new FXMLLoader ( getClass ( ) . getResource ( "/fxml/DialogCariBarang.fxml" ) ) ;
loader . setController ( this ) ;
loader . setController ( this ) ;
// DialogCariBarangController controller = loader.<DialogCariBarangController>getController();
// DialogCariBarangController controller = loader.<DialogCariBarangController>getController();
Parent root = loader . load ( ) ;
Parent root = loader . load ( ) ;
getDialogPane ( ) . setContent ( root ) ;
getDialogPane ( ) . setContent ( root ) ;
setTitle ( "Cari Barang" ) ;
setTitle ( "Cari Barang" ) ;
// getDialogPane().getButtonTypes().add(ButtonType.CANCEL);
// getDialogPane().getButtonTypes().add(ButtonType.CANCEL);
// setResultConverter(buttonType -> {
// setResultConverter(buttonType -> {
// return str;
// return str;
// });
// });
setResultConverter ( buttonType - > {
return barang ;
} ) ;
} catch ( IOException e ) {
} catch ( IOException e ) {
Logger . getLogger ( DialogCariBarangController . class
Logger . getLogger ( DialogCariBarangController . class
. getName ( ) ) . log ( Level . SEVERE , null , e ) ;
. getName ( ) ) . log ( Level . SEVERE , null , e ) ;
}
}
}
}
public void fillTable ( List < TabelBarangCari > daftarBarang ) {
// public void fillTable(List<TabelBarangCari> daftarBarang) {
//STATIC FUNCTION, hilangkan jika sudah tidak dipakai
//STATIC FUNCTION, hilangkan jika sudah tidak dipakai
Button btnTambah = new Button ( "Tambah" ) ;
// Button btnTambah = new Button("Tambah");
btnTambah . setOnAction ( ( event ) - > {
// btnTambah.setOnAction((event) -> {
setResult ( "Barang x" ) ;
// setResult("Barang x");
this . close ( ) ;
// this.close();
} ) ;
// });
daftarTabelBarang . add ( new TabelBarangCari ( "AACOBA001ABCDXL" , "Barang x" , "XL" , "79.900" , btnTambah ) ) ;
// daftarTabelBarang.add(new TabelBarangCari("AACOBA001ABCDXL", "Barang x", "XL", "79.900", btnTambah));
// }
public void updateTabelBarang ( List < Barang > daftarBarang ) {
daftarTabelBarang . clear ( ) ;
for ( Barang barang : daftarBarang ) {
// Button btnTambah = new Button("Tambah");
daftarTabelBarang . add ( new TabelBarangCari (
barang . getKodeBarang ( ) ,
barang . getNamaBarang ( ) ,
"42" ,
"14000" ) ) ;
// btnTambah.setOnAction((event) -> {
// setResult("Barang x");
// this.close();
// });
}
}
@FXML
void tfPencarianOnKeyReleased ( KeyEvent event ) {
if ( ( ( RadioButton ) tgTipe . getSelectedToggle ( ) = = rbKodeBarang
& & event . getCode ( ) = = KeyCode . ENTER ) ) {
posRx . getBarangByKodeBarang ( tfPencarian . getText ( ) ) . subscribe ( barangKodeObserver ) ;
} else if ( ( ( RadioButton ) tgTipe . getSelectedToggle ( ) = = rbNamaBarang
& & tfPencarian . getText ( ) . length ( ) > = 3 ) ) {
posRx . getBarangByNamaBarang ( tfPencarian . getText ( ) ) . subscribe ( daftarBarangObserver ) ;
}
}
}
public Observer < Barang > barangKodeObserver = new Observer < Barang > ( ) {
@Override
public void onSubscribe ( Disposable dspsbl ) {
}
@Override
public void onNext ( Barang b ) {
if ( b ! = null ) {
barang = b ;
close ( ) ;
}
}
@Override
public void onError ( Throwable error ) {
if ( error instanceof HttpException ) {
switch ( ( ( HttpException ) error ) . code ( ) ) {
case HttpURLConnection . HTTP_NOT_FOUND :
Alert alert = AlertUtil . getAlertError (
AlertUtil . ERROR_TIDAK_DITEMUKAN_TITLE ,
"Barang dengan kode tersebut tidak ditemukan." ) ;
alert . initOwner ( apContent . getScene ( ) . getWindow ( ) ) ;
alert . show ( ) ;
}
} else {
Alert alert = AlertUtil . getAlertError (
AlertUtil . ERROR_TIDAK_TERDUGA_TITLE ,
"Terjadi kesalahan yang tidak terduga." ) ;
alert . initOwner ( apContent . getScene ( ) . getWindow ( ) ) ;
alert . show ( ) ;
Logger . getLogger ( FormUtamaController . class . getName ( ) ) . log ( Level . SEVERE , null , error ) ;
}
}
@Override
public void onComplete ( ) {
}
} ;
public Observer < Pagination < Barang > > daftarBarangObserver = new Observer < Pagination < Barang > > ( ) {
@Override
public void onSubscribe ( Disposable dspsbl ) {
}
@Override
public void onNext ( Pagination < Barang > b ) {
if ( b ! = null ) {
updateTabelBarang ( b . getData ( ) ) ;
}
}
@Override
public void onError ( Throwable error ) {
if ( error instanceof HttpException ) {
switch ( ( ( HttpException ) error ) . code ( ) ) {
case HttpURLConnection . HTTP_NOT_FOUND :
Alert alert = AlertUtil . getAlertError (
AlertUtil . ERROR_TIDAK_DITEMUKAN_TITLE ,
"Barang dengan kode tersebut tidak ditemukan." ) ;
alert . initOwner ( apContent . getScene ( ) . getWindow ( ) ) ;
alert . show ( ) ;
}
} else {
Alert alert = AlertUtil . getAlertError (
AlertUtil . ERROR_TIDAK_TERDUGA_TITLE ,
"Terjadi kesalahan yang tidak terduga." ) ;
alert . initOwner ( apContent . getScene ( ) . getWindow ( ) ) ;
alert . show ( ) ;
Logger . getLogger ( FormUtamaController . class . getName ( ) ) . log ( Level . SEVERE , null , error ) ;
}
}
@Override
public void onComplete ( ) {
}
} ;
}
}