List of usage examples for org.apache.wicket.ajax AbstractAjaxTimerBehavior AbstractAjaxTimerBehavior
public AbstractAjaxTimerBehavior(final Duration updateInterval)
From source file:org.geoserver.backuprestore.web.BackupRestoreDataPage.java
License:Open Source License
/** * @param form/* www . ja v a 2s. co m*/ */ @SuppressWarnings({ "rawtypes", "unchecked" }) private void populateRestoreForm(Form form) { form.add(new CheckBox("restoreOptDryRun", new Model<Boolean>(false))); form.add(new CheckBox("restoreOptBestEffort", new Model<Boolean>(false))); form.add(statusLabel = new Label("status", new Model()).setOutputMarkupId(true)); form.add(new AjaxSubmitLink("newRestoreStart", form) { @Override protected void disableLink(ComponentTag tag) { super.disableLink(tag); tag.setName("a"); tag.addBehavior(AttributeModifier.replace("class", "disabled")); } protected void onError(AjaxRequestTarget target, Form<?> form) { target.add(feedbackPanel); } protected void onSubmit(AjaxRequestTarget target, final Form<?> form) { //update status to indicate we are working statusLabel.add(AttributeModifier.replace("class", "working-link")); statusLabel.setDefaultModelObject("Working"); target.add(statusLabel); //enable cancel and disable this Component cancel = form.get("cancel"); cancel.setEnabled(true); target.add(cancel); setEnabled(false); target.add(this); final AjaxSubmitLink self = this; final Long jobid; try { jobid = launchRestoreExecution(form); } catch (Exception e) { error(e); LOGGER.log(Level.WARNING, "Error starting a new Restore", e); return; } finally { //update the button back to original state resetButtons(form, target, "newRestoreStart"); target.add(feedbackPanel); } cancel.setDefaultModelObject(jobid); this.add(new AbstractAjaxTimerBehavior(Duration.milliseconds(100)) { @Override protected void onTimer(AjaxRequestTarget target) { Backup backupFacade = BackupRestoreWebUtils.backupFacade(); RestoreExecutionAdapter exec = backupFacade.getRestoreExecutions().get(jobid); if (!exec.isRunning()) { try { if (exec.getAllFailureExceptions() != null && !exec.getAllFailureExceptions().isEmpty()) { getSession().error(exec.getAllFailureExceptions().get(0)); setResponsePage(BackupRestoreDataPage.class); } else if (exec.isStopping()) { //do nothing } else { PageParameters pp = new PageParameters(); pp.add("id", exec.getId()); pp.add("clazz", RestoreExecutionAdapter.class.getSimpleName()); setResponsePage(BackupRestorePage.class, pp); } } catch (Exception e) { error(e); LOGGER.log(Level.WARNING, "", e); } finally { stop(null); //update the button back to original state resetButtons(form, target, "newRestoreStart"); target.add(feedbackPanel); } return; } String msg = exec != null ? exec.getStatus().toString() : "Working"; statusLabel.setDefaultModelObject(msg); target.add(statusLabel); }; @Override public boolean canCallListenerInterface(Component component, Method method) { if (self.equals(component) && method.getDeclaringClass() .equals(org.apache.wicket.behavior.IBehaviorListener.class) && method.getName().equals("onRequest")) { return true; } return super.canCallListenerInterface(component, method); } }); } private Long launchRestoreExecution(Form<?> form) throws Exception { ResourceFilePanel panel = (ResourceFilePanel) newBackupRestorePanel.get("backupResource"); Resource archiveFile = null; try { archiveFile = panel.getResource(); } catch (NullPointerException e) { throw new Exception("Restore Archive File is Mandatory!"); } if (archiveFile == null || !Resources.exists(archiveFile) || archiveFile.getType() == Type.DIRECTORY || FilenameUtils.getExtension(archiveFile.name()).isEmpty()) { throw new Exception( "Restore Archive File is Mandatory, must exists and should not be a Directory or URI."); } Filter filter = null; WorkspaceInfo ws = (WorkspaceInfo) workspace.getObject(); if (ws != null) { filter = ECQL.toFilter("name = '" + ws.getName() + "'"); } Hints hints = new Hints(new HashMap(2)); Boolean restoreOptDryRun = ((CheckBox) form.get("restoreOptDryRun")).getModelObject(); if (restoreOptDryRun) { hints.add(new Hints(new Hints.OptionKey(Backup.PARAM_DRY_RUN_MODE), Backup.PARAM_DRY_RUN_MODE)); } Boolean restoreOptBestEffort = ((CheckBox) form.get("restoreOptBestEffort")).getModelObject(); if (restoreOptBestEffort) { hints.add(new Hints(new Hints.OptionKey(Backup.PARAM_BEST_EFFORT_MODE), Backup.PARAM_BEST_EFFORT_MODE)); } Backup backupFacade = BackupRestoreWebUtils.backupFacade(); return backupFacade.runRestoreAsync(archiveFile, filter, hints).getId(); } }); form.add(new AjaxLink<Long>("cancel", new Model<Long>()) { protected void disableLink(ComponentTag tag) { super.disableLink(tag); tag.setName("a"); tag.addBehavior(AttributeModifier.replace("class", "disabled")); }; @Override public void onClick(AjaxRequestTarget target) { Long jobid = getModelObject(); if (jobid != null) { try { BackupRestoreWebUtils.backupFacade().stopExecution(jobid); setResponsePage(BackupRestoreDataPage.class); } catch (NoSuchJobExecutionException | JobExecutionNotRunningException e) { LOGGER.log(Level.WARNING, "", e); } } setEnabled(false); target.add(this); } }.setOutputMarkupId(true).setEnabled(false)); restoreExecutionsTable = new BackupRestoreExecutionsTable("restores", new BackupRestoreExecutionsProvider(true, RestoreExecutionAdapter.class) { @Override protected List<org.geoserver.web.wicket.GeoServerDataProvider.Property<AbstractExecutionAdapter>> getProperties() { return Arrays.asList(ID, STATE, STARTED, PROGRESS, ARCHIVEFILE, OPTIONS); } }, true, RestoreExecutionAdapter.class) { protected void onSelectionUpdate(AjaxRequestTarget target) { }; }; restoreExecutionsTable.setOutputMarkupId(true); restoreExecutionsTable.setFilterable(false); restoreExecutionsTable.setSortable(false); form.add(restoreExecutionsTable); }
From source file:org.geoserver.importer.web.ImportDataPage.java
License:Open Source License
public ImportDataPage(PageParameters params) { Form form = new Form("form"); add(form);//from w w w.j a v a 2 s .c o m sourceList = new AjaxRadioPanel<Source>("sources", Arrays.asList(Source.values()), Source.SPATIAL_FILES) { @Override protected void onRadioSelect(AjaxRequestTarget target, Source newSelection) { updateSourcePanel(newSelection, target); } @Override protected AjaxRadio<Source> newRadioCell(RadioGroup<Source> group, ListItem<Source> item) { AjaxRadio<Source> radio = super.newRadioCell(group, item); if (!item.getModelObject().isAvailable()) { radio.setEnabled(false); } return radio; } @Override protected Component createLabel(String id, ListItem<Source> item) { return new SourceLabelPanel(id, item.getModelObject()); } }; form.add(sourceList); sourcePanel = new WebMarkupContainer("panel"); sourcePanel.setOutputMarkupId(true); form.add(sourcePanel); Catalog catalog = GeoServerApplication.get().getCatalog(); // workspace chooser workspace = new WorkspaceDetachableModel(catalog.getDefaultWorkspace()); workspaceChoice = new DropDownChoice("workspace", workspace, new WorkspacesModel(), new WorkspaceChoiceRenderer()); workspaceChoice.setOutputMarkupId(true); workspaceChoice.add(new AjaxFormComponentUpdatingBehavior("onchange") { @Override protected void onUpdate(AjaxRequestTarget target) { updateTargetStore(target); } }); workspaceChoice.setNullValid(true); form.add(workspaceChoice); WebMarkupContainer workspaceNameContainer = new WebMarkupContainer("workspaceNameContainer"); workspaceNameContainer.setOutputMarkupId(true); form.add(workspaceNameContainer); workspaceNameTextField = new TextField("workspaceName", new Model()); workspaceNameTextField.setOutputMarkupId(true); boolean defaultWorkspace = catalog.getDefaultWorkspace() != null; workspaceNameTextField.setVisible(!defaultWorkspace); workspaceNameTextField.setRequired(!defaultWorkspace); workspaceNameContainer.add(workspaceNameTextField); //store chooser WorkspaceInfo ws = (WorkspaceInfo) workspace.getObject(); store = new StoreModel(ws != null ? catalog.getDefaultDataStore(ws) : null); storeChoice = new DropDownChoice("store", store, new EnabledStoresModel(workspace), new StoreChoiceRenderer()) { protected String getNullValidKey() { return ImportDataPage.class.getSimpleName() + "." + super.getNullValidKey(); }; }; storeChoice.setOutputMarkupId(true); storeChoice.setNullValid(true); form.add(storeChoice); form.add(statusLabel = new Label("status", new Model()).setOutputMarkupId(true)); form.add(new AjaxSubmitLink("next", form) { @Override protected void disableLink(ComponentTag tag) { super.disableLink(tag); tag.setName("a"); tag.addBehavior(new SimpleAttributeModifier("class", "disabled")); } protected void onError(AjaxRequestTarget target, Form<?> form) { target.addComponent(feedbackPanel); } protected void onSubmit(AjaxRequestTarget target, final Form<?> form) { //update status to indicate we are working statusLabel.add(new SimpleAttributeModifier("class", "working-link")); statusLabel.setDefaultModelObject("Working"); target.addComponent(statusLabel); //enable cancel and disable this Component cancel = form.get("cancel"); cancel.setEnabled(true); target.addComponent(cancel); setEnabled(false); target.addComponent(this); final AjaxSubmitLink self = this; final Long jobid; try { jobid = createContext(); } catch (Exception e) { error(e); LOGGER.log(Level.WARNING, "Error creating import", e); resetButtons(form, target); return; } cancel.setDefaultModelObject(jobid); this.add(new AbstractAjaxTimerBehavior(Duration.seconds(3)) { protected void onTimer(AjaxRequestTarget target) { Importer importer = ImporterWebUtils.importer(); Task<ImportContext> t = importer.getTask(jobid); if (t.isDone()) { try { if (t.getError() != null) { error(t.getError()); } else if (t.isCancelled()) { //do nothing } else { ImportContext imp = t.get(); //check the import for actual things to do boolean proceed = !imp.getTasks().isEmpty(); if (proceed) { imp.setArchive(false); importer.changed(imp); PageParameters pp = new PageParameters(); pp.put("id", imp.getId()); setResponsePage(ImportPage.class, pp); } else { info("No data to import was found"); importer.delete(imp); } } } catch (Exception e) { error(e); LOGGER.log(Level.WARNING, "", e); } finally { stop(); //update the button back to original state resetButtons(form, target); target.addComponent(feedbackPanel); } return; } ProgressMonitor m = t.getMonitor(); String msg = m.getTask() != null ? m.getTask().toString() : "Working"; statusLabel.setDefaultModelObject(msg); target.addComponent(statusLabel); }; }); } }); form.add(new AjaxLink<Long>("cancel", new Model<Long>()) { protected void disableLink(ComponentTag tag) { super.disableLink(tag); ImporterWebUtils.disableLink(tag); }; @Override public void onClick(AjaxRequestTarget target) { Importer importer = ImporterWebUtils.importer(); Long jobid = getModelObject(); Task<ImportContext> task = importer.getTask(jobid); if (task != null && !task.isDone() && !task.isCancelled()) { task.getMonitor().setCanceled(true); task.cancel(false); try { task.get(); } catch (Exception e) { } } setEnabled(false); Component next = getParent().get("next"); next.setEnabled(true); target.addComponent(this); target.addComponent(next); } }.setOutputMarkupId(true).setEnabled(false)); importTable = new ImportContextTable("imports", new ImportContextProvider(true) { @Override protected List<org.geoserver.web.wicket.GeoServerDataProvider.Property<ImportContext>> getProperties() { return Arrays.asList(ID, STATE, UPDATED); } }, true) { protected void onSelectionUpdate(AjaxRequestTarget target) { removeImportLink.setEnabled(!getSelection().isEmpty()); target.addComponent(removeImportLink); }; }; importTable.setOutputMarkupId(true); importTable.setFilterable(false); importTable.setSortable(false); form.add(importTable); form.add(removeImportLink = new AjaxLink("remove") { @Override public void onClick(AjaxRequestTarget target) { Importer importer = ImporterWebUtils.importer(); for (ImportContext c : importTable.getSelection()) { try { importer.delete(c); } catch (IOException e) { LOGGER.log(Level.WARNING, "Error deleting context", c); } } importTable.clearSelection(); target.addComponent(importTable); } }); removeImportLink.setOutputMarkupId(true).setEnabled(false); AjaxLink jobLink = new AjaxLink("jobs") { @Override public void onClick(AjaxRequestTarget target) { dialog.showOkCancel(target, new DialogDelegate() { @Override protected boolean onSubmit(AjaxRequestTarget target, Component contents) { return true; } @Override protected Component getContents(String id) { return new JobQueuePanel(id); } }); } }; jobLink.setVisible(ImporterWebUtils.isDevMode()); form.add(jobLink); add(dialog = new GeoServerDialog("dialog")); dialog.setInitialWidth(600); dialog.setInitialHeight(400); dialog.setMinimalHeight(150); updateSourcePanel(Source.SPATIAL_FILES, null); updateTargetStore(null); }
From source file:org.geoserver.importer.web.ImportPage.java
License:Open Source License
void initComponents(final IModel<ImportContext> model) { add(new Label("id", new PropertyModel(model, "id"))); ImportContextProvider provider = new ImportContextProvider() { @Override/* w ww. j av a 2 s. c om*/ protected List<Property<ImportContext>> getProperties() { return Arrays.asList(STATE, CREATED, UPDATED); } @Override protected List<ImportContext> getItems() { return Collections.singletonList(model.getObject()); } }; add(new AjaxLink("raw") { @Override public void onClick(AjaxRequestTarget target) { dialog.setInitialHeight(500); dialog.setInitialWidth(700); dialog.showOkCancel(target, new DialogDelegate() { @Override protected Component getContents(String id) { XStreamPersister xp = importer().createXStreamPersisterXML(); ByteArrayOutputStream bout = new ByteArrayOutputStream(); try { xp.save(model.getObject(), bout); } catch (IOException e) { bout = new ByteArrayOutputStream(); LOGGER.log(Level.FINER, e.getMessage(), e); e.printStackTrace(new PrintWriter(bout)); } return new TextAreaPanel(id, new Model(new String(bout.toByteArray()))); } @Override protected boolean onSubmit(AjaxRequestTarget target, Component contents) { return true; } }); } }.setVisible(ImporterWebUtils.isDevMode())); final ImportContextTable headerTable = new ImportContextTable("header", provider); headerTable.setOutputMarkupId(true); headerTable.setFilterable(false); headerTable.setPageable(false); add(headerTable); final ImportContext imp = model.getObject(); boolean selectable = imp.getState() != ImportContext.State.COMPLETE; final ImportTaskTable taskTable = new ImportTaskTable("tasks", new ImportTaskProvider(model), selectable) { @Override protected void onSelectionUpdate(AjaxRequestTarget target) { updateImportLink((AjaxLink) ImportPage.this.get("import"), this, target); } }.setFeedbackPanel(feedbackPanel); taskTable.setOutputMarkupId(true); taskTable.setFilterable(false); add(taskTable); final AjaxLink<Long> importLink = new AjaxLink<Long>("import", new Model<Long>()) { @Override protected void disableLink(ComponentTag tag) { super.disableLink(tag); ImporterWebUtils.disableLink(tag); } @Override public void onClick(AjaxRequestTarget target) { ImportContext imp = model.getObject(); BasicImportFilter filter = new BasicImportFilter(); for (ImportTask t : taskTable.getSelection()) { filter.add(t); } //set running flag and update cancel link running.set(true); target.addComponent(cancelLink(this)); final Long jobid = importer().runAsync(imp, filter, false); setDefaultModelObject(jobid); final AjaxLink self = this; // create a timer to update the table and reload the page when // necessary taskTable.add(new AbstractAjaxTimerBehavior(Duration.milliseconds(500)) { @Override protected void onTimer(AjaxRequestTarget target) { Task<ImportContext> job = importer().getTask(jobid); if (job == null || job.isDone()) { // remove the timer stop(); self.setEnabled(true); target.addComponent(self); running.set(false); target.addComponent(cancelLink(self)); /*ImportContext imp = model.getObject(); if (imp.getState() == ImportContext.State.COMPLETE) { // enable cancel, which will not be "done" setLinkEnabled(cancelLink(self), true, target); } else { // disable cancel, import is not longer running, but // also // not complete setLinkEnabled(cancelLink(self), false, target); }*/ } // update the table target.addComponent(taskTable); target.addComponent(headerTable); } }); target.addComponent(taskTable); // disable import button setLinkEnabled(this, false, target); // enable cancel button //setLinkEnabled(cancelLink(this), true, target); } }; importLink.setOutputMarkupId(true); importLink.setEnabled(doSelectReady(imp, taskTable, null)); add(importLink); final AjaxLink cancelLink = new AjaxLink("cancel") { @Override protected void disableLink(ComponentTag tag) { super.disableLink(tag); ImporterWebUtils.disableLink(tag); } @Override public void onClick(AjaxRequestTarget target) { ImportContext imp = model.getObject(); if (!running.get()) { //if (imp.getState() == ImportContext.State.COMPLETE) { setResponsePage(ImportDataPage.class); return; } Long jobid = importLink.getModelObject(); if (jobid == null) { return; } Task<ImportContext> task = importer().getTask(jobid); if (task == null || task.isDone()) { return; } task.getMonitor().setCanceled(true); task.cancel(false); try { task.get(); } catch (Exception e) { } // enable import button setLinkEnabled(importLink, true, target); // disable cancel button //setLinkEnabled(cancelLink(importLink), false, target); } }; //cancelLink.setEnabled(imp.getState() == ImportContext.State.COMPLETE); cancelLink.add(new Label("text", new CancelTitleModel())); add(cancelLink); WebMarkupContainer selectPanel = new WebMarkupContainer("select"); selectPanel.add(new AjaxLink<ImportContext>("select-all", model) { @Override public void onClick(AjaxRequestTarget target) { taskTable.selectAll(); target.addComponent(taskTable); updateImportLink(importLink, taskTable, target); } }); selectPanel.add(new AjaxLink<ImportContext>("select-none", model) { @Override public void onClick(AjaxRequestTarget target) { taskTable.clearSelection(); target.addComponent(taskTable); updateImportLink(importLink, taskTable, target); } }); selectPanel.add(new AjaxLink<ImportContext>("select-ready", model) { @Override public void onClick(AjaxRequestTarget target) { doSelectReady(getModelObject(), taskTable, target); target.addComponent(taskTable); updateImportLink(importLink, taskTable, target); } }); add(selectPanel); add(new Icon("icon", new DataIconModel(imp.getData()))); add(new Label("title", new DataTitleModel(imp)) .add(new AttributeModifier("title", new DataTitleModel(imp, false)))); add(dialog = new GeoServerDialog("dialog")); }
From source file:org.geoserver.web.importer.ImportProgressPage.java
License:Open Source License
public ImportProgressPage(String importerKey) { this.importerId = importerKey; FeatureTypeImporter importer = getImporter(); // construction add(new Label("project", importer.getProject())); add(info = new WebMarkupContainer("info")); info.setOutputMarkupId(true);//from www . j ava 2 s .c om info.add(bar = new Label("bar", "0")); widthModel = new Model("width: 5%;"); bar.add(new AttributeModifier("style", widthModel)); info.add(percentage = new Label("percentage", "5")); info.add(currentFile = new Label("currentFile", "")); info.add(new AjaxLink("cancel") { @Override public void onClick(AjaxRequestTarget target) { FeatureTypeImporter importer = getImporter(); importer.cancel(); setResponsePage(new ImportSummaryPage(importer.getSummary())); } }); // comment this out if you need to hack on the HTML of a live page info.add(new AbstractAjaxTimerBehavior(Duration.milliseconds(500)) { @Override protected void onTimer(AjaxRequestTarget target) { FeatureTypeImporter importer = getImporter(); ImportSummary summary = importer.getSummary(); if (summary != null) { if (summary.isCompleted()) { setResponsePage(new ImportSummaryPage(summary)); } // we have the percentage go between 5 and 95. This way the user sees something is in progress // at the beginning and does not have to wonder why we keep at 100 for a few seconds (happens // if the last layer requires a costly SRS code lookup) long perc = 5 + Math.round(100.0 * (summary.getProcessedLayers() + 1) / summary.getTotalLayers()); if (perc > 90) { perc = 90; } widthModel.setObject("width: " + perc + "%;"); percentage.setDefaultModelObject(perc); currentFile.setDefaultModelObject(summary.getCurrentLayer()); target.addComponent(info); } } }); }
From source file:org.headsupdev.agile.framework.Tasks.java
License:Open Source License
public void layout() { super.layout(); add(CSSPackageResource.getHeaderContribution(getClass(), "tasks.css")); final WebMarkupContainer taskLists = new WebMarkupContainer("taskLists"); ListView<Task> projectTasks = new ListView<Task>("projecttasks", new AbstractReadOnlyModel<List<? extends Task>>() { public List<? extends Task> getObject() { return getManager().getTasks(); }/*from w w w . ja v a 2 s. co m*/ }) { protected void populateItem(ListItem<Task> listItem) { Task task = listItem.getModelObject(); if (task == null || task.getProject() == null || !task.getProject().equals(getProject())) { listItem.setVisible(false); return; } setVisible(true); listItem.add(new Label("time", new FormattedDurationModel(task.getStartTime(), new Date()))); listItem.add(new Label("title", task.getTitle())); listItem.add(new Label("description", task.getDescription())); } }; taskLists.add(projectTasks); ListView<Task> otherTasks = new ListView<Task>("othertasks", new AbstractReadOnlyModel<List<? extends Task>>() { public List<? extends Task> getObject() { return getManager().getTasks(); } }) { protected void populateItem(ListItem<Task> listItem) { Task task = listItem.getModelObject(); if (task == null || (task.getProject() != null && task.getProject().equals(getProject()))) { listItem.setVisible(false); return; } setVisible(true); listItem.add(new Label("time", new FormattedDurationModel(task.getStartTime(), new Date()))); listItem.add(new Label("title", task.getTitle())); if (task.getProject() != null) { ExternalLink projectLink = new ExternalLink("project-link", "/" + task.getProject().getId() + "/tasks/"); projectLink.add(new Label("project", task.getProject().getAlias())); listItem.add(projectLink); } else { listItem.add(new WebMarkupContainer("project-link").setVisible(false)); } listItem.add(new Label("description", task.getDescription())); } }; taskLists.add(otherTasks); taskLists.setOutputMarkupId(true); taskLists.add(new AbstractAjaxTimerBehavior(Duration.seconds(10)) { protected void onTimer(AjaxRequestTarget target) { target.addComponent(taskLists); } }); add(taskLists); }
From source file:org.headsupdev.agile.web.HeadsUpPage.java
License:Open Source License
public void layout() { WebManager.getInstance().checkPermissions(this); User user = WebLoginManager.getInstance() .getLoggedInUser(((WebRequest) getRequest()).getHttpServletRequest()); if (user == null) { user = HeadsUpSession.ANONYMOUS_USER; }//from w w w .j a va2s .c o m /* security check */ if (getRequiredPermission() != null) { requirePermission(getRequiredPermission()); } if (!isErrorPage()) { getSession().setProject(getProject()); } for (MenuLink link : application.getLinks(getProject())) { addLink(link); } add(CSSPackageResource.getHeaderContribution(HeadsUpPage.class, "agile.css")); add(CSSPackageResource.getHeaderContribution(HeadsUpPage.class, "mobile.css", "handheld, only screen and (max-width: 767px)")); add(new WebMarkupContainer("headerlogo").add(new AttributeModifier("src", true, new PropertyModel<String>(WebManager.getInstance(), "headerLogo")))); WebMarkupContainer mainmenu = new WebMarkupContainer("mainmenu-container"); mainmenu.setMarkupId("mainmenu"); mainmenu.add(new ListView<Application>("mainmenu", ApplicationPageMapper.get().getApplications(getSession().getUser())) { protected void populateItem(ListItem<Application> listItem) { Project project = getProject(); final Application app = listItem.getModelObject(); if ("home".equals(app.getApplicationId())) { listItem.setVisible(false); return; } String link = "/" + project.getId() + "/" + app.getApplicationId() + "/"; if (ApplicationPageMapper.isHomeApp(app)) { if (project.equals(StoredProject.getDefault())) { link = "/"; } else { link = "/" + project.getId() + "/show/"; } } ExternalLink applink = new ExternalLink("mainmenu-link", link); applink.add(new Label("mainmenu-label", app.getName())); listItem.add(applink); listItem.add(new AttributeModifier("class", new Model<String>() { public String getObject() { if (app.equals(getHeadsUpApplication())) { return "mainmenu-item-selected"; } else { return "mainmenu-item"; } } })); } }); addAnimatedSelect("mainlink", getHeadsUpApplication().getName() + " \u25bc", mainmenu); add(mainmenu); submenu = new WebMarkupContainer("submenu-container"); submenu.setMarkupId("submenu"); addAnimatedSelect("sublink", "\u2699", submenu); add(submenu); submenu.add(new ListView<Link>("submenu", links) { protected void populateItem(ListItem<Link> listItem) { Link link = listItem.getModelObject(); listItem.add(link); listItem.add(new AttributeModifier("class", new Model<String>() { public String getObject() { if (getClass().equals( /* TODO find class of link */ null)) { return "submenu-item-selected"; } else { return "submenu-item"; } } })); } }); WebMarkupContainer projectmenu = createProjectMenu(user); add(projectmenu); if (!getClass().getName().endsWith("Login") && !getClass().getName().endsWith("Logout") && !getClass().getName().endsWith("Error404Page")) { getSession().setPreviousPageClass(getClass()); getSession().setPreviousPageParameters(getPageParameters()); } WebMarkupContainer userpanel = new WebMarkupContainer("userpanel"); userpanel.setOutputMarkupId(true); userpanel.setMarkupId("userpanel"); if (!PrivateConfiguration.isInstalled() || user.equals(HeadsUpSession.ANONYMOUS_USER)) { userpanel.add(new Label("username", "you are not logged in")); userpanel.add(new WebMarkupContainer("account").setVisible(false)); Link login = new AjaxFallbackLink("login-link") { @Override public void onClick(AjaxRequestTarget target) { if (target == null) { setResponsePage(getPageClass("login"), getProjectPageParameters()); } else { target.appendJavascript("document.getElementById('userpanelbutton').childNodes[1].click()"); showDialog(new LoginDialog(DIALOG_PANEL_ID, true, HeadsUpPage.this), target); } } }; login.add(new Label("login-label", "login")); userpanel.add(login); } else { userpanel.add(new Label("username", "logged in as " + user.getFullnameOrUsername())); Class<? extends Page> userLink = getPageClass("account"); if (userLink != null) { userpanel.add(new BookmarkablePageLink("account", userLink, getProjectPageParameters())); } else { userpanel.add(new WebMarkupContainer("account").setVisible(false)); } Link login = new AjaxFallbackLink("login-link") { @Override public void onClick(AjaxRequestTarget target) { if (target == null) { setResponsePage(getPageClass("logout"), getProjectPageParameters()); } else { target.appendJavascript("document.getElementById('userpanelbutton').childNodes[1].click()"); showDialog(new LogoutDialog(DIALOG_PANEL_ID, true), target); } } }; login.add(new Label("login-label", "logout")); userpanel.add(login); } if (ApplicationPageMapper.get().getSearchApp() != null) { userpanel.add(new BookmarkablePageLink("search", getPageClass("search"), getProjectPageParameters())); } else { userpanel.add(new WebMarkupContainer("search").setVisible(false)); } if (ApplicationPageMapper.get().getSupportApp() != null) { userpanel.add(new BookmarkablePageLink("support", ApplicationPageMapper.get().getSupportApp().getHomePage(), getProjectPageParameters())); } else { userpanel.add(new WebMarkupContainer("support").setVisible(false)); } WebMarkupContainer userpanelButton = new WebMarkupContainer("userpanelbutton"); userpanelButton.add(new Label("label", "\u25bc")); add(userpanelButton); Animator animator = new Animator(); animator.addCssStyleSubject(new MarkupIdModel(userpanel), "up", "down"); animator.attachTo(userpanelButton, "onclick", Animator.Action.toggle()); boolean showUserTools = getSession().getUser() != null && !getSession().getUser().equals(HeadsUpSession.ANONYMOUS_USER); if (showUserTools) { int userIssues = AccountSummaryPanel.getIssuesAssignedTo(getSession().getUser()).size(); WebMarkupContainer userDashbutton = new WebMarkupContainer("userdashbutton"); userpanel.add(userDashbutton.setVisible(userIssues > 0)); Label totals = new Label("totals", String.valueOf(userIssues)); totals.add(new AttributeModifier("class", true, new Model<String>() { @Override public String getObject() { if (AccountSummaryPanel.userHasOverdueMilestones(getSession().getUser())) { return "totals overdue"; } if (AccountSummaryPanel.userHasDueSoonMilestones(getSession().getUser())) { return "totals duesoon"; } return "totals"; } })); userDashbutton.add(totals); UserDashboard dash = new UserDashboard("userdashboard", this); dash.setOutputMarkupId(true); dash.setMarkupId("userdashboard"); add(dash); WebMarkupContainer dashBack = new WebMarkupContainer("userdashboardbackground"); dashBack.setOutputMarkupId(true); dashBack.setMarkupId("userdashboardbackground"); add(dashBack); animator = new Animator(); animator.withEaseInOutTransition(); animator.addCssStyleSubject(new MarkupIdModel(dash), "up", "down"); animator.addCssStyleSubject(new MarkupIdModel(dashBack), "up", "down"); animator.addSubject(new IAnimatorSubject() { public String getJavaScript() { return "function showBackground() {" + " var background = Wicket.$('userdashboardbackground');" + " if (userdashbuttonAnimator.state > 0) {" + " background.style.display=\"block\";" + " document.body.style.overflow=\"hidden\";" + " } else {" + " background.style.display=\"none\";" + " document.body.style.overflow=\"auto\";" + " }" + "}"; } }); animator.attachTo(userDashbutton, "onclick", Animator.Action.toggle()); } else { WebMarkupContainer userDashbutton = new WebMarkupContainer("userdashbutton"); userpanel.add(userDashbutton.setVisible(false)); add(new WebMarkupContainer("userdashboard").setVisible(false)); add(new WebMarkupContainer("userdashboardbackground").setVisible(false)); } add(userpanel); Form form = new Form("quicksearch") { protected void onSubmit() { if (searchQuery == null) { return; } super.onSubmit(); String quickLink = getQuickSearchResponse(searchQuery); if (quickLink != null) { getRequestCycle().getResponse().redirect(quickLink); throw new RedirectToUrlException(quickLink); } PageParameters params = getProjectPageParameters(); params.add("query", searchQuery); setResponsePage(getPageClass("search"), params); } }; add(form.setVisible(ApplicationPageMapper.get().getSearchApp() != null)); form.add(new TextField<String>("query", new PropertyModel<String>(this, "searchQuery"))); addAnimatedSelect("projectlink", getProject().getAlias() + " \u25bc", projectmenu); WebMarkupContainer taskpanel = new WebMarkupContainer("taskpanel"); Link taskLink = new BookmarkablePageLink("tasklink", getPageClass("tasks"), getProjectPageParameters()); taskpanel.add(taskLink); final Image spinner = new Image("spinner", new ResourceReference(HeadsUpPage.class, "images/ajax-loader.gif")); spinner.add(new AttributeModifier("style", new Model<String>() { public String getObject() { if (getManager().getTasks() == null || getManager().getTasks().size() == 0) { return "display:none"; } return ""; } })); spinner.setOutputMarkupId(true); spinner.add(new AbstractAjaxTimerBehavior(Duration.seconds(10)) { { onlyTargetActivePage(); } protected void onTimer(AjaxRequestTarget target) { target.addComponent(spinner); } }); taskLink.add(spinner); add(taskpanel); // add( new Label( "producttitle", HeadsUpConfiguration.getProductName() ) ); add(new Label("title", new PropertyModel(this, "title")) { @Override protected void onBeforeRender() { super.onBeforeRender(); setVisible(getTitle() != null); } }); add(new Label("pagetitle", new PropertyModel(this, "pageTitle"))); add(new WebMarkupContainer("description").add(new AttributeModifier("content", true, new Model<String>() { @Override public String getObject() { return getStorage().getGlobalConfiguration().getProductDescription(); } }))); add(new FeedbackPanel("messages")); add(new Label("footer-description", WebManager.getInstance().getFooterDescriptionHTML(getSession().getTimeZone())) .setEscapeModelStrings(false)); add(new Label("footer-copyright", WebManager.getInstance().getFooterCopyrightHTML()) .setEscapeModelStrings(false)); String noteString = WebManager.getInstance().getFooterNoteHTML(); add(new Label("footer-note", noteString).setVisible(noteString != null)); add(new BookmarkablePageLink("footer-update", getPageClass("updates")) .setVisible(getManager().isUpdateAvailable())); dialog = new WebMarkupContainer(DIALOG_PANEL_ID); dialog.setVisible(false); dialog.setOutputMarkupId(true); dialog.setOutputMarkupPlaceholderTag(true); add(dialog); }
From source file:org.opengeo.data.importer.web.ImportDataPage.java
License:Open Source License
public ImportDataPage(PageParameters params) { Form form = new Form("form"); add(form);/*w w w . ja va 2 s .com*/ sourceList = new ListView<Source>("sources", Arrays.asList(Source.values())) { @Override protected void populateItem(final ListItem<Source> item) { final Source source = (Source) item.getModelObject(); AjaxLink link = new AjaxLink("link") { @Override public void onClick(AjaxRequestTarget target) { updateSourcePanel(source); updateModalLinks(this, target); target.addComponent(sourcePanel); } }; link.setOutputMarkupId(true); link.add(new Label("name", source.getName(ImportDataPage.this))); if (item == sourceList.get(0)) { link.add(new AttributeAppender("class", true, new Model("selected"), " ")); } item.add(link); item.add(new Label("description", source.getDescription(ImportDataPage.this))); Image icon = new Image("icon", source.getIcon()); icon.add(new AttributeModifier("alt", true, source.getDescription(ImportDataPage.this))); item.add(icon); if (!source.isAvailable()) { item.setEnabled(false); item.add(new SimpleAttributeModifier("title", "Data source not available. Please " + "install required plug-in and drivers.")); } } }; form.add(sourceList); sourcePanel = new WebMarkupContainer("panel"); sourcePanel.setOutputMarkupId(true); form.add(sourcePanel); Catalog catalog = GeoServerApplication.get().getCatalog(); // workspace chooser workspace = new WorkspaceDetachableModel(catalog.getDefaultWorkspace()); workspaceChoice = new DropDownChoice("workspace", workspace, new WorkspacesModel(), new WorkspaceChoiceRenderer()); workspaceChoice.setOutputMarkupId(true); workspaceChoice.add(new AjaxFormComponentUpdatingBehavior("onchange") { @Override protected void onUpdate(AjaxRequestTarget target) { updateDefaultStore(target); } }); form.add(workspaceChoice); //store chooser store = new StoreModel(catalog.getDefaultDataStore((WorkspaceInfo) workspace.getObject())); storeChoice = new DropDownChoice("store", store, new EnabledStoresModel(workspace), new StoreChoiceRenderer()) { protected String getNullValidKey() { return ImportDataPage.class.getSimpleName() + "." + super.getNullValidKey(); }; }; storeChoice.setOutputMarkupId(true); storeChoice.setNullValid(true); form.add(storeChoice); // new workspace form.add(new AjaxLink("newWorkspace") { @Override public void onClick(AjaxRequestTarget target) { dialog.setTitle(new ParamResourceModel("newWorkspace", ImportDataPage.this)); dialog.setInitialWidth(400); dialog.setInitialHeight(150); dialog.setMinimalHeight(150); dialog.showOkCancel(target, new DialogDelegate() { String wsName; @Override protected boolean onSubmit(AjaxRequestTarget target, Component contents) { try { Catalog catalog = GeoServerApplication.get().getCatalog(); NewWorkspacePanel panel = (NewWorkspacePanel) contents; wsName = panel.workspace; WorkspaceInfo ws = catalog.getFactory().createWorkspace(); ws.setName(wsName); NamespaceInfo ns = catalog.getFactory().createNamespace(); ns.setPrefix(wsName); ns.setURI("http://opengeo.org/#" + URLEncoder.encode(wsName, "ASCII")); catalog.add(ws); catalog.add(ns); return true; } catch (Exception e) { e.printStackTrace(); return false; } } @Override public void onClose(AjaxRequestTarget target) { Catalog catalog = GeoServerApplication.get().getCatalog(); workspace = new WorkspaceDetachableModel(catalog.getWorkspaceByName(wsName)); workspaceChoice.setModel(workspace); target.addComponent(workspaceChoice); target.addComponent(storeChoice); } @Override protected Component getContents(String id) { return new NewWorkspacePanel(id); } }); } }); form.add(new AjaxSubmitLink("next", form) { protected void onError(AjaxRequestTarget target, Form<?> form) { target.addComponent(feedbackPanel); } protected void onSubmit(AjaxRequestTarget target, Form<?> form) { //first update the button to indicate we are working add(new AttributeAppender("class", true, new Model("button-working icon"), " ")); setEnabled(false); get(0).setDefaultModelObject("Working"); target.addComponent(this); //start a timer to actually do the work, which will allow the link to update // while the context is created final AjaxSubmitLink self = this; this.add(new AbstractAjaxTimerBehavior(Duration.milliseconds(100)) { @Override protected void onTimer(AjaxRequestTarget target) { ImportSourcePanel panel = (ImportSourcePanel) sourcePanel.get("content"); ImportData source; try { source = panel.createImportSource(); } catch (IOException e) { throw new WicketRuntimeException(e); } WorkspaceInfo targetWorkspace = (WorkspaceInfo) (workspace.getObject() != null ? workspace.getObject() : null); StoreInfo targetStore = (StoreInfo) (store.getObject() != null ? store.getObject() : null); Importer importer = ImporterWebUtils.importer(); try { ImportContext imp = importer.createContext(source, targetWorkspace, targetStore); //check the import for actual things to do boolean proceed = !imp.getTasks().isEmpty(); if (proceed) { //check that all the tasks are non-empty proceed = false; for (ImportTask t : imp.getTasks()) { if (!t.getItems().isEmpty()) { proceed = true; break; } } } if (proceed) { imp.setArchive(false); importer.changed(imp); PageParameters pp = new PageParameters(); pp.put("id", imp.getId()); setResponsePage(ImportPage.class, pp); } else { info("No data to import was found"); target.addComponent(feedbackPanel); importer.delete(imp); resetNextButton(self, target); } } catch (Exception e) { LOGGER.log(Level.SEVERE, e.getLocalizedMessage(), e); error(e); target.addComponent(feedbackPanel); //update the button back to original state resetNextButton(self, target); } finally { stop(); } } }); } }.add(new Label("message", new Model("Next")))); importTable = new ImportContextTable("imports", new ImportContextProvider() { @Override protected List<org.geoserver.web.wicket.GeoServerDataProvider.Property<ImportContext>> getProperties() { return Arrays.asList(ID, CREATED, STATE); } }); importTable.setOutputMarkupId(true); importTable.setFilterable(false); importTable.setSortable(false); form.add(importTable); form.add(new AjaxLink("removeAll") { @Override public void onClick(AjaxRequestTarget target) { Importer importer = ImporterWebUtils.importer(); importer.getStore().removeAll(); target.addComponent(importTable); } }.setVisible(ImporterWebUtils.isDevMode())); add(dialog = new GeoServerDialog("dialog")); updateSourcePanel(Source.SPATIAL_FILES); updateDefaultStore(null); }
From source file:org.ops4j.pax.wicket.samples.blueprint.injection.simple.internal.view.Homepage.java
License:Apache License
public Homepage() { //String serviceText = serviceBean.someEchoMethod(HOMEPAGE_TEXT); add(new Label("oneComponent", "blub")); add(new AbstractAjaxTimerBehavior(seconds(1)) { @Override//w ww . j a v a 2 s . c om protected void onTimer(AjaxRequestTarget target) { System.out.println(getPageId()); } }); }
From source file:org.wicketstuff.js.ext.MessageBox.java
License:Apache License
public MessageBox() { final ExtMessageBoxCallback showResult = new ExtMessageBoxCallback() { @Override/*w ww . j a va2 s.c o m*/ public void onClick(AjaxRequestTarget target, String button, String text) { ExtExample.showResult(button); } }; final ExtMessageBoxCallback showResultText = new ExtMessageBoxCallback() { @Override public void onClick(AjaxRequestTarget target, String button, String text) { ExtExample.showResultText(button, text); } }; add(showResult); add(showResultText); WebMarkupContainer mb1 = new WebMarkupContainer("mb1"); mb1.add(new AjaxEventBehavior("onclick") { @Override protected void onEvent(AjaxRequestTarget target) { ExtMessageBox.confirm("Confirm", "Are you sure you want to do that?", showResult); } }); add(mb1); WebMarkupContainer mb2 = new WebMarkupContainer("mb2"); mb2.add(new AjaxEventBehavior("onclick") { @Override protected void onEvent(AjaxRequestTarget target) { ExtMessageBox.prompt("Name", "Please enter your name:", showResultText); } }); add(mb2); final WebMarkupContainer mb3 = new WebMarkupContainer("mb3"); mb3.add(new AjaxEventBehavior("onclick") { @Override protected void onEvent(AjaxRequestTarget target) { ExtMessageBoxOptions options = new ExtMessageBoxOptions(); options.setTitle("Address"); options.setMsg("Please enter your address:"); options.setWidth(300); options.setButtons(Buttons.OKCANCEL); options.setMultiline(true); options.setFn(showResultText); options.setAnimEl(mb3); ExtMessageBox.show(options); } }); add(mb3); final WebMarkupContainer mb4 = new WebMarkupContainer("mb4"); mb4.add(new AjaxEventBehavior("onclick") { @Override protected void onEvent(AjaxRequestTarget target) { ExtMessageBoxOptions options = new ExtMessageBoxOptions(); options.setTitle("Save Changes?"); options.setMsg( "You are closing a tab that has unsaved changes. <br />Would you like to save your changes?"); options.setButtons(Buttons.YESNOCANCEL); options.setFn(showResult); options.setAnimEl(mb4); options.setIcon(Icons.QUESTION); ExtMessageBox.show(options); } }); add(mb4); final WebMarkupContainer mb6 = new WebMarkupContainer("mb6"); mb6.add(new AjaxEventBehavior("onclick") { @Override protected void onEvent(AjaxRequestTarget target) { ExtMessageBoxOptions options = new ExtMessageBoxOptions(); options.setTitle("Please wait"); options.setMsg("Loading items..."); options.setProgressText("Initializing..."); options.setWidth(300); options.setProgress(true); options.setCloseable(false); options.setAnimEl(mb6); ExtMessageBox.show(options); mb6.add(new AbstractAjaxTimerBehavior(Duration.milliseconds(500)) { private int v = 1; @Override protected void onTimer(AjaxRequestTarget target) { if (v == 12) { ExtMessageBox.hide(); ExtExample.msg("Done", "Your fake items were loaded!", null, null); stop(target); } else { float i = ((float) v) / 11; ExtMessageBox.updateProgress(i, Math.round(100 * i) + "% completed", null); ++v; } } }); target.add(mb6); } }); add(mb6); final WebMarkupContainer mb7 = new WebMarkupContainer("mb7"); mb7.add(new AjaxEventBehavior("onclick") { @Override protected void onEvent(AjaxRequestTarget target) { ExtMessageBoxOptions options = new ExtMessageBoxOptions(); options.setMsg("Saving your data, please wait..."); options.setProgressText("Saving..."); options.setWidth(300); options.setWait(true); ExtWaitConfig waitConfig = new ExtWaitConfig(); waitConfig.setInterval(200); options.setWaitConfig(waitConfig); options.setIcon("ext-mb-download"); options.setAnimEl(mb7); ExtMessageBox.show(options); mb6.add(new AbstractAjaxTimerBehavior(Duration.milliseconds(8000)) { @Override protected void onTimer(AjaxRequestTarget target) { ExtMessageBox.hide(); ExtExample.msg("Done", "Your fake data was saved!", null, null); stop(target); } }); target.add(mb6); } }); add(mb7); final WebMarkupContainer mb8 = new WebMarkupContainer("mb8"); mb8.add(new AjaxEventBehavior("onclick") { @Override protected void onEvent(AjaxRequestTarget target) { ExtMessageBox.alert("Status", "Changes saved successfully.", showResult); } }); add(mb8); Form<?> form = new Form<Void>("form"); form.setOutputMarkupId(true); final IModel<Icons> icon = new Model<Icons>(Icons.ERROR); IChoiceRenderer<Icons> renderer = new IChoiceRenderer<Icons>() { @Override public Object getDisplayValue(Icons object) { if (Icons.INFO.equals(object)) { return "Informational"; } else { return Character.toUpperCase(object.toString().charAt(0)) + object.toString().substring(1).toLowerCase(); } } @Override public String getIdValue(Icons object, int index) { return object.toString(); } }; form.add(new DropDownChoice<Icons>("icons", icon, Arrays.asList(Icons.values()), renderer)); final WebMarkupContainer mb9 = new AjaxButton("mb9") { @Override protected void onSubmit(AjaxRequestTarget target, Form<?> form) { ExtMessageBoxOptions options = new ExtMessageBoxOptions(); options.setTitle("Icon Support"); options.setMsg("Here is a message with an icon!"); options.setButtons(Buttons.OK); options.setAnimEl(this); options.setFn(showResult); options.setIcon(icon.getObject()); ExtMessageBox.show(options); } }; form.add(mb9); add(form); }