use of org.eclipse.rap.rwt.service.ServerPushSession in project rap by entirej.
the class EJRWTApplicationManager method runReportAsync.
@Override
public void runReportAsync(final String reportName, final EJParameterList parameterList, final EJMessage completedMessage) {
if (reportManager == null) {
reportManager = EJReportFrameworkInitialiser.initialiseFramework("report.ejprop");
}
final Display display = Display.getDefault();
final ServerPushSession pushSession = new ServerPushSession();
Runnable job = new Runnable() {
@Override
public void run() {
try {
final EJReport report;
if (parameterList == null) {
report = reportManager.createReport(reportName);
} else {
EJReportParameterList list = new EJReportParameterList();
Collection<EJFormParameter> allParameters = parameterList.getAllParameters();
for (EJFormParameter parameter : allParameters) {
EJReportParameter reportParameter = new EJReportParameter(parameter.getName(), parameter.getDataType());
reportParameter.setValue(parameter.getValue());
list.addParameter(reportParameter);
}
report = reportManager.createReport(reportName, list);
}
EJReportRunner reportRunner = reportManager.createReportRunner();
final String output = reportRunner.runReport(report);
if (!display.isDisposed()) {
display.asyncExec(new Runnable() {
public void run() {
String name = report.getName();
EJReportParameter reportParameter = null;
if (report.hasReportParameter("REPORT_NAME")) {
reportParameter = report.getReportParameter("REPORT_NAME");
}
if (reportParameter != null && reportParameter.getValue() != null && !((String) reportParameter.getValue()).isEmpty()) {
name = (String) reportParameter.getValue();
} else {
if (report.getOutputName() != null && !report.getOutputName().isEmpty()) {
name = report.getOutputName();
}
}
if (completedMessage != null) {
handleMessage(completedMessage);
}
String ext = report.getProperties().getExportType().toString().toLowerCase();
report.getProperties().getExportType();
if (report.getProperties().getExportType() == EJReportExportType.XLSX_LARGE) {
ext = EJReportExportType.XLSX.toString().toLowerCase();
}
EJRWTImageRetriever.getGraphicsProvider().open(output, String.format("%s.%s", name, ext));
}
});
}
} finally {
display.asyncExec(new Runnable() {
public void run() {
pushSession.stop();
}
});
}
}
};
pushSession.start();
Thread bgThread = new Thread(job);
bgThread.setDaemon(true);
bgThread.start();
}
use of org.eclipse.rap.rwt.service.ServerPushSession in project rap by entirej.
the class EJRWTAbstractDialog method activateDialog.
public void activateDialog() {
// getShell().forceFocus();
final ServerPushSession pushSession = new ServerPushSession();
pushSession.start();
final Display dp = Display.getDefault();
new java.util.Timer().schedule(new java.util.TimerTask() {
@Override
public void run() {
dp.asyncExec(new Runnable() {
AtomicBoolean b = new AtomicBoolean(true);
@Override
public void run() {
pushSession.stop();
}
});
}
}, 100);
}
use of org.eclipse.rap.rwt.service.ServerPushSession in project rap by entirej.
the class EJRWTLookupFormLovRenderer method displayLov.
@Override
public void displayLov(EJItemLovController itemToValidate, EJLovDisplayReason displayReason) {
super.displayLov(itemToValidate, displayReason);
if (displayReason == EJLovDisplayReason.LOV) {
EJFrameworkExtensionProperties rendererProp = getLovController().getDefinitionProperties().getLovRendererProperties();
if (!rendererProp.getBooleanProperty(SHOW_QUERY_SCREEN, true) && getLovController().getBlockRecordCount() > 0) {
return;
}
final ServerPushSession pushSession = new ServerPushSession();
pushSession.start();
final Display dp = Display.getDefault();
new java.util.Timer().schedule(new java.util.TimerTask() {
@Override
public void run() {
dp.asyncExec(new Runnable() {
@Override
public void run() {
getLovController().enterQuery();
pushSession.stop();
}
});
}
}, 100);
}
}
use of org.eclipse.rap.rwt.service.ServerPushSession in project netxms by netxms.
the class ProgressWidget method startWorkerThread.
/**
*/
private void startWorkerThread() {
final Display display = getShell().getDisplay();
final ServerPushSession pushSession = new ServerPushSession();
final Thread workerThread = new Thread(new Runnable() {
@Override
public void run() {
try {
runnable.run(new IProgressMonitor() {
@Override
public void worked(final int work) {
display.syncExec(new Runnable() {
@Override
public void run() {
progressBar.setSelection(progressBar.getSelection() + work);
}
});
}
@Override
public void subTask(String name) {
}
@Override
public void setTaskName(final String name) {
display.syncExec(new Runnable() {
@Override
public void run() {
task.setText(name);
}
});
}
@Override
public void setCanceled(boolean value) {
}
@Override
public boolean isCanceled() {
return false;
}
@Override
public void internalWorked(double work) {
}
@Override
public void done() {
}
@Override
public void beginTask(final String name, final int totalWork) {
display.syncExec(new Runnable() {
@Override
public void run() {
progressBar.setMinimum(0);
progressBar.setMaximum(totalWork);
progressBar.setSelection(0);
task.setText(name);
}
});
}
});
} catch (Exception e) {
exception = new InvocationTargetException(e);
}
runEventLoop = false;
display.syncExec(null);
}
});
pushSession.start();
workerThread.start();
while (runEventLoop) {
if (!display.readAndDispatch())
display.sleep();
}
pushSession.stop();
}
use of org.eclipse.rap.rwt.service.ServerPushSession in project rap by entirej.
the class EJRWTApplicationLauncher method createEntryPoint.
public void createEntryPoint(final Application configuration) {
configuration.setOperationMode(getOperationMode());
Map<String, String> properties = new HashMap<String, String>();
if (this.getClass().getClassLoader().getResource("application.ejprop") != null) {
EJFrameworkInitialiser.initialiseFramework("application.ejprop");
} else if (this.getClass().getClassLoader().getResource("EntireJApplication.properties") != null) {
EJFrameworkInitialiser.initialiseFramework("EntireJApplication.properties");
} else {
throw new RuntimeException("application.ejprop not found");
}
final EJCoreProperties coreProperties = EJCoreProperties.getInstance();
EJCoreLayoutContainer layoutContainer = coreProperties.getLayoutContainer();
properties.put(WebClient.PAGE_TITLE, layoutContainer.getTitle());
String favicon = getFavicon();
if (favicon == null) {
favicon = ICONS_FAVICON_ICO;
}
properties.put(WebClient.FAVICON, favicon);
properties.put(WebClient.BODY_HTML, getBodyHtml());
properties.put(WebClient.THEME_ID, THEME_DEFAULT);
addOtherResources(configuration);
configuration.addResource(favicon, new FileResource());
configuration.addResource(getLoadingImage(), new FileResource());
configuration.addStyleSheet(THEME_DEFAULT, "resource/theme/default.css");
String baseThemeCSSLocation = getBaseThemeCSSLocation();
if (baseThemeCSSLocation == null) {
baseThemeCSSLocation = THEME_DEFAULT_CSS;
}
configuration.addStyleSheet(THEME_DEFAULT, baseThemeCSSLocation);
properties.put(WebClient.PAGE_OVERFLOW, "scrollY");
configuration.addResource(baseThemeCSSLocation, new FileResource());
if (getThemeCSSLocation() != null) {
configuration.addStyleSheet(THEME_DEFAULT, getThemeCSSLocation());
configuration.addResource(getThemeCSSLocation(), new FileResource());
}
configuration.addEntryPoint(String.format("/%s", getWebPathContext()), new EntryPointFactory() {
public EntryPoint create() {
try {
RWT.getServiceManager().registerServiceHandler(VACSSServiceHandler.SERVICE_HANDLER, new VACSSServiceHandler());
RWT.getServiceManager().registerServiceHandler(EJRWTFileDownload.SERVICE_HANDLER, EJRWTFileDownload.newServiceHandler());
registerServiceHandlers();
} catch (java.lang.IllegalArgumentException e) {
// ignore if already registered
}
registerWidgetHandlers();
final EntryPoint wrapped = newEntryPoint();
return new EntryPoint() {
public int createUI() {
BrowserNavigation service = RWT.getClient().getService(BrowserNavigation.class);
BrowserNavigationListener listener = new BrowserNavigationListener() {
@Override
public void navigated(BrowserNavigationEvent event) {
EJRWTContext.getPageContext().setState(event.getState());
}
};
service.addBrowserNavigationListener(listener);
int createUI = wrapped.createUI();
return createUI;
}
};
}
private EntryPoint newEntryPoint() {
return new EntryPoint() {
public int createUI() {
{
// connect BaseURL
StringBuffer url = new StringBuffer();
url.append(RWT.getRequest().getContextPath());
url.append(RWT.getRequest().getServletPath());
String encodeURL = RWT.getResponse().encodeURL(url.toString());
if (encodeURL.contains("jsessionid")) {
encodeURL = encodeURL.substring(0, encodeURL.indexOf("jsessionid"));
}
int patchIndex = encodeURL.lastIndexOf(getWebPathContext());
if (patchIndex > -1) {
encodeURL = encodeURL.substring(0, patchIndex);
}
_baseURL = encodeURL;
}
RWTUtils.patchClient(getWebPathContext(), getTimeoutUrl());
EJRWTImageRetriever.setGraphicsProvider(new EJRWTGraphicsProvider() {
@Override
public void promptFileUpload(final EJFileUpload fileUpload, final Callable<Object> callable) {
if (fileUpload.isMultiSelection()) {
EJRWTFileUpload.promptMultipleFileUpload(fileUpload.getTitle(), fileUpload.getUploadSizeLimit(), fileUpload.getUploadTimeLimit(), fileUpload.getFileExtensions().toArray(new String[0]), new FileSelectionCallBack() {
@Override
public void select(String[] files) {
try {
fileUpload.setFilePaths(files != null ? Arrays.asList(files) : null);
callable.call();
} catch (Exception e) {
e.printStackTrace();
}
}
});
} else {
EJRWTFileUpload.promptFileUpload(fileUpload.getTitle(), fileUpload.getUploadSizeLimit(), fileUpload.getUploadTimeLimit(), fileUpload.getFileExtensions().toArray(new String[0]), new FileSelectionCallBack() {
@Override
public void select(String[] files) {
try {
fileUpload.setFilePaths(files != null ? Arrays.asList(files) : null);
callable.call();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
public Image getImage(String name, ClassLoader loader) {
return RWTUtils.getImage(name, loader);
}
@Override
public void open(final String output, String outputName) {
EJRWTFileDownload.download(output, outputName);
RWT.getUISession().addUISessionListener(new UISessionListener() {
private static final long serialVersionUID = 1L;
@Override
public void beforeDestroy(UISessionEvent arg0) {
File f = new File(output);
if (f.exists()) {
f.delete();
}
}
});
}
public float getAvgCharWidth(Font font) {
return RWTUtils.getAvgCharWidth(font);
}
public int getCharHeight(Font font) {
return RWTUtils.getCharHeight(font);
}
public void rendererSection(final Section section) {
section.removeListener(SWT.Dispose, section.getListeners(SWT.Dispose)[0]);
section.removeListener(SWT.Resize, section.getListeners(SWT.Resize)[0]);
section.setFont(section.getParent().getFont());
section.setForeground(section.getParent().getForeground());
Object adapter = section.getAdapter(IWidgetGraphicsAdapter.class);
IWidgetGraphicsAdapter gfxAdapter = (IWidgetGraphicsAdapter) adapter;
gfxAdapter.setRoundedBorder(1, section.getTitleBarBackground(), 2, 2, 0, 0);
Listener listener = new Listener() {
public void handleEvent(Event e) {
Object adapter = section.getAdapter(IWidgetGraphicsAdapter.class);
IWidgetGraphicsAdapter gfxAdapter = (IWidgetGraphicsAdapter) adapter;
Color[] gradientColors = new Color[] { section.getTitleBarBorderColor(), section.getBackground(), section.getTitleBarBackground(), section.getBackground(), section.getBackground() };
int gradientPercent = 0;
Rectangle bounds = section.getClientArea();
if (bounds.height != 0) {
gradientPercent = 30 * 100 / bounds.height;
if (gradientPercent > 100) {
gradientPercent = 100;
}
}
int[] percents = new int[] { 0, 1, 2, gradientPercent, 100 };
gfxAdapter.setBackgroundGradient(gradientColors, percents, true);
gfxAdapter.setRoundedBorder(1, section.getBackground(), 4, 4, 0, 0);
}
};
section.addListener(SWT.Dispose, listener);
section.addListener(SWT.Resize, listener);
}
});
final EJRWTApplicationManager applicationManager;
if (this.getClass().getClassLoader().getResource("application.ejprop") != null) {
applicationManager = (EJRWTApplicationManager) EJFrameworkInitialiser.initialiseFramework("application.ejprop");
} else if (this.getClass().getClassLoader().getResource("EntireJApplication.properties") != null) {
applicationManager = (EJRWTApplicationManager) EJFrameworkInitialiser.initialiseFramework("EntireJApplication.properties");
} else {
throw new RuntimeException("application.ejprop not found");
}
EJRWTContext.getPageContext().setManager(applicationManager);
getContext().getUISession().setAttribute("ej.applicationManager", applicationManager);
EJCoreLayoutContainer layoutContainer = EJCoreProperties.getInstance().getLayoutContainer();
// Now build the application container
EJRWTApplicationContainer appContainer = new EJRWTApplicationContainer(layoutContainer);
// Add the application menu and status bar to the app
// container
EJMessenger messenger = applicationManager.getApplicationMessenger();
if (messenger == null) {
throw new NullPointerException("The ApplicationComponentProvider must provide an Messenger via method: getApplicationMessenger()");
}
Display display = Display.getDefault();
if (display.isDisposed())
display = new Display();
Shell shell = new Shell(display, SWT.NO_TRIM);
// check test mode
StartupParameters service = RWT.getClient().getService(StartupParameters.class);
if (service != null && Boolean.valueOf(service.getParameter("TEST_MODE"))) {
EJ_RWT.setTestMode(true);
}
try {
preApplicationBuild(applicationManager);
} finally {
applicationManager.getConnection().close();
}
applicationManager.buildApplication(appContainer, shell);
final EJRWTApplicationManager appman = applicationManager;
Display.getCurrent().asyncExec(new Runnable() {
@Override
public void run() {
try {
postApplicationBuild(appman);
} finally {
appman.getConnection().close();
}
}
});
shell.layout();
shell.setMaximized(true);
// disable due to RWT bug
// https://bugs.eclipse.org/bugs/show_bug.cgi?id=410895
// ExitConfirmation confirmation =
// RWT.getClient().getService(ExitConfirmation.class);
// String message = getDefaultTabCloseMessage();
// if ("__DEFAULT__".equals(message))
// {
// confirmation.setMessage(String.format("Do you want to close %s ?",
// EJCoreProperties.getInstance().getLayoutContainer().getTitle()));
// }
// else if (message != null)
// {
// confirmation.setMessage(message);
// }
final ServerPushSession pushSession = new ServerPushSession();
RWT.getUISession().addUISessionListener(new UISessionListener() {
public void beforeDestroy(UISessionEvent event) {
if (applicationManager.getApplicationActionProcessor() != null)
try {
applicationManager.getApplicationActionProcessor().whenApplicationEnd(applicationManager);
} catch (EJActionProcessorException e) {
e.printStackTrace();
}
pushSession.stop();
}
});
if (applicationManager.getApplicationActionProcessor() != null)
try {
applicationManager.getApplicationActionProcessor().whenApplicationStart(applicationManager);
} catch (EJActionProcessorException e) {
e.printStackTrace();
}
EJFrameworkExtensionProperties definedProperties = coreProperties.getApplicationDefinedProperties();
if (definedProperties != null && definedProperties.getBooleanProperty("LIVE_CONNECTION", false))
pushSession.start();
return openShell(display, shell);
}
};
}
}, properties);
// services
{
final String SERVICE = "SERVICE";
final String SERVICE_LIST = "SERVICE_LIST";
final String SERVICE_PATH = "SERVICE_PATH";
final String SERVICE_FORM = "SERVICE_FORM";
final String SERVICE_NAME = "SERVICE_NAME";
EJFrameworkExtensionProperties definedProperties = coreProperties.getApplicationDefinedProperties();
if (canLoadServices() && definedProperties != null) {
EJFrameworkExtensionProperties group = definedProperties.getPropertyGroup(SERVICE);
if (group != null && group.getPropertyList(SERVICE_LIST) != null) {
EJCoreFrameworkExtensionPropertyList list = group.getPropertyList(SERVICE_LIST);
List<EJFrameworkExtensionPropertyListEntry> allListEntries = list.getAllListEntries();
for (EJFrameworkExtensionPropertyListEntry entry : allListEntries) {
final String formId = entry.getProperty(SERVICE_FORM);
HashMap<String, String> srvproperties = new HashMap<String, String>(properties);
srvproperties.put(WebClient.PAGE_TITLE, entry.getProperty(SERVICE_NAME));
if (entry.getProperty(SERVICE_PATH) != null && formId != null && formId != null) {
configuration.addEntryPoint(String.format("/%s", entry.getProperty(SERVICE_PATH)), new EntryPointFactory() {
public EntryPoint create() {
try {
RWT.getServiceManager().registerServiceHandler(VACSSServiceHandler.SERVICE_HANDLER, new VACSSServiceHandler());
RWT.getServiceManager().registerServiceHandler(EJRWTFileDownload.SERVICE_HANDLER, EJRWTFileDownload.newServiceHandler());
registerServiceHandlers();
} catch (java.lang.IllegalArgumentException e) {
// ignore if already registered
}
registerWidgetHandlers();
final EntryPoint wrapped = newServiceEntryPoint(formId);
return new EntryPoint() {
public int createUI() {
BrowserNavigation service = RWT.getClient().getService(BrowserNavigation.class);
BrowserNavigationListener listener = new BrowserNavigationListener() {
@Override
public void navigated(BrowserNavigationEvent event) {
EJRWTContext.getPageContext().setState(event.getState());
}
};
service.addBrowserNavigationListener(listener);
int createUI = wrapped.createUI();
return createUI;
}
};
}
private EntryPoint newServiceEntryPoint(String serviceFormID) {
return new EntryPoint() {
public int createUI() {
RWTUtils.patchClient(getWebPathContext(), null);
EJRWTImageRetriever.setGraphicsProvider(new EJRWTGraphicsProvider() {
@Override
public void promptFileUpload(final EJFileUpload fileUpload, final Callable<Object> callable) {
if (fileUpload.isMultiSelection()) {
EJRWTFileUpload.promptMultipleFileUpload(fileUpload.getTitle(), fileUpload.getUploadSizeLimit(), fileUpload.getUploadTimeLimit(), fileUpload.getFileExtensions().toArray(new String[0]), new FileSelectionCallBack() {
@Override
public void select(String[] files) {
try {
fileUpload.setFilePaths(files != null ? Arrays.asList(files) : null);
callable.call();
} catch (Exception e) {
e.printStackTrace();
}
}
});
} else {
EJRWTFileUpload.promptFileUpload(fileUpload.getTitle(), fileUpload.getUploadSizeLimit(), fileUpload.getUploadTimeLimit(), fileUpload.getFileExtensions().toArray(new String[0]), new FileSelectionCallBack() {
@Override
public void select(String[] files) {
try {
fileUpload.setFilePaths(files != null ? Arrays.asList(files) : null);
callable.call();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
public Image getImage(String name, ClassLoader loader) {
return RWTUtils.getImage(name, loader);
}
@Override
public void open(final String output, String outputName) {
EJRWTFileDownload.download(output, outputName);
RWT.getUISession().addUISessionListener(new UISessionListener() {
private static final long serialVersionUID = 1L;
@Override
public void beforeDestroy(UISessionEvent arg0) {
File f = new File(output);
if (f.exists()) {
f.delete();
}
}
});
}
public float getAvgCharWidth(Font font) {
return RWTUtils.getAvgCharWidth(font);
}
public int getCharHeight(Font font) {
return RWTUtils.getCharHeight(font);
}
public void rendererSection(final Section section) {
section.removeListener(SWT.Dispose, section.getListeners(SWT.Dispose)[0]);
section.removeListener(SWT.Resize, section.getListeners(SWT.Resize)[0]);
section.setFont(section.getParent().getFont());
section.setForeground(section.getParent().getForeground());
Object adapter = section.getAdapter(IWidgetGraphicsAdapter.class);
IWidgetGraphicsAdapter gfxAdapter = (IWidgetGraphicsAdapter) adapter;
gfxAdapter.setRoundedBorder(1, section.getTitleBarBackground(), 2, 2, 0, 0);
Listener listener = new Listener() {
public void handleEvent(Event e) {
Object adapter = section.getAdapter(IWidgetGraphicsAdapter.class);
IWidgetGraphicsAdapter gfxAdapter = (IWidgetGraphicsAdapter) adapter;
Color[] gradientColors = new Color[] { section.getTitleBarBorderColor(), section.getBackground(), section.getTitleBarBackground(), section.getBackground(), section.getBackground() };
int gradientPercent = 0;
Rectangle bounds = section.getClientArea();
if (bounds.height != 0) {
gradientPercent = 30 * 100 / bounds.height;
if (gradientPercent > 100) {
gradientPercent = 100;
}
}
int[] percents = new int[] { 0, 1, 2, gradientPercent, 100 };
gfxAdapter.setBackgroundGradient(gradientColors, percents, true);
gfxAdapter.setRoundedBorder(1, section.getBackground(), 4, 4, 0, 0);
}
};
section.addListener(SWT.Dispose, listener);
section.addListener(SWT.Resize, listener);
}
});
final EJRWTApplicationManager applicationManager;
if (this.getClass().getClassLoader().getResource("application.ejprop") != null) {
applicationManager = (EJRWTApplicationManager) EJFrameworkInitialiser.initialiseFramework("application.ejprop");
} else if (this.getClass().getClassLoader().getResource("EntireJApplication.properties") != null) {
applicationManager = (EJRWTApplicationManager) EJFrameworkInitialiser.initialiseFramework("EntireJApplication.properties");
} else {
throw new RuntimeException("application.ejprop not found");
}
EJRWTContext.getPageContext().setManager(applicationManager);
getContext().getUISession().setAttribute("ej.applicationManager", applicationManager);
EJCoreLayoutContainer layoutContainer = EJCoreProperties.getInstance().getLayoutContainer();
// Now build the application container
EJRWTApplicationContainer appContainer = new EJRWTApplicationContainer(layoutContainer);
// Add the application menu and status bar to the app
// container
EJMessenger messenger = applicationManager.getApplicationMessenger();
if (messenger == null) {
throw new NullPointerException("The ApplicationComponentProvider must provide an Messenger via method: getApplicationMessenger()");
}
Display display = Display.getDefault();
if (display.isDisposed())
display = new Display();
Shell shell = new Shell(display, SWT.NO_TRIM);
applicationManager.buildServiceApplication(appContainer, shell, formId);
final EJRWTApplicationManager appman = applicationManager;
Display.getCurrent().asyncExec(new Runnable() {
@Override
public void run() {
try {
postApplicationBuild(appman);
} finally {
appman.getConnection().close();
}
}
});
shell.layout();
shell.setMaximized(true);
final ServerPushSession pushSession = new ServerPushSession();
RWT.getUISession().addUISessionListener(new UISessionListener() {
public void beforeDestroy(UISessionEvent event) {
pushSession.stop();
}
});
pushSession.start();
return openShell(display, shell);
}
};
}
}, srvproperties);
}
}
}
}
}
}
Aggregations