Example usage for org.apache.wicket.ajax AbstractAjaxTimerBehavior AbstractAjaxTimerBehavior

List of usage examples for org.apache.wicket.ajax AbstractAjaxTimerBehavior AbstractAjaxTimerBehavior

Introduction

In this page you can find the example usage for org.apache.wicket.ajax AbstractAjaxTimerBehavior AbstractAjaxTimerBehavior.

Prototype

public AbstractAjaxTimerBehavior(final Duration updateInterval) 

Source Link

Document

Construct.

Usage

From source file:com.mycompany.PanelOne.java

License:Apache License

@Override
void initForm() {
    form.add(new AbstractAjaxTimerBehavior(Duration.seconds(5)) {
        @Override//from ww  w.  j av  a 2s.  c  om
        protected void onTimer(AjaxRequestTarget target) {
            PanelTwo two = new PanelTwo("panel");
            //wmc.addOrReplace(two);
            //PanelOne.this.replaceWith(two);
            target.add(two);
        }
    });
}

From source file:com.mycompany.RunAwayTextPage.java

License:Apache License

private AjaxEventBehavior getRollEvent() {
    return new AjaxEventBehavior("onMouseOver") {
        @Override//  ww  w  . ja v  a2 s .  co m
        protected void onEvent(AjaxRequestTarget target) {
            Component comp = this.getComponent();
            comp.remove(this);
            comp.add(new AbstractAjaxTimerBehavior(Duration.milliseconds(20)) {
                @Override
                protected void onTimer(AjaxRequestTarget target) {
                    Component comp = this.getComponent();
                    comp.setDefaultModel(new Model<String>(view.get(part)));
                    part++;
                    if (view.size() <= part) {
                        stop();
                        part = 0;
                        comp.remove(this);
                        comp.add(getRollEvent());
                    }
                    target.add(comp);
                }
            });
            target.add(comp);
        }
    };
}

From source file:com.mycompany.TimerPage.java

License:Apache License

public TimerPage() {
    //        final Label timerLabel = new Label("timer",
    //                new AbstractReadOnlyModel<String>() {
    //                    @Override
    //                    public String getObject() {
    //                        SimpleDateFormat formatter =
    //                                new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
    //                        return formatter.format(new Date());
    //                    }
    //                });
    //        timerLabel.setOutputMarkupId(true);
    //        add(timerLabel);
    //        add(new Image("indicator", AbstractDefaultAjaxBehavior.INDICATOR));
    ////from w w  w  . ja  v  a  2s  . c o m
    //        WebMarkupContainer div = new WebMarkupContainer("dummy");
    //        div.add(new AbstractAjaxTimerBehavior(Duration.seconds(5)) {
    //            @Override
    //            protected void onTimer(AjaxRequestTarget target) {
    //                target.add(timerLabel);
    //            }
    //        });
    //        add(div);
    final String nowTime = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(new Date());
    final Label timerLabel = new Label("timer", nowTime);
    timerLabel.setOutputMarkupId(true);
    add(timerLabel);
    add(new Image("indicator", AbstractDefaultAjaxBehavior.INDICATOR));

    WebMarkupContainer div = new WebMarkupContainer("dummy");
    div.add(new AbstractAjaxTimerBehavior(Duration.seconds(5)) {
        @Override
        protected void onTimer(AjaxRequestTarget target) {
            timerLabel.setDefaultModel(
                    new Model<String>(new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(new Date())));
            target.add(timerLabel);
        }
    });
    add(div);
}

From source file:com.norconex.jefmon.instance.InstancePanel.java

License:Apache License

public InstancePanel(String id) {
    super(id);/*from  w  w  w  . j  a  v a 2 s.c om*/

    WebMarkupContainer treeDialogWrapper = new WebMarkupContainer(TREE_DIALOG_WRAPPER_ID);
    treeDialogWrapper.add(new Label(TREE_DIALOG_ID));
    treeDialogWrapper.setOutputMarkupId(true);
    add(treeDialogWrapper);

    add(new Label("name", getJEFMonConfig().getInstanceName()));

    final JobTreeProvider provider = new JobTreeProvider(getJobSuitesStatusesMonitor());

    IModel<Set<JobStatusTreeNode>> state = new SetModel<JobStatusTreeNode>(new HashSet<JobStatusTreeNode>());
    final AbstractTree<JobStatusTreeNode> tree = createTree(provider, state);
    add(tree);

    add(new InstanceToolbar("toolbar", tree));

    add(new AbstractAjaxTimerBehavior(Duration.seconds(getJEFMonConfig().getDefaultRefreshInterval())) {
        private static final long serialVersionUID = -8417817690758833175L;

        @Override
        protected void onTimer(AjaxRequestTarget target) {
            target.add(tree);
        }
    });
}

From source file:com.norconex.jefmon.instances.InstancesPanel.java

License:Apache License

@Override
protected void onInitialize() {
    super.onInitialize();
    setOutputMarkupId(true);//  www.  ja  v  a2  s. c  om

    instancesTable = new WebMarkupContainer("instancesTable") {
        private static final long serialVersionUID = -4821257755526779662L;

        @Override
        protected void onBeforeRender() {
            addOrReplace(createDataView());
            super.onBeforeRender();
        }
    };
    instancesTable.setOutputMarkupId(true);
    add(instancesTable);

    add(new AbstractAjaxTimerBehavior(Duration.seconds(getJEFMonConfig().getDefaultRefreshInterval())) {
        private static final long serialVersionUID = -4652378407644216362L;

        @Override
        protected void onTimer(AjaxRequestTarget target) {
            target.add(instancesTable);
        }
    });

    AddInstanceDialog dialog = new AddInstanceDialog("addInstanceDialog") {
        private static final long serialVersionUID = 1405966469655005795L;

        @Override
        protected void onSubmit(AjaxRequestTarget target, String url) {
            InstancesManager.addInstance(url);
            target.add(instancesTable);
        }
    };
    add(dialog);

    WebMarkupContainer addButton = new WebMarkupContainer("addInstance");
    addButton.add(new BootstrapModalLauncher(dialog));
    add(addButton);
}

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

License:Open Source License

@SuppressWarnings("nls")
private void init(WebClient sc) {
    setStatelessHint(false);//  w  ww. ja  v a2 s  .  co m
    client = sc;
    webForms = new ArrayList<IFormUIInternal<?>>();

    title = new Label("title", new Model<String>("Servoy Web Client")); //$NON-NLS-1$ //$NON-NLS-2$
    title.setOutputMarkupId(true);
    add(title);

    useAJAX = Utils.getAsBoolean(client.getRuntimeProperties().get("useAJAX")); //$NON-NLS-1$
    int dataNotifyFrequency = Utils
            .getAsInteger(sc.getSettings().getProperty("servoy.webclient.datanotify.frequency", "5")); //$NON-NLS-1$  //$NON-NLS-2$
    if (dataNotifyFrequency > 0 && useAJAX) {
        add(new AbstractAjaxTimerBehavior(Duration.seconds(dataNotifyFrequency)) {
            private static final long serialVersionUID = 1L;

            @Override
            protected void onTimer(AjaxRequestTarget target) {
                if (isServoyEnabled() && !client.getFlattenedSolution().isInDesign(null)
                        && String.valueOf(MainPage.this.getCurrentVersionNumber())
                                .equals(RequestCycle.get().getRequest().getParameter("pvs"))) {
                    WebEventExecutor.generateResponse(target, MainPage.this);
                }
            }

            @Override
            public void renderHead(IHeaderResponse response) {
                if (isServoyEnabled()) {
                    super.renderHead(response);

                    String jsTimerScript = getJsTimeoutCall(getUpdateInterval());
                    response.renderJavascript("function restartTimer() {" + jsTimerScript + "}", //$NON-NLS-1$//$NON-NLS-2$
                            "restartTimer"); //$NON-NLS-1$
                }
            }

            @Override
            protected CharSequence getPreconditionScript() {
                return "onAjaxCall(); if(Servoy.DD.isDragging) Servoy.DD.isRestartTimerNeeded=true; return !Servoy.DD.isDragging && !Servoy.redirectingOnSolutionClose;"; //$NON-NLS-1$
            }

            @Override
            protected CharSequence getFailureScript() {
                return "onAjaxError();restartTimer();"; //$NON-NLS-1$
            }

            @Override
            protected CharSequence getCallbackScript() {
                // if it is not enabled then just return an empty function. so that the timer stops.
                if (isServoyEnabled()) {
                    return generateCallbackScript("wicketAjaxGet('" + //$NON-NLS-1$
                    getCallbackUrl(onlyTargetActivePage()) + "&ignoremp=true&pvs=" //$NON-NLS-1$
                            + MainPage.this.getCurrentVersionNumber() + "'");
                }
                return "Servoy.Utils.nop()";
            }

            @Override
            public CharSequence getCallbackUrl(boolean onlyTargetActivePage) {
                if (getComponent() == null) {
                    throw new IllegalArgumentException(
                            "Behavior must be bound to a component to create the URL"); //$NON-NLS-1$
                }
                return getComponent().urlFor(this, AlwaysLastPageVersionRequestListenerInterface.INTERFACE);
            }

            @Override
            protected String findIndicatorId() {
                return null; // main page defines it and the timer shouldnt show it
            }

            /*
             * this can't be isEnabled(component) of the behavior itself because IE8 will constant call this on closed (modal)windows. So then this is
             * marked as disabled and an AbortException is thrown what our code sees as a server error and will constantly restart the timer.
             */
            private boolean isServoyEnabled() {
                return ((getController() != null && getController().isFormVisible()) || closingAsWindow);
            }

        });

    }
    add(new TriggerOrientationChangeAjaxBehavior());
    add(new TriggerResizeAjaxBehavior());

    add(new AbstractServoyLastVersionAjaxBehavior() {
        @Override
        protected void execute(AjaxRequestTarget target) {
            for (ServoyDivDialog divDialog : divDialogs.getOrderedByOpenSequence()) {
                if (!divDialog.isShown()) {
                    // this means a refresh was probably triggered and we must re-show these... because we do not keep closed dialogs in divDialogs
                    int x = divDialog.getX();
                    int y = divDialog.getY();
                    int w = divDialog.getWidth();
                    int h = divDialog.getHeight();
                    divDialog.show(target, null);
                    divDialog.setBounds(target, x, y, w, h, null);
                }
            }
            WebEventExecutor.generateResponse(target, MainPage.this);
        }

        @Override
        public void renderHead(IHeaderResponse response) {
            super.renderHead(response);
            response.renderOnDomReadyJavascript(getCallbackScript(true).toString());
        }

        @Override
        public boolean isEnabled(Component component) {
            return divDialogs.size() > 0 && super.isEnabled(component);
        }
    });

    body = new WebMarkupContainer("servoy_page") //$NON-NLS-1$
    {
        private static final long serialVersionUID = 1L;

        /**
         * @see org.apache.wicket.Component#onComponentTag(org.apache.wicket.markup.ComponentTag)
         */
        @Override
        protected void onComponentTag(ComponentTag tag) {
            super.onComponentTag(tag);
            tag.putAll(bodyAttributes);
        }
    };
    body.add(new AttributeModifier("dir", true, new AbstractReadOnlyModel<String>() //$NON-NLS-1$
    {

        @Override
        public String getObject() {
            String value = AttributeModifier.VALUELESS_ATTRIBUTE_REMOVE;
            Locale l = client.getLocale();
            Solution solution = client.getSolution();

            if (solution != null && l != null) {
                value = OrientationApplier.getHTMLContainerOrientation(l, solution.getTextOrientation());
            }
            return value;
        }
    }));

    add(body);
    pageContributor = new PageContributor(client, "contribution");
    body.add(pageContributor);

    Label loadingIndicator = new Label("loading_indicator", sc.getI18NMessage("servoy.general.loading"));
    loadingIndicator.add(new SimpleAttributeModifier("style", "display:none;"));

    body.add(loadingIndicator);
    divDialogsParent = new WebMarkupContainer(DIV_DIALOGS_REPEATER_PARENT_ID);
    divDialogsParent.setOutputMarkupPlaceholderTag(true);
    divDialogsParent.setVisible(false);
    body.add(divDialogsParent);

    if (useAJAX) {
        add(new TriggerUpdateAjaxBehavior()); // for when another page needs to trigger an ajax update on this page using js (see media upload)

        divDialogRepeater = new RepeatingView(DIV_DIALOG_REPEATER_ID);
        divDialogsParent.add(divDialogRepeater);

        fileUploadWindow = new ServoyDivDialog(FILE_UPLOAD_DIALOG_ID);
        body.add(fileUploadWindow);
        fileUploadWindow.setModal(true);
        fileUploadWindow.setPageMapName(null);
        fileUploadWindow.setCookieName("dialog_fileupload");
        fileUploadWindow.setResizable(true);
        fileUploadWindow.setInitialHeight(150);
        fileUploadWindow.setInitialWidth(400);
        fileUploadWindow.setMinimalHeight(130);
        fileUploadWindow.setMinimalWidth(400);
        fileUploadWindow.setUseInitialHeight(true); // no effect, can be removed
        fileUploadWindow.setPageCreator(new ModalWindow.PageCreator() {
            private static final long serialVersionUID = 1L;

            public Page createPage() {
                return new MediaUploadPage(PageMap.forName(FILE_UPLOAD_PAGEMAP), mediaUploadCallback,
                        mediaUploadMultiSelect, getController().getApplication());
            }
        });
        fileUploadWindow.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
            private static final long serialVersionUID = 1L;

            public void onClose(AjaxRequestTarget target) {
                divDialogs.remove(FILE_UPLOAD_PAGEMAP);
                fileUploadWindow.setPageMapName(null);
                fileUploadWindow.remove(fileUploadWindow.getContentId());
                restoreFocusedComponentInParentIfNeeded();
                WebEventExecutor.generateResponse(target, findPage());
            }
        });
    } else {
        divDialogsParent.add(new Label("divdialogs"));
        body.add(new Label("fileuploaddialog")); //$NON-NLS-1$
    }

    IModel<String> styleHrefModel = new AbstractReadOnlyModel<String>() {
        private static final long serialVersionUID = 1L;

        @Override
        public String getObject() {
            if (main != null) {
                return getRequest().getRelativePathPrefixToContextRoot() + "servoy-webclient/templates/" + //$NON-NLS-1$
                client.getClientProperty(WEBCONSTANTS.WEBCLIENT_TEMPLATES_DIR)
                        + "/servoy_web_client_default.css"; //$NON-NLS-1$
            }
            return null;
        }
    };
    Label main_form_style = new Label("main_form_style"); //$NON-NLS-1$
    main_form_style.add(new AttributeModifier("href", true, styleHrefModel)); //$NON-NLS-1$
    add(main_form_style);

    IModel<List<IFormUIInternal<?>>> loopModel = new AbstractReadOnlyModel<List<IFormUIInternal<?>>>() {
        private static final long serialVersionUID = 1L;

        @Override
        public List<IFormUIInternal<?>> getObject() {
            return webForms;
        }
    };

    listview = new ListView<IFormUIInternal<?>>("forms", loopModel) //$NON-NLS-1$
    {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(ListItem<IFormUIInternal<?>> item) {
            final WebForm form = (WebForm) item.getModelObject();
            tempRemoveMainForm = true;
            try {
                if (form.getParent() != null) {
                    form.remove(); // TODO isn't this already done by item.add(form) below in wicket's impl?
                }
                item.add(form);
            } finally {
                tempRemoveMainForm = false;
            }

            IFormLayoutProvider layoutProvider = FormLayoutProviderFactory.getFormLayoutProvider(client,
                    client.getSolution(), form.getController().getForm(), form.getController().getName());

            TextualStyle styleToReturn = null;

            if ((navigator != null) && (form == navigator.getFormUI())) {
                styleToReturn = layoutProvider.getLayoutForForm(navigator.getForm().getSize().width, true,
                        false);
            } else if (form == main) {
                int customNavWidth = 0;
                if (navigator != null)
                    customNavWidth = navigator.getForm().getSize().width;
                styleToReturn = layoutProvider.getLayoutForForm(customNavWidth, false, false);
            }
            if (styleToReturn != null) {
                form.add(new StyleAppendingModifier(styleToReturn) {
                    @Override
                    public boolean isEnabled(Component component) {
                        // Laurian: looks like bogus condition, shouldn't this be || as in WebForm ?
                        return (component.findParent(WebTabPanel.class) == null)
                                && (component.findParent(WebSplitPane.class) == null);
                    }
                });
            }
            TabIndexHelper.setUpTabIndexAttributeModifier(item, ISupportWebTabSeq.SKIP);
        }

        @Override
        protected ListItem<IFormUIInternal<?>> newItem(final int index) {
            return new ListItem<IFormUIInternal<?>>(index, getListItemModel(getModel(), index)) {
                @Override
                public void remove(Component component) {
                    super.remove(component);
                    // for example when a form is shown in a popup form (window plugin) it must know that it's main page changed
                    if (!tempRemoveMainForm && component instanceof WebForm) {
                        WebForm formUI = ((WebForm) component);
                        if (MainPage.this == formUI.getMainPage()) {
                            // if the form is visible and it will be now removed from the mainpage
                            // then call notifyVisble false on it to let the form know it will hide
                            // we can't do much if that is blocked by an onhide here.
                            // (could be triggered by a browser back button)
                            if (formUI.getController().isFormVisible()) {
                                List<Runnable> invokeLaterRunnables = new ArrayList<Runnable>();
                                formUI.getController().notifyVisible(false, invokeLaterRunnables);
                                Utils.invokeLater(client, invokeLaterRunnables);
                            }
                            formUI.setMainPage(null);
                        }
                    }
                }
            };
        }

        /**
         * @see org.apache.wicket.markup.html.list.ListView#onBeforeRender()
         */
        @Override
        protected void onBeforeRender() {
            super.onBeforeRender();
            // now first initialize all the tabs so that data from
            // tab x doesn't change anymore (so that it could alter data in tab y)
            // don't know if this still does anything because we need to do it
            // in the onBeforeRender of WebTabPanel itself, else tableviews don't have there models yet..
            visitChildren(WebTabPanel.class, new IVisitor<WebTabPanel>() {
                public Object component(WebTabPanel wtp) {
                    wtp.initalizeFirstTab();
                    return IVisitor.CONTINUE_TRAVERSAL;
                }
            });

            addWebAnchoringInfoIfNeeded();
        }
    };
    listview.setReuseItems(true);
    // if versioning is disabled then table views can go wrong (don't rollback on a submit)
    //listview.setVersioned(false);

    Form form = new ServoyForm("servoy_dataform"); //$NON-NLS-1$

    form.add(new SimpleAttributeModifier("autocomplete", "off")); //$NON-NLS-1$ //$NON-NLS-2$
    if (useAJAX)
        form.add(new SimpleAttributeModifier("onsubmit", "return false;")); //$NON-NLS-1$ //$NON-NLS-2$

    form.add(listview);
    WebMarkupContainer defaultButton = new WebMarkupContainer("defaultsubmitbutton", new Model()); //$NON-NLS-1$
    defaultButton.setVisible(!useAJAX);
    form.add(defaultButton);

    StylePropertyChangeMarkupContainer container = new StylePropertyChangeMarkupContainer("externaldivsparent");
    form.add(container);
    PageContributorRepeatingView repeatingView = new PageContributorRepeatingView("externaldivs", container);
    container.add(repeatingView);
    pageContributor.addRepeatingView(repeatingView);

    body.add(form);
}

From source file:com.userweave.pages.test.DisplaySurveyUI.java

License:Open Source License

private void addModalWindow(SurveyExecution surveyExecution) {
    String ID = "modalWindow";
    if (surveyExecution == null || evaluateError(surveyExecution) != ErrorType.NONE
            || studyService.isAtLeastOneAdminRegistered(surveyExecution.getStudy().getParentProject())) {
        add(new WebMarkupContainer(ID));
    } else {// w ww  .  j a v a2  s.c  o  m
        final ModalWindow modalWindow = new CustomModalWindow(ID);
        modalWindow.setInitialHeight(379);
        add(modalWindow);

        modalWindow.add(new AbstractAjaxTimerBehavior(Duration.seconds(1)) {
            private static final long serialVersionUID = 1L;

            @Override
            protected void onTimer(AjaxRequestTarget target) {
                this.stop();
                modalWindow.show(target);
            }
        });

        modalWindow.setPageCreator(new ModalWindow.PageCreator() {
            private static final long serialVersionUID = 1L;

            @Override
            public Page createPage() {
                return new InformAboutIncompleteRegistrationPage(modalWindow);
            }
        });
    }

}

From source file:de.heartbeat.backend.dashboard.HeartBeatOverview.java

License:Apache License

public HeartBeatOverview(PageParameters parameters) {
    super(parameters);
    final WebMarkupContainer table = new WebMarkupContainer("table");
    WebMarkupContainer alertTable = new WebMarkupContainer("alertTable");
    table.setOutputMarkupId(true);//  w ww .j  a v a2  s. co m
    table.add(new AbstractAjaxTimerBehavior(Duration.seconds(10)) {

        @Override
        protected void onTimer(AjaxRequestTarget art) {
            heartBeatList.clear();
            session = sessionFactory.openSession();
            session.beginTransaction();
            heartBeatList
                    .addAll(session.createCriteria(HeartBeat.class).add(Restrictions.eq("alert", true)).list());
            session.getTransaction().commit();
            session.close();
            Collections.sort(heartBeatList);
            Collections.reverse(heartBeatList);
            art.add(table);
        }
    });

    session = sessionFactory.openSession();
    session.beginTransaction();
    heartBeatList.addAll(session.createCriteria(HeartBeat.class).add(Restrictions.eq("alert", true)).list());

    session.getTransaction().commit();
    session.close();
    Collections.sort(heartBeatList);
    Collections.reverse(heartBeatList);

    ListView alertView = new ListView("heartBeatAlertView", heartBeatList) {
        @Override
        protected void populateItem(ListItem item) {
            final HeartBeat hb = (HeartBeat) item.getModelObject();
            final Person pers = hb.getPerson();
            DateTime date = new DateTime(hb.getTime());
            DateTimeFormatter fmt = DateTimeFormat.forPattern("dd.MM.yyyy HH:mm:ss");
            String str = fmt.print(date);
            item.add(new Label("name", pers.getFirstName() + " " + pers.getLastName()));
            item.add(new Label("time", str));
            item.add(new Label("pulse", hb.getPulse()));
            item.add(new Label("adress", pers.getAdress()));
            item.add(new Link("skypeCall") {
                @Override
                public void onClick() {
                    try {
                        hb.setCalled(true);
                        Session session = sessionFactory.openSession();
                        session.beginTransaction();
                        session.saveOrUpdate(hb);
                        session.getTransaction().commit();
                        session.close();
                        Skype.call(Constants.SKYPE_FRIEND_NICKNAME);
                    } catch (SkypeException ex) {
                        Logger.getLogger(HeartBeatOverview.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            });

            item.add(new Link("skypeMessage") {
                @Override
                public void onClick() {
                    try {
                        String message = "dude, dein Puls";
                        Skype.chat(Constants.SKYPE_FRIEND_NICKNAME).send(message);
                    } catch (SkypeException ex) {
                        Logger.getLogger(HeartBeatOverview.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
            });
            Link emergency = new Link("emergency") {
                @Override
                public void onClick() {
                    hb.setAlert(true);
                    hb.setEmergency(true);
                    Session session = sessionFactory.openSession();
                    session.beginTransaction();
                    session.saveOrUpdate(hb);
                    session.getTransaction().commit();
                    session.close();
                }
            };
            Link archive = new Link("archived") {
                @Override
                public void onClick() {
                    hb.setCalled(false);
                    hb.setAlert(false);
                    hb.setArchived(true);
                    Session session = sessionFactory.openSession();
                    session.beginTransaction();
                    session.saveOrUpdate(hb);
                    session.getTransaction().commit();
                    session.close();
                    heartBeatList.remove(hb);
                }
            };

            emergency.setVisible(hb.isCalled());
            item.add(emergency);
            archive.setVisible(hb.isEmergency());
            item.add(archive);
        }
    };

    alertTable.add(alertView);
    table.add(alertTable);
    add(table);
}

From source file:eu.esdihumboldt.hale.server.webtransform.war.pages.StatusPage.java

License:Open Source License

@Override
protected void addControls(boolean loggedIn) {
    super.addControls(loggedIn);

    final String workspaceId = getPageParameters().get(PARAMETER_WORKSPACE).toOptionalString();
    if (workspaceId == null || workspaceId.isEmpty()) {
        throw new AbortWithHttpErrorCodeException(HttpServletResponse.SC_NOT_FOUND,
                "Workspace ID not specified.");
    }/*from ww  w  .j  av  a  2  s . c  om*/

    try {
        workspaces.getWorkspaceFolder(workspaceId);
    } catch (FileNotFoundException e) {
        throw new AbortWithHttpErrorCodeException(HttpServletResponse.SC_NOT_FOUND,
                "Workspace does not exist.");
    }

    final IModel<TransformationWorkspace> workspace = new LoadableDetachableModel<TransformationWorkspace>() {

        private static final long serialVersionUID = 2600444242247550094L;

        @Override
        protected TransformationWorkspace load() {
            return new TransformationWorkspace(workspaceId);
        }
    };

    // job panel
    final Serializable family = AbstractTransformationJob.createFamily(workspaceId);
    final JobPanel jobs = new JobPanel("jobs", family, true);
    add(jobs);

    // status
    final Label status = new Label("status", new LoadableDetachableModel<String>() {

        private static final long serialVersionUID = -4351763182104835300L;

        @Override
        protected String load() {
            if (workspace.getObject().isTransformationFinished()) {
                if (workspace.getObject().isTransformationSuccessful()) {
                    return "Transformation completed.";
                } else {
                    return "Transformation failed.";
                }
            } else {
                if (Job.getJobManager().find(family).length > 0) {
                    return "Transformation is running:";
                } else {
                    return "No transformation running.";
                }
            }
        }
    });
    status.setOutputMarkupId(true);
    add(status);

    // result
    final WebMarkupContainer result = new WebMarkupContainer("result");
    result.setOutputMarkupId(true);
    add(result);

    final WebMarkupContainer update = new WebMarkupContainer("update") {

        private static final long serialVersionUID = -2591480922683644827L;

        @Override
        public boolean isVisible() {
            return workspace.getObject().isTransformationFinished();
        }

    };
    result.add(update);

    // result : report
    File reportFile = workspace.getObject().getReportFile();
    DownloadLink report = new DownloadLink("log", reportFile, reportFile.getName());
    update.add(report);

    // result : file list
    IModel<? extends List<File>> resultFilesModel = new LoadableDetachableModel<List<File>>() {

        private static final long serialVersionUID = -7971872898614031331L;

        @Override
        protected List<File> load() {
            return Arrays.asList(workspace.getObject().getTargetFolder().listFiles());
        }

    };
    final ListView<File> fileList = new ListView<File>("file", resultFilesModel) {

        private static final long serialVersionUID = -8045643864251639540L;

        @Override
        protected void populateItem(ListItem<File> item) {
            // download link
            DownloadLink download = new DownloadLink("download", item.getModelObject(),
                    item.getModelObject().getName());
            item.add(download);

            // file name
            download.add(new Label("name", item.getModelObject().getName()));
        }

    };
    update.add(fileList);

    // leaseEnd
    String leaseEnd;
    try {
        leaseEnd = workspaces.getLeaseEnd(workspaceId).toString(DateTimeFormat.mediumDateTime());
    } catch (IOException e) {
        leaseEnd = "unknown";
    }
    add(new Label("leaseEnd", leaseEnd));

    boolean transformationFinished = workspace.getObject().isTransformationFinished();
    if (transformationFinished) {
        // disable job timer
        jobs.getTimer().stopOnNextUpdate();
    } else {
        // timer
        add(new AbstractAjaxTimerBehavior(Duration.milliseconds(1500)) {

            private static final long serialVersionUID = -3726349470723024150L;

            @Override
            protected void onTimer(AjaxRequestTarget target) {
                if (workspace.getObject().isTransformationFinished()) {
                    // update status and result
                    target.add(status);
                    target.add(result);

                    // stop timers
                    stop(target);
                    jobs.getTimer().stopOnNextUpdate();
                }
            }
        });
    }
}

From source file:io.ucoin.ucoinj.web.components.progressionModel.ProgressionPanel.java

License:Open Source License

public ProgressionPanel(String id, IModel<ProgressionModel> model) {
    super(id, model);

    // Timer//from w  ww. j a  v  a2s.co  m
    timer = new AbstractAjaxTimerBehavior(Duration.ONE_SECOND) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void onTimer(AjaxRequestTarget target) {
            if (stopped) {
                ProgressionPanel.this.stop(target);
                return;
            }
            ProgressionModel progressionModel = getModelObject();
            if (progressionModel != null) {
                synchronized (progressionModel) {
                    if (progressionModel.getStatus() == ProgressionModel.Status.FAILED
                            || progressionModel.getStatus() == ProgressionModel.Status.STOPPED) {
                        error(progressionModel.getMessage());
                    } else {
                        info(progressionModel.getMessage());
                    }
                }
            }
            progressBar.refresh(target);
            target.add(feedback, progressBar, taskLabel);
        }
    };
    add(timer);

    // Job label
    taskLabel = new Label("taskLabel", new PropertyModel<String>(model, "task"));
    taskLabel.setOutputMarkupId(true);
    add(taskLabel);

    // ProgressBar
    this.progressBar = new ProgressBar("progress", new PropertyModel<Integer>(model, "current")) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onComplete(AjaxRequestTarget target) {
            timer.stop(target); // wicket6
            getFeedbackMessages().clear();

            ProgressionPanel.this.onComplete(target);

        }
    };
    // progressBar.add(new AjaxSelfUpdatingTimerBehavior(Duration.ONE_SECOND));
    progressBar.setOutputMarkupId(true);
    progressBar.setVisibilityAllowed(true);
    add(progressBar);

    // FeedbackPanel
    feedback = new JQueryFeedbackPanel("feedback", this);
    feedback.setOutputMarkupId(true);
    add(feedback);

}