You are working for a small manufacturing organization that has outgrown its current inventory system. Members of the organization have been using a spreadsheet program to manually enter inventory...

1 answer below »
You are working for a small manufacturing organization that has outgrown its current inventory system. Members of the organization have been using a spreadsheet program to manually enter inventory additions, deletions, and other data from a paper-based system but would now like you to develop a more sophisticated inventory program.


You have been provided with a mock-up of the user interface to use in the design and development of the system (see the attached “Software 1 GUI Mock-Up”) and a class diagram to assist you in your work (see the attached “UML Class Diagram”). The organization also has specific business requirements that must be considered for the application. A systems analyst created the solution statements outlined in the requirements section of this task based on the business requirements. You will use these solution statements to develop your application.




Javadoc comments are required for this performance assessment. It is recommended you document comments for each member during the coding process. Please see aspect G.







I. User Interface


A.Create a JavaFX application with a graphical user interface (GUI) based on the attached “Software 1 GUI Mock-Up.” You may use JavaFX with or without FXML to create your GUI, or you may use Scene Builder to create your FXML file; use of Swing is not permitted. The user interface (UI) should closely match the organization of the GUI layout and containallUI components (buttons, text fields, etc.) ineachof the following GUI mock-up forms:


1.Main form


2.Add Part form


3.Modify Part form


4. Add Product form


5. Modify Product form





Note: You may use one FXML file for forms with an identical UI component structure. You may also use a single window that can be switched to a different menu, or a new window can be launched for each form.As of JDK 11, JavaFX is no longer included in the JDK API but is available as an SDK or module.






II. Application


B.Create classes with data and logic that map to the UML class diagram and include the supplied Part class provided in the attached “Part.java.” Do not alter the provided class. Include all the classes and members as shown in the UML diagram. Your code should demonstrate the following:


• inheritance


• abstract and concrete classes


• instance and static variables


• instance and static methods




C. Add the following functionalities to the Main form:


1.The Parts pane


•The Add button under the Parts TableView opens the Add Part form.


•The Modify button under the Parts TableView opens the Modify Part form.


•The Delete button under the Parts TableView deletes the selected part from the Parts TableView or displays a descriptive error message in the UI or in a dialog box if a part is not deleted.


•When the user searches for parts by ID or name (partial or full name) using the text field, the application displays matching results in the Parts TableView. (Including a search button is optional.) If the part or parts are found, the application highlights a single part or filters multiple parts. If the part is not found, the application displays an error message in the UI or in a dialog box.


•If the search field is set to empty, the table should be repopulated with all available parts.


2.The Products pane


•The Add button under the Products TableView opens the Add Product form.


•The Modify button under the Products TableView opens the Modify Product form.


•The Delete button under the Products TableView deletes the selected product (if appropriate) from the Products TableView or displays a descriptive error message in the UI or in a dialog box if a product is not deleted.


• When the user searches for products by ID or name (partial or full name) using the text field, the application displays matching results in the Products TableView. (Including a search button is optional.) If a product or products are found, the application highlights a single product or products or filters multiple products. If a product or products are not found, the application displays an error message in the UI or in a dialog box.


• If the search field is set to empty, the table should be repopulated with all available products.





Note: A product’s associated parts can exist independent of current inventory of parts. You are not required to display sample data upon launching your application. You do not need to save your data to a database or a file; data for this application is nonpersistent and will reside in computer memory while in use.





3. Exit button


• The Exit button closes the application.




D. Add the listed functionalities to the following parts forms:


1.The Add Part form


•The In-House and Outsourced radio buttons switch the bottom label to the correct value (Machine ID or Company Name).


•The application auto-generates a unique part ID. The part IDs can be, but do not need to be, contiguous.


-The part ID text field must be disabled.


•The user should be able to enter a part name, inventory level or stock, a price, maximum and minimum values, and company name or machine ID values into active text fields.


•After saving the data, users are automatically redirected to the Main form.


•Canceling or exiting this form redirects users to the Main form.


2.The Modify Part form


•The text fields populate with the data from the chosen part.


•The In-House and Outsourced radio buttons switch the bottom label to the correct value (Machine ID or Company Name) and swap In-House parts and Outsourced parts. When new objects need to be created after the Save button is clicked, the part ID should be retained.


•The user can modify data values in the text fields sent from the Main form except the part ID.


• After saving modifications to the part, the user is automatically redirected to the Main form.


• Canceling or exiting this form redirects users to the Main form.




E. Add the following functionalities to the following product forms:


1.The Add Product form


•The application auto-generates a unique product ID. The product IDs can be, but do not need to be, contiguous. - The product ID text field must be disabled and cannot be edited or changed.


•The user should be able to enter a product name, inventory level or stock, a price, and maximum and minimum values.


•The user can search for parts (top table) by ID or name (partial or full name). If the part or parts are found, the application highlights a single part or filters multiple parts. If the part or parts are not found, the application displays an error message in the UI or in a dialog box.


•If the search field is set to empty, the table should be repopulated with all available parts.


•The top table should be identical to the Parts TableView in the Main form.


•The user can select a part from the top table. The user then clicks the Add button, and the part is copied to the bottom table. (This associates one or more parts with a product.)


•The Remove Associated Part button removes a selected part from the bottom table. (This dissociates or removes a part from a product.


• After saving the data, the user is automatically redirected to the Main form.


• Canceling or exiting this form redirects users to the Main form.





Note: When a product is deleted, so can its associated parts without affecting the part inventory. The Remove Associated Part button removes a selected part from the bottom table. (This dissociates or removes a part from a product.)





2. The Modify Product form


•The text fields populate with the data from the chosen product, and the bottom TableView populates with the associated parts.


•The user can search for parts (top table) by ID or name (partial or full name). If the part or parts are found, the application highlights a single part or filters multiple parts. If the part is not found, the application displays an error message in the UI or a dialog box.


•If the search text field is set to empty, the table should be repopulated with all available parts.


•The top table should be identical to the Parts TableView in the Main form.


•The user may modify or change data values.


-The product ID text field must be disabled and cannot be edited or changed.


•The user can select a part from the top table. The user then clicks the Add button, and the part is copied to the bottom table. (This associates one or more parts with a product.)


•The user may associate zero, one, or more parts with a product.


•The user may remove or disassociate a part from a product.


• After saving modifications to the product, the user is automatically redirected to the Main form.


• Canceling or exiting this form redirects users to the Main form.





Note: The Remove Associated Part button removes a selected part from the bottom table. (This dissociates or removes a part from a product.)





F. Write code to implement input validation and logical error checks using a dialog box or message in the UI displaying a descriptive error message for each of the following circumstances:


•Min should be less than Max; and Inv should be between those two values.


•The user should not delete a product that has a part associated with it.


• The application confirms the “Delete” and “Remove” actions.


• The application will not crash when inappropriate user data is entered in the forms; instead, error messages should be generated.




G. Provide descriptive Javadoc comments for each member throughout the code. Create an index.html file of your comments to include with your submission, excluding the provided part class that cannot be modified, based on Oracle’s guidelines for the Javadoc tool. Include a description of the following in your comments:


• a detailed description of a logical or runtime error that you corrected in the code and a detailed description of how you corrected it above the line of code you are referring to


• a compatible feature suitable to your application that would extend functionality to the next version if you were to update the application




H. Demonstrate professional communication in the content and presentation of your submission.

Answered 6 days AfterMay 09, 2021

Answer To: You are working for a small manufacturing organization that has outgrown its current inventory...

Shweta answered on May 15 2021
161 Votes
83550Solution/index.html
JavaScript is disabled on your browser.
inventorysystems/package-summary.html
83550Solution/InventorySystems/build.xml

Builds, tests, and runs the project InventorySystems.


83550Solution/InventorySystems/manifest.mf
Manifest-Version: 1.0
X-COMMENT: Main-Class will be added automatically by build
83550Solution/InventorySystems/nbproject/build-impl.xml









































































































































































































































































Must set src.dir
Must set test.src.dir
Must set build.dir
Must set dist.dir
Must set build.classes.dir
Must set dist.javadoc.dir
Must set build.test.classes.dir
Must set build.test.results.dir
Must set build.classes.excludes
Must set dist.jar











































































































































































Must set javac.includes












































































































































































No tests executed.

























































































































































































Must set JVM to use for profiling in profiler.info.jvm
Must set profiler agent JVM arguments in profiler.info.jvmargs.agent




















































































































































































































































































Must select some files in the IDE or set javac.includes














































































To run this application from the command line without Ant, try:

java -jar "${dist.jar.resolved}"

































































































































Must select one file in the IDE or set run.class



Must select one file in the IDE or set run.class






















Must select one file in the IDE or set debug.class




Must select one file in the IDE or set debug.class




Must set fix.includes









This target only works when run from inside the NetBeans IDE.








Must select one file in the IDE or set profile.class
This target only works when run from inside the NetBeans IDE.








This target only works when run from inside the NetBeans IDE.












This target only works when run from inside the NetBeans IDE.































Must select one file in the IDE or set run.class





Must select some files in the IDE or set test.includes




Must select one file in the IDE or set run.class




Must select one file in the IDE or set applet.url

































































































































Must select some files in the IDE or set javac.includes























Some tests failed; see details above.








Must select some files in the IDE or set test.includes



Some tests failed; see details above.



Must select some files in the IDE or set test.class
Must select some method in the IDE or set test.method



Some tests failed; see details above.




Must select one file in the IDE or set test.class



Must select one file in the IDE or set test.class
Must select some method in the IDE or set test.method














Must select one file in the IDE or set applet.url








Must select one file in the IDE or set applet.url





















































83550Solution/InventorySystems/nbproject/genfiles.properties
build.xml.data.CRC32=4fff691a
build.xml.script.CRC32=e8447d7e
[email protected]
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
nbproject/build-impl.xml.data.CRC32=4fff691a
nbproject/build-impl.xml.script.CRC32=b49ede17
nbproject/[email protected]
83550Solution/InventorySystems/nbproject/private/config.properties
83550Solution/InventorySystems/nbproject/private/private.properties
compile.on.save=true
do.depend=false
do.jar=true
do.jlink=false
file.reference.jfoenix-9.0.8.jar=F:\\GreyNodes\\jfoenix-9.0.8.jar
javac.debug=true
javadoc.preview=true
jlink.strip=false
user.properties.file=C:\\Users\\Acer\\AppData\\Roaming\\NetBeans\\12.2\\build.properties
83550Solution/InventorySystems/nbproject/private/private.xml





83550Solution/InventorySystems/nbproject/project.properties
annotation.processing.enabled=true
annotation.processing.enabled.in.editor=false
annotation.processing.processors.list=
annotation.processing.run.all.processors=true
annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
application.title=InventorySystems
application.vendor=Acer
build.classes.dir=${build.dir}/classes
build.classes.excludes=**/*.java,**/*.form
# This directory is removed when the project is cleaned:
build.dir=build
build.generated.dir=${build.dir}/generated
build.generated.sources.dir=${build.dir}/generated-sources
# Only compile against the classpath explicitly listed here:
build.sysclasspath=ignore
build.test.classes.dir=${build.dir}/test/classes
build.test.results.dir=${build.dir}/test/results
# Uncomment to specify the preferred debugger connection transport:
#debug.transport=dt_socket
debug.classpath=\
${run.classpath}
debug.modulepath=\
${run.modulepath}
debug.test.classpath=\
${run.test.classpath}
debug.test.modulepath=\
${run.test.modulepath}
# Files in build.classes.dir which should be excluded from distribution jar
dist.archive.excludes=
# This directory is removed when the project is cleaned:
dist.dir=dist
dist.jar=${dist.dir}/InventorySystems.jar
dist.javadoc.dir=${dist.dir}/javadoc
dist.jlink.dir=${dist.dir}/jlink
dist.jlink.output=${dist.jlink.dir}/InventorySystems
endorsed.classpath=
excludes=
file.reference.jfoenix-9.0.8.jar=C:\\Users\\Acer\\Desktop\\jfoenix-9.0.8.jar
file.reference.jfoenix-9.0.8.jar-1=F:\\GreyNodes\\jfoenix-9.0.8.jar
includes=**
jar.compress=false
javac.classpath=\
${libs.JavaFX.classpath}:\
${libs.JavfSDK.classpath}:\
${file.reference.jfoenix-9.0.8.jar}:\
${file.reference.jfoenix-9.0.8.jar-1}
# Space-separated list of extra javac options
javac.compilerargs=
javac.deprecation=false
javac.external.vm=true
javac.modulepath=\
${libs.JavaFX.classpath}:\
${libs.JavfSDK.classpath}
javac.processormodulepath=
javac.processorpath=\
${javac.classpath}
javac.source=11
javac.target=11
javac.test.classpath=\
${javac.classpath}:\
${build.classes.dir}
javac.test.modulepath=\
${javac.modulepath}
javac.test.processorpath=\
${javac.test.classpath}
javadoc.additionalparam=
javadoc.author=false
javadoc.encoding=${source.encoding}
javadoc.html5=false
javadoc.noindex=false
javadoc.nonavbar=false
javadoc.notree=false
javadoc.private=true
javadoc.splitindex=true
javadoc.use=true
javadoc.version=true
javadoc.windowtitle=
# The jlink additional root modules to resolve
jlink.additionalmodules=
# The jlink additional command line parameters
jlink.additionalparam=
jlink.launcher=true
jlink.launcher.name=InventorySystems
main.class=inventorysystems.InventorySystems
manifest.file=manifest.mf
meta.inf.dir=${src.dir}/META-INF
mkdist.disabled=false
platform.active=default_platform
run.classpath=\
${javac.classpath}:\
${build.classes.dir}
# Space-separated list of JVM arguments used when running the project.
# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value.
# To set system properties for unit tests define test-sys-prop.name=value:
run.jvmargs=--module-path /path/to/JavaFX/lib --add-modules=javafx.controls,javafx.fxml
run.modulepath=\
${javac.modulepath}:\
${libs.JavfSDK.classpath}:\
${libs.JavaFX.classpath}
run.test.classpath=\
${javac.test.classpath}:\
${build.test.classes.dir}
run.test.modulepath=\
${javac.test.modulepath}
source.encoding=UTF-8
src.dir=src
test.src.dir=test
83550Solution/InventorySystems/nbproject/project.xml

org.netbeans.modules.java.j2seproject


InventorySystems








83550Solution/InventorySystems/src/inventorysystems/AddPartInterface.fxml






















































































83550Solution/InventorySystems/src/inventorysystems/AddPartInterfaceController.java
83550Solution/InventorySystems/src/inventorysystems/AddPartInterfaceController.java
package inventorysystems;
/*
 * 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.
 */
import com.jfoenix.controls.JFXRadioButton;
import com.jfoenix.controls.JFXTextField;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.control.Alert;
import javafx.scene.control.Label;
import javafx.stage.Stage;
/*
        *It's the Add Parts/ Modify Parts window controller class
        *It is method to initialize things at startup
 */
public class AddPartInterfaceController implements Initializable {
    /*
    *All FXML Button, Field, RadioButton,Label Declaration
     */
    @FXML
    private JFXTextField partCompanyNameField, partPriceField, partMaxField,
            partMinField, partNameTextField, partLnvField, partIDTextField, partMachineIDField;
    @FXML
    private JFXRadioButton inHouseButton, outsourcedButton;
    @FXML
    private Label partCompanyNameLabel, partMachineIDLabel;
    @FXML
    private javafx.scene.control.Button closeButton;
    /*
    *Parts Class object declaration for future use
     */
    Part selectedPart;
    InHouse selectedInhouse;
    Outsourced selectedOutsourced;
    /*
    *Adding new data or editing previous data checker boolean variable
     */
    Boolean editData = false, inHouse = true;
    /*
   *Parent class reference variable declaration 
     */
    private IMSFXMLDocumentController documentController;
    /* ID of associated part, default -1 for individual parts*/
    int asProID = -1;
    /*
    Close/Cancel Button on Add/Modify Window to return to main window
    */
    @FXML
    void closeButtonAction(ActionEvent event) {
        final Node source = (Node) event.getSource();
        final Stage stage = (Stage) source.getScene().getWindow();
        stage.close();
    }
    /* 
     *This method is called upon outsource button press to disable company name 
     *and company label as required
    */
    @FXML
    void outsourceButtonPress(ActionEvent event) {
        // On outsourced button press hide the machine id label and field 
        partCompanyNameField.setVisible(true);
        partCompanyNameLabel.setVisible(true);
        inHouseButton.setSelected(false);
        inHouse = false;
        outsourcedButton.setSelected(true);
        // On outsourced button press make the company name field and label visible
        partMachineIDField.setVisible(false);
        partMachineIDLabel.setVisible(false);
    }
     /* 
     *this method enables the company name and field for out-sourced parts
     */
    @FXML
    void inHouseAction(ActionEvent event) {
        // On inHouse button press hide the company name label and field 
        partCompanyNameField.setVisible(false);
        partCompanyNameLabel.setVisible(false);
        outsourcedButton.setSelected(false);
        inHouse = true;
        inHouseButton.setSelected(true);
        // On inhouse button press show the machine id field and label visible
        partMachineIDField.setVisible(true);
        partMachineIDLabel.setVisible(true);
    }
    /*
    *This button action triggers the addition of new data or 
     *update of existing one by condition
     */
    @FXML
    void partSaveButtonAction(ActionEvent event) {
        if (Integer.parseInt(partMaxField.getText()) > Integer.parseInt(partMinField.getText())) {
            if (Integer.parseInt(partLnvField.getText()) < Integer.parseInt(partMaxField.getText())) {
                String companyNameOrMachineID;
                if (inHouse) {
                    companyNameOrMachineID = partMachineIDField.getText();
                } else {
                    companyNameOrMachineID = partCompanyNameField.getText();
                }
                // If edit data flag is risen updatePart method is called upon to modify dara row
                if (editData == true) {
                    inHouseButton.setDisable(false);
                    outsourcedButton.setDisable(false);
                    documentController.updatePart(
                            Integer.parseInt(partIDTextField.getText()), // Parsing String to Integer format to send as parameter 
                            partNameTextField.getText(),
                            Integer.parseInt(partLnvField.getText()), // Parsing String to Integer format to send as parameter 
                            Double.parseDouble(partPriceField.getText()), // Parsing String to Double format to send as parameter 
                            selectedInhouse,
                            selectedOutsourced,
                            Integer.parseInt(partMaxField.getText()), // Parsing max value from text field to integer
                            Integer.parseInt(partMinField.getText()), // Parsing min value from text field to integer
                            companyNameOrMachineID,
                            inHouse,
                            asProID
                    );
                    // Show data update successful dialog
                    Alert alert = new Alert(Alert.AlertType.INFORMATION);
                    alert.setTitle("Success!");
                    alert.setHeaderText("Successfully Updated Part Data!");
                    alert.setContentText(null);
                    alert.showAndWait();
                } else {    // If edit data flag is not risen addNewPart method is called upon to add new dara row
                    documentController.addNewPart(
                            Integer.parseInt(partIDTextField.getText()), // Parsing String to Integer format to send as parameter 
                            partNameTextField.getText(),
                            Integer.parseInt(partLnvField.getText()), // Parsing String to Integer format to send as parameter 
                            Double.parseDouble(partPriceField.getText()), // Parsing String to Double format to send as parameter 
                            Integer.parseInt(partMaxField.getText()), // Parsing max value from text field to integer
                            Integer.parseInt(partMinField.getText()), // Parsing min value from text field to integer
                            companyNameOrMachineID,
                            inHouse,
                            asProID
                    );
                    // Show succefully new part addition dialog
                    Alert alert = new Alert(Alert.AlertType.INFORMATION);
                    alert.setTitle("Success!");
                    alert.setHeaderText("Successfully Added new Part!");
                    alert.setContentText(null);
                    alert.showAndWait();
                }
                // Closing the window after the save/update has been successfully finished
                final Node source = (Node) event.getSource();
                final Stage stage = (Stage) source.getScene().getWindow();
                stage.close();
            } else {
                // Show succefully new part addition dialog
                Alert alert = new Alert(Alert.AlertType.ERROR);
                alert.setTitle("Error!");
                alert.setHeaderText("Max value can not be lower then inventory level value!");
                alert.setContentText(null);
                alert.showAndWait();
            }
        } else {
            // Show succefully new part addition dialog
            Alert alert = new Alert(Alert.AlertType.ERROR);
            alert.setTitle("Error!");
            alert.setHeaderText("Max value can not be lower then min value!");
            alert.setContentText(null);
            alert.showAndWait();
        }
    }
    @Override
    public void initialize(URL url, ResourceBundle rb) {
    }
    /* Default parent controller class setter method*/
    void setParentController(IMSFXMLDocumentController documentController) {
        this.documentController = documentController;
    }
    /*
   *This method is used to gram data of mouse pressed TableView Row data 
    *to send to the modify window*/
    void setData(Part selectedPart, Boolean inHouse) {
        this.selectedPart = selectedPart;
        partIDTextField.setText(String.valueOf(selectedPart.getId()));      // Setting value of part id to the Modify window
        partNameTextField.setText("" + selectedPart.getName());                 // Setting value of part name to the Modify window
        partLnvField.setText("" + selectedPart.getStock());                  // Setting value of part lnv to the Modify window
        partPriceField.setText("" + selectedPart.getPrice());               // Setting value of part price to the Modify window
        editData = true;                        // Setting value of editData boolean flas to true for the Modify window to activate
        partMaxField.setText("" + selectedPart.getMax());
        partMinField.setText("" + selectedPart.getMin());
        if (inHouse) {
            inHouseAction(null);
            outsourcedButton.setDisable(true);
            selectedInhouse = (InHouse) selectedPart;
            partMachineIDField.setText("" + selectedInhouse.getMachineId());      // setting machineid for inhouse parts
        } else {
            outsourceButtonPress(null);
            inHouseButton.setDisable(true);
            selectedOutsourced = (Outsourced) selectedPart;
            partCompanyNameField.setText("" + selectedOutsourced.getCompanyName());        // setting company name for outsourced parts
        }
    }
    /* setting auto generated id for new part*/
    void setID(int generateID) {
        partIDTextField.setText(String.valueOf(generateID));
    }
    /* For associating a part witha product*/
    void setAssociatedPart(int asProID) {
        this.asProID = asProID;
    }
}
83550Solution/InventorySystems/src/inventorysystems/AddProductInterface.fxml


























































































83550Solution/InventorySystems/src/inventorysystems/AddProductInterfaceController.java
83550Solution/InventorySystems/src/inventorysystems/AddProductInterfaceController.java
package inventorysystems;
/*
 * 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.
 */
import com.jfoenix.controls.JFXRadioButton;
import com.jfoenix.controls.JFXTextField;
import java.net.URL;
import java.util.Optional;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.control.Alert;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.input.MouseEvent;
import javafx.stage.Stage;
/*
 *It's the Add Products/ Modify Products window controller class
 */
public class AddProductInterfaceController implements Initializable {
    /*
     *All FXML Button, Field, RadioButton,Label Declaration
    */
    @FXML
    private JFXTextField  productPriceField, productMaxField, productMinField, productNameTextField, productLnvField, productIDTextField;
    @FXML
    TableView partsTable, partsTable1;
    @FXML
    private TableColumn partsID, partsStock, partsID1, partsStock1;
    @FXML
    private TableColumn partsPrice, partsPrice1;
    @FXML
    private TableColumn partsName, partsName1;
    private IMSFXMLDocumentController documentController;
    Product productSelected;
    Part associatedProductSelected;
    Part partSelected;
    Boolean editData = false;
    ObservableList existingProductParts = FXCollections.observableArrayList();
    /* 
    *Method is called when a product associated part is 
     *selected and De-Associate button is pressed*/
    @FXML
    void productPartDeAssociateAction(ActionEvent event) {
        //when a part is selected
        if (associatedProductSelected != null) {
            // showing the causing message and confirm dialog
            Alert alert = new Alert(Alert.AlertType.CONFIRMATION);
            alert.setTitle("Causion!");
            alert.setHeaderText("Are you sure you want to De-Associate Part with ID : " + associatedProductSelected.getId() + " From this Product?");
            alert.setContentText(null);
            Optional result = alert.showAndWait();
            // when confirmed
            if (result.get() == ButtonType.OK) {
                // delete parts from products table and deassociate them
                partsTable.getItems().remove(associatedProductSelected);
                existingProductParts.remove(associatedProductSelected);
                if (existingProductParts.isEmpty() == false) {
                    existingProductParts.forEach(part -> productSelected.associatedPart(part));
                } else {
                    productSelected.associatedPart(null);
                }
            }
        } else {
            // when no part is selected
            Alert alert = new Alert(Alert.AlertType.WARNING);
            alert.setTitle("Error!");
            alert.setHeaderText("Please, Select at-least one part to perform delete operation!");
            alert.setContentText(null);
            alert.showAndWait();
        }
    }
    /* when close button on product window is clicked*/
    @FXML
    void closeButtonAction(ActionEvent event) {
        // Close current window
        final Node source = (Node) event.getSource();
        final Stage stage = (Stage) source.getScene().getWindow();
        stage.close();
    }
    /* This method is called when new products associated new part add button is clicked*/
    @FXML
    void addProductAssociatedPart(ActionEvent event) {
        partsTable.getItems().setAll(partSelected);
        partsID.setCellValueFactory(new PropertyValueFactory<>("id"));
        partsStock.setCellValueFactory(new PropertyValueFactory<>("stock"));
        partsPrice.setCellValueFactory(new PropertyValueFactory<>("price"));
        partsName.setCellValueFactory(new PropertyValueFactory<>("name"));
        existingProductParts.add(partSelected);
    }
    /* This method is called when in products window save button is pressed*/
    @FXML
    void productSaveButtonAction(ActionEvent event) {
        // if product has at-least one parts
        if (existingProductParts.isEmpty() == false) {
            // If the inventory level is lower then max
            if (Integer.parseInt(productMaxField.getText()) > Integer.parseInt(productMinField.getText())) {
                // If max is lower then min
                if (Integer.parseInt(productLnvField.getText()) < Integer.parseInt(productMaxField.getText())) {
                    // If the modify button was clicked
                    if (editData == true) {
                        // update the product information
                        documentController.updateProduct(
                                Integer.parseInt(productIDTextField.getText()),
                                productNameTextField.getText(),
                                Integer.parseInt(productLnvField.getText()),
                                Double.parseDouble(productPriceField.getText()),
                                productSelected,
                                Integer.parseInt(productMaxField.getText()),
                                Integer.parseInt(productMinField.getText()), existingProductParts
                        );
                        // Show succefully new part addition dialog
                        Alert alert = new Alert(Alert.AlertType.INFORMATION);
                        alert.setTitle("Success!");
                        alert.setHeaderText("Successfully Updated Product Information!");
                        alert.setContentText(null);
                        alert.showAndWait();
                    } else {
                        // if add new product button was pressed
                        // add the new part to the main arraylist
                        documentController.addNewProduct(
                                Integer.parseInt(productIDTextField.getText()),
                                productNameTextField.getText(),
                                Integer.parseInt(productLnvField.getText()),
                                Double.parseDouble(productPriceField.getText()),
                                Integer.parseInt(productMaxField.getText()),
                                Integer.parseInt(productMinField.getText()), existingProductParts
                        );
                        // Show succefully new part addition dialog
                        Alert alert = new Alert(Alert.AlertType.INFORMATION);
                        alert.setTitle("Success!");
                        alert.setHeaderText("Successfully Added new Product!");
                        alert.setContentText(null);
                        alert.showAndWait();
                    }
                    // Closing the window after the save/update has been successfully finished
                    final Node source = (Node) event.getSource();
                    final Stage stage = (Stage) source.getScene().getWindow();
                    stage.close();
                } else {
                    // Show succefully new part addition dialog
                    Alert alert = new Alert(Alert.AlertType.ERROR);
                    alert.setTitle("Error!");
                    alert.setHeaderText("Max value can not be lower then inventory level value!");
                    alert.setContentText(null);
                    alert.showAndWait();
                }
            } else {
                // Show succefully new part addition dialog
                Alert alert = new Alert(Alert.AlertType.ERROR);
                alert.setTitle("Error!");
                alert.setHeaderText("Max value can not be lower then min value!");
                alert.setContentText(null);
                alert.showAndWait();
            }
        } else {
            // Show succefully new part addition dialog
            Alert alert = new Alert(Alert.AlertType.ERROR);
            alert.setTitle("Error!");
            alert.setHeaderText("Products must have atleast one part!");
            alert.setContentText(null);
            alert.showAndWait();
        }
    }
    @Override
    public void initialize(URL url, ResourceBundle rb) {
        partsTable.setOnMousePressed(new EventHandler() {
            @Override
            public void handle(MouseEvent event) {
                // Getting the selected object and saving for use
                associatedProductSelected = partsTable.getSelectionModel().getSelectedItem();
            }
        });
    }
    /* default parent controller setter method*/
    void setParentController(IMSFXMLDocumentController documentController) {
        this.documentController = documentController;
    }
    /*
    *This method receives product data from main window when a product is selected 
     *and modify button is pressed*/
    void setData(Product productSelected) {
        productIDTextField.setText("" + productSelected.getID());
        productNameTextField.setText(productSelected.getName());
        productLnvField.setText("" + productSelected.getStock());
        productPriceField.setText("" + productSelected.getPrice());
        productMaxField.setText("" + productSelected.getMax());
        productMinField.setText("" + productSelected.getMin());
        existingProductParts = productSelected.getAllAssociatedParts();
        partsTable.getItems().setAll(existingProductParts);
        partsID.setCellValueFactory(new PropertyValueFactory<>("id"));
        partsStock.setCellValueFactory(new PropertyValueFactory<>("stock"));
        partsPrice.setCellValueFactory(new PropertyValueFactory<>("price"));
        partsName.setCellValueFactory(new PropertyValueFactory<>("name"));
        this.productSelected = productSelected;
        editData = true;
    }

    /*This is th method to set part table data*/
    void setPartTable(ObservableList allParts) {
        partsTable1.getItems().setAll(allParts);
        partsID1.setCellValueFactory(new PropertyValueFactory<>("id"));
        partsStock1.setCellValueFactory(new PropertyValueFactory<>("stock"));
        partsPrice1.setCellValueFactory(new PropertyValueFactory<>("price"));
        partsName1.setCellValueFactory(new PropertyValueFactory<>("name"));
        // setting add click event for parts selection for future delete or modify action
        partsTable1.setOnMousePressed(new EventHandler() {
            @Override
            public void handle(MouseEvent event) {
                // Getting the selected object and saving for use
                partSelected = partsTable1.getSelectionModel().getSelectedItem();
            }
        });
    }
    /* Product id auto generation for new product*/
    void setData(int generateProductsID) {
        productIDTextField.setText("" + generateProductsID);
    }
}
83550Solution/InventorySystems/src/inventorysystems/IMSFXMLDocument.fxml






















































83550Solution/InventorySystems/src/inventorysystems/IMSFXMLDocumentController.java
83550Solution/InventorySystems/src/inventorysystems/IMSFXMLDocumentController.java
package inventorysystems;
/*
 * 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.
 */
import com.jfoenix.controls.JFXTextField;
import java.io.IOException;
import java.net.URL;
import java.util.Optional;
import java.util.ResourceBundle;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.collections.transformation.FilteredList;
import javafx.collections.transformation.SortedList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Alert.AlertType;
import javafx.scene.control.ButtonType;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.input.MouseEvent;
import javafx.stage.Stage;
/**
 *
 * @author NixonOK
 */
/*
*It's the Main/First window controller class*/
public class IMSFXMLDocumentController implements Initializable {
    /*
     *All FXML Button, Field, RadioButton,Label Declaration */
    @FXML
    TableView productTable;
    @FXML
    private TableColumn productID, productStock;
    @FXML
    private TableColumn productPrice;
    @FXML
    private TableColumn productName;
    @FXML
    private JFXTextField productFilterString;
    @FXML
    TableView partsTable;
    @FXML
    private TableColumn partsID, partsStock;
    @FXML
    private TableColumn partsPrice;
    @FXML
    private TableColumn partsName;
    @FXML
    private JFXTextField partsFilterString;

    /*
     *Parts/Products data collection array list 
    */
    ObservableList parts = FXCollections.observableArrayList();
    ObservableList inHouses = FXCollections.observableArrayList();
    ObservableList outSourced = FXCollections.observableArrayList();
    ObservableList products = FXCollections.observableArrayList();
    Boolean inHouse;
    Part partSelected = null;
    InHouse inHouseSelected = null;
    Outsourced outSourcedSelected = null;
    Product productSelected = null;
    SortedList sortedData;
    /*
     *Runs at the start of the windows life circle
    */
    @Override
    public void initialize(URL url, ResourceBundle rb) {
       //Setting all elements of products method to productTable
        productTable.getItems().setAll(products());
       //Setting table column controller variables
        productID.setCellValueFactory(new PropertyValueFactory<>("id"));
        productStock.setCellValueFactory(new PropertyValueFactory<>("stock"));
        productPrice.setCellValueFactory(new PropertyValueFactory<>("price"));
        productName.setCellValueFactory(new PropertyValueFactory<>("name"));
       //Setting onMousePress event handler for detecting click on table element for guture modify and delete action
        productTable.setOnMousePressed(new EventHandler() {
            @Override
            public void handle(MouseEvent event) {
                // Saving the item selected by user for future action
                productSelected = productTable.getSelectionModel().getSelectedItem();
            }
        });
// Setting all eliments of products method to productTable
        partsTable.getItems().setAll(inHouses);
        partsTable.getItems().setAll(outSourced);
// Setting table collumn controller variables
        partsID.setCellValueFactory(new PropertyValueFactory<>("id"));
        partsStock.setCellValueFactory(new PropertyValueFactory<>("stock"));
        partsPrice.setCellValueFactory(new PropertyValueFactory<>("price"));
        partsName.setCellValueFactory(new PropertyValueFactory<>("name"));
// Setting onMousePress event handler for detecting click on table element for guture modify and delete action
        partsTable.setOnMousePressed(new EventHandler() {
            @Override
            public void handle(MouseEvent event) {
                // Saving the item selected by user for future action
                partSelected = partsTable.getSelectionModel().getSelectedItem();
            }
        });
    }
    /*
    *Method is called when "Add" button on Parts Table is pressed
    */
    @FXML
    void partAddButtonAction(ActionEvent event) {
        // Load "Add Part" interface
        try {
            FXMLLoader loader = new FXMLLoader(getClass().getResource("AddPartInterface.fxml"));
            Parent root = (Parent) loader.load();
            Stage stage = new Stage();
            stage.setTitle("Add Part Window");
            stage.setScene(new Scene(root));
            loader.getController()
                    .setParentController(this);
            AddPartInterfaceController api = loader.getController();
            api.setID(generatePartsID());
            stage.show();
        } catch (IOException ex) {
            Logger.getLogger(IMSFXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    /*
    *Method is called when "Modify" button on parts Table is pressed
    */
    @FXML
    void partsModifyButtonAction(ActionEvent event) {
        // Checking is any parts on table is selected
        if (partSelected != null) {
            try {
                // Loading the modify part window
                FXMLLoader loader = new FXMLLoader(getClass().getResource("AddPartInterface.fxml"));
                Parent root = (Parent) loader.load();
                Stage stage = new Stage();
                stage.setTitle("Modify Part Window");
                stage.setScene(new Scene(root));
                loader.getController()
                        .setParentController(this);
                AddPartInterfaceController api = loader.getController();
                // Sending the selected part object to the modify part class for operation
                if (partSelected instanceof inventorysystems.Outsourced) {
                    api.setData(partSelected, false);
                } else {
                    api.setData(partSelected, true);
                }
                stage.show();
            } catch (IOException ex) {
                Logger.getLogger(IMSFXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else {
            // When no part was selected show alert to avoid exception
            Alert alert = new Alert(AlertType.INFORMATION);
            alert.setTitle("Error!");
            alert.setHeaderText("Please, Select a part to modify");
            alert.setContentText(null);
            alert.showAndWait();
        }
    }
    /*
    *Method is called when "Delete" button on Parts table is pressed
    */
    @FXML
    void deletePartsAction(ActionEvent event) {
        // Checking If the one part is selected and it is not associated with any products 
        if (partSelected != null) {
            if (products.isEmpty() == false) {
                products.forEach(product -> {
                    ObservableList associatedPart = product.getAllAssociatedParts();
                    if (associatedPart.contains(partSelected)) {
                        Alert alert = new Alert(AlertType.CONFIRMATION);
                        alert.setTitle("Error!");
                        alert.setHeaderText("Selected part is associated with Product ID : " + product.getID() + "\nCan't delete the item directly, Please, Go to the modify product section.");
                        alert.setContentText(null);
                        Optional result = alert.showAndWait();
                        if (result.get() == ButtonType.OK) {
                            try {
                                FXMLLoader loader = new FXMLLoader(getClass().getResource("AddProductInterface.fxml")); // Loading the modify product window for modification
                                Parent root = (Parent) loader.load();
                                Stage stage = new Stage();
                                stage.setTitle("Update Product Window");
                                stage.setScene(new Scene(root));
                                loader.getController()
                                        .setParentController(this);
                                AddProductInterfaceController api = loader.getController();
                                api.setPartTable(parts);
                                api.setData(product);
                                stage.show();
                            } catch (IOException ex) {
                                Logger.getLogger(IMSFXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);
                            }
                        }
                    }
                });
            } else {
                Alert alert = new Alert(AlertType.CONFIRMATION);
                alert.setTitle("Causion!");
                alert.setHeaderText("Are you sure you want to delete Part ID : " + partSelected.getId() + "?");
                alert.setContentText(null);
                Optional result = alert.showAndWait();
                if (result.get() == ButtonType.OK) {
                    // Upon conformation remove the selected part from the table
                    partsTable.getItems().remove(partSelected);
                    parts.remove(partSelected);
                }
            }
        } else {
            Alert alert = new Alert(AlertType.WARNING);
            alert.setTitle("Error!");
            alert.setHeaderText("Please, Select at-least one part to perform delete operation!");
            alert.setContentText(null);
            alert.showAndWait();
        }
    }
    /*
    *Method is called when "Add" button on Product table is pressed
    */
    @FXML
    void productAddButtonAction(ActionEvent event) {
        try {
            // Load the AddProductInterface
            FXMLLoader loader1 = new FXMLLoader(getClass().getResource("AddProductInterface.fxml"));
            Parent root1 = (Parent) loader1.load();
            Stage stage1 = new Stage();
            stage1.setTitle("Add Product Window");
            stage1.setScene(new Scene(root1));
            loader1.getController()
                    .setParentController(this);
            AddProductInterfaceController api = loader1.getController();
            api.setData(generateProductsID());
            api.setPartTable(parts);
            stage1.show();
        } catch (IOException ex) {
            Logger.getLogger(IMSFXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    /*
    Method is called when "Modify" button on products table is pressed
    */
    @FXML
    void productModifyButtonAction(ActionEvent event) {
        if (productSelected != null) {
            try {
                // Load the add product interface 
                FXMLLoader loader = new FXMLLoader(getClass().getResource("AddProductInterface.fxml"));
                Parent root = (Parent) loader.load();
                Stage stage = new Stage();
                stage.setTitle("Update Product Window");
                stage.setScene(new Scene(root));
                loader.getController()
                        .setParentController(this);
                AddProductInterfaceController api = loader.getController();
                // Set the selected products data to the add product interface to auto fill all the fields
                api.setPartTable(parts);
                api.setData(productSelected);
                stage.show();
            } catch (IOException ex) {
                Logger.getLogger(IMSFXMLDocumentController.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else {
            Alert alert = new Alert(AlertType.WARNING);
            alert.setTitle("Error!");
            alert.setHeaderText("Please, Select at-least one part to modify!");
            alert.setContentText(null);
            alert.showAndWait();
        }
    }
    /* Generates unique id for each new item */
    int generatePartsID() {
        int a = 1;
        for (Part o : parts) {
            if (o.getId() >= a) {
                a = o.getId() + 1;
            }
        }
        return a;
    }
    /*Generates unique id for each new item */
    int generateProductsID() {
        int a = 1;
        for (Product o : products) {
            if (o.getID() >= a) {
                a = o.getID() + 1;
            }
        }
        return a;
    }
    /*
    *Method is called when "Search" button on Parts table is pressed
    */
    @FXML
    void partsSearchButtonAction(ActionEvent event) {
        FilteredList filteredData = new FilteredList<>(parts, p -> true);
        filteredData.setPredicate(Part -> {
            // If filter text is empty, display all persons.
            if (partsFilterString.getText() == null || partsFilterString.getText().isEmpty()) {
                return true;
            }
            String lowerCaseFilter = partsFilterString.getText().toLowerCase();
            // Filter matches first name and id
            if (Part.getName().toLowerCase().contains(lowerCaseFilter)
                    || Integer.toString(Part.getId()).contains(lowerCaseFilter)) {
                return true;
            }
            return false; // Does not match.
        });
        // Wrap the FilteredList in a SortedList.
        sortedData = new SortedList<>(filteredData);
        // Bind the SortedList comparator to the TableView comparator.
        sortedData.comparatorProperty().bind(partsTable.comparatorProperty());
        // Add sorted (and filtered) data to the table.
        partsTable.setItems(sortedData);
    }
    @FXML
    void exitButton(ActionEvent event) {
        System.exit(0);
    }
    /*
    Method is called when "Delete" button on products table is pressed
    */
    @FXML
    void deleteProductSelected(ActionEvent event) {
        // If any product is selected
        if (productSelected != null) {
            Alert alert = new Alert(AlertType.CONFIRMATION);
            alert.setTitle("Causion!");
            alert.setHeaderText("Are you sure you want to delete Part ID : " + productSelected.getID() + "?");
            String warningText = "Deleting this product will also delete assosciated parts:";
            // Showing all the parts associated with the part deleting in the warning
            for (Part p : productSelected.getAllAssociatedParts()) {
                if (p.getId() == productSelected.getID()) {
                    warningText += "\nProduct ID : " + p.getId();
                }
            }
            alert.setContentText(warningText);
            Optional result = alert.showAndWait();
            if (result.get() == ButtonType.OK) {
                productTable.getItems().remove(productSelected);
                products.remove(productSelected);
                Alert alert1 = new Alert(AlertType.INFORMATION);
                alert1.setTitle("Success!");
                alert1.setHeaderText("Successfully deleted product with all associated parts!");
                alert1.setContentText(null);
                alert1.showAndWait();
            }
        } else {
            // Showing no product selected dialog box
            Alert alert = new Alert(AlertType.WARNING);
            alert.setTitle("Error!");
            alert.setHeaderText("Please, Select at-least one part to perform delete operation!");
            alert.setContentText(null);
            alert.showAndWait();
        }
    }
    /*
    *Method is called when "Search" button on products table is pressed
    */
    @FXML
    void productSearchButtonAction(ActionEvent event) {
        FilteredList filteredData = new FilteredList<>(products, p -> true);
        filteredData.setPredicate(Product -> {
            // If filter text is empty, display all persons.
            if (productFilterString.getText() == null || productFilterString.getText().isEmpty()) {
                return true;
            }
            String lowerCaseFilter = productFilterString.getText().toLowerCase();
            // Filter matches name and id.
            if (Product.getName().toLowerCase().contains(lowerCaseFilter)
                    || Integer.toString(Product.getID()).contains(lowerCaseFilter)) {
                return true;
            }
            return false; // Does not match.
        });
        // Wrap the FilteredList in a SortedList.
        SortedList sortedData1 = new SortedList<>(filteredData);
        // Bind the SortedList comparator to the TableView comparator.
        sortedData1.comparatorProperty().bind(productTable.comparatorProperty());
        // Add sorted (and filtered) data to the table.
        productTable.setItems(sortedData1);
    }
    // initial parts list
    public ObservableList parts() {
        return parts;
    }
    // initial products list
    public ObservableList products() {
        return products;
    }
    /*
     *method receives parameters from add part window
    */
    public void addNewPart(int pID, String pName, int pLevel, double pCost, int pMax, int pMin, String pCompMac, Boolean inHouse, int asID) {
        // adds new parts to arraylist 
        if (inHouse) {
            parts.add(new InHouse(pID, pName, pCost, pLevel, pMin, pMax, Integer.parseInt(pCompMac)));
        } else {
            parts.add(new Outsourced(pID, pName, pCost, pLevel, pMin, pMax, pCompMac));
        }
        partsTable.getItems().clear();
        partsTable.getItems().setAll(parts);
    }
    /*
     method receives parameters from add products window
    */
    public void addNewProduct(int pID, String pName, int pLevel, double pCost, int pMax, int pMin,
            ObservableList associateParts) {
        // adds new products to arraylist 
        products.add(new Product(pID, pName, pLevel, pCost, pMax, pMin, associateParts));
        productTable.getItems().clear();
        productTable.getItems().setAll(products);
    }
    /**
     * Receives parameters from the modify item window
     */
    public void updatePart(int pID, String pName, int pLevel, double pCost, InHouse selectedInhouse,
            Outsourced selectedOutsourced, int pMax, int pMin, String pCompMach, Boolean inHouse, int asID) {
        // setting the modified values
        if (inHouse) {
            selectedInhouse.setId(pID);
            selectedInhouse.setName(pName);
            selectedInhouse.setStock(pLevel);
            selectedInhouse.setPrice(pCost);
            selectedInhouse.setMax(pMax);
            selectedInhouse.setMin(pMin);
            selectedInhouse.setMachineId(Integer.parseInt(pCompMach));
        } else {
            selectedOutsourced.setId(pID);
            selectedOutsourced.setName(pName);
            selectedOutsourced.setStock(pLevel);
            selectedOutsourced.setPrice(pCost);
            selectedOutsourced.setMax(pMax);
            selectedOutsourced.setMin(pMin);
            selectedOutsourced.setCompanyName(pCompMach);
        }
        partsTable.getItems().clear();
        partsTable.getItems().setAll(parts);
    }
    // Receives parameters from the modify item window
    void updateProduct(int pID, String pName, int pLevel, double pCost, Product productSelected,
            int pMax, int pMin, ObservableList associateParts) {
        // setting the modified values
        productSelected.setID(pID);
        productSelected.setName(pName);
        productSelected.setpPrice(pCost);
        productSelected.setStock(pLevel);
        productSelected.settMax(pMax);
        productSelected.setMin(pMin);
        associateParts.forEach(part -> productSelected.associatedPart(part));
        productTable.getItems().clear();
        productTable.getItems().setAll(products);
    }
}
83550Solution/InventorySystems/src/inventorysystems/InHouse.java
83550Solution/InventorySystems/src/inventorysystems/InHouse.java
/*
 * 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 inventorysystems;
/**
 *
 * @author Acer
 */
public class InHouse extends Part {
    private int machineId;
    public InHouse(int id, String name, double price, int stock, int min, int max, int machineId) {
        super(id, name, price, stock, min, max);
        this.machineId = machineId;
    }
    public int getMachineId() {
        return machineId;
    }
    public void setMachineId(int machineId) {
        this.machineId = machineId;
    }
}
83550Solution/InventorySystems/src/inventorysystems/InventorySystems.java
83550Solution/InventorySystems/src/inventorysystems/InventorySystems.java
/*
 * 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 inventorysystems;
import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.collections.ObservableList;
import javafx.collections.transformation.FilteredList;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
/**
 *
 * @author Acer
 */
public class InventorySystems extends Application {
    @Override
    public void start(Stage stage) throws Exception {
        Parent root = FXMLLoader.load(getClass().getResource("IMSFXMLDocument.fxml"));
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.show();
    }
    private ObservableList allParts;
    private ObservableList allProducts;
    public void addPart(Part newPart) {
        allParts.add(newPart);
    }
    public void addProduct(Product newProduct) {
        allProducts.add(newProduct);
    }
    public Part lookupPart(int partId) {
        return allParts.get(partId);
    }
    public Product lookupProduct(int productId) {
        return allProducts.get(productId);
    }
    public ObservableList lookupPart(String partName) {
        FilteredList filteredData = new FilteredList<>(allParts, p -> true);
        filteredData.setPredicate(Part -> {
            String lowerCaseFilter = partName.toLowerCase();
            //boolean isFiltered =false;
            if (Part.getName().toLowerCase().contains(lowerCaseFilter)) {
                return true;
            } else {
                return false;
            }
        });
        return allParts;
    }
    public ObservableList lookupProduct(String productName) {
        FilteredList filteredData = new FilteredList<>(allProducts, p -> true);
        filteredData.setPredicate(Product -> {
            String lowerCaseFilter = productName.toLowerCase();
            //boolean isFiltered =false;
            if (Product.getName().toLowerCase().contains(lowerCaseFilter)) {
                return true;
            } else {
                return false;
            }
        });
        return allProducts;
    }
    public void updatePart(int index, Part selectedPart) {
        allParts.set(index, selectedPart);
    }
    public void updateProduct(int index, Product newProduct) {
        allProducts.set(index, newProduct);
    }
    public boolean deletePart(Part selectedPart) {
        if (allParts.contains(selectedPart)) {
            allParts.remove(selectedPart.getId());
            return true;
        } else {
            return false;
        }
    }
    public boolean deleteProduct(Product selectedProduct) {
        if (allProducts.contains(selectedProduct)) {
            allProducts.remove(selectedProduct.getID());
            return true;
        } else {
            return false;
        }
    }
    public ObservableList getAllParts() {
        return allParts;
    }
    public ObservableList getAllProducts() {
        return allProducts;
    }
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }
}
83550Solution/InventorySystems/src/inventorysystems/Outsourced.java
83550Solution/InventorySystems/src/inventorysystems/Outsourced.java
/*
 * 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 inventorysystems;
/**
 *
 * @author Acer
 */
public class Outsourced extends Part {
    private String companyName;
    public Outsourced(int id, String name, double price, int stock, int min, int max, String companyName) {
        super(id, name, price, stock, min, max);
        this.companyName = companyName;
    }
    public String getCompanyName() {
        return companyName;
    }
    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }
}
83550Solution/InventorySystems/src/inventorysystems/Part.java
83550Solution/InventorySystems/src/inventorysystems/Part.java
/*
 * 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 inventorysystems;
/**
 *
 * @author Acer
 */
public abstract class Part {
    private int id;
    private String name;
    private double price;
    private int stock;
    private int min;
    private int max;
    public Part(int id, String name, double price, int stock, int min, int max) {
        this.id = id;
        this.name = name;
        this.price = price;
        this.stock = stock;
        this.min = min;
        this.max = max;
    }
    /**
     * @return the id
     */
    public int getId() {
        return id;
    }
    /**
     * @param id the id to set
     */
    public void setId(int id) {
        this.id = id;
    }
    /**
     * @return the name
     */
    public String getName() {
        return name;
    }
    /**
     * @param name the name to set
     */
    public void setName(String name) {
        this.name = name;
    }
    /**
     * @return the price
     */
    public double getPrice() {
        return price;
    }
    /**
     * @param price the price to set
     */
    public void setPrice(double price) {
        this.price = price;
    }

    /**
     * @return the stock
     */
    public int getStock() {
        return stock;
    }
    /**
     * @param stock the stock to set
     */
    public void setStock(int stock) {
        this.stock = stock;
    }
    /**
     * @return the min
     */
    public int getMin() {
        return min;
    }
    /**
     * @param min the min to set
     */
    public void setMin(int min) {
        this.min = min;
    }
    /**
     * @return the max
     */
    public int getMax() {
        return max;
    }
    /**
     * @param max the max to set
     */
    public void setMax(int max) {
        this.max = max;
    }

}
83550Solution/InventorySystems/src/inventorysystems/Product.java
83550Solution/InventorySystems/src/inventorysystems/Product.java
/*
 * 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 inventorysystems;
import javafx.collections.ObservableList;
/**
 *
 * @author Acer
 */
public class Product {
    private ObservableList associateParts;
    private int id;
    private String name;
    private int stock;
    private double price;
    private int min;
    private int max;
    public Product(int id, String name, int stock, double price, int max, int min,ObservableList associateParts) {
        this.id = id;
        this.name = name;
        this.stock = stock;
        this.price = price;
        this.max = max;
        this.min = min;
        this.associateParts = associateParts;
    }
    public int getMax() {
        return max;
    }
    public void settMax(int max) {
        this.max = max;
    }
    public int getMin() {
        return min;
    }
    public void setMin(int min) {
        this.min = min;
    }
    public int getID() {
        return id;
    }
    public void setID(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getStock() {
        return stock;
    }
    public void setStock(int stock) {
        this.stock = stock;
    }
    public double getPrice() {
        return price;
    }
    public void setpPrice(double price) {
        this.price = price;
    }
    public void associatedPart(Part part) {
        associateParts.add(part);
    }
    public boolean deleteAssociatedPart(Part selectedPart) {
        associateParts.remove(selectedPart);
        return true;
    }
    public ObservableList getAllAssociatedParts() {
        return associateParts;
    }
}
83550Solution/jfoenix-9.0.8.jar
META-INF/MANIFEST.MF
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Created-By: 9 (Oracle Corporation 9+181)
Tool: Bnd-3.4.0.201707252008
Bnd-LastModified: 1543574153145
Export-Package: com.jfoenix.adapters;version="9.0.8",com.jfoenix.anima
tion;version="9.0.8";uses:="javafx.animation,javafx.scene",com.jfoeni
x.animation.alert;version="9.0.8";uses:="com.jfoenix.transitions,java
fx.animation,javafx.scene",com.jfoenix.assets;version="9.0.8",com.jfo
enix.cache;version="9.0.8";uses:="javafx.scene,javafx.scene.layout",c
om.jfoenix.controls;version="9.0.8";uses:="com.jfoenix.animation.aler
t,com.jfoenix.cache,com.jfoenix.controls.base,com.jfoenix.controls.da
tamodels.treetable,com.jfoenix.controls.events,com.jfoenix.converters
.base,com.jfoenix.transitions,com.jfoenix.validation.base,javafx.anim
ation,javafx.beans,javafx.beans.binding,javafx.beans.property,javafx.
beans.value,javafx.collections,javafx.css,javafx.event,javafx.geometr
y,javafx.scene,javafx.scene.control,javafx.scene.layout,javafx.scene.
paint,javafx.scene.shape,javafx.scene.text,javafx.stage,javafx.util",
com.jfoenix.controls.base;version="9.0.8";uses:="com.jfoenix.validati
on.base,javafx.beans.property,javafx.collections,javafx.css,javafx.sc
ene.paint",com.jfoenix.controls.behavior;version="9.0.8";uses:="com.s
un.javafx.scene.control.behavior,javafx.scene.control",com.jfoenix.co
ntrols.cells.editors;version="9.0.8";uses:="com.jfoenix.controls,com.
jfoenix.controls.cells.editors.base,com.jfoenix.validation.base,javaf
x.beans.value,javafx.event,javafx.scene.input,javafx.scene.layout",co
m.jfoenix.controls.cells.editors.base;version="9.0.8";uses:="javafx.b
eans.property,javafx.beans.value,javafx.event,javafx.scene,javafx.sce
ne.control,javafx.scene.input,javafx.scene.layout",com.jfoenix.contro
ls.datamodels.treetable;version="9.0.8";uses:="javafx.beans.property,
javafx.collections,javafx.scene.control",com.jfoenix.controls.events;
version="9.0.8";uses:="javafx.event",com.jfoenix.converters;version="
9.0.8";uses:="com.jfoenix.controls,javafx.css,javafx.scene.text",com.
jfoenix.converters.base;version="9.0.8";uses:="javafx.scene",com.jfoe
nix.effects;version="9.0.8";uses:="javafx.scene,javafx.scene.effect",
com.jfoenix.responsive;version="9.0.8";uses:="javafx.css,javafx.stage
",com.jfoenix.skins;version="9.0.8";uses:="com.jfoenix.controls,com.j
foenix.controls.base,com.jfoenix.controls.behavior,javafx.animation,j
avafx.beans.binding,javafx.beans.property,javafx.beans.value,javafx.c
ss,javafx.event,javafx.scene,javafx.scene.control,javafx.scene.contro
l.skin,javafx.scene.layout,javafx.scene.paint,javafx.scene.shape,java
fx.scene.text,javafx.scene.transform,javafx.stage,javafx.util",com.jf
oenix.svg;version="9.0.8";uses:="javafx.beans,javafx.beans.property,j
avafx.css,javafx.scene.layout,javafx.scene.paint",com.jfoenix.transit
ions;version="9.0.8";uses:="javafx.animation,javafx.beans.property,ja
vafx.beans.value,javafx.scene,javafx.scene.layout,javafx.scene.paint,
javafx.util",com.jfoenix.transitions.hamburger;version="9.0.8";uses:=
"com.jfoenix.controls,com.jfoenix.transitions,javafx.animation",com.j
foenix.transitions.template;version="9.0.8";uses:="com.jfoenix.transi
tions,javafx.animation,javafx.beans.value,javafx.event,javafx.scene,j
avafx.util",com.jfoenix.utils;version="9.0.8";uses:="javafx.beans,jav
afx.beans.property,javafx.beans.value,javafx.event,javafx.scene,javaf
x.scene.input,javafx.scene.layout,javafx.scene.paint,javafx.util",com
.jfoenix.validation;version="9.0.8";uses:="com.jfoenix.validation.bas
e,javafx.beans,javafx.beans.property,javafx.collections,javafx.scene.
control,javafx.scene.layout,javafx.util.converter",com.jfoenix.valida
tion.base;version="9.0.8";uses:="javafx.beans.property,javafx.css,jav
afx.scene"
Import-Package: com.jfoenix.adapters;version="[9.0,10)",com.jfoenix.an
imation.alert;version="[9.0,10)",com.jfoenix.assets;version="[9.0,10)
",com.jfoenix.cache;version="[9.0,10)",com.jfoenix.controls;version="
[9.0,10)",com.jfoenix.controls.base;version="[9.0,10)",com.jfoenix.co
ntrols.behavior;version="[9.0,10)",com.jfoenix.controls.cells.editors
;version="[9.0,10)",com.jfoenix.controls.cells.editors.base;version="
[9.0,10)",com.jfoenix.controls.datamodels.treetable;version="[9.0,10)
",com.jfoenix.controls.events;version="[9.0,10)",com.jfoenix.converte
rs;version="[9.0,10)",com.jfoenix.converters.base;version="[9.0,10)",
com.jfoenix.effects;version="[9.0,10)",com.jfoenix.skins;version="[9.
0,10)",com.jfoenix.svg;version="[9.0,10)",com.jfoenix.transitions;ver
sion="[9.0,10)",com.jfoenix.transitions.hamburger;version="[9.0,10)",
com.jfoenix.utils;version="[9.0,10)",com.jfoenix.validation;version="
[9.0,10)",com.jfoenix.validation.base;version="[9.0,10)",com.sun.java
fx.binding,com.sun.javafx.event,com.sun.javafx.geom,com.sun.javafx.sc
ene,com.sun.javafx.scene.control,com.sun.javafx.scene.control.behavio
r,com.sun.javafx.scene.control.inputmap,com.sun.javafx.scene.text,com
.sun.javafx.scene.traversal,com.sun.javafx.stage,com.sun.javafx.util,
javafx.animation,javafx.application,javafx.beans,javafx.beans.binding
,javafx.beans.property,javafx.beans.value,javafx.collections,javafx.c
ollections.transformation,javafx.css,javafx.css.converter,javafx.even
t,javafx.geometry,javafx.scene,javafx.scene.control,javafx.scene.cont
rol.skin,javafx.scene.effect,javafx.scene.image,javafx.scene.input,ja
vafx.scene.layout,javafx.scene.paint,javafx.scene.shape,javafx.scene.
text,javafx.scene.transform,javafx.stage,javafx.util,javafx.util.conv
erter,javax.xml.parsers,org.w3c.dom,org.xml.sax,sun.misc
Require-Capability: osgi.ee;filter:="(&(osgi.ee=JavaSE)(version=9.0))"
Implementation-Title: jfoenix
Bundle-RequiredExecutionEnvironment: JavaSE-1.9
Build-Revision: 87ea257a202aff86fbc8609b3be171484f04d7c7
Bundle-Description: JavaFX Material Design Library
Specification-Title: jfoenix
Specification-Version: 9.0.8
Bundle-Name: JFoenix
Bundle-Version: 9.0.8
Implementation-Version: 9.0.8
Build-Date: 2018-11-30
Built-By: sshahine
Build-Time: 12:35:50.398+0200
Automatic-Module-Name: com.jfoenix
Bundle-SymbolicName: com.jfoenix
com/jfoenix/adapters/ReflectionHelper.class
package com.jfoenix.adapters;
public synchronized class ReflectionHelper {
private static sun.misc.Unsafe unsafe;
private static long objectFieldOffset;
public void ReflectionHelper();
private static void setAccessible(reflect.AccessibleObject);
public static Object invoke(Class, Object, String);
public static Object invoke(Object, String);
public static reflect.Method getMethod(Class, String);
public static reflect.Field getField(Class, String);
public static Object getFieldContent(Object, String);
public static Object getFieldContent(Class, Object, String);
public static void setFieldContent(Class, Object, String, Object);
static void ();
}
com/jfoenix/animation/alert/CenterTransition.class
package com.jfoenix.animation.alert;
public synchronized class CenterTransition extends com.jfoenix.transitions.CachedTransition {
public void CenterTransition(javafx.scene.Node, javafx.scene.Node);
}
com/jfoenix/animation/alert/HorizontalTransition.class
package com.jfoenix.animation.alert;
synchronized class HorizontalTransition extends com.jfoenix.transitions.CachedTransition {
public void HorizontalTransition(boolean, javafx.scene.Node, javafx.scene.Node);
}
com/jfoenix/animation/alert/JFXAlertAnimation$1.class
package com.jfoenix.animation.alert;
synchronized class JFXAlertAnimation$1 implements JFXAlertAnimation {
void JFXAlertAnimation$1();
public void initAnimation(javafx.scene.Node, javafx.scene.Node);
public javafx.animation.Animation createShowingAnimation(javafx.scene.Node, javafx.scene.Node);
public javafx.animation.Animation createHidingAnimation(javafx.scene.Node, javafx.scene.Node);
}
com/jfoenix/animation/alert/JFXAlertAnimation$2.class
package com.jfoenix.animation.alert;
synchronized class JFXAlertAnimation$2 implements JFXAlertAnimation {
void JFXAlertAnimation$2();
public void initAnimation(javafx.scene.Node, javafx.scene.Node);
public javafx.animation.Animation createShowingAnimation(javafx.scene.Node, javafx.scene.Node);
public javafx.animation.Animation createHidingAnimation(javafx.scene.Node, javafx.scene.Node);
}
com/jfoenix/animation/alert/JFXAlertAnimation$3.class
package com.jfoenix.animation.alert;
synchronized class JFXAlertAnimation$3 implements JFXAlertAnimation {
void JFXAlertAnimation$3();
public void initAnimation(javafx.scene.Node, javafx.scene.Node);
public javafx.animation.Animation createShowingAnimation(javafx.scene.Node, javafx.scene.Node);
public javafx.animation.Animation createHidingAnimation(javafx.scene.Node, javafx.scene.Node);
}
com/jfoenix/animation/alert/JFXAlertAnimation$4.class
package com.jfoenix.animation.alert;
synchronized class JFXAlertAnimation$4 implements JFXAlertAnimation {
void JFXAlertAnimation$4();
public void initAnimation(javafx.scene.Node, javafx.scene.Node);
public javafx.animation.Animation createShowingAnimation(javafx.scene.Node, javafx.scene.Node);
public javafx.animation.Animation createHidingAnimation(javafx.scene.Node, javafx.scene.Node);
}
com/jfoenix/animation/alert/JFXAlertAnimation$5.class
package com.jfoenix.animation.alert;
synchronized class JFXAlertAnimation$5 implements JFXAlertAnimation {
void JFXAlertAnimation$5();
public void initAnimation(javafx.scene.Node, javafx.scene.Node);
public javafx.animation.Animation createShowingAnimation(javafx.scene.Node, javafx.scene.Node);
public javafx.animation.Animation createHidingAnimation(javafx.scene.Node, javafx.scene.Node);
}
com/jfoenix/animation/alert/JFXAlertAnimation$6.class
package com.jfoenix.animation.alert;
synchronized class JFXAlertAnimation$6 implements JFXAlertAnimation {
void JFXAlertAnimation$6();
public void initAnimation(javafx.scene.Node, javafx.scene.Node);
public javafx.animation.Animation createShowingAnimation(javafx.scene.Node, javafx.scene.Node);
public javafx.animation.Animation createHidingAnimation(javafx.scene.Node, javafx.scene.Node);
}
com/jfoenix/animation/alert/JFXAlertAnimation.class
package com.jfoenix.animation.alert;
public abstract interface JFXAlertAnimation {
public static final java.util.function.Function inverseAnimation;
public static final JFXAlertAnimation LEFT_ANIMATION;
public static final JFXAlertAnimation RIGHT_ANIMATION;
public static final JFXAlertAnimation TOP_ANIMATION;
public static final JFXAlertAnimation BOTTOM_ANIMATION;
public static final JFXAlertAnimation CENTER_ANIMATION;
public static final JFXAlertAnimation NO_ANIMATION;
public abstract void initAnimation(javafx.scene.Node, javafx.scene.Node);
public abstract javafx.animation.Animation createShowingAnimation(javafx.scene.Node, javafx.scene.Node);
public abstract javafx.animation.Animation createHidingAnimation(javafx.scene.Node, javafx.scene.Node);
static void ();
}
com/jfoenix/animation/alert/VerticalTransition.class
package com.jfoenix.animation.alert;
public synchronized class VerticalTransition extends com.jfoenix.transitions.CachedTransition {
public void VerticalTransition(boolean, javafx.scene.Node, javafx.scene.Node);
}
com/jfoenix/animation/JFXNodesAnimation.class
package com.jfoenix.animation;
public abstract synchronized class JFXNodesAnimation {
protected javafx.scene.Node fromNode;
protected javafx.scene.Node toNode;
public void JFXNodesAnimation(javafx.scene.Node, javafx.scene.Node);
public void animate();
public abstract javafx.animation.Animation animateExit();
public abstract javafx.animation.Animation animateSharedNodes();
public abstract javafx.animation.Animation animateEntrance();
public abstract void init();
public abstract void end();
}
com/jfoenix/assets/JFoenixResources.class
package com.jfoenix.assets;
public final synchronized class JFoenixResources {
public static java.net.URL load(String);
private void JFoenixResources();
}
com/jfoenix/cache/CachePolicy$1.class
package com.jfoenix.cache;
synchronized class CachePolicy$1 implements CachePolicy {
private java.util.WeakHashMap cache;
void CachePolicy$1();
public void cache(javafx.scene.Node);
public void restore(javafx.scene.Node);
}
com/jfoenix/cache/CachePolicy$2.class
package com.jfoenix.cache;
synchronized class CachePolicy$2 implements CachePolicy {
void CachePolicy$2();
public void cache(javafx.scene.Node);
public void restore(javafx.scene.Node);
}
com/jfoenix/cache/CachePolicy$3.class
package com.jfoenix.cache;
synchronized class CachePolicy$3 implements CachePolicy {
private java.util.WeakHashMap cache;
void CachePolicy$3();
public void cache(javafx.scene.layout.Pane);
public void restore(javafx.scene.layout.Pane);
}
com/jfoenix/cache/CachePolicy.class
package com.jfoenix.cache;
public abstract interface CachePolicy {
public static final CachePolicy CACHE;
public static final CachePolicy NONE;
public static final CachePolicy IMAGE;
public abstract void cache(javafx.scene.Node);
public abstract void restore(javafx.scene.Node);
static void ();
}
com/jfoenix/controls/base/IFXLabelFloatControl.class
package com.jfoenix.controls.base;
public abstract interface IFXLabelFloatControl extends IFXValidatableControl, IFXStaticControl {
public abstract javafx.css.StyleableBooleanProperty labelFloatProperty();
public abstract boolean isLabelFloat();
public abstract void setLabelFloat(boolean);
public abstract javafx.scene.paint.Paint getUnFocusColor();
public abstract javafx.css.StyleableObjectProperty unFocusColorProperty();
public abstract void setUnFocusColor(javafx.scene.paint.Paint);
public abstract javafx.scene.paint.Paint getFocusColor();
public abstract javafx.css.StyleableObjectProperty focusColorProperty();
public abstract void setFocusColor(javafx.scene.paint.Paint);
}
com/jfoenix/controls/base/IFXStaticControl.class
package com.jfoenix.controls.base;
public abstract interface IFXStaticControl {
public abstract javafx.css.StyleableBooleanProperty disableAnimationProperty();
public abstract Boolean isDisableAnimation();
public abstract void setDisableAnimation(Boolean);
}
com/jfoenix/controls/base/IFXValidatableControl.class
package com.jfoenix.controls.base;
public abstract interface IFXValidatableControl {
public abstract com.jfoenix.validation.base.ValidatorBase getActiveValidator();
public abstract javafx.beans.property.ReadOnlyObjectProperty activeValidatorProperty();
public abstract javafx.collections.ObservableList getValidators();
public abstract transient void setValidators(com.jfoenix.validation.base.ValidatorBase[]);
public abstract boolean validate();
public abstract void resetValidation();
}
com/jfoenix/controls/behavior/JFXGenericPickerBehavior.class
package com.jfoenix.controls.behavior;
public synchronized class JFXGenericPickerBehavior extends com.sun.javafx.scene.control.behavior.ComboBoxBaseBehavior {
public void JFXGenericPickerBehavior(javafx.scene.control.ComboBoxBase);
public void onAutoHide(javafx.scene.control.PopupControl);
}
com/jfoenix/controls/cells/editors/base/EditorNodeBuilder.class
package com.jfoenix.controls.cells.editors.base;
public abstract interface EditorNodeBuilder {
public abstract void startEdit();
public abstract void cancelEdit();
public abstract void updateItem(Object, boolean);
public abstract javafx.scene.layout.Region createNode(Object, javafx.event.EventHandler, javafx.beans.value.ChangeListener);
public abstract void setValue(Object);
public abstract Object getValue();
public abstract void validateValue() throws Exception;
}
com/jfoenix/controls/cells/editors/base/GenericEditableTreeTableCell.class
package com.jfoenix.controls.cells.editors.base;
public synchronized class GenericEditableTreeTableCell extends JFXTreeTableCell {
protected EditorNodeBuilder builder;
protected javafx.scene.layout.Region editorNode;
private java.util.function.BiFunction stepFunction;
public void GenericEditableTreeTableCell(EditorNodeBuilder);
public void GenericEditableTreeTableCell();
protected void commitHelper(boolean);
protected Object getValue();
public void startEdit();
public void cancelEdit();
private boolean checkGroupedColumn();
public void updateItem(Object, boolean);
private void createEditorNode();
public java.util.function.BiFunction getStepFunction();
public void setStepFunction(java.util.function.BiFunction);
private void editNext(boolean);
private java.util.List getLeaves(javafx.scene.control.TreeTableColumn);
}
com/jfoenix/controls/cells/editors/base/JFXTreeTableCell.class
package com.jfoenix.controls.cells.editors.base;
public synchronized class JFXTreeTableCell extends javafx.scene.control.TreeTableCell {
private javafx.beans.property.ObjectProperty disclosureNode;
public void JFXTreeTableCell();
public final void setDisclosureNode(javafx.scene.Node);
public final javafx.scene.Node getDisclosureNode();
public final javafx.beans.property.ObjectProperty disclosureNodeProperty();
protected javafx.scene.control.Skin createDefaultSkin();
}
com/jfoenix/controls/cells/editors/DoubleTextFieldEditorBuilder.class
package com.jfoenix.controls.cells.editors;
public synchronized class DoubleTextFieldEditorBuilder extends TextFieldEditorBase {
public transient void DoubleTextFieldEditorBuilder(com.jfoenix.validation.base.ValidatorBase[]);
public Double getValue();
}
com/jfoenix/controls/cells/editors/IntegerTextFieldEditorBuilder.class
package com.jfoenix.controls.cells.editors;
public synchronized class IntegerTextFieldEditorBuilder extends TextFieldEditorBase {
public transient void IntegerTextFieldEditorBuilder(com.jfoenix.validation.base.ValidatorBase[]);
public Integer getValue();
}
com/jfoenix/controls/cells/editors/TextFieldEditorBase.class
package com.jfoenix.controls.cells.editors;
public abstract synchronized class TextFieldEditorBase implements base.EditorNodeBuilder {
protected com.jfoenix.controls.JFXTextField textField;
protected final com.jfoenix.validation.base.ValidatorBase[] validators;
public transient void TextFieldEditorBase(com.jfoenix.validation.base.ValidatorBase[]);
public void startEdit();
public void cancelEdit();
public void updateItem(Object, boolean);
public javafx.scene.layout.Region createNode(Object, javafx.event.EventHandler, javafx.beans.value.ChangeListener);
public void setValue(Object);
public void validateValue() throws Exception;
}
com/jfoenix/controls/cells/editors/TextFieldEditorBuilder.class
package com.jfoenix.controls.cells.editors;
public synchronized class TextFieldEditorBuilder extends TextFieldEditorBase {
public void TextFieldEditorBuilder();
public String getValue();
}
com/jfoenix/controls/datamodels/treetable/RecursiveTreeObject.class
package com.jfoenix.controls.datamodels.treetable;
public synchronized class RecursiveTreeObject {
javafx.collections.ObservableList children;
javafx.beans.property.ObjectProperty groupedColumn;
javafx.beans.property.ObjectProperty groupedValue;
public void RecursiveTreeObject();
public javafx.collections.ObservableList getChildren();
public void setChildren(javafx.collections.ObservableList);
public final javafx.beans.property.ObjectProperty groupedColumnProperty();
public final javafx.scene.control.TreeTableColumn getGroupedColumn();
public final void setGroupedColumn(javafx.scene.control.TreeTableColumn);
public final javafx.beans.property.ObjectProperty groupedValueProperty();
public final Object getGroupedValue();
public final void setGroupedValue(Object);
}
com/jfoenix/controls/events/JFXAutoCompleteEvent.class
package com.jfoenix.controls.events;
public synchronized class JFXAutoCompleteEvent extends javafx.event.Event {
private Object object;
public static final javafx.event.EventType SELECTION;
public void JFXAutoCompleteEvent(javafx.event.EventType, Object);
public Object getObject();
static void ();
}
com/jfoenix/controls/events/JFXDialogEvent.class
package com.jfoenix.controls.events;
public synchronized class JFXDialogEvent extends javafx.event.Event {
private static final long serialVersionUID = 1;
public static final javafx.event.EventType CLOSED;
public static final javafx.event.EventType OPENED;
public void JFXDialogEvent(javafx.event.EventType);
static void ();
}
com/jfoenix/controls/events/JFXDrawerEvent.class
package com.jfoenix.controls.events;
public synchronized class JFXDrawerEvent extends javafx.event.Event {
private static final long serialVersionUID = 1;
public static final javafx.event.EventType CLOSED;
public static final javafx.event.EventType OPENED;
public static final javafx.event.EventType OPENING;
public static final javafx.event.EventType CLOSING;
public void JFXDrawerEvent(javafx.event.EventType);
static void ();
}
com/jfoenix/controls/FakeFocusJFXTextField$1.class
package com.jfoenix.controls;
synchronized class FakeFocusJFXTextField$1 {
static void ();
}
com/jfoenix/controls/FakeFocusJFXTextField.class
package com.jfoenix.controls;
final synchronized class FakeFocusJFXTextField extends JFXTextField {
void FakeFocusJFXTextField();
public void requestFocus();
public void setFakeFocus(boolean);
public transient Object queryAccessibleAttribute(javafx.scene.AccessibleAttribute, Object[]);
public javafx.beans.property.ReadOnlyObjectWrapper activeValidatorWritableProperty();
}
com/jfoenix/controls/JFXAlert$1.class
package com.jfoenix.controls;
synchronized class JFXAlert$1 extends javafx.scene.control.DialogPane {
private boolean performingLayout;
void JFXAlert$1(JFXAlert);
protected double computePrefHeight(double);
protected double computePrefWidth(double);
public void requestLayout();
protected void layoutChildren();
public String getUserAgentStylesheet();
protected javafx.scene.Node createButtonBar();
}
com/jfoenix/controls/JFXAlert.class
package com.jfoenix.controls;
public synchronized class JFXAlert extends javafx.scene.control.Dialog {
private final javafx.scene.layout.StackPane contentContainer;
private javafx.beans.InvalidationListener widthListener;
private javafx.beans.InvalidationListener heightListener;
private javafx.beans.InvalidationListener xListener;
private javafx.beans.InvalidationListener yListener;
private boolean animateClosing;
private javafx.animation.Animation transition;
private final com.sun.javafx.event.EventHandlerManager eventHandlerManager;
private javafx.beans.property.BooleanProperty overlayClose;
private javafx.beans.property.ObjectProperty animation;
private javafx.beans.property.BooleanProperty hideOnEscape;
public void JFXAlert();
public void JFXAlert(javafx.stage.Stage);
private com.jfoenix.animation.alert.JFXAlertAnimation getCurrentAnimation();
private void removeLayoutListeners();
private void addLayoutListeners();
private void updateLayout();
private void updateHeight();
private void updateWidth();
private void updateY();
private void updateX();
public void hideWithAnimation();
public javafx.event.EventDispatchChain buildEventDispatchChain(javafx.event.EventDispatchChain);
public transient void setContent(javafx.scene.Node[]);
public boolean isOverlayClose();
public javafx.beans.property.BooleanProperty overlayCloseProperty();
public void setOverlayClose(boolean);
public com.jfoenix.animation.alert.JFXAlertAnimation getAnimation();
public javafx.beans.property.ObjectProperty animationProperty();
public void setAnimation(com.jfoenix.animation.alert.JFXAlertAnimation);
public void setSize(double, double);
public final void setHideOnEscape(boolean);
public final boolean isHideOnEscape();
public final javafx.beans.property.BooleanProperty hideOnEscapeProperty();
}
com/jfoenix/controls/JFXAutoCompletePopup$CSSBridge.class
package com.jfoenix.controls;
final synchronized class JFXAutoCompletePopup$CSSBridge extends javafx.scene.control.PopupControl$CSSBridge {
private JFXAutoCompletePopup popup;
void JFXAutoCompletePopup$CSSBridge(JFXAutoCompletePopup);
}
com/jfoenix/controls/JFXAutoCompletePopup$StyleableProperties$1.class
package com.jfoenix.controls;
synchronized class JFXAutoCompletePopup$StyleableProperties$1 extends javafx.css.CssMetaData {
void JFXAutoCompletePopup$StyleableProperties$1(String, javafx.css.StyleConverter, Number);
public Double getInitialValue(JFXAutoCompletePopup$CSSBridge);
public boolean isSettable(JFXAutoCompletePopup$CSSBridge);
public javafx.css.StyleableProperty getStyleableProperty(JFXAutoCompletePopup$CSSBridge);
}
com/jfoenix/controls/JFXAutoCompletePopup$StyleableProperties$2.class
package com.jfoenix.controls;
synchronized class JFXAutoCompletePopup$StyleableProperties$2 extends javafx.css.CssMetaData {
void JFXAutoCompletePopup$StyleableProperties$2(String, javafx.css.StyleConverter, Number);
public Number getInitialValue(JFXAutoCompletePopup$CSSBridge);
public boolean isSettable(JFXAutoCompletePopup$CSSBridge);
public javafx.css.StyleableProperty getStyleableProperty(JFXAutoCompletePopup$CSSBridge);
}
com/jfoenix/controls/JFXAutoCompletePopup$StyleableProperties.class
package com.jfoenix.controls;
synchronized class JFXAutoCompletePopup$StyleableProperties {
private static final javafx.css.CssMetaData FIXED_CELL_SIZE;
private static final javafx.css.CssMetaData CELL_LIMIT;
private static final java.util.List STYLEABLES;
private void JFXAutoCompletePopup$StyleableProperties();
static void ();
}
com/jfoenix/controls/JFXAutoCompletePopup.class
package com.jfoenix.controls;
public synchronized class JFXAutoCompletePopup extends javafx.scene.control.PopupControl {
private final javafx.collections.ObservableList suggestions;
private final javafx.beans.property.ObjectProperty selectionHandler;
private final javafx.collections.transformation.FilteredList filteredData;
private final javafx.beans.property.ObjectProperty suggestionsCellFactory;
private static final String DEFAULT_STYLE_CLASS = jfx-autocomplete-popup;
private javafx.beans.property.IntegerProperty cellLimit;
private javafx.beans.property.DoubleProperty fixedCellSize;
public void JFXAutoCompletePopup();
protected javafx.scene.control.Skin createDefaultSkin();
public void show(javafx.scene.Node);
public javafx.collections.ObservableList getSuggestions();
public void filter(java.util.function.Predicate);
public javafx.collections.ObservableList getFilteredSuggestions();
public javafx.event.EventHandler getSelectionHandler();
public void setSelectionHandler(javafx.event.EventHandler);
public final javafx.beans.property.ObjectProperty suggestionsCellFactoryProperty();
public final javafx.util.Callback getSuggestionsCellFactory();
public final void setSuggestionsCellFactory(javafx.util.Callback);
public final void setCellLimit(int);
public final int getCellLimit();
public final javafx.beans.property.IntegerProperty cellLimitProperty();
public final void setFixedCellSize(double);
public final double getFixedCellSize();
public final javafx.beans.property.DoubleProperty fixedCellSizeProperty();
public static java.util.List getClassCssMetaData();
public java.util.List getCssMetaData();
}
com/jfoenix/controls/JFXBadge.class
package com.jfoenix.controls;
public synchronized class JFXBadge extends javafx.scene.layout.StackPane {
private javafx.scene.Group badge;
protected javafx.scene.Node control;
private boolean enabled;
private static final String DEFAULT_STYLE_CLASS = jfx-badge;
protected javafx.beans.property.ObjectProperty position;
private javafx.beans.property.SimpleStringProperty text;
public void JFXBadge();
public void JFXBadge(javafx.scene.Node);
public void JFXBadge(javafx.scene.Node, javafx.geometry.Pos);
public void setControl(javafx.scene.Node);
public javafx.scene.Node getControl();
public void setEnabled(boolean);
public void refreshBadge();
private void initialize();
public javafx.geometry.Pos getPosition();
public javafx.beans.property.ObjectProperty positionProperty();
public void setPosition(javafx.geometry.Pos);
public final String getText();
public final void setText(String);
public final javafx.beans.property.StringProperty textProperty();
}
com/jfoenix/controls/JFXButton$ButtonType.class
package com.jfoenix.controls;
public final synchronized enum JFXButton$ButtonType {
public static final JFXButton$ButtonType FLAT;
public static final JFXButton$ButtonType RAISED;
public static JFXButton$ButtonType[] values();
public static JFXButton$ButtonType valueOf(String);
private void JFXButton$ButtonType(String, int);
static void ();
}
com/jfoenix/controls/JFXButton$StyleableProperties$1.class
package com.jfoenix.controls;
synchronized class JFXButton$StyleableProperties$1 extends javafx.css.CssMetaData {
void JFXButton$StyleableProperties$1(String, javafx.css.StyleConverter, JFXButton$ButtonType);
public boolean isSettable(JFXButton);
public javafx.css.StyleableProperty getStyleableProperty(JFXButton);
}
com/jfoenix/controls/JFXButton$StyleableProperties$2.class
package com.jfoenix.controls;
synchronized class JFXButton$StyleableProperties$2 extends javafx.css.CssMetaData {
void JFXButton$StyleableProperties$2(String, javafx.css.StyleConverter, Boolean);
public boolean isSettable(JFXButton);
public javafx.css.StyleableBooleanProperty getStyleableProperty(JFXButton);
}
com/jfoenix/controls/JFXButton$StyleableProperties.class
package com.jfoenix.controls;
synchronized class JFXButton$StyleableProperties {
private static final javafx.css.CssMetaData BUTTON_TYPE;
private static final javafx.css.CssMetaData DISABLE_VISUAL_FOCUS;
private static final java.util.List CHILD_STYLEABLES;
private void JFXButton$StyleableProperties();
static void ();
}
com/jfoenix/controls/JFXButton.class
package com.jfoenix.controls;
public synchronized class JFXButton extends javafx.scene.control.Button {
private javafx.beans.property.ObjectProperty ripplerFill;
private static final String DEFAULT_STYLE_CLASS = jfx-button;
private static final String USER_AGENT_STYLESHEET;
private javafx.css.StyleableObjectProperty buttonType;
private javafx.css.StyleableBooleanProperty disableVisualFocus;
private java.util.List STYLEABLES;
public void JFXButton();
public void JFXButton(String);
public void JFXButton(String, javafx.scene.Node);
private void initialize();
protected javafx.scene.control.Skin createDefaultSkin();
public String getUserAgentStylesheet();
public final javafx.beans.property.ObjectProperty ripplerFillProperty();
public final javafx.scene.paint.Paint getRipplerFill();
public final void setRipplerFill(javafx.scene.paint.Paint);
public JFXButton$ButtonType getButtonType();
public javafx.css.StyleableObjectProperty buttonTypeProperty();
public void setButtonType(JFXButton$ButtonType);
public final javafx.css.StyleableBooleanProperty disableVisualFocusProperty();
public final Boolean isDisableVisualFocus();
public final void setDisableVisualFocus(Boolean);
public java.util.List getControlCssMetaData();
public static java.util.List getClassCssMetaData();
static void ();
}
com/jfoenix/controls/JFXCheckBox$StyleableProperties$1.class
package com.jfoenix.controls;
synchronized class JFXCheckBox$StyleableProperties$1 extends javafx.css.CssMetaData {
void JFXCheckBox$StyleableProperties$1(String, javafx.css.StyleConverter, javafx.scene.paint.Paint);
public boolean isSettable(JFXCheckBox);
public javafx.css.StyleableProperty getStyleableProperty(JFXCheckBox);
}
com/jfoenix/controls/JFXCheckBox$StyleableProperties$2.class
package com.jfoenix.controls;
synchronized class JFXCheckBox$StyleableProperties$2 extends javafx.css.CssMetaData {
void JFXCheckBox$StyleableProperties$2(String, javafx.css.StyleConverter, javafx.scene.paint.Paint);
public boolean isSettable(JFXCheckBox);
public javafx.css.StyleableProperty getStyleableProperty(JFXCheckBox);
}
com/jfoenix/controls/JFXCheckBox$StyleableProperties$3.class
package com.jfoenix.controls;
synchronized class JFXCheckBox$StyleableProperties$3 extends javafx.css.CssMetaData {
void JFXCheckBox$StyleableProperties$3(String, javafx.css.StyleConverter, Boolean);
public boolean isSettable(JFXCheckBox);
public javafx.css.StyleableBooleanProperty getStyleableProperty(JFXCheckBox);
}
com/jfoenix/controls/JFXCheckBox$StyleableProperties.class
package com.jfoenix.controls;
synchronized class JFXCheckBox$StyleableProperties {
private static final javafx.css.CssMetaData CHECKED_COLOR;
private static final javafx.css.CssMetaData UNCHECKED_COLOR;
private static final javafx.css.CssMetaData DISABLE_VISUAL_FOCUS;
private static final java.util.List CHILD_STYLEABLES;
private void JFXCheckBox$StyleableProperties();
static void ();
}
com/jfoenix/controls/JFXCheckBox.class
package com.jfoenix.controls;
public synchronized class JFXCheckBox extends javafx.scene.control.CheckBox {
private static final String DEFAULT_STYLE_CLASS = jfx-check-box;
private static final String USER_AGENT_STYLESHEET;
private javafx.css.StyleableObjectProperty checkedColor;
private javafx.css.StyleableObjectProperty unCheckedColor;
private javafx.css.StyleableBooleanProperty disableVisualFocus;
public void JFXCheckBox(String);
public void JFXCheckBox();
private void initialize();
protected javafx.scene.control.Skin createDefaultSkin();
public String getUserAgentStylesheet();
public javafx.scene.paint.Paint getCheckedColor();
public javafx.css.StyleableObjectProperty checkedColorProperty();
public void setCheckedColor(javafx.scene.paint.Paint);
public javafx.scene.paint.Paint getUnCheckedColor();
public javafx.css.StyleableObjectProperty unCheckedColorProperty();
public void setUnCheckedColor(javafx.scene.paint.Paint);
public final javafx.css.StyleableBooleanProperty disableVisualFocusProperty();
public final Boolean isDisableVisualFocus();
public final void setDisableVisualFocus(Boolean);
public java.util.List getControlCssMetaData();
public static java.util.List getClassCssMetaData();
static void ();
}
com/jfoenix/controls/JFXChip.class
package com.jfoenix.controls;
public synchronized class JFXChip extends javafx.scene.layout.Region {
protected final JFXChipView view;
private javafx.beans.property.ObjectProperty item;
public void JFXChip(JFXChipView, Object);
public final javafx.beans.property.ObjectProperty itemProperty();
public final void setItem(Object);
public final Object getItem();
public final JFXChipView getChipView();
}
com/jfoenix/controls/JFXChipView$1.class
package com.jfoenix.controls;
synchronized class JFXChipView$1 extends javafx.util.StringConverter {
void JFXChipView$1();
public String toString(Object);
public Object fromString(String);
}
com/jfoenix/controls/JFXChipView.class
package com.jfoenix.controls;
public synchronized class JFXChipView extends javafx.scene.control.Control {
private static final String DEFAULT_STYLE_CLASS = jfx-chip-view;
private javafx.beans.property.ObjectProperty chipFactory;
private javafx.beans.property.ObjectProperty selectionHandler;
private JFXAutoCompletePopup autoCompletePopup;
private javafx.beans.property.ObjectProperty predicate;
private javafx.collections.ObservableList chips;
private javafx.beans.property.ObjectProperty converter;
private static javafx.util.StringConverter defaultStringConverter();
public void JFXChipView();
public String getUserAgentStylesheet();
protected javafx.scene.control.Skin createDefaultSkin();
public java.util.function.BiFunction getChipFactory();
public javafx.beans.property.ObjectProperty chipFactoryProperty();
public void setChipFactory(java.util.function.BiFunction);
public java.util.function.Function getSelectionHandler();
public javafx.beans.property.ObjectProperty selectionHandlerProperty();
public void setSelectionHandler(java.util.function.Function);
public JFXAutoCompletePopup getAutoCompletePopup();
public javafx.collections.ObservableList getSuggestions();
public void setSuggestionsCellFactory(javafx.util.Callback);
public java.util.function.BiPredicate getPredicate();
public javafx.beans.property.ObjectProperty predicateProperty();
public void setPredicate(java.util.function.BiPredicate);
public javafx.collections.ObservableList getChips();
public javafx.beans.property.ObjectProperty converterProperty();
public final void setConverter(javafx.util.StringConverter);
public final javafx.util.StringConverter getConverter();
}
com/jfoenix/controls/JFXClippedPane.class
package com.jfoenix.controls;
public synchronized class JFXClippedPane extends javafx.scene.layout.StackPane {
private javafx.scene.layout.Region clip;
public void JFXClippedPane();
public transient void JFXClippedPane(javafx.scene.Node[]);
private void init();
protected void layoutChildren();
}
com/jfoenix/controls/JFXColorPicker.class
package com.jfoenix.controls;
public synchronized class JFXColorPicker extends javafx.scene.control.ColorPicker {
private static final String DEFAULT_STYLE_CLASS = jfx-color-picker;
public void JFXColorPicker();
public void JFXColorPicker(javafx.scene.paint.Color);
protected javafx.scene.control.Skin createDefaultSkin();
public String getUserAgentStylesheet();
private void initialize();
}
com/jfoenix/controls/JFXComboBox$1.class
package com.jfoenix.controls;
synchronized class JFXComboBox$1 extends JFXListCell {
void JFXComboBox$1(JFXComboBox);
public void updateItem(Object, boolean);
}
com/jfoenix/controls/JFXComboBox$2.class
package com.jfoenix.controls;
synchronized class JFXComboBox$2 extends javafx.scene.control.ListCell {
void JFXComboBox$2(JFXComboBox);
protected void updateItem(Object, boolean);
}
com/jfoenix/controls/JFXComboBox$3.class
package com.jfoenix.controls;
synchronized class JFXComboBox$3 extends com.jfoenix.converters.base.NodeConverter {
void JFXComboBox$3();
public javafx.scene.Node toNode(Object);
public Object fromNode(javafx.scene.Node);
public String toString(Object);
}
com/jfoenix/controls/JFXComboBox$StyleableProperties$1.class
package com.jfoenix.controls;
synchronized class JFXComboBox$StyleableProperties$1 extends javafx.css.CssMetaData {
void JFXComboBox$StyleableProperties$1(String, javafx.css.StyleConverter, javafx.scene.paint.Paint);
public boolean isSettable(JFXComboBox);
public javafx.css.StyleableProperty getStyleableProperty(JFXComboBox);
}
com/jfoenix/controls/JFXComboBox$StyleableProperties$2.class
package com.jfoenix.controls;
synchronized class JFXComboBox$StyleableProperties$2 extends javafx.css.CssMetaData {
void JFXComboBox$StyleableProperties$2(String, javafx.css.StyleConverter, javafx.scene.paint.Paint);
public boolean isSettable(JFXComboBox);
public javafx.css.StyleableProperty getStyleableProperty(JFXComboBox);
}
com/jfoenix/controls/JFXComboBox$StyleableProperties$3.class
package com.jfoenix.controls;
synchronized class JFXComboBox$StyleableProperties$3 extends javafx.css.CssMetaData {
void JFXComboBox$StyleableProperties$3(String, javafx.css.StyleConverter, Boolean);
public boolean isSettable(JFXComboBox);
public javafx.css.StyleableBooleanProperty getStyleableProperty(JFXComboBox);
}
com/jfoenix/controls/JFXComboBox$StyleableProperties$4.class
package com.jfoenix.controls;
synchronized class JFXComboBox$StyleableProperties$4 extends javafx.css.CssMetaData {
void JFXComboBox$StyleableProperties$4(String, javafx.css.StyleConverter, Boolean);
public boolean isSettable(JFXComboBox);
public javafx.css.StyleableBooleanProperty getStyleableProperty(JFXComboBox);
}
com/jfoenix/controls/JFXComboBox$StyleableProperties.class
package com.jfoenix.controls;
synchronized class JFXComboBox$StyleableProperties {
private static final javafx.css.CssMetaData UNFOCUS_COLOR;
private static final javafx.css.CssMetaData FOCUS_COLOR;
private static final javafx.css.CssMetaData LABEL_FLOAT;
private static final javafx.css.CssMetaData DISABLE_ANIMATION;
private static final java.util.List CHILD_STYLEABLES;
private void JFXComboBox$StyleableProperties();
static void ();
}
com/jfoenix/controls/JFXComboBox.class
package com.jfoenix.controls;
public synchronized class JFXComboBox extends javafx.scene.control.ComboBox implements base.IFXLabelFloatControl {
private static final String DEFAULT_STYLE_CLASS = jfx-combo-box;
private javafx.beans.property.ObjectProperty nodeConverter;
private ValidationControl validationControl;
private javafx.css.StyleableBooleanProperty labelFloat;
private javafx.css.StyleableObjectProperty unFocusColor;
private javafx.css.StyleableObjectProperty focusColor;
private javafx.css.StyleableBooleanProperty disableAnimation;
private java.util.List STYLEABLES;
public void JFXComboBox();
public void JFXComboBox(javafx.collections.ObservableList);
private void initialize();
public String...
SOLUTION.PDF

Answer To This Question Is Available To Download

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here