public MeasureInfo copy() {
   MeasureInfo retValue = new MeasureInfo();
   retValue.setShow(isShow());
   retValue.setMeasureName(getMeasureName());
   retValue.setMeasureDisplayName(getMeasureDisplayName());
   retValue.setExpectedView(expectedView);
   return retValue;
 }
 public boolean equals(Object obj) {
   if (!(obj instanceof MeasureInfo)) {
     return false;
   }
   MeasureInfo temp = (MeasureInfo) obj;
   return temp.getMeasureName().equals(measureName)
       && temp.isShow() == isShow
       && temp.getExpectedView() == expectedView;
 }
 private void checkOKButtonStatus() {
   int count = 0;
   int listSize = input.size();
   for (int i = 0; i < listSize; i++) {
     MeasureInfo measureInfo = (MeasureInfo) input.get(i);
     if (measureInfo.isShow()) {
       count++;
     }
   }
   if (count <= 0 && getOkButton() != null) {
     getOkButton().setEnabled(false);
   } else if (getOkButton() != null) {
     getOkButton().setEnabled(true);
   }
 }
    public String getColumnText(Object element, int columnIndex) {
      if (element instanceof MeasureInfo) {
        if (columnIndex == 0) {
          return ((MeasureInfo) element).getMeasureDisplayName() == null
              ? "" //$NON-NLS-1$
              : ((MeasureInfo) element).getMeasureDisplayName();
        } else {
          initializeItems((MeasureInfo) element);
          ((ComboBoxCellEditor) cellEditor[1]).setItems(comboItems);

          String expectedView = ((MeasureInfo) element).getExpectedView();
          if (expectedView == null) {
            return comboItems[0];
          } else {
            int index = Arrays.asList(viewNames).indexOf(expectedView);
            if (index < 0) {
              index = 0;
              ((MeasureInfo) element).setExpectedView(viewNames[index]);
            }
            return comboItems[index];
          }
        }
      }

      return ""; //$NON-NLS-1$
    }
        public boolean canModify(Object element, String property) {
          // TODO Auto-generated method stub
          if (element instanceof Item) {
            element = ((Item) element).getData();
          }
          MeasureInfo info = (MeasureInfo) element;
          MeasureViewHandle measureView = crosstab.getMeasure(info.getMeasureName());
          if (measureView == null
              || measureView instanceof ComputedMeasureViewHandle
              || (measureView.getCubeMeasure() != null
                  && measureView.getCubeMeasure().isCalculated())) {
            return false;
          }

          if (Arrays.asList(columnNames).indexOf(property) == 1) {
            return summaryFieldViewer.getChecked(element);
          } else {
            return false;
          }
        }
  private AggregationCellHandle getAggregationCell(MeasureInfo measureInfo) {
    AggregationCellHandle cell = null;
    // MeasureHandle measure = measureInfo.getMeasure( );
    // if(measure == null)
    // {
    // return cell;
    // }
    MeasureViewHandle measureView = crosstab.getMeasure(measureInfo.getMeasureName());
    if (measureView == null) {
      return cell;
    }

    cell = measureView.getCell();
    return cell;
  }
  private void initializeItems(MeasureInfo measureInfo) {
    List<String> viewNameList = new ArrayList<String>();
    List<String> itemList = new ArrayList<String>();

    MeasureViewHandle measureView = crosstab.getMeasure(measureInfo.getMeasureName());
    if (measureView != null && measureView instanceof ComputedMeasureViewHandle) {
      itemList.add("");
      viewNameList.add(""); // $NON-NLS-1$
    } else
    // NOT ComputedMeasureViewHandle -- begin --
    {
      AggregationCellHandle cell = getAggregationCell(measureInfo);
      if (cell != null && cellProviderWrapper.getMatchProvider(cell) == null) {
        itemList.add("");
        viewNameList.add(""); // $NON-NLS-1$
      }

      IAggregationCellViewProvider providers[] = cellProviderWrapper.getAllProviders();
      for (int i = 0; i < providers.length; i++) {
        IAggregationCellViewProvider tmp = (IAggregationCellViewProvider) providers[i];
        if (tmp == null) {
          continue;
        }
        SwitchCellInfo info = new SwitchCellInfo(crosstab, SwitchCellInfo.MEASURE);
        info.setMeasureInfo(measureInfo);

        if (!providers[i].canSwitch(info)) {
          continue;
        }

        String displayName = tmp.getViewDisplayName();
        viewNameList.add(tmp.getViewName());
        itemList.add(
            Messages.getString(
                "GrandTotalProvider.ShowAs", //$NON-NLS-1$
                new String[] {displayName}));
      }
    } // NOT ComputedMeasureViewHandle -- end --
    comboItems = (String[]) itemList.toArray(new String[itemList.size()]);
    viewNames = (String[]) viewNameList.toArray(new String[viewNameList.size()]);
  }
        public void modify(Object element, String property, Object value) {
          // TODO Auto-generated method stub

          if (element instanceof Item) {
            element = ((Item) element).getData();
          }

          int index = Arrays.asList(columnNames).indexOf(property);
          switch (index) {
            case 0:
              break;
            case 1:
              int sel = ((Integer) value).intValue();
              if (sel < 0) {
                ((MeasureInfo) (element)).setExpectedView(""); // $NON-NLS-1$
              } else {
                ((MeasureInfo) element).setExpectedView(viewNames[sel]);
              }
              break;
            default:
          }
          summaryFieldViewer.refresh();
        }