blob: 26ef9cadc833679d7df208518aabe05b53c98124 [file] [log] [blame]
/*
* Copyright (c) 2013, 2015 Eike Stepper (Berlin, Germany) and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Christian W. Damus (CEA LIST) - initial API and implementation
*/
package org.eclipse.net4j.signal.confirmation;
import org.eclipse.net4j.util.confirmation.Confirmation;
import org.eclipse.net4j.util.io.ExtendedDataInput;
import org.eclipse.net4j.util.io.ExtendedDataOutput;
import java.io.IOException;
import java.util.Collection;
import java.util.EnumSet;
import java.util.Set;
/**
* @author Christian W. Damus (CEA LIST)
*
* @since 4.3
*/
public class ConfirmationPrompt
{
private final String subject;
private final String message;
private final Set<Confirmation> acceptableResponses;
private final Confirmation suggestedResponse;
public ConfirmationPrompt(String subject, String message, Confirmation suggestedResponse,
Confirmation acceptableResponse, Confirmation... more)
{
this(subject, message, suggestedResponse, EnumSet.of(acceptableResponse, more));
}
public ConfirmationPrompt(String subject, String message, Confirmation suggestedResponse,
Collection<Confirmation> acceptableResponses)
{
this.subject = subject;
this.message = message;
this.acceptableResponses = EnumSet.copyOf(acceptableResponses);
this.suggestedResponse = suggestedResponse;
}
public String getSubject()
{
return subject;
}
public String getMessage()
{
return message;
}
public Set<Confirmation> getAcceptableResponses()
{
return acceptableResponses;
}
public Confirmation getSuggestedResponse()
{
return suggestedResponse;
}
public void write(ExtendedDataOutput out) throws IOException
{
out.writeString(subject);
out.writeString(message);
out.writeEnum(suggestedResponse);
out.writeInt(acceptableResponses.size());
for (Confirmation acceptable : acceptableResponses)
{
out.writeEnum(acceptable);
}
}
public static ConfirmationPrompt read(ExtendedDataInput in) throws IOException
{
String subject = in.readString();
String message = in.readString();
Confirmation suggestion = in.readEnum(Confirmation.class);
EnumSet<Confirmation> acceptable = EnumSet.noneOf(Confirmation.class);
int count = in.readInt();
for (int i = 0; i < count; i++)
{
acceptable.add(in.readEnum(Confirmation.class));
}
return new ConfirmationPrompt(subject, message, suggestion, acceptable);
}
}