| @@ -3,6 +3,7 @@ package id.amigogroup.posterminal; | |||||
| import com.fasterxml.jackson.core.JsonProcessingException; | import com.fasterxml.jackson.core.JsonProcessingException; | ||||
| import com.fasterxml.jackson.databind.ObjectMapper; | import com.fasterxml.jackson.databind.ObjectMapper; | ||||
| import id.amigogroup.posterminal.api.AmigoPosRx; | import id.amigogroup.posterminal.api.AmigoPosRx; | ||||
| import id.amigogroup.posterminal.model.Barang; | |||||
| import id.amigogroup.posterminal.model.MNotaRetur; | import id.amigogroup.posterminal.model.MNotaRetur; | ||||
| import id.amigogroup.posterminal.model.MNotaTunai; | import id.amigogroup.posterminal.model.MNotaTunai; | ||||
| import id.amigogroup.posterminal.model.Pelanggan; | import id.amigogroup.posterminal.model.Pelanggan; | ||||
| @@ -233,7 +234,7 @@ public class FormUtamaController implements Initializable { | |||||
| DialogCariBarangController dialogCariBarang = new DialogCariBarangController(); | DialogCariBarangController dialogCariBarang = new DialogCariBarangController(); | ||||
| dialogCariBarang.initOwner(bpMain.getScene().getWindow()); | dialogCariBarang.initOwner(bpMain.getScene().getWindow()); | ||||
| Optional<String> result = dialogCariBarang.showAndWait(); | |||||
| Optional<Barang> result = dialogCariBarang.showAndWait(); | |||||
| System.out.println(result); | System.out.println(result); | ||||
| }; | }; | ||||
| listShortcuts.put(kcCariBarang, rnCariBarang); | listShortcuts.put(kcCariBarang, rnCariBarang); | ||||
| @@ -5,6 +5,7 @@ | |||||
| */ | */ | ||||
| package id.amigogroup.posterminal.api; | package id.amigogroup.posterminal.api; | ||||
| import id.amigogroup.posterminal.model.Barang; | |||||
| import id.amigogroup.posterminal.model.Karyawan; | import id.amigogroup.posterminal.model.Karyawan; | ||||
| import id.amigogroup.posterminal.model.Pagination; | import id.amigogroup.posterminal.model.Pagination; | ||||
| import id.amigogroup.posterminal.model.MNotaRetur; | import id.amigogroup.posterminal.model.MNotaRetur; | ||||
| @@ -28,6 +29,14 @@ public class AmigoPosRx { | |||||
| return UtilsApi.getServiceApiBarang().getMNotaReturByNoNota(noNota); | return UtilsApi.getServiceApiBarang().getMNotaReturByNoNota(noNota); | ||||
| } | } | ||||
| public Observable<Barang> getBarangByKodeBarang(String kode){ | |||||
| return UtilsApi.getServiceApiBarang().getBarangByKodeBarang(kode); | |||||
| } | |||||
| public Observable<Pagination<Barang>> getBarangByNamaBarang(String namaBarang){ | |||||
| return UtilsApi.getServiceApiBarang().getBarangByNamaBarang(namaBarang); | |||||
| } | |||||
| //Checkin API | //Checkin API | ||||
| public Observable<List<Tas>> getAllTas(){ | public Observable<List<Tas>> getAllTas(){ | ||||
| return UtilsApi.getServiceApiCheckin().getAllTas(); | return UtilsApi.getServiceApiCheckin().getAllTas(); | ||||
| @@ -5,8 +5,10 @@ | |||||
| */ | */ | ||||
| package id.amigogroup.posterminal.api; | package id.amigogroup.posterminal.api; | ||||
| import id.amigogroup.posterminal.model.Barang; | |||||
| import id.amigogroup.posterminal.model.MNotaRetur; | import id.amigogroup.posterminal.model.MNotaRetur; | ||||
| import id.amigogroup.posterminal.model.MNotaTunai; | import id.amigogroup.posterminal.model.MNotaTunai; | ||||
| import id.amigogroup.posterminal.model.Pagination; | |||||
| import io.reactivex.Observable; | import io.reactivex.Observable; | ||||
| import retrofit2.http.GET; | import retrofit2.http.GET; | ||||
| import retrofit2.http.Path; | import retrofit2.http.Path; | ||||
| @@ -31,4 +33,12 @@ public interface ServiceApiBarang { | |||||
| //Mengambil Master Nota Retur by No Nota | //Mengambil Master Nota Retur by No Nota | ||||
| @GET("m-nota-retur/no-nota/{noNota}") | @GET("m-nota-retur/no-nota/{noNota}") | ||||
| Observable<MNotaRetur> getMNotaReturByNoNota(@Path("noNota") String noNota); | Observable<MNotaRetur> getMNotaReturByNoNota(@Path("noNota") String noNota); | ||||
| //Mengambil Barang Berdasarkan Kode Barang | |||||
| @GET("barangs/kode/{kode}") | |||||
| Observable<Barang> getBarangByKodeBarang(@Path("kode") String kode); | |||||
| //Mengambil Barang Berdasarkan Nama Barang | |||||
| @GET("barangs/nama/{namaBarang}") | |||||
| Observable<Pagination<Barang>> getBarangByNamaBarang(@Path("namaBarang") String namaBarang); | |||||
| } | } | ||||
| @@ -1,6 +1,7 @@ | |||||
| package id.amigogroup.posterminal.model; | package id.amigogroup.posterminal.model; | ||||
| import com.fasterxml.jackson.annotation.JsonIgnoreProperties; | |||||
| import com.fasterxml.jackson.annotation.JsonInclude; | import com.fasterxml.jackson.annotation.JsonInclude; | ||||
| import com.fasterxml.jackson.annotation.JsonProperty; | import com.fasterxml.jackson.annotation.JsonProperty; | ||||
| import com.fasterxml.jackson.annotation.JsonPropertyOrder; | import com.fasterxml.jackson.annotation.JsonPropertyOrder; | ||||
| @@ -8,6 +9,7 @@ import org.apache.commons.lang.builder.EqualsBuilder; | |||||
| import org.apache.commons.lang.builder.HashCodeBuilder; | import org.apache.commons.lang.builder.HashCodeBuilder; | ||||
| import org.apache.commons.lang.builder.ToStringBuilder; | import org.apache.commons.lang.builder.ToStringBuilder; | ||||
| @JsonIgnoreProperties(ignoreUnknown = true) | |||||
| @JsonInclude(JsonInclude.Include.NON_NULL) | @JsonInclude(JsonInclude.Include.NON_NULL) | ||||
| @JsonPropertyOrder({ | @JsonPropertyOrder({ | ||||
| "kode_barang", | "kode_barang", | ||||
| @@ -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<String> implements Initializable { | |||||
| public class DialogCariBarangController extends Dialog<Barang> 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"); | |||||
| btnTambah.setOnAction((event) -> { | |||||
| setResult("Barang x"); | |||||
| this.close(); | |||||
| }); | |||||
| daftarTabelBarang.add(new TabelBarangCari("AACOBA001ABCDXL", "Barang x", "XL","79.900", btnTambah)); | |||||
| // Button btnTambah = new Button("Tambah"); | |||||
| // btnTambah.setOnAction((event) -> { | |||||
| // setResult("Barang x"); | |||||
| // this.close(); | |||||
| // }); | |||||
| // 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() { | |||||
| } | |||||
| }; | |||||
| } | } | ||||
| @@ -18,14 +18,14 @@ public class TabelBarangCari { | |||||
| private final SimpleStringProperty nama; | private final SimpleStringProperty nama; | ||||
| private final SimpleStringProperty ukur; | private final SimpleStringProperty ukur; | ||||
| private final SimpleStringProperty harga; | private final SimpleStringProperty harga; | ||||
| private final SimpleObjectProperty<Button> btnTambah; | |||||
| // private final SimpleObjectProperty<Button> btnTambah; | |||||
| public TabelBarangCari(String kode, String nama, String ukur,String harga,Button btnTambah) { | |||||
| public TabelBarangCari(String kode, String nama, String ukur,String harga) { | |||||
| this.kode = new SimpleStringProperty(kode); | this.kode = new SimpleStringProperty(kode); | ||||
| this.nama = new SimpleStringProperty(nama); | this.nama = new SimpleStringProperty(nama); | ||||
| this.ukur = new SimpleStringProperty(ukur); | this.ukur = new SimpleStringProperty(ukur); | ||||
| this.harga = new SimpleStringProperty(harga); | this.harga = new SimpleStringProperty(harga); | ||||
| this.btnTambah = new SimpleObjectProperty<>(btnTambah); | |||||
| // this.btnTambah = new SimpleObjectProperty<>(btnTambah); | |||||
| } | } | ||||
| /** | /** | ||||
| @@ -84,17 +84,17 @@ public class TabelBarangCari { | |||||
| this.harga.set(harga); | this.harga.set(harga); | ||||
| } | } | ||||
| /** | |||||
| * @return the btnTambah | |||||
| */ | |||||
| public Button getBtnTambah() { | |||||
| return btnTambah.get(); | |||||
| } | |||||
| /** | |||||
| * @param btnTambah the btnTambah to set | |||||
| */ | |||||
| public void setBtnTambah(Button btnTambah) { | |||||
| this.btnTambah.set(btnTambah); | |||||
| } | |||||
| // /** | |||||
| // * @return the btnTambah | |||||
| // */ | |||||
| // public Button getBtnTambah() { | |||||
| // return btnTambah.get(); | |||||
| // } | |||||
| // | |||||
| // /** | |||||
| // * @param btnTambah the btnTambah to set | |||||
| // */ | |||||
| // public void setBtnTambah(Button btnTambah) { | |||||
| // this.btnTambah.set(btnTambah); | |||||
| // } | |||||
| } | } | ||||
| @@ -1,9 +1,11 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||
| <?import javafx.scene.control.Label?> | <?import javafx.scene.control.Label?> | ||||
| <?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.TextField?> | ||||
| <?import javafx.scene.control.ToggleGroup?> | |||||
| <?import javafx.scene.layout.AnchorPane?> | <?import javafx.scene.layout.AnchorPane?> | ||||
| <?import javafx.scene.text.Font?> | <?import javafx.scene.text.Font?> | ||||
| @@ -14,16 +16,23 @@ | |||||
| <Font size="16.0" /> | <Font size="16.0" /> | ||||
| </font> | </font> | ||||
| </Label> | </Label> | ||||
| <TextField layoutX="14.0" layoutY="56.0" promptText="Nama Barang" AnchorPane.leftAnchor="4.0" AnchorPane.rightAnchor="4.0" AnchorPane.topAnchor="46.0" /> | |||||
| <Label layoutX="14.0" layoutY="39.0" text="Nama Barang" AnchorPane.leftAnchor="4.0" AnchorPane.topAnchor="29.0" /> | |||||
| <TableView fx:id="tbvBarang" layoutX="14.0" layoutY="91.0" AnchorPane.bottomAnchor="-5.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="81.0"> | |||||
| <TextField fx:id="tfPencarian" layoutX="14.0" layoutY="56.0" onKeyReleased="#tfPencarianOnKeyReleased" promptText="Input Kode Barang / Nama Barang" AnchorPane.leftAnchor="4.0" AnchorPane.rightAnchor="4.0" AnchorPane.topAnchor="46.0" /> | |||||
| <Label layoutX="14.0" layoutY="39.0" text="Pencarian" AnchorPane.leftAnchor="4.0" AnchorPane.topAnchor="29.0" /> | |||||
| <Label layoutX="4.0" layoutY="76.0" text="Cari Berdasarkan :" AnchorPane.leftAnchor="4.0" AnchorPane.topAnchor="76.0" /> | |||||
| <RadioButton fx:id="rbKodeBarang" layoutX="3.0" layoutY="93.0" mnemonicParsing="false" text="Kode Barang" AnchorPane.leftAnchor="4.0" AnchorPane.topAnchor="93.0"> | |||||
| <toggleGroup> | |||||
| <ToggleGroup fx:id="tgTipe" /> | |||||
| </toggleGroup> | |||||
| </RadioButton> | |||||
| <RadioButton fx:id="rbNamaBarang" layoutX="103.0" layoutY="93.0" mnemonicParsing="false" text="Nama Barang" toggleGroup="$tgTipe" AnchorPane.leftAnchor="103.0" AnchorPane.topAnchor="93.0" /> | |||||
| <TableView fx:id="tbvBarang" layoutX="14.0" layoutY="117.0" prefHeight="338.0" prefWidth="500.0" AnchorPane.bottomAnchor="-5.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="117.0"> | |||||
| <columns> | <columns> | ||||
| <TableColumn fx:id="tcNo" maxWidth="30.0" minWidth="30.0" prefWidth="30.0" resizable="false" text="No" /> | <TableColumn fx:id="tcNo" maxWidth="30.0" minWidth="30.0" prefWidth="30.0" resizable="false" text="No" /> | ||||
| <TableColumn fx:id="tcKode" prefWidth="75.0" text="Kode" /> | <TableColumn fx:id="tcKode" prefWidth="75.0" text="Kode" /> | ||||
| <TableColumn fx:id="tcNama" prefWidth="75.0" text="Nama" /> | <TableColumn fx:id="tcNama" prefWidth="75.0" text="Nama" /> | ||||
| <TableColumn fx:id="tcUkur" maxWidth="35.0" minWidth="35.0" prefWidth="35.0" resizable="false" text="Ukur" /> | |||||
| <TableColumn fx:id="tcUkur" text="Ukur" /> | |||||
| <TableColumn fx:id="tcHarga" prefWidth="75.0" text="Harga" /> | <TableColumn fx:id="tcHarga" prefWidth="75.0" text="Harga" /> | ||||
| <TableColumn fx:id="tcBtnTambah" maxWidth="80.0" minWidth="80.0" resizable="false" text="Tambah" /> | |||||
| <TableColumn fx:id="tcTambah" prefWidth="75.0" text="Tambah" /> | |||||
| </columns> | </columns> | ||||
| <columnResizePolicy> | <columnResizePolicy> | ||||
| <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" /> | <TableView fx:constant="CONSTRAINED_RESIZE_POLICY" /> | ||||