Example usage for org.apache.wicket Component findParent

List of usage examples for org.apache.wicket Component findParent

Introduction

In this page you can find the example usage for org.apache.wicket Component findParent.

Prototype

public final <Z> Z findParent(final Class<Z> c) 

Source Link

Document

Finds the first container parent of this component of the given class.

Usage

From source file:com.servoy.j2db.server.headlessclient.WebClientsApplication.java

License:Open Source License

@Override
protected IRequestCycleProcessor newRequestCycleProcessor() {
    return new UrlCompressingWebRequestProcessor() {
        @Override/*from  w  w w .  j a  v a  2 s  .  c o  m*/
        public void respond(RequestCycle requestCycle) {
            // execute events from WebClient.invokeLater() before the respond (render) is started
            Session session = Session.get();
            if (session instanceof WebClientSession && ((WebClientSession) session).getWebClient() != null) {
                ((WebClientSession) session).getWebClient().executeEvents();
            }

            super.respond(requestCycle);
        }

        /**
         * @see wicket.protocol.http.WebRequestCycleProcessor#newRequestCodingStrategy()
         */
        @Override
        protected IRequestCodingStrategy newRequestCodingStrategy() {
            Settings settings = Settings.getInstance();
            if (Utils.getAsBoolean(settings.getProperty("servoy.webclient.crypt-urls", "true"))) //$NON-NLS-1$ //$NON-NLS-2$
            {
                return new ServoyCryptedUrlWebRequestCodingStrategy(new UrlCompressingWebCodingStrategy());
            } else {
                return new UrlCompressingWebCodingStrategy();
            }
        }

        @Override
        protected IRequestTarget resolveListenerInterfaceTarget(RequestCycle requestCycle, Page page,
                String componentPath, String interfaceName, RequestParameters requestParameters) {
            try {
                IRequestTarget requestTarget = super.resolveListenerInterfaceTarget(requestCycle, page,
                        componentPath, interfaceName, requestParameters);
                if (requestTarget instanceof BehaviorRequestTarget) {
                    Component target = ((BehaviorRequestTarget) requestTarget).getTarget();
                    if (!(target instanceof Page)) {
                        boolean invalidPage = false;
                        Page page2 = null;
                        try {
                            page2 = target.findParent(Page.class); // test if it has a page.
                        } catch (Exception e) {
                            Debug.trace(e);
                            invalidPage = true;
                        }
                        if (page2 == null || !page2.getId().equals(page.getId())) {
                            invalidPage = true;
                        }

                        if (invalidPage) {
                            Debug.log(
                                    "Couldn't resolve the page of the component, component already gone from page? returning empty"); //$NON-NLS-1$
                            return EmptyRequestTarget.getInstance();
                        }
                    }
                }
                return requestTarget;
            } catch (Exception e) {
                Debug.log("couldnt resolve interface, component page already gone from page? returning empty"); //$NON-NLS-1$
            }
            return EmptyRequestTarget.getInstance();
        }

        @Override
        public IRequestTarget resolve(final RequestCycle requestCycle,
                final RequestParameters requestParameters) {
            try {
                return super.resolve(requestCycle, requestParameters);
            } catch (PageExpiredException e) {
                // if there is a page expired exception
                // then ignore it if there is a current form.
                Debug.trace("Page expired, checking for a current form"); //$NON-NLS-1$
                Request request = requestCycle.getRequest();
                if (request instanceof WebRequest && ((WebRequest) request).isAjax()
                        && requestParameters.isOnlyProcessIfPathActive()) {
                    Debug.trace("Page expired, it is an ajan/process only if active request"); //$NON-NLS-1$
                    Session session = Session.get();
                    if (session instanceof WebClientSession
                            && ((WebClientSession) session).getWebClient() != null) {
                        WebClient webClient = ((WebClientSession) session).getWebClient();
                        if (webClient.getFormManager().getCurrentForm() != null) {
                            Debug.trace("Page expired, there is a current form, ignore this ajax request"); //$NON-NLS-1$
                            return EmptyAjaxRequestTarget.getInstance();
                        }
                    }
                }
                throw e;
            }
        }
    };
}

From source file:com.servoy.j2db.server.headlessclient.WebForm.java

License:Open Source License

/**
 * @param id/*from   www  .j av a  2 s.  c  o  m*/
 */
public WebForm(final FormController controller) {
    super("webform"); //$NON-NLS-1$
    markedEnabledComponents = new ArrayList<Component>();
    TabIndexHelper.setUpTabIndexAttributeModifier(this, ISupportWebTabSeq.SKIP);
    this.variation = "form::" + controller.getForm().getSolution().getName() + ":" + controller.getName() //$NON-NLS-1$//$NON-NLS-2$
            + "::form"; //$NON-NLS-1$
    this.formController = controller;
    final IFormLayoutProvider layoutProvider = FormLayoutProviderFactory.getFormLayoutProvider(
            formController.getApplication(), formController.getApplication().getSolution(),
            formController.getForm(), formController.getName());
    TextualStyle panelStyle = layoutProvider.getLayoutForForm(0, false, true); // custom navigator is dropped inside tab panel.
    add(new StyleAppendingModifier(panelStyle) {
        @Override
        public boolean isEnabled(Component component) {
            // jquery accordion will handle the layout styling, cannot set our style
            return ((component.findParent(IWebFormContainer.class) != null)
                    && !(component.findParent(IWebFormContainer.class) instanceof WebAccordionPanel));
        }
    });

    add(new StyleAppendingModifier(new Model<String>() {
        private static final long serialVersionUID = 1L;

        @Override
        public String getObject() {
            IWebFormContainer container = findParent(IWebFormContainer.class);
            if (container != null && !(container instanceof WebAccordionPanel)
                    && container.getBorder() instanceof TitledBorder) {
                int offset = ComponentFactoryHelper.getTitledBorderHeight(container.getBorder());
                return "top: " + offset + "px;";
            }

            return "";
        }
    }));

    container = new WebMarkupContainer("servoywebform") //$NON-NLS-1$
    {
        @Override
        protected void onComponentTagBody(MarkupStream markupStream, ComponentTag openTag) {
            if (getBorder() instanceof TitledBorder) {
                getResponse().write(WebBaseButton.getTitledBorderOpenMarkup((TitledBorder) getBorder()));
            }
            super.onComponentTagBody(markupStream, openTag);
            if (getBorder() instanceof TitledBorder) {
                getResponse().write(WebBaseButton.getTitledBorderCloseMarkup());
            }
        }
    };
    container.add(new StyleAppendingModifier(new Model<String>() {
        private static final long serialVersionUID = 1L;

        @Override
        public String getObject() {
            IWebFormContainer tabpanel = findParent(IWebFormContainer.class);
            if (tabpanel != null) {
                return "min-width:0px;min-height:0px;";
            }
            return null;
        }
    }));
    //      container.add(new StyleAppendingModifier(new Model<String>()
    //      {
    //         private static final long serialVersionUID = 1L;
    //
    //         @Override
    //         public String getObject()
    //         {
    //            int offset = ((TitledBorder)getBorder()).getTitleFont().getSize() + 4;//add legend height
    //            return "top: " + offset + "px;";
    //         }
    //      })
    //      {
    //         @Override
    //         public boolean isEnabled(Component component)
    //         {
    //            if (getBorder() instanceof TitledBorder)
    //            {
    //               return super.isEnabled(component);
    //            }
    //            return false;
    //         }
    //      });
    // we need to explicitly make the form transparent, to override the
    // white color from the default CSS (the #webform class)
    // case 349263
    add(new StyleAppendingModifier(new Model<String>() {
        private static final long serialVersionUID = 1L;

        @Override
        public String getObject() {
            // in case of dialogs, tab/split/... panel, popup form (from window plugin), this component must
            // also have proper rounded border and transparency when needed (it's style can be tweaked from overridden default styles
            // see TemplateGenerator - bkcolor white)
            String styleAddition = "";
            if (getBorder() instanceof RoundedBorder) {
                float[] radius = ((RoundedBorder) getBorder()).getRadius();
                StringBuilder builder = new StringBuilder();
                builder.append("border-radius:");
                for (int i = 0; i < 8; i++) {
                    builder.append(radius[i]);
                    builder.append("px ");
                    if (i == 3)
                        builder.append("/ ");
                }
                builder.append(";");
                styleAddition = builder.toString();
            }
            IStyleRule formStyle = controller.getFormStyle();
            boolean hasSemiTransparentBackground = false;
            if (formStyle != null && formStyle.hasAttribute(CSSName.BACKGROUND_COLOR.toString()) && formStyle
                    .getValue(CSSName.BACKGROUND_COLOR.toString()).contains(PersistHelper.COLOR_RGBA_DEF))
                hasSemiTransparentBackground = true;
            if (controller.getForm().getTransparent() || hasSemiTransparentBackground) {
                styleAddition += "background:transparent;"; //$NON-NLS-1$
            }
            return styleAddition;
        }
    }));
    add(new AttributeAppender("class", new Model<String>() {
        private static final long serialVersionUID = 1332637522687352873L;

        @Override
        public String getObject() {
            return "yui-skin-sam";
        }
    }, " ") {
        @Override
        public boolean isEnabled(Component component) {
            return (component instanceof WebForm && ((WebForm) component).isDesignMode());
        }
    });

    add(hiddenBeforeShow);
    hiddenBeforeShow.setEnabled(false);
    // set fixed markup id so that element can always be found by markup id
    container.setOutputMarkupId(true);
    container.setMarkupId("form_" + ComponentFactory.stripIllegalCSSChars(formController.getName())); // same as in template generator //$NON-NLS-1$
    TabIndexHelper.setUpTabIndexAttributeModifier(container, ISupportWebTabSeq.SKIP);
    add(container);
    readonly = false;
    enabled = true;
    setOutputMarkupId(true);
}

From source file:com.wiquery.plugins.jqgrid.component.XMLDataRequestTarget.java

License:Apache License

/**
 * @see org.apache.wicket.IRequestTarget#detach(org.apache.wicket.RequestCycle)
 *///from  w  w w  .j  a v  a 2  s  . c  om
public void detach(final RequestCycle requestCycle) {
    // detach the page if it was updated
    if (markupIdToComponent.size() > 0) {
        final Component component = markupIdToComponent.values().iterator().next();
        final Page page = component.findParent(Page.class);
        if (page != null) {
            page.detach();
        }
    }
}

From source file:com.wiquery.plugins.jqgrid.component.XMLDataRequestTarget.java

License:Apache License

/**
 * /*from   www .  j  a  v  a2  s  .  c  o  m*/
 * @param response
 * @param markupId
 *            id of client-side dom element
 * @param component
 *            component to render
 */
private void respondComponent(final Response response, final String markupId, final Component component,
        StringBuffer writer) {
    if (component.getRenderBodyOnly() == true) {
        throw new IllegalStateException(
                "Ajax render cannot be called on component that has setRenderBodyOnly enabled. Component: "
                        + component.toString());
    }

    component.setOutputMarkupId(true);

    // substitute our encoding response for the real one so we can capture
    // component's markup in a manner safe for transport inside CDATA block
    final Response originalResponse = response;
    encodingBodyResponse.reset();
    RequestCycle.get().setResponse(encodingBodyResponse);

    // Initialize temporary variables
    final Page page = component.findParent(Page.class);
    if (page == null) {
        // dont throw an exception but just ignore this component, somehow
        // it got
        // removed from the page.
        // throw new IllegalStateException(
        // "Ajax request attempted on a component that is not associated
        // with a Page");
        LOG.debug("component: " + component + " with markupid: " + markupId
                + " not rendered because it was already removed from page");
        return;
    }

    page.startComponentRender(component);

    try {
        component.prepareForRender();

        // render any associated headers of the component
        respondHeaderContribution(response, component, writer);
    } catch (RuntimeException e) {
        try {
            component.afterRender();
        } catch (RuntimeException e2) {
            // ignore this one could be a result off.
        }
        // Restore original response
        RequestCycle.get().setResponse(originalResponse);
        encodingBodyResponse.reset();
        throw e;
    }

    try {
        component.renderComponent();
    } catch (RuntimeException e) {
        RequestCycle.get().setResponse(originalResponse);
        encodingBodyResponse.reset();
        throw e;
    }

    page.endComponentRender(component);

    // Restore original response
    RequestCycle.get().setResponse(originalResponse);

    writer.append("<component id=\"");
    writer.append(markupId);
    writer.append("\" ");
    if (encodingBodyResponse.isContentsEncoded()) {
        writer.append(" encoding=\"");
        writer.append(getEncodingName());
        writer.append("\" ");
    }
    writer.append("><![CDATA[");
    writer.append(encodingBodyResponse.getContents());
    writer.append("]]></component>");

    encodingBodyResponse.reset();
}

From source file:hsa.awp.usergui.util.DragAndDropableBox.java

License:Open Source License

/**
 * General construcktor which has a limit and an initial list.
 *
 * @param id         Wicket id//w  w w. ja v  a  2  s  .  c  om
 * @param events     initial list of events
 * @param maxEntries element limit.
 */
public DragAndDropableBox(String id, List<Event> events, final int maxEntries) {

    super(id);
    this.setOutputMarkupId(true);

    if (maxEntries > 0) {
        this.maxEntries = maxEntries;
    } else {
        this.maxEntries = Integer.MAX_VALUE;
    }
    if (events != null) {
        if (events.size() >= this.maxEntries) {
            throw new RuntimeException(
                    "wrong DragAndDropableBox usage eventlist bigger than displayable elements");
        } else {
            elements = new LinkedList<DragableElement>();
            for (Event event : events) {
                elements.add(new DragableElement(DRAG_AND_DROPABLE_BOX_ITEM, event, true));
            }
        }
    } else {
        this.elements = new LinkedList<DragableElement>();
    }

    DraggableTarget box = new DraggableTarget("dragAndDropableBox.box") {
        /**
         *
         */
        private static final long serialVersionUID = 1L;

        @Override
        protected void onDrop(Component comp, AjaxRequestTarget target) {

            DragableElement element = null;
            try {
                element = (DragableElement) comp.findParent(DragableElement.class);
                AbstractPriorityListSelector prioListSel = findParent(AbstractPriorityListSelector.class);
                if (!listContainsElement(elements, element)
                        && elements.size() < DragAndDropableBox.this.maxEntries) {
                    DragAndDropableBox ddb = prioListSel.getSourceBox();
                    if (ddb.getComponentId() == prioListSel.getDropBoxElementId(element))
                        elements.add(element);

                    //            if (ddb != null) {
                    //              ddb.removeElementFromList(element, target);
                    //            }
                    AbstractDragAndDrop dsb = element.findParent(AbstractDragAndDrop.class);

                    if (dsb != null) {
                        boolean isLastElement = dsb.removeItem(element, target);
                        if (isLastElement) {
                            DragAndDropableBox.this
                                    .add(new SimpleAttributeModifier("style", "background-color: #ffffff"));
                        }
                    }
                }
                prioListSel.updateLists(target);
            } catch (ClassCastException e) {
                e.printStackTrace();
            } catch (NullPointerException e) {
                e.printStackTrace();
            }
        }
    };
    if (this.maxEntries != Integer.MAX_VALUE) {
        box.add(new AttributeAppender("class", new Model<String>("priolist"), " "));
    } else {
        box.add(new AttributeAppender("class", new Model<String>("selector"), " "));
    }

    box.add(new ListView<DragableElement>("dragAndDropableBox.list", elements) {
        /**
         *
         */
        private static final long serialVersionUID = 8736299534177286367L;

        @Override
        protected void populateItem(ListItem<DragableElement> item) {

            item.add(new DragableElement(DRAG_AND_DROPABLE_BOX_ITEM, item.getModelObject().getEvent()));
        }
    });

    add(box);
}

From source file:jp.xet.uncommons.wicket.gp.StatelessAjaxFormSubmitBehavior.java

License:Apache License

/**
 * Finds form that will be submitted//from  www. j a  v a  2 s .c o m
 * 
 * @return form to submit or {@code null} if none found
 */
protected Form<?> findForm() {
    // try to find form in the hierarchy of owning component
    Component component = getComponent();
    if (component instanceof Form<?>) {
        return (Form<?>) component;
    } else {
        return component.findParent(Form.class);
    }
}

From source file:name.martingeisse.wicket.component.stateless.StatelessAjaxFormSubmitBehavior.java

License:Apache License

/**
 * Finds form that will be submitted//from ww  w  .j a  v  a  2 s  .  c  om
 * 
 * @return form to submit or {@code null} if none found
 */
protected Form<?> findForm() {
    // try to find form in the hierarchy of owning component
    final Component component = getComponent();
    if (component instanceof Form<?>) {
        return (Form<?>) component;
    } else {
        return component.findParent(Form.class);
    }
}

From source file:org.artifactory.common.wicket.component.modal.ModalHandler.java

License:Open Source License

public static ModalHandler getInstanceFor(Component component) {
    HasModalHandler container;//from  ww w  .j  a  v a 2 s  .c om
    if (component instanceof HasModalHandler) {
        container = (HasModalHandler) component;
    } else {
        container = component.findParent(HasModalHandler.class);
    }

    return container.getModalHandler();
}

From source file:org.brixcms.plugin.hierarchical.HierarchicalNodePlugin.java

License:Apache License

private NodeTreeParentComponent findContainer(Component component) {
    if (component instanceof NodeTreeParentComponent) {
        return (NodeTreeParentComponent) component;
    } else {/* w  w w.ja  v  a  2  s  .c o m*/
        return component.findParent(NodeTreeParentComponent.class);
    }
}

From source file:org.brixcms.plugin.site.SitePlugin.java

License:Apache License

private NodeTreeContainer findContainer(Component component) {
    if (component instanceof NodeTreeContainer) {
        return (NodeTreeContainer) component;
    } else {/*  w ww.  ja  v a  2s  . c  o m*/
        return component.findParent(NodeTreeContainer.class);
    }
}