+ /**
+ * Callback for the show filter action
+ *
+ * @since 2.0
+ */
+ public void showFilterDialog() {
+ if(fTopInput != null) {
+ List<? extends ITimeGraphEntry> allElements = listAllInputs(fTopInput);
+ fFilterDialog.setInput(fTopInput.toArray(new ITimeGraphEntry[0]));
+ fFilterDialog.setTitle(Messages.TmfTimeFilterDialog_WINDOW_TITLE);
+ fFilterDialog.setMessage(Messages.TmfTimeFilterDialog_MESSAGE);
+ fFilterDialog.setExpandedElements(allElements.toArray());
+ if (fFilter.getFiltered() != null) {
+ ArrayList<? extends ITimeGraphEntry> nonFilteredElements = new ArrayList<ITimeGraphEntry>(allElements);
+ nonFilteredElements.removeAll(fFilter.getFiltered());
+ fFilterDialog.setInitialElementSelections(nonFilteredElements);
+ } else {
+ fFilterDialog.setInitialElementSelections(allElements);
+ }
+ fFilterDialog.create();
+ fFilterDialog.open();
+ // Process selected elements
+ if (fFilterDialog.getResult() != null) {
+ fInhibitTreeSelection = true;
+ if (fFilterDialog.getResult().length != allElements.size()) {
+ ArrayList<Object> filteredElements = new ArrayList<Object>(allElements);
+ filteredElements.removeAll(Arrays.asList(fFilterDialog.getResult()));
+ fFilter.setFiltered(filteredElements);
+ } else {
+ fFilter.setFiltered(null);
+ }
+ fTreeViewer.refresh();
+ fTreeViewer.expandAll();
+ fTimeGraphViewer.refresh();
+ fInhibitTreeSelection = false;
+ // Reset selection to first entry
+ if (fFilterDialog.getResult().length > 0) {
+ setSelection((ITimeGraphEntry) fFilterDialog.getResult()[0]);
+ }
+ }
+ }
+ }
+
+ /**
+ * Get the show filter action.
+ *
+ * @return The Action object
+ * @since 2.0
+ */
+ public Action getShowFilterAction() {
+ if (showFilterAction == null) {
+ // showFilter
+ showFilterAction = new Action() {
+ @Override
+ public void run() {
+ showFilterDialog();
+ }
+ };
+ showFilterAction.setText(Messages.TmfTimeGraphCombo_FilterActionNameText);
+ showFilterAction.setToolTipText(Messages.TmfTimeGraphCombo_FilterActionToolTipText);
+ // TODO find a nice, distinctive icon
+ showFilterAction.setImageDescriptor(Activator.getDefault().getImageDescripterFromPath(ITmfImageConstants.IMG_UI_FILTERS));
+ }
+
+ return showFilterAction;
+ }
+