Filter Data"
From Documentation
Line 17: | Line 17: | ||
− | <source lang='java'> | + | <source lang='java' high='12,13, 18,20,26,28,34,36,43,44'> |
public class AutoFilterComposer extends SelectorComposer<Component> { | public class AutoFilterComposer extends SelectorComposer<Component> { | ||
Line 29: | Line 29: | ||
public void toggle() { | public void toggle() { | ||
Range selection = Ranges.range(ss.getSelectedSheet(), ss.getSelection()); | Range selection = Ranges.range(ss.getSelectedSheet(), ss.getSelection()); | ||
− | Range | + | Range filteringRange = selection.findAutoFilterRange(); |
− | if(!selection.isAutoFilterEnabled() && | + | if(!selection.isAutoFilterEnabled() && filteringRange == null) { |
Messagebox.show("nothing to filter"); | Messagebox.show("nothing to filter"); | ||
return; | return; | ||
Line 36: | Line 36: | ||
selection.enableAutoFilter(!selection.isAutoFilterEnabled()); | selection.enableAutoFilter(!selection.isAutoFilterEnabled()); | ||
+ | |||
+ | // SheetOperationUtil.toggleAutoFilter(selection); | ||
} | } | ||
@Listen("onClick = button[label='Clear Filter']") | @Listen("onClick = button[label='Clear Filter']") | ||
public void clear() { | public void clear() { | ||
− | Range | + | Range sheetRange = Ranges.range(ss.getSelectedSheet()); |
− | + | sheetRange.resetAutoFilter(); | |
+ | |||
+ | // SheetOperationUtil.resetAutoFilter(selection); | ||
} | } | ||
@Listen("onClick = button[label='Reapply Filter']") | @Listen("onClick = button[label='Reapply Filter']") | ||
public void reapply() { | public void reapply() { | ||
− | Range | + | Range sheetRange = Ranges.range(ss.getSelectedSheet()); |
− | + | sheetRange.applyAutoFilter(); | |
+ | |||
+ | // SheetOperationUtil.applyAutoFilter(selection); | ||
} | } | ||
@Listen("onClick = button[label='Apply']") | @Listen("onClick = button[label='Apply']") | ||
public void apply() { | public void apply() { | ||
− | Range | + | Range sheetRange = Ranges.range(ss.getSelectedSheet()); |
− | if ( | + | if (sheetRange.isAutoFilterEnabled()){ |
String[] criteria = {typeBox.getValue()}; | String[] criteria = {typeBox.getValue()}; | ||
− | + | sheetRange.enableAutoFilter(1, AutoFilterOperation.VALUES, criteria, null, | |
+ | true); | ||
} | } | ||
} | } | ||
} | } | ||
</source> | </source> |
Revision as of 06:58, 8 October 2013
Filter is a useful feature, when you want to focus on a subset of data. It can get rid of those data you don't want. Spreadsheet can allow you to enable / disable filter and apply / reset criteria via API.
We'll use a simple application to demonstrate filter API. The screenshot is below:
In this application, we can toggle, clear, and reapply filter and filter by type column.
public class AutoFilterComposer extends SelectorComposer<Component> {
@Wire
private Spreadsheet ss;
@Wire
private Combobox typeBox;
@Listen("onClick = button[label='Toogle Filter']")
public void toggle() {
Range selection = Ranges.range(ss.getSelectedSheet(), ss.getSelection());
Range filteringRange = selection.findAutoFilterRange();
if(!selection.isAutoFilterEnabled() && filteringRange == null) {
Messagebox.show("nothing to filter");
return;
}
selection.enableAutoFilter(!selection.isAutoFilterEnabled());
// SheetOperationUtil.toggleAutoFilter(selection);
}
@Listen("onClick = button[label='Clear Filter']")
public void clear() {
Range sheetRange = Ranges.range(ss.getSelectedSheet());
sheetRange.resetAutoFilter();
// SheetOperationUtil.resetAutoFilter(selection);
}
@Listen("onClick = button[label='Reapply Filter']")
public void reapply() {
Range sheetRange = Ranges.range(ss.getSelectedSheet());
sheetRange.applyAutoFilter();
// SheetOperationUtil.applyAutoFilter(selection);
}
@Listen("onClick = button[label='Apply']")
public void apply() {
Range sheetRange = Ranges.range(ss.getSelectedSheet());
if (sheetRange.isAutoFilterEnabled()){
String[] criteria = {typeBox.getValue()};
sheetRange.enableAutoFilter(1, AutoFilterOperation.VALUES, criteria, null,
true);
}
}
}