@Nullable @Override public Component getComponent(int index) { return frame.getComponent(index); }
/** * Searches for a component by identifier, down by the hierarchy of frames. * * @param frame frame to start from * @param id component identifier * @return component instance or null if not found */ @Nullable public static Component findComponent(Frame frame, String id) { Component find = frame.getComponent(id); if (find != null) { return find; } else { for (Component c : frame.getComponents()) { if (c instanceof Frame) { Component nestedComponent = findComponent((Frame) c, id); if (nestedComponent != null) { return nestedComponent; } } } } return null; }
@Nullable @Override public Component getComponent(String id) { return frame.getComponent(id); }
@SuppressWarnings("unchecked") @Override public void setValue(String property, Object value) { final Component component = frame.getComponent(property); if (component instanceof HasValue) { ((HasValue) component).setValue(value); } else { throw new UnsupportedOperationException(); } }
@Override public void removeValueChangeListener(String componentName, Consumer<HasValue.ValueChangeEvent> listener) { Component component = frame.getComponent(componentName); if (component == null) throw new RuntimeException("Component not found: " + componentName); if (component instanceof HasValue) { ((HasValue) component).removeValueChangeListener(listener); } else if (component instanceof ListComponent) { throw new UnsupportedOperationException("List component is not supported yet"); } else { throw new RuntimeException("Unable to add listener to the component " + component); } } }
@Override public Subscription addValueChangeListener(String componentName, Consumer<HasValue.ValueChangeEvent> listener) { Component component = frame.getComponent(componentName); if (component == null) throw new RuntimeException("Component not found: " + componentName); if (component instanceof HasValue) { return ((HasValue) component).addValueChangeListener(listener); } else if (component instanceof ListComponent) { throw new UnsupportedOperationException("List component is not supported yet"); } else { throw new RuntimeException("Unable to add listener to the component " + component); } }
protected void loadPasteZone(UploadField uploadField, Element element) { String pasteZoneId = element.attributeValue("pasteZone"); if (StringUtils.isNotEmpty(pasteZoneId)) { Component pasteZone = context.getFrame().getComponent(pasteZoneId); if (pasteZone instanceof ComponentContainer) { uploadField.setPasteZone((ComponentContainer) pasteZone); } else if (pasteZone != null) { log.warn("Unsupported pasteZone class {}", pasteZone.getClass().getName()); } else { log.warn("Unable to find pasteZone component with id: {}", pasteZoneId); } } } }
protected void loadPasteZone(UploadField uploadField, Element element) { String pasteZoneId = element.attributeValue("pasteZone"); if (StringUtils.isNotEmpty(pasteZoneId)) { Component pasteZone = context.getFrame().getComponent(pasteZoneId); if (pasteZone instanceof ComponentContainer) { uploadField.setPasteZone((ComponentContainer) pasteZone); } else if (pasteZone != null) { log.warn("Unsupported pasteZone class {}", pasteZone.getClass().getName()); } else { log.warn("Unable to find pasteZone component with id: {}", pasteZoneId); } } } }
protected void loadDropZone(UploadField uploadField, Element element) { String dropZoneId = element.attributeValue("dropZone"); if (StringUtils.isNotEmpty(dropZoneId)) { Component dropZone = context.getFrame().getComponent(dropZoneId); if (dropZone instanceof BoxLayout) { uploadField.setDropZone(new UploadField.DropZone((BoxLayout) dropZone)); } else if (dropZone != null) { log.warn("Unsupported dropZone class {}", dropZone.getClass().getName()); } else { log.warn("Unable to find dropZone component with id: {}", dropZoneId); } } String dropZonePrompt = element.attributeValue("dropZonePrompt"); if (StringUtils.isNotEmpty(dropZonePrompt)) { uploadField.setDropZonePrompt(loadResourceString(dropZonePrompt)); } }
protected void loadDropZone(UploadField uploadField, Element element) { String dropZoneId = element.attributeValue("dropZone"); if (StringUtils.isNotEmpty(dropZoneId)) { Component dropZone = context.getFrame().getComponent(dropZoneId); if (dropZone instanceof BoxLayout) { uploadField.setDropZone(new UploadField.DropZone((BoxLayout) dropZone)); } else if (dropZone != null) { log.warn("Unsupported dropZone class {}", dropZone.getClass().getName()); } else { log.warn("Unable to find dropZone component with id: {}", dropZoneId); } } String dropZonePrompt = element.attributeValue("dropZonePrompt"); if (StringUtils.isNotEmpty(dropZonePrompt)) { uploadField.setDropZonePrompt(loadResourceString(dropZonePrompt)); } }
protected void loadSidePanel(SideMenu component, Element element) { String sidePanelId = element.attributeValue("sidePanel"); if (StringUtils.isNotEmpty(sidePanelId)) { Component sidePanel = resultComponent.getFrame().getComponent(sidePanelId); if (sidePanel == null) { throw new GuiDevelopmentException("Unable to find sidePanel component for SideMenu", context.getFullFrameId(), "sidePanel", sidePanelId); } component.setSidePanel(sidePanel); } }
protected void loadSidePanelToggleButton(SideMenu component, Element element) { String toggleButtonId = element.attributeValue("sidePanelToggleButton"); if (StringUtils.isNotEmpty(toggleButtonId)) { Component toggleButton = resultComponent.getFrame().getComponent(toggleButtonId); if (!(toggleButton instanceof Button)) { throw new GuiDevelopmentException("Unable to find sidePanelToggleButton for SideMenu", context.getFullFrameId(), "sidePanelToggleButton", toggleButtonId); } component.setSidePanelToggleButton((Button) toggleButton); } }
Component component = frame.getComponent(ValuePathHelper.format(subPath)); if (component != null) { if (component instanceof ActionsHolder) {
@Override public Datasource get(String id) { checkNotNullArgument(id, "Null datasource ID"); id = aliasesMap.getOrDefault(id, id); Datasource ds = null; if (!id.contains(".")) { ds = datasourceMap.get(id); if (ds == null && parent != null) { ds = parent.get(id); } } else { if (windowContext != null) { String nestedFramePath = id.substring(0, id.indexOf(".")); Component nestedFrame = getFrameContext().getFrame().getComponent(nestedFramePath); if (nestedFrame instanceof Frame) { String nestedDsId = id.substring(id.indexOf(".") + 1); FrameOwner frameOwner = ((Frame) nestedFrame).getFrameOwner(); if (frameOwner instanceof LegacyFrame) { ds = ((LegacyFrame) frameOwner).getDsContext().get(nestedDsId); } } } } return ds; }
protected InstanceContainer<T> getEditedEntityContainer() { EditedEntityContainer annotation = getClass().getAnnotation(EditedEntityContainer.class); if (annotation == null || Strings.isNullOrEmpty(annotation.value())) { throw new IllegalStateException( String.format("StandardEditor %s does not declare @EditedEntityContainer", getClass()) ); } String[] parts = annotation.value().split("\\."); ScreenData screenData; if (parts.length == 1) { screenData = getScreenData(); } else { Frame frame = getWindow(); for (int i = 0; i < parts.length - 1; i++) { String part = parts[i]; Component component = frame.getComponent(part); if (!(component instanceof Frame)) { throw new IllegalStateException("Path to EditedEntityContainer must include frames only"); } frame = (Frame) component; } screenData = UiControllerUtils.getScreenData(frame.getFrameOwner()); } return screenData.getContainer(parts[parts.length - 1]); }
protected void loadCapsLockIndicator(PasswordField component, Element element) { String capsLockIndicator = element.attributeValue("capsLockIndicator"); if (StringUtils.isNotEmpty(capsLockIndicator)) { if (component.getCapsLockIndicator() == null) { Component bindComponent = component.getFrame().getComponent(capsLockIndicator); if (!(bindComponent instanceof CapsLockIndicator)) { throw new GuiDevelopmentException("Specify 'capsLockIndicator' attribute: id of " + "CapsLockIndicator component", context.getFullFrameId(), "componentId", component .getId()); } component.setCapsLockIndicator((CapsLockIndicator) bindComponent); } } }
@Nullable protected Object findInstallTarget(String target, Frame frame) { String[] elements = ValuePathHelper.parse(target); if (elements.length == 1) { Object part = frame.getSubPart(target); if (part != null) { return part; } Component component = frame.getComponent(target); if (component != null) { return component; } } else if (elements.length > 1) { String id = elements[elements.length - 1]; String[] subPath = ArrayUtils.subarray(elements, 0, elements.length - 1); Component component = frame.getComponent(ValuePathHelper.format(subPath)); if (component != null) { if (component instanceof HasSubParts) { Object part = ((HasSubParts) component).getSubPart(id); if (part != null) { return part; } } if (component instanceof ComponentContainer) { return ((ComponentContainer) component).getComponent(id); } } } return null; }
@Nullable public static Component getFrameComponent(Frame frame, String id) { FrameImplementation frameImpl = (FrameImplementation) frame; String[] elements = ValuePathHelper.parse(id); if (elements.length == 1) { Component component = frameImpl.getRegisteredComponent(id); if (component == null && frame.getFrame() != null && frame.getFrame() != frame) { component = frame.getFrame().getComponent(id); } return component; } else { Component innerComponent = frameImpl.getRegisteredComponent(elements[0]); if (innerComponent instanceof FieldGroup) { List<String> subList = Arrays.asList(elements).subList(1, elements.length); String subPath = ValuePathHelper.format(subList.toArray(new String[0])); FieldGroup fieldGroup = (FieldGroup) innerComponent; FieldGroup.FieldConfig field = fieldGroup.getField(subPath); return field != null ? field.getComponent() : null; } else if (innerComponent instanceof ComponentContainer) { List<String> subList = Arrays.asList(elements).subList(1, elements.length); String subPath = ValuePathHelper.format(subList.toArray(new String[0])); return ((ComponentContainer) innerComponent).getComponent(subPath); } else if (innerComponent instanceof HasNamedComponents) { List<String> subList = Arrays.asList(elements).subList(1, elements.length); String subPath = ValuePathHelper.format(subList.toArray(new String[0])); return ((HasNamedComponents) innerComponent).getComponent(subPath); } return null; } }
Table propertiesTable = (Table) entityTree.getFrame().getComponent("propertiesTable"); if (propertiesTable != null) { propertiesTable.setSelected(regionProperty);
@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()); } } }