@Override public Frame getWrappedFrame() { return screen.getFragment(); }
public static <E> void fireEvent(FrameOwner screen, Class<E> eventType, E event) { if (screen instanceof Screen) { ((Screen) screen).fireEvent(eventType, event); } else if (screen instanceof ScreenFragment) { ((ScreenFragment) screen).fireEvent(eventType, event); } }
/** * Gets bean locator associated with the frame owner. Extensions can get various application beans from bean locator. * <br> * Example: * <pre>{@code * BeanLocator beanLocator = Extensions.getBeanLocator(screen); * Messages messages = beanLocator.get(Messages.class); * }</pre> * * @param frameOwner UI controller * @return bean locator */ public static BeanLocator getBeanLocator(FrameOwner frameOwner) { if (frameOwner instanceof Screen) { return ((Screen) frameOwner).getBeanLocator(); } else if (frameOwner instanceof ScreenFragment) { return ((ScreenFragment) frameOwner).getBeanLocator(); } throw new IllegalArgumentException("Unsupported type of screen " + frameOwner); } }
@Override public void initLookupLayout() { Action selectAction = getAction(LOOKUP_SELECT_ACTION_ID); if (selectAction != null && selectAction.getOwner() == null) { Fragments fragments = UiControllerUtils.getScreenContext(this).getFragments(); ScreenFragment lookupWindowActions = fragments.create(this, "lookupWindowActions"); lookupWindowActions.getFragment().setId("lookupWindowActions"); lookupWindowActions.getFragment().setVisible(false); getFrame().add(lookupWindowActions.getFragment()); lookupWindowActions.init(); } Element element = ((Component.HasXmlDescriptor) getFrame()).getXmlDescriptor(); if (element != null) { String lookupComponent = element.attributeValue("lookupComponent"); if (StringUtils.isNotEmpty(lookupComponent)) { Component component = getFrame().getComponent(lookupComponent); setLookupComponent(component); } } Component lookupComponent = getLookupComponent(); if (lookupComponent instanceof LookupSelectionChangeNotifier) { LookupSelectionChangeNotifier selectionNotifier = (LookupSelectionChangeNotifier) lookupComponent; if (selectAction != null) { //noinspection unchecked selectionNotifier.addLookupValueChangeListener(valueChangeEvent -> selectAction.setEnabled(!selectionNotifier.getLookupSelectedItems().isEmpty())); selectAction.setEnabled(!selectionNotifier.getLookupSelectedItems().isEmpty()); } } }
/** * Remove extension instance. * * @param frameOwner screen or screen fragment * @param extensionClass class of the extension */ public static void remove(FrameOwner frameOwner, Class<?> extensionClass) { checkNotNullArgument(frameOwner); checkNotNullArgument(extensionClass); if (frameOwner instanceof Screen) { Screen screen = (Screen) frameOwner; Map<Class<?>, Object> extensions = screen.getExtensions(); if (extensions != null && extensions.containsKey(extensionClass)) { Map<Class<?>, Object> newExtensions = new HashMap<>(extensions); newExtensions.remove(extensionClass); screen.setExtensions(ImmutableMap.copyOf(newExtensions)); } } else if (frameOwner instanceof ScreenFragment) { ScreenFragment screen = (ScreenFragment) frameOwner; Map<Class<?>, Object> extensions = screen.getExtensions(); if (extensions != null && extensions.containsKey(extensionClass)) { Map<Class<?>, Object> newExtensions = new HashMap<>(extensions); newExtensions.remove(extensionClass); screen.setExtensions(ImmutableMap.copyOf(newExtensions)); } } }
/** * @return host screen of the fragment * @throws IllegalStateException if host screen cannot be found though hierarchy of fragments */ protected Screen getHostScreen() { FrameOwner parent = this.hostController; while (parent != null && !(parent instanceof Screen)) { parent = ((ScreenFragment) parent).getHostController(); } if (parent == null) { throw new IllegalStateException("Unable to get screen for Fragment"); } return (Screen) parent; }
public static ScreenContext getScreenContext(FrameOwner frameOwner) { if (frameOwner instanceof Screen) { return ((Screen) frameOwner).getScreenContext(); } return ((ScreenFragment) frameOwner).getScreenContext(); }
@Nonnull public static Screen getHostScreen(ScreenFragment fragment) { return fragment.getHostScreen(); }
public static ScreenData getScreenData(FrameOwner frameOwner) { if (frameOwner instanceof Screen) { return ((Screen) frameOwner).getScreenData(); } return ((ScreenFragment) frameOwner).getScreenData(); }
public static EventHub getEventHub(FrameOwner frameOwner) { if (frameOwner instanceof Screen) { return ((Screen) frameOwner).getEventHub(); } return ((ScreenFragment) frameOwner).getEventHub(); }
/** * Get optional extension instance. * * @param frameOwner screen or screen fragment * @param extensionClass class of the extension * @param <T> type of extension * @return optional extension */ public static <T> Optional<T> getOptional(FrameOwner frameOwner, Class<T> extensionClass) { checkNotNullArgument(frameOwner); checkNotNullArgument(extensionClass); if (frameOwner instanceof Screen) { Screen screen = (Screen) frameOwner; Map<Class<?>, Object> extensions = screen.getExtensions(); if (extensions != null) { return Optional.ofNullable(extensionClass.cast(extensions.get(extensionClass))); } } else if (frameOwner instanceof ScreenFragment) { ScreenFragment screen = (ScreenFragment) frameOwner; Map<Class<?>, Object> extensions = screen.getExtensions(); if (extensions != null) { return Optional.ofNullable(extensionClass.cast(extensions.get(extensionClass))); } } return Optional.empty(); }
fragmentImpl.setId(controller.getId());
ScreenFragment screen = (ScreenFragment) frameOwner; Map<Class<?>, Object> extensions = screen.getExtensions(); if (extensions == null) { screen.setExtensions(ImmutableMap.of(extensionClass, extension)); } else { Map<Class<?>, Object> newExtensions = ImmutableMap.<Class<?>, Object>builder() .put(extensionClass, extension) .build(); screen.setExtensions(newExtensions);
); targetInstance = ((ScreenFragment) frameOwner).getHostController(); break;
/** * Convenient method to perform programmatic initialization of the fragment. * * @see Fragments#init(ScreenFragment) */ public ScreenFragment init() { getScreenContext().getFragments().init(this); return this; }
@Nullable @Override public Component getComponent(String id) { return screen.getFragment().getComponent(id); } }
); eventTarget = ((ScreenFragment) frameOwner).getHostController(); break;
public static Frame getFrame(FrameOwner frameOwner) { if (frameOwner instanceof Screen) { return ((Screen) frameOwner).getWindow(); } return ((ScreenFragment) frameOwner).getFragment(); }
@Nullable public static Window getParentWindow(ScreenFragment frameOwner) { Frame frame = frameOwner.getFragment(); while (frame != null) { if (frame instanceof Window && frame.getFrame() == frame) { return (Window) frame; } frame = frame.getFrame(); } return null; }
@Nullable public static Screen getScreen(ScreenFragment frameOwner) { Frame frame = frameOwner.getFragment(); while (frame != null) { if (frame instanceof Window && frame.getFrame() == frame) { return ((Window) frame).getFrameOwner(); } frame = frame.getFrame(); } return null; }