public DashboardFilterProperty[] getAllPropertiesForCurrentFilter() {
    List results = new ArrayList();
    try {
      // Static properties.
      DashboardFilterProperty[] staticProps = getStaticPropertiesForCurrentFilter();
      if (staticProps != null) results.addAll(Arrays.asList(staticProps));

      // Dynamic properties.
      Iterator it = getDashboard().getDataProviders().iterator();
      while (it.hasNext()) {
        DataProvider dataProvider = (DataProvider) it.next();
        DataProperty[] allProperties = dataProvider.getDataSet().getProperties();
        for (int i = 0; i < allProperties.length; i++) {
          DataProperty property = allProperties[i];
          DashboardFilterProperty prop =
              getDashboardFilterPropertyForCurrentFilter(
                  dataProvider.getCode(), property.getPropertyId());
          if (prop == null)
            prop =
                new DashboardFilterProperty(
                    dataProvider.getCode(), property.getPropertyId(), getFilter(), null, false);
          results.add(prop);
        }
      }
    } catch (Exception e) {
      log.error("Cannot get data provider results.", e);
    }
    return (DashboardFilterProperty[]) results.toArray(new DashboardFilterProperty[results.size()]);
  }
 public CommandResponse actionApplyLink(CommandRequest request) throws Exception {
   AbstractChartDisplayer abstractChartDisplayer = (AbstractChartDisplayer) getDataDisplayer();
   DataProperty property = abstractChartDisplayer.getDomainProperty();
   Integer series = Integer.decode(request.getRequestObject().getParameter(PARAM_NSERIE));
   DataSet dataSet = abstractChartDisplayer.buildXYDataSet();
   Interval interval = (Interval) dataSet.getValueAt(series, 0);
   Dashboard dashboard = DashboardHandler.lookup().getCurrentDashboard();
   if (dashboard.filter(property.getPropertyId(), interval, FilterByCriteria.ALLOW_ANY)) {
     return new ShowCurrentScreenResponse();
   }
   return null;
 }