package org.nocket.gen.page.guiservice;
import org.nocket.NocketSession;
import org.nocket.component.modal.ButtonFlag;
import org.nocket.component.modal.ModalSettings.ButtonDef;
import org.nocket.gen.test.WebGuiI18NServiceMockImpl;
import gengui.util.DomainProperties;
import gengui.util.I18NFactoryI;
import gengui.util.I18n;
public class WebGuiI18NServiceAdapter implements WebGuiI18NServiceI {
private transient I18n i18n;
private static volatile boolean useMock;
// Stores the title of the upcoming message box. Usually the title-method will be called directly BEFORE the errorMessage method (or the other methods)
private transient String translatedTitle;
private transient ButtonDef[] buttonDefs;
public WebGuiI18NServiceAdapter() {
}
public static void setUseMock(boolean useMock) {
WebGuiI18NServiceAdapter.useMock = useMock;
}
@Override
public WebGuiI18NServiceI title(String title, Object... args) {
if (useMock) {
new WebGuiI18NServiceMockImpl().title(title, args);
}
translatedTitle = getI18n().format(title, args);
return this;
}
@Override
public WebGuiI18NServiceI buttons(ButtonDef... buttonDefs) {
this.buttonDefs = buttonDefs;
return this;
}
@Override
public void errorMessage(String message, Object... args) {
if (useMock) {
new WebGuiI18NServiceMockImpl().errorMessage(message, args);
return;
}
NocketSession session = getSession();
if (session == null) {
return;
}
String translatedMessage = getI18n().format(message, args);
session.getDMDWebGenGuiServiceProvider().errorMessage(translatedTitle, translatedMessage);
translatedTitle = null;
}
private NocketSession getSession() {
try {
return NocketSession.get();
} catch (Throwable t) {
return null;
}
}
private WebGuiServiceI getImpl(NocketSession session) {
if (useMock) {
return new WebGuiI18NServiceMockImpl();
} else {
return session.getDMDWebGenGuiServiceProvider();
}
}
@Override
public void infoMessage(String message, Object... args) {
if (useMock) {
new WebGuiI18NServiceMockImpl().infoMessage(message, args);
return;
}
NocketSession session = getSession();
if (session == null) {
return;
}
String translatedMessage = getI18n().format(message, args);
session.getDMDWebGenGuiServiceProvider().infoMessage(translatedTitle, translatedMessage);
translatedTitle = null;
}
@Override
public void warningMessage(String message, Object... args) {
if (useMock) {
new WebGuiI18NServiceMockImpl().warningMessage(message, args);
return;
}
NocketSession session = getSession();
if (session == null) {
return;
}
String translatedMessage = getI18n().format(message, args);
session.getDMDWebGenGuiServiceProvider().warningMessage(translatedTitle, translatedMessage);
translatedTitle = null;
}
@Override
public void confirmMessage(String message, ModalResultCallback<ButtonFlag> callback, Object... args) {
if (useMock) {
new WebGuiI18NServiceMockImpl().confirmMessage(message, callback, args);
return;
}
NocketSession session = getSession();
if (session == null) {
return;
}
String translatedMessage = getI18n().format(message, args);
session.getDMDWebGenGuiServiceProvider().confirmMessage(translatedTitle, translatedMessage, callback,
buttonDefs);
translatedTitle = null;
buttonDefs = null;
}
@Override
public void status(String message, Object... args) {
if (useMock) {
new WebGuiI18NServiceMockImpl().status(message, args);
return;
}
NocketSession session = getSession();
if (session == null) {
return;
}
String translatedMessage = getI18n().format(message, args);
session.getDMDWebGenGuiServiceProvider().status(translatedMessage);
}
@Override
public void showPage(Object domainObject) {
NocketSession session = getSession();
if (session == null) {
return;
}
getImpl(session).showPage(domainObject);
}
@Override
public void showModalPanel(Object domainObject) {
NocketSession session = getSession();
if (session == null) {
return;
}
getImpl(session).showModalPanel(domainObject);
}
@Override
public <T> void showModalPanel(Object domainObject, boolean hideCloseButton) {
NocketSession session = getSession();
if (session == null) {
return;
}
getImpl(session).showModalPanel(domainObject, hideCloseButton);
}
@Override
public boolean touched(String... wicketIdPrefixes) {
NocketSession session = getSession();
if (session == null) {
return false;
}
return getImpl(session).touched(wicketIdPrefixes);
}
@Override
public void touch(String... wicketIdPrefixes) {
NocketSession session = getSession();
if (session == null) {
return;
}
getImpl(session).touch(wicketIdPrefixes);
}
@Override
public void untouch(String... wicketIdPrefixes) {
NocketSession session = getSession();
if (session == null) {
return;
}
getImpl(session).untouch(wicketIdPrefixes);
}
@Override
public boolean isModalPanelActive() {
NocketSession session = getSession();
if (session == null) {
return false;
}
return getImpl(session).isModalPanelActive();
}
@Override
public void closeModalPanel() {
NocketSession session = getSession();
if (session == null) {
return;
}
getImpl(session).closeModalPanel();
}
@Override
public String workdir() {
NocketSession session = getSession();
if (session == null) {
return null;
}
return getImpl(session).workdir();
}
public I18n getI18n() {
if (i18n == null) {
i18n = new DomainProperties().getI18NFactory().getI18N(this.getClass());
}
return i18n;
}
}