/*******************************************************************************
* Copyright (c) 2013, 2016 EclipseSource 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:
* EclipseSource - initial API and implementation
******************************************************************************/
package org.eclipse.rap.rwt.internal.client;
import java.util.Locale;
import org.eclipse.rap.json.JsonObject;
import org.eclipse.rap.rwt.RWT;
import org.eclipse.rap.rwt.internal.RWTMessages;
import org.eclipse.rap.rwt.internal.remote.ConnectionImpl;
import org.eclipse.rap.rwt.remote.RemoteObject;
public class WebClientMessages implements ClientMessages {
private static final String REMOTE_ID = "rwt.client.ClientMessages";
private static final String PROP_MESSAGES = "messages";
private static final String[] MESSAGE_IDS = {
RWTMessages.SERVER_ERROR,
RWTMessages.SERVER_ERROR_DESCRIPTION,
RWTMessages.CONNECTION_ERROR,
RWTMessages.CONNECTION_ERROR_DESCRIPTION,
RWTMessages.SESSION_TIMEOUT,
RWTMessages.SESSION_TIMEOUT_DESCRIPTION,
RWTMessages.CLIENT_ERROR,
RWTMessages.CLIENT_ERROR_DESCRIPTION,
RWTMessages.RETRY,
RWTMessages.RESTART,
RWTMessages.DETAILS
};
private RemoteObject remoteObject;
private String[] messages;
public WebClientMessages() {
ConnectionImpl connection = ( ConnectionImpl )RWT.getUISession().getConnection();
remoteObject = connection.createServiceObject( REMOTE_ID );
messages = new String[ MESSAGE_IDS.length ];
}
@Override
public void update( Locale locale ) {
JsonObject messagesObject = new JsonObject();
for( int i = 0; i < MESSAGE_IDS.length; i++ ) {
String newMessage = getMessage( MESSAGE_IDS[ i ], locale );
if( !newMessage.equals( messages[ i ] ) ) {
messages[ i ] = newMessage;
messagesObject.add( MESSAGE_IDS[ i ], newMessage );
}
}
if( !messagesObject.isEmpty() ) {
remoteObject.set( PROP_MESSAGES, messagesObject );
}
}
String getMessage( String messageId, Locale locale ) {
return RWTMessages.getMessage( messageId, locale );
}
}