@Override public void expressionsInserted(IExpression[] expressions, int index){ int count = getElementsCount(); ModelDelta delta = new ModelDelta(getExpressionManager(), -1, IModelDelta.NO_CHANGE, count); for (int i = 0; i < expressions.length; i++) { IExpression expression = expressions[i]; delta.addNode(expression, index+i, IModelDelta.ADDED | IModelDelta.INSTALL, -1); } fireModelChanged(delta); }
@Override public void installed(Viewer viewer) { updateExpressions(getExpressionManager().getExpressions(), IModelDelta.INSTALL); }
private int getElementsCount() { // Account for the "Add new expression" element only if columns are // displayed. return getExpressionManager().getExpressions().length + (getPresentationContext().getColumns() != null ? 1 : 0); }
private void updateExpressions(IExpression[] expressions, int flags) { ModelDelta delta = new ModelDelta(getExpressionManager(), IModelDelta.NO_CHANGE); for (int i = 0; i < expressions.length; i++) { IExpression expression = expressions[i]; delta.addNode(expression, flags); } fireModelChanged(delta); }
@Override public void expressionsRemoved(IExpression[] expressions) { updateExpressions(expressions, IModelDelta.REMOVED | IModelDelta.UNINSTALL); }
@Override public void init(IPresentationContext context) { super.init(context); getExpressionManager().addExpressionListener(this); context.addPropertyChangeListener(this); }
@Override public synchronized void dispose() { getPresentationContext().removePropertyChangeListener(this); super.dispose(); getExpressionManager().removeExpressionListener(this); }
@Override public void propertyChange(PropertyChangeEvent event) { // If columns are turned on/off, refresh the view to account for the // "Add new expression" element. if (IPresentationContext.PROPERTY_COLUMNS.equals(event.getProperty())) { fireModelChanged(new ModelDelta(getExpressionManager(), IModelDelta.CONTENT)); } }
@Override public void expressionsChanged(IExpression[] expressions) { updateExpressions(expressions, IModelDelta.CONTENT | IModelDelta.STATE); }
@Override public void expressionsAdded(IExpression[] expressions) { int index = getExpressionManager().getExpressions().length - expressions.length; int count = getElementsCount(); ModelDelta delta = new ModelDelta(getExpressionManager(), -1, IModelDelta.NO_CHANGE, count); for (int i = 0; i < expressions.length; i++) { IExpression expression = expressions[i]; delta.addNode(expression, index+i, IModelDelta.ADDED | IModelDelta.INSTALL, -1); } fireModelChanged(delta); }
@Override public void expressionsMoved(IExpression[] expressions, int index){ int count = getElementsCount(); ModelDelta delta = new ModelDelta(getExpressionManager(), -1, IModelDelta.NO_CHANGE, count); for (int i = 0; i < expressions.length; i++) { IExpression expression = expressions[i]; delta.addNode(expression, IModelDelta.REMOVED); } for (int i = 0; i < expressions.length; i++) { IExpression expression = expressions[i]; delta.addNode(expression, index+i, IModelDelta.ADDED, -1); } fireModelChanged(delta); }