/** {@inheritDoc} */ @Override public CellUpdater basicGetUpdater() { CellUpdater updater = null; DColumn dColumn = getColumn(); if (dColumn != null) { ColumnMapping originMapping = dColumn.getOriginMapping(); if (originMapping instanceof CellUpdater) { updater = (CellUpdater) originMapping; } } IntersectionMapping intersectMapping = getIntersectionMapping(); if (intersectMapping != null) { updater = intersectMapping; } return updater; }
// CHECKSTYLE:OFF @SuppressWarnings("unchecked") private void analyseNotification(Notification notification) { Object notifier = notification.getNotifier(); if (notifier instanceof DTable) { if (notification.getFeature() == TablePackage.Literals.DTABLE__HEADER_COLUMN_WIDTH) { updateHeaderColumnWidth = true; } else if (notification.getFeature() == TablePackage.Literals.DTABLE__COLUMNS) { // The position is incremented by one cause of the header column if (notification.getEventType() == Notification.ADD) { if (notification.getNewValue() instanceof DColumn) { dColumnsToAdd.put((DColumn) notification.getNewValue(), notification.getPosition() + 1); } } else if (notification.getEventType() == Notification.MOVE) { if (notification.getNewValue() instanceof DColumn) { DColumn newValue = (DColumn) notification.getNewValue(); int newPosition = notification.getPosition() + 1; dColumnsToAdd.put(newValue, newPosition); dColumnsToRemove.add(newValue); } } else if (notification.getEventType() == Notification.REMOVE) { if (notification.getOldValue() instanceof DColumn) { dColumnsToRemove.add((DColumn) notification.getOldValue()); } } else if (notification.getEventType() == Notification.REMOVE_MANY && notification.getOldValue() instanceof EList) { for (final EObject oldValue : (EList<EObject>) notification.getOldValue()) { if (oldValue instanceof DTargetColumn) { dColumnsToRemove.add((DColumn) oldValue); } } } } else if (notification.getFeature() == ViewpointPackage.Literals.DSEMANTIC_DECORATOR__TARGET || notification.getFeature() == TablePackage.Literals.LINE_CONTAINER__LINES) { toRefreshInViewerWithUpdateLabels.add(notifier); } } else if (notifier instanceof DLine) { DLine dLine = (DLine) notifier; if (notification.getFeature() == TablePackage.Literals.DLINE__LABEL || notification.getFeature() == TablePackage.Literals.DLINE__CELLS || notification.getFeature() == TablePackage.Literals.DLINE__CURRENT_STYLE) { toUpdateInViewer.add(notifier); } else if (notification.getFeature() == TablePackage.Literals.DLINE__ORDERED_CELLS) { toRefreshInViewerWithUpdateLabels.add(notifier); } else if (notification.getFeature() == TablePackage.Literals.LINE_CONTAINER__LINES) { toRefreshInViewerWithUpdateLabels.add(notifier); // By default created DLine is expand of default value of // DLine.collapsed is false if (!dLine.isCollapsed()) { toExpands.add(dLine); analyseExpansionStateOfCreatedChildren(dLine.getLines()); } } else if (notification.getFeature() == TablePackage.Literals.DLINE__VISIBLE) { launchGlobalRefreshWithoutUpdateLabels = true; } else if (notification.getFeature() == TablePackage.Literals.DLINE__COLLAPSED) { analyseExpansion(dLine); } } else if (notifier instanceof DColumn) { DColumn dColumn = (DColumn) notifier; if (notification.getFeature() == TablePackage.Literals.DCOLUMN__ORDERED_CELLS) { launchGlobalRefreshWithUpdateLabels = true; } else if (notification.getFeature() == TablePackage.Literals.DCOLUMN__LABEL) { dColumnsToUpdateDirectly.add(dColumn); } else if (notification.getFeature() == TablePackage.Literals.DCOLUMN__VISIBLE) { dColumnsToVisibilityChanged.put(dColumn, dColumn.isVisible()); } else if (notification.getFeature() == TablePackage.Literals.DCOLUMN__WIDTH) { dColumnsWidthToUpdate.add(dColumn); } } else if (notification.getFeature() == TablePackage.Literals.DCELL__LABEL || notification.getFeature() == TablePackage.Literals.DCELL__CURRENT_STYLE && notifier instanceof DCell) { DCell dCell = (DCell) notifier; DLine dLine = dCell.getLine(); if (dLine != null) { toUpdateInViewer.add(dLine); } } else if (isDTableElementStyleAttributeChange(notification)) { DTableElementStyle dTableElementStyle = (DTableElementStyle) notifier; EObject eContainer = dTableElementStyle.eContainer(); if (eContainer instanceof DCell) { DCell dCell = (DCell) eContainer; DLine dLine = dCell.getLine(); toUpdateInViewer.add(dLine); } else if (eContainer instanceof DLine) { toUpdateInViewer.add(eContainer); } else if (eContainer instanceof DColumn) { DColumn dColumn = (DColumn) eContainer; toRefreshInViewerWithUpdateLabels.add(dColumn.getTable()); } } else if (notification.getNotifier() instanceof DCellStyle && isRGBValuesChange(notification)) { DCellStyle dCellStyle = (DCellStyle) notification.getNotifier(); EObject dCellStyleContainer = dCellStyle.eContainer(); if (dCellStyleContainer instanceof DCell) { DCell dCell = (DCell) dCellStyleContainer; DLine dLine = dCell.getLine(); if (dLine != null) { toUpdateInViewer.add(dLine); } } } }