@Test public void testAddTargetsList() { AjaxTarget target1 = new WPanel(); AjaxTarget target2 = new WPanel(); AjaxTarget target3 = new WPanel(); WAjaxControl control = new WAjaxControl(new WButton()); Assert.assertTrue("Targets should be empty", control.getTargets().isEmpty()); control.addTargets(Arrays.asList(target1, target2)); Assert.assertEquals("Incorrect targets", Arrays.asList(target1, target2), control. getTargets()); control.addTargets(Arrays.asList(target3)); Assert.assertEquals("Incorrect targets", Arrays.asList(target1, target2, target3), control. getTargets()); }
/** * Creates a PollingRegion. * * @param pollingInterval the polling interval, in milliseconds. */ public WAjaxPollingRegion(final int pollingInterval) { control = new WAjaxControl(null, this); control.setDelay(pollingInterval); control.setVisible(false); add(control); }
/** * Creates an AjaxWDropdownExample. */ public AjaxWDropdownExample() { WDropdownTriggerActionExample example = new WDropdownTriggerActionExample(); // create an ajax control that will update the region and suburb dropdowns when the state dropdown changes. WAjaxControl updateRegion = new WAjaxControl(example.getStateDropdown()); updateRegion.addTarget(example.getRegionDropdown()); updateRegion.addTarget(example.getSuburbDropdown()); // create an ajax control that will update the suburb dropdown when the region dropdown changes. WAjaxControl updateSuburb = new WAjaxControl(example.getRegionDropdown()); updateSuburb.addTarget(example.getSuburbDropdown()); add(example); add(updateRegion); add(updateSuburb); } }
/** * Flag to indicate the the AJAX trigger should be fired once only. * * @param loadOnce if <code>true</code> the target AJAX trigger only once for each load of a page */ public void setLoadOnce(final boolean loadOnce) { if (loadOnce != isLoadOnce()) { getOrCreateComponentModel().loadOnce = loadOnce; } }
/** * <p> * Set a delay period, in milliseconds, between the WAjaxControl being rendered in the view and it being * <em>automatically</em> triggered. A WAjaxControl with a delay > 0 will result in a request being made without * a change to any {@link AjaxTrigger} component. * </p> * <p> * The use of a delay may be useful for setting up a trigger which polls for changes in a part of a UI. See * {@link com.github.bordertech.wcomponents.WAjaxPollingRegion}. * </p> * <p> * If the trigger is part of a polling region (therefore it is itself updated and potentially re-triggers itself * possibly many times) then the delay <strong>must not</strong> be less than 334.</p> * * @param delay the delay after page load before AJAX control triggered */ public void setDelay(final int delay) { if (delay != getDelay()) { getOrCreateComponentModel().delay = delay; } }
WAjaxControl ajaxControl = (WAjaxControl) component; XmlStringBuilder xml = renderContext.getWriter(); WComponent trigger = ajaxControl.getTrigger() == null ? ajaxControl : ajaxControl. getTrigger(); int delay = ajaxControl.getDelay(); if (ajaxControl.getTargets() == null || ajaxControl.getTargets().isEmpty()) { return; xml.appendOptionalAttribute("loadOnce", ajaxControl.isLoadOnce(), "true"); xml.appendOptionalAttribute("delay", delay > 0, delay); xml.appendClose(); for (AjaxTarget target : ajaxControl.getTargets()) { xml.appendTagOpen("ui:ajaxtargetid"); xml.appendAttribute("targetId", target.getId());
/** * Creates an AjaxWButtonExample. */ public AjaxWButtonExample() { add(example); // make the image change an ajax request add(new WAjaxControl(example.getChangeImageButton(), example.getWImage())); } }
WPanel target2 = new WPanel(); WPanel target3 = new WPanel(); WAjaxControl control = new WAjaxControl(trigger); control.addTargets(new AjaxTarget[]{target1, target2, target3}); root); control.setLoadOnce(true); assertSchemaMatch(root); assertXpathEvaluatesTo("true", "//ui:ajaxtrigger/@loadOnce", root); control.setLoadOnce(false); assertSchemaMatch(root); assertXpathNotExists("//ui:ajaxtrigger/@loadOnce", root); control.setLoadCount(6); // any number greateer than 0... control.setDelay(1000);
/** * Construct panel. */ private MyPanel() { WAjaxControl ctrl1 = new WAjaxControl(null, this); ctrl1.setDelay(DELAY); add(ctrl1); WText text = new WText() { @Override public String getText() { return new Date().toString(); } }; add(text); WDateField date = new WDateField(); date.setDate(new Date()); date.setToolTip("another example date field"); add(date); WPanel eager = new WPanel(); eager.setMode(PanelMode.EAGER); eager.add(new WText("Eager content")); add(eager); }
ajaxPolling.setLoadOnce(true); ajaxReload.setLoadOnce(true); ajaxReload.setDelay(10); progressBarScript.setEncodeText(false); ajaxPolling.setVisible(false); ajaxReload.setVisible(false); retryButton.setVisible(false); startButton.setVisible(false);
@Test public void testAddTarget() { AjaxTarget target1 = new WPanel(); AjaxTarget target2 = new WPanel(); WAjaxControl control = new WAjaxControl(new WButton()); Assert.assertTrue("Targets should be empty", control.getTargets().isEmpty()); control.addTarget(target1); Assert.assertEquals("Incorrect targets", Arrays.asList(target1), control.getTargets()); control.addTarget(target2); Assert.assertEquals("Incorrect targets", Arrays.asList(target1, target2), control. getTargets()); }
ajax1.setIdName("jx1"); ajax2.setIdName("jx2"); ajax3.setIdName("jx3"); ajax4.setIdName("jx4"); dataEagerPanel.add(ajax4); ajax2.setDelay(1); ajax2.setVisible(false); ajax3.setDelay(1); ajax3.setVisible(false); ajax4.setDelay(1); ajax4.setVisible(false); add(ajaxPanel);
/** * Do AJAX Reload as polling stopped. */ protected void doStoppedPollingPanelReload() { pollingContainer.reset(); List<AjaxTarget> targets = getAjaxTargets(); if (targets != null && !targets.isEmpty()) { ajaxReload.addTargets(targets); } pollingContainer.setVisible(true); ajaxReload.setVisible(true); clearPollingStartTime(); }
@Test public void testLoadOnceFromDeprecatedLoadCount() { WAjaxControl control = new WAjaxControl(new WCheckBox()); Assert.assertFalse(control.isLoadOnce()); // default is false. control.setLoadCount(1); Assert.assertTrue(control.isLoadOnce()); control.setLoadCount(0); Assert.assertFalse(control.isLoadOnce()); control.setLoadCount(2); Assert.assertTrue(control.isLoadOnce()); }
/** * Disables polling. */ public void disablePoll() { control.setVisible(false); } }
@Test public void testPreparePaintComponent() { WApplication app = new WApplication(); AjaxTrigger trigger = new WButton(); AjaxTarget target = new WPanel(); WAjaxControl control = new WAjaxControl(trigger, target); app.add(control); app.add(trigger); app.add(target); app.setLocked(true); UIContext uic = createUIContext(); uic.setUI(app); setActiveContext(uic); MockRequest req = new MockRequest(); control.handleRequest(req); control.preparePaint(req); AjaxOperation ajaxOperation = AjaxHelper.getAjaxOperation(trigger.getId()); Assert.assertNotNull("Ajax operation should have been registered", ajaxOperation); Assert.assertEquals("Incorrect ajax operation trigger id", trigger.getId(), ajaxOperation. getTriggerId()); Assert.assertEquals("Incorrect ajax operation targets", target.getId(), ajaxOperation. getTargets().get(0)); }
targetColumn.add(target); control.addTarget(target); control.setVisible(false); // Ajax control not enabled by default. See applyOptions. add(control);
@Override protected void preparePaintComponent(final Request request) { super.preparePaintComponent(request); if (AjaxHelper.isCurrentAjaxTrigger(this)) { ajax4.setVisible(true); dataShim.setVisible(isLoadWDataTable()); setVisible(false); } } };
/** * Add an array of target components that should be targets for this AJAX request. * * @param targets the components to be repainted in the AJAX response */ public void addTargets(final AjaxTarget[] targets) { if (targets != null) { addTargets(Arrays.asList(targets)); } }
/** * Add a list of target components that should be targets for this AJAX request. * * @param targets the components that will be repainted for the AJAX request */ public void addTargets(final List<? extends AjaxTarget> targets) { if (targets != null) { for (AjaxTarget target : targets) { this.addTarget(target); } } }