}
// Build the list of submissions.
final List activations = new ArrayList();
Expression expression;
IContextActivation dialogWindowActivation;
switch (type) {
case IContextService.TYPE_DIALOG:
expression = new ActiveShellExpression(shell);
dialogWindowActivation = new ContextActivation(
IContextService.CONTEXT_ID_DIALOG_AND_WINDOW, expression,
contextService);
activateContext(dialogWindowActivation);
activations.add(dialogWindowActivation);
final IContextActivation dialogActivation = new ContextActivation(
IContextService.CONTEXT_ID_DIALOG, expression,
contextService);
activateContext(dialogActivation);
activations.add(dialogActivation);
break;
case IContextService.TYPE_NONE:
break;
case IContextService.TYPE_WINDOW:
expression = new ActiveShellExpression(shell);
dialogWindowActivation = new ContextActivation(
IContextService.CONTEXT_ID_DIALOG_AND_WINDOW, expression,
contextService);
activateContext(dialogWindowActivation);
activations.add(dialogWindowActivation);
final IContextActivation windowActivation = new ContextActivation(
IContextService.CONTEXT_ID_WINDOW, expression,
contextService);
activateContext(windowActivation);
activations.add(windowActivation);
break;
default:
throw new IllegalArgumentException("The type is not recognized: " //$NON-NLS-1$
+ type);
}
// Check to see if the activations are already present.
boolean returnValue = false;
final Collection previousActivations = (Collection) registeredWindows
.get(shell);
if (previousActivations != null) {
returnValue = true;
final Iterator previousActivationItr = previousActivations
.iterator();
while (previousActivationItr.hasNext()) {
final IContextActivation activation = (IContextActivation) previousActivationItr
.next();
deactivateContext(activation);
}
}