@Deprecated @Override public WindowManager getWindowManager() { return (WindowManager) UiControllerUtils.getScreenContext(getFrameOwner()).getScreens(); }
@Deprecated @Override public WindowManager getWindowManager() { return (WindowManager) UiControllerUtils.getScreenContext(getFrameOwner()).getScreens(); }
/** * Shows this screen. * * @see Screens#show(Screen) */ public Screen show() { getScreenContext().getScreens().show(this); return this; }
/** * Show modal window with message which will last until task completes. * Optionally cancel button can be displayed. By pressing cancel button user can cancel task execution. * * @param task background task containing long operation * @param title window title, optional * @param message window message, optional * @param total total number of items, that will be processed * @param cancelAllowed show or not cancel button * @param percentProgress show progress in percents * @param <V> task result type */ public static <T extends Number, V> void show(BackgroundTask<T, V> task, @Nullable String title, @Nullable String message, Number total, boolean cancelAllowed, boolean percentProgress) { if (task.getOwnerScreen() == null) { throw new IllegalArgumentException("Task without owner cannot be run"); } Map<String, Object> params = new HashMap<>(); params.put("task", task); params.put("title", title); params.put("message", message); params.put("total", total); params.put("cancelAllowed", cancelAllowed); params.put("percentProgress", percentProgress); Screens screens = UiControllerUtils.getScreenContext(task.getOwnerScreen()).getScreens(); WindowInfo windowInfo = AppBeans.get(WindowConfig.class).getWindowInfo("backgroundWorkProgressWindow"); ((WindowManager)screens).openWindow(windowInfo, OpenType.DIALOG, params); }
protected void openReportParamsDialog(FrameOwner screen, Report report, @Nullable Map<String, Object> parameters, @Nullable ReportInputParameter inputParameter, @Nullable String templateCode, @Nullable String outputFileName, boolean bulkPrint) { Map<String, Object> params = ParamsMap.of( REPORT_PARAMETER, report, PARAMETERS_PARAMETER, parameters, INPUT_PARAMETER, inputParameter, TEMPLATE_CODE_PARAMETER, templateCode, OUTPUT_FILE_NAME_PARAMETER, outputFileName, BULK_PRINT, bulkPrint ); ScreenContext screenContext = UiControllerUtils.getScreenContext(screen); WindowManager wm = (WindowManager) screenContext.getScreens(); WindowInfo windowInfo = AppBeans.get(WindowConfig.class).getWindowInfo("report$inputParameters"); wm.openWindow(windowInfo, OpenType.DIALOG, params); }
/** * Show modal window with message which will last until task completes. * Optionally cancel button can be displayed. By pressing cancel button user can cancel task execution. * * @param task background task containing long operation * @param title window title, optional * @param message window message, optional * @param cancelAllowed show or not cancel button * @param <T> task progress unit * @param <V> task result type */ public static <T, V> void show(BackgroundTask<T, V> task, @Nullable String title, @Nullable String message, boolean cancelAllowed) { if (task.getOwnerScreen() == null) { throw new IllegalArgumentException("Task without owner cannot be run"); } Map<String, Object> params = new HashMap<>(); params.put("task", task); params.put("title", title); params.put("message", message); params.put("cancelAllowed", cancelAllowed); Screens screens = UiControllerUtils.getScreenContext(task.getOwnerScreen()).getScreens(); WindowInfo windowInfo = AppBeans.get(WindowConfig.class).getWindowInfo("backgroundWorkWindow"); ((WindowManager)screens).openWindow(windowInfo, OpenType.DIALOG, params); }
@Override public boolean handleException(Exception ex) { boolean handled = wrappedTask.handleException(ex); if (handled || wrappedTask.getOwnerScreen() == null) { Screens screens = getScreenContext().getScreens(); screens.remove(screen); } else { Screens screens = getScreenContext().getScreens(); screens.remove(screen); showExecutionError(ex); log.error("Exception occurred in background task", ex); handled = true; } return handled; }
@Override public void done(V result) { Screens screens = getScreenContext().getScreens(); screens.remove(screen); try { wrappedTask.done(result); } catch (Exception ex) { // we should show exception messages immediately showExecutionError(ex); } }
public void showInfo(Entity entity, MetaClass metaClass, Component.BelongToFrame component) { WindowManager wm = (WindowManager) ComponentsHelper.getScreenContext(component).getScreens(); WindowInfo windowInfo = AppBeans.get(WindowConfig.class).getWindowInfo("sysInfoWindow"); wm.openWindow(windowInfo, OpenType.DIALOG, ParamsMap.of( "metaClass", metaClass, "item", entity)); } }
protected void openReportParamsDialog(Report report, FrameOwner screen) { ScreenContext screenContext = UiControllerUtils.getScreenContext(screen); WindowManager wm = (WindowManager) screenContext.getScreens(); WindowInfo windowInfo = AppBeans.get(WindowConfig.class).getWindowInfo("report$inputParameters"); wm.openWindow(windowInfo, OpenType.DIALOG, ParamsMap.of("report", report)); }
@Override public void actionPerform(Component component) { Set<Entity> ownerSelection = target.getSelected(); if (!ownerSelection.isEmpty()) { String entityType; if (target.getItems() instanceof EntityDataUnit) { MetaClass metaClass = ((EntityDataUnit) target.getItems()).getEntityMetaClass(); entityType = metaClass.getName(); } else { throw new UnsupportedOperationException("Unsupported data unit " + target.getItems()); } String[] strings = ValuePathHelper.parse(ComponentsHelper.getFilterComponentPath(filter)); String componentId = ValuePathHelper.format(Arrays.copyOfRange(strings, 1, strings.length)); Map<String, Object> params = new HashMap<>(); params.put("entityType", entityType); params.put("items", ownerSelection); params.put("componentPath", ComponentsHelper.getFilterComponentPath(filter)); params.put("componentId", componentId); params.put("foldersPane", filterHelper.getFoldersPane()); params.put("entityClass", adapter.getMetaClass().getJavaClass().getName()); params.put("query", adapter.getQuery()); WindowManager wm = (WindowManager) ComponentsHelper.getScreenContext(filter).getScreens(); WindowInfo windowInfo = windowConfig.getWindowInfo("saveSetInFolder"); wm.openWindow(windowInfo, OpenType.DIALOG, params); } } }
@SuppressWarnings("unchecked") protected Screen createScreen(RelatedEntitiesBuilder builder, MetaClass metaClass, MetaProperty metaProperty) { FrameOwner origin = builder.getOrigin(); Screens screens = getScreenContext(origin).getScreens(); if (builder instanceof RelatedEntitiesClassBuilder) { RelatedEntitiesClassBuilder screenClassBuilder = (RelatedEntitiesClassBuilder) builder; Class screenClass = screenClassBuilder.getScreenClass(); if (screenClass == null) { throw new IllegalArgumentException("Screen class is not set"); } return screens.create(screenClass, builder.getLaunchMode(), builder.getOptions()); } else { String screenId = builder.getScreenId(); if (StringUtils.isEmpty(screenId)) { // try to get default browse screen id screenId = windowConfig.getBrowseScreenId(metaProperty.getRange().asClass()); if (StringUtils.isEmpty(screenId)) { String message = String.format("Can't create related entities screen: passed screen id is null and " + "there is no default browse screen for %s", metaClass.getName()); throw new IllegalArgumentException(message); } } return screens.create(builder.getScreenId(), builder.getLaunchMode(), builder.getOptions()); } }
@Override public void actionPerform(Component component) { if (filterEntity == null) { // todo add notification 'Filter not selected' return; } Frame frame = filter.getFrame(); String[] strings = ValuePathHelper.parse(ComponentsHelper.getFilterComponentPath(filter)); String windowAlias = strings[0]; StringBuilder lookupAlias = new StringBuilder(windowAlias); if (windowAlias.endsWith(Window.BROWSE_WINDOW_SUFFIX)) { int index = lookupAlias.lastIndexOf(Window.BROWSE_WINDOW_SUFFIX); lookupAlias.delete(index, lookupAlias.length()); lookupAlias.append(Window.LOOKUP_WINDOW_SUFFIX); } WindowManager wm = (WindowManager) ComponentsHelper.getScreenContext(frame).getScreens(); WindowInfo windowInfo = AppBeans.get(WindowConfig.class).getWindowInfo(lookupAlias.toString()); wm.openLookup(windowInfo, items -> { String filterXml = filterEntity.getXml(); filterEntity.setXml(UserSetHelper.addEntities(filterXml, items)); filterEntity.getFolder().setFilterXml(filterEntity.getXml()); filterEntity.setFolder(saveFolder(filterEntity.getFolder())); setFilterEntity(filterEntity); }, OpenType.THIS_TAB); } }
ActionOwner owner = getOwner(); if (owner instanceof Component.BelongToFrame) { WindowManager wm = (WindowManager) getScreenContext((Component.BelongToFrame) owner).getScreens(); WindowInfo windowInfo = AppBeans.get(WindowConfig.class).getWindowInfo(cancelForm.getName());
@Override public boolean handleTimeoutException() { boolean handled = wrappedTask.handleTimeoutException(); if (handled || wrappedTask.getOwnerScreen() == null) { Screens screens = getScreenContext().getScreens(); screens.remove(screen); } else { Screens screens = getScreenContext().getScreens(); screens.remove(screen); Notifications notifications = getScreenContext().getNotifications(); Messages messages = AppBeans.get(Messages.NAME); notifications.create(Notifications.NotificationType.WARNING) .withCaption(messages.getMessage(LocalizedTaskWrapper.class, "backgroundWorkProgress.timeout")) .withDescription(messages.getMessage(LocalizedTaskWrapper.class, "backgroundWorkProgress.timeoutMessage")) .show(); handled = true; } return handled; }
@SuppressWarnings("unchecked") public Screen buildScreen(ScreenBuilder builder) { FrameOwner origin = builder.getOrigin(); Screens screens = getScreenContext(origin).getScreens();
protected void analyzeLayout(Object target) { Window window = findWindow((Layout) target); if (window != null) { LayoutAnalyzer analyzer = new LayoutAnalyzer(); List<LayoutTip> tipsList = analyzer.analyze(window); if (tipsList.isEmpty()) { Notifications notifications = ComponentsHelper.getScreenContext(window).getNotifications(); notifications.create(NotificationType.HUMANIZED) .withCaption("No layout problems found") .show(); } else { WindowManager wm = (WindowManager) ComponentsHelper.getScreenContext(window).getScreens(); WindowInfo windowInfo = AppBeans.get(WindowConfig.class).getWindowInfo("layoutAnalyzer"); wm.openWindow(windowInfo, WindowManager.OpenType.DIALOG, ParamsMap.of("tipsList", tipsList)); } } }
WindowInfo windowInfo = windowConfig.getWindowInfo("ftsSearchResults"); WindowManager wm = (WindowManager) getScreenContext(origin).getScreens(); wm.openWindow(windowInfo, OpenType.NEW_TAB,
/** * This method is invoked by action owner component. Don't override it, there are special methods to * customize behaviour below. * * @param component component invoking action */ @Override public void actionPerform(Component component) { if (beforeActionPerformedHandler != null) { if (!beforeActionPerformedHandler.beforeActionPerformed()) { return; } } Map<String, Object> params = prepareWindowParams(); Window.Lookup.Handler handler = getHandler(); Window.Lookup.Handler itemsHandler = handler != null ? handler : new DefaultHandler(); WindowManager wm = (WindowManager) ComponentsHelper.getScreenContext(target.getFrame()).getScreens(); WindowInfo windowInfo = AppBeans.get(WindowConfig.class).getWindowInfo(getWindowId()); Window lookupWindow = wm.openLookup(windowInfo, itemsHandler, getOpenType(), params); if (target instanceof Component.Focusable) { lookupWindow.addCloseListener(actionId -> { // move focus to owner ((Component.Focusable) target).focus(); }); } }
/** * Requests closing of the screen caused by the given action. * * @param action close action which is propagated to {@link BeforeCloseEvent} and {@link AfterCloseEvent} * @return result of operation */ public OperationResult close(CloseAction action) { BeforeCloseEvent beforeCloseEvent = new BeforeCloseEvent(this, action); fireEvent(BeforeCloseEvent.class, beforeCloseEvent); if (beforeCloseEvent.isClosePrevented()) { if (beforeCloseEvent.getCloseResult() != null) { return beforeCloseEvent.getCloseResult(); } return OperationResult.fail(); } // save settings right before removing if (isSaveSettingsOnClose(action)) { saveSettings(); } if (isSaveScreenHistoryOnClose(action)) { ScreenHistorySupport screenHistorySupport = beanLocator.get(ScreenHistorySupport.NAME); screenHistorySupport.saveScreenHistory(this); } screenContext.getScreens().remove(this); AfterCloseEvent afterCloseEvent = new AfterCloseEvent(this, action); fireEvent(AfterCloseEvent.class, afterCloseEvent); return OperationResult.success(); }