List of usage examples for org.apache.wicket Component findParent
public final <Z> Z findParent(final Class<Z> c)
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); } }