diff --git a/controlsfx-samples/src/main/java/org/controlsfx/samples/tableview/HelloTableFilter.java b/controlsfx-samples/src/main/java/org/controlsfx/samples/tableview/HelloTableFilter.java new file mode 100644 index 000000000..551e14dbc --- /dev/null +++ b/controlsfx-samples/src/main/java/org/controlsfx/samples/tableview/HelloTableFilter.java @@ -0,0 +1,124 @@ +/** + * Copyright (c) 2016, 2019 ControlsFX + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * * Neither the name of ControlsFX, any associated website, nor the + * names of its contributors may be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL CONTROLSFX BE LIABLE FOR ANY + * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +package org.controlsfx.samples.tableview; + +import javafx.beans.property.SimpleStringProperty; +import javafx.scene.Node; +import javafx.scene.control.*; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.stage.Stage; +import org.controlsfx.ControlsFXSample; +import org.controlsfx.control.table.TableFilter; + +public class HelloTableFilter extends ControlsFXSample { + @Override + public String getSampleName() { + return "TableFilter"; + } + + @Override + @SuppressWarnings("unchecked") + public Node getPanel(Stage stage) { + TableView tableView = new TableView(); + + TableColumn firstNameCol = new TableColumn<>("First Name"); + firstNameCol.setCellValueFactory(new PropertyValueFactory<>("firstName")); + + TableColumn lastNameCol = new TableColumn<>("Last Name"); + lastNameCol.setCellValueFactory(new PropertyValueFactory<>("lastName")); + + TableColumn emailCol = new TableColumn<>("Email"); + emailCol.setCellValueFactory(new PropertyValueFactory<>("email")); + + tableView.getColumns().addAll(firstNameCol, lastNameCol, emailCol); + + tableView.getItems().add(new Person("Jacob", "Smith", "jacob.smith@example.com")); + tableView.getItems().add(new Person("Isabella", "Johnson", "isabella.johnson@example.com")); + tableView.getItems().add(new Person("Ethan", "Williams", "ethan.williams@example.com")); + tableView.getItems().add(new Person("Emma", "Jones", "emma.jones@example.com")); + tableView.getItems().add(new Person("Michael", "Brown", "michael.brown@example.com")); + tableView.getItems().add(new Person("Isabella", "Smith", "isabella.smith@example.com")); + + // apply filter + TableFilter.forTableView(tableView).apply(); + + return tableView; + } + + @Override + public String getJavaDocURL() { + return "org/controlsfx/control/table/TableFilter.html"; + } + + @Override + public String getSampleDescription() { + return "Applies a filtering control to a provided TableView instance. " + + "The filter will be applied immediately on construction, " + + "and can be made visible by right-clicking the desired column to filter on."; + } + + public static void main(String[] args) { + launch(args); + } + + public static class Person { + + private final SimpleStringProperty firstName; + private final SimpleStringProperty lastName; + private final SimpleStringProperty email; + + public Person(String firstName, String lastName, String email) { + this.firstName = new SimpleStringProperty(firstName); + this.lastName = new SimpleStringProperty(lastName); + this.email = new SimpleStringProperty(email); + } + + public String getFirstName() { + return firstName.get(); + } + + public void setFirstName(String firstName) { + this.firstName.set(firstName); + } + + public String getLastName() { + return lastName.get(); + } + + public void setLastName(String lastName) { + this.lastName.set(lastName); + } + + public String getEmail() { + return email.get(); + } + + public void setEmail(String fName) { + email.set(fName); + } + } +} diff --git a/controlsfx/src/main/java/org/controlsfx/control/table/FilterPanel.java b/controlsfx/src/main/java/org/controlsfx/control/table/FilterPanel.java index 9031df10d..c46419737 100644 --- a/controlsfx/src/main/java/org/controlsfx/control/table/FilterPanel.java +++ b/controlsfx/src/main/java/org/controlsfx/control/table/FilterPanel.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2015, 2016, ControlsFX + * Copyright (c) 2015, 2019, ControlsFX * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -69,7 +69,7 @@ public final class FilterPanel extends VBox { // This collection will reference column header listeners. References must be kept locally because weak listeners are registered private final Collection columnHeadersChangeListeners = new ArrayList(); - private static final Image filterIcon = new Image("/impl/org/controlsfx/table/filter.png"); + private static final Image filterIcon = new Image(FilterPanel.class.getResource("/impl/org/controlsfx/table/filter.png").toExternalForm()); private static final Supplier filterImageView = () -> { ImageView imageView = new ImageView(filterIcon); diff --git a/controlsfx/src/main/java/org/controlsfx/control/table/TableFilter.java b/controlsfx/src/main/java/org/controlsfx/control/table/TableFilter.java index db14147e8..a474b5b40 100644 --- a/controlsfx/src/main/java/org/controlsfx/control/table/TableFilter.java +++ b/controlsfx/src/main/java/org/controlsfx/control/table/TableFilter.java @@ -1,5 +1,5 @@ /** - * Copyright (c) 2015, ControlsFX + * Copyright (c) 2015, 2019, ControlsFX * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -78,7 +78,7 @@ private TableFilter(TableView tableView, boolean isLazy) { tableView.setItems(sortedControlList); applyForAllColumns(); - tableView.getStylesheets().add("/impl/org/controlsfx/table/tablefilter.css"); + tableView.getStylesheets().add(TableFilter.class.getResource("/impl/org/controlsfx/table/tablefilter.css").toExternalForm()); if (!isLazy) { columnFilters.forEach(ColumnFilter::initialize);