Example usage for org.apache.wicket.extensions.markup.html.tabs PanelCachingTab PanelCachingTab

List of usage examples for org.apache.wicket.extensions.markup.html.tabs PanelCachingTab PanelCachingTab

Introduction

In this page you can find the example usage for org.apache.wicket.extensions.markup.html.tabs PanelCachingTab PanelCachingTab.

Prototype

public PanelCachingTab(final ITab delegate) 

Source Link

Document

Constructor

Usage

From source file:org.geoserver.community.css.web.CssDemoPage.java

License:Open Source License

private void doMainLayout() {
    final Fragment mainContent = new Fragment("main-content", "normal", this);

    final ModalWindow popup = new ModalWindow("popup");
    mainContent.add(popup);//  w w w  .jav a2  s.  c o  m
    final StyleNameModel styleNameModel = new StyleNameModel(style);
    final PropertyModel layerNameModel = new PropertyModel(layer, "prefixedName");

    mainContent.add(new AjaxLink("create.style", new ParamResourceModel("CssDemoPage.createStyle", this)) {
        public void onClick(AjaxRequestTarget target) {
            target.appendJavascript("Wicket.Window.unloadConfirmation = false;");
            popup.setInitialHeight(200);
            popup.setInitialWidth(300);
            popup.setTitle(new Model("Choose name for new style"));
            popup.setContent(new StyleNameInput(popup.getContentId(), CssDemoPage.this));
            popup.show(target);
        }
    });

    mainContent.add(new SimpleAjaxLink("change.style", styleNameModel) {
        public void onClick(AjaxRequestTarget target) {
            target.appendJavascript("Wicket.Window.unloadConfirmation = false;");
            popup.setInitialHeight(400);
            popup.setInitialWidth(600);
            popup.setTitle(new Model("Choose style to edit"));
            popup.setContent(new StyleChooser(popup.getContentId(), CssDemoPage.this));
            popup.show(target);
        }
    });
    mainContent.add(new SimpleAjaxLink("change.layer", layerNameModel) {
        public void onClick(AjaxRequestTarget target) {
            target.appendJavascript("Wicket.Window.unloadConfirmation = false;");
            popup.setInitialHeight(400);
            popup.setInitialWidth(600);
            popup.setTitle(new Model("Choose layer to edit"));
            popup.setContent(new LayerChooser(popup.getContentId(), CssDemoPage.this));
            popup.show(target);
        }
    });
    mainContent
            .add(new AjaxLink("associate.styles", new ParamResourceModel("CssDemoPage.associateStyles", this)) {
                public void onClick(AjaxRequestTarget target) {
                    target.appendJavascript("Wicket.Window.unloadConfirmation = false;");
                    popup.setInitialHeight(400);
                    popup.setInitialWidth(600);
                    popup.setTitle(new Model("Choose layers to associate"));
                    popup.setContent(new MultipleLayerChooser(popup.getContentId(), CssDemoPage.this));
                    popup.show(target);
                }
            });
    ParamResourceModel associateToLayer = new ParamResourceModel("CssDemoPage.associateDefaultStyle", this,
            styleNameModel, layerNameModel);
    final SimpleAjaxLink associateDefaultStyle = new SimpleAjaxLink("associate.default.style", new Model(),
            associateToLayer) {
        public void onClick(final AjaxRequestTarget linkTarget) {
            final Component theComponent = this;
            dialog.setResizable(false);
            dialog.setHeightUnit("em");
            dialog.setWidthUnit("em");
            dialog.setInitialHeight(7);
            dialog.setInitialWidth(50);
            dialog.showOkCancel(linkTarget, new DialogDelegate() {
                boolean success = false;

                @Override
                protected boolean onSubmit(AjaxRequestTarget target, Component contents) {
                    layer.setDefaultStyle(style);
                    getCatalog().save(layer);
                    theComponent.setEnabled(false);
                    success = true;
                    return true;
                }

                @Override
                public void onClose(AjaxRequestTarget target) {
                    super.onClose(target);
                    target.addComponent(theComponent);
                    if (success) {
                        CssDemoPage.this.info(new ParamResourceModel("CssDemoPage.styleAssociated",
                                CssDemoPage.this, styleNameModel, layerNameModel).getString());
                        target.addComponent(getFeedbackPanel());
                    }
                }

                @Override
                protected Component getContents(String id) {
                    ParamResourceModel confirm = new ParamResourceModel("CssDemoPage.confirmAssocation",
                            CssDemoPage.this, styleNameModel.getObject(), layerNameModel.getObject(),
                            layer.getDefaultStyle().getName());
                    return new Label(id, confirm);
                }
            });
        }
    };
    associateDefaultStyle.setOutputMarkupId(true);
    if (layer.getDefaultStyle().equals(style)) {
        associateDefaultStyle.setEnabled(false);
    }

    mainContent.add(associateDefaultStyle);

    final IModel<String> sldModel = new AbstractReadOnlyModel<String>() {
        public String getObject() {
            try {
                // if file already in css format transform to sld, otherwise load the SLD file
                if (CssHandler.FORMAT.equals(style.getFormat())) {
                    StyledLayerDescriptor sld = Styles.sld(style.getStyle());
                    return Styles.string(sld, new SLDHandler(), SLDHandler.VERSION_10, true);
                } else {
                    File file = findStyleFile(style);
                    if (file != null && file.isFile()) {
                        BufferedReader reader = null;
                        try {
                            reader = new BufferedReader(new FileReader(file));
                            StringBuilder builder = new StringBuilder();
                            char[] line = new char[4096];
                            int len = 0;
                            while ((len = reader.read(line, 0, 4096)) >= 0)
                                builder.append(line, 0, len);
                            return builder.toString();
                        } finally {
                            if (reader != null)
                                reader.close();
                        }
                    } else {
                        return "No SLD file found for this style. One will be generated automatically if you save the CSS.";
                    }
                }
            } catch (IOException e) {
                throw new WicketRuntimeException(e);
            }
        }
    };

    final CompoundPropertyModel model = new CompoundPropertyModel<CssDemoPage>(CssDemoPage.this);
    List<ITab> tabs = new ArrayList<ITab>();
    tabs.add(new PanelCachingTab(new AbstractTab(new Model("Generated SLD")) {
        public Panel getPanel(String id) {
            SLDPreviewPanel panel = new SLDPreviewPanel(id, sldModel);
            sldPreview = panel.getLabel();
            return panel;
        }
    }));
    tabs.add(new PanelCachingTab(new AbstractTab(new Model("Map")) {
        public Panel getPanel(String id) {
            return map = new OpenLayersMapPanel(id, layer, style);
        }
    }));
    if (layer.getResource() instanceof FeatureTypeInfo) {
        tabs.add(new PanelCachingTab(new AbstractTab(new Model("Data")) {
            public Panel getPanel(String id) {
                try {
                    return new DataPanel(id, model, (FeatureTypeInfo) layer.getResource());
                } catch (IOException e) {
                    throw new WicketRuntimeException(e);
                }
            };
        }));
    } else if (layer.getResource() instanceof CoverageInfo) {
        tabs.add(new PanelCachingTab(new AbstractTab(new Model("Data")) {
            public Panel getPanel(String id) {
                return new BandsPanel(id, (CoverageInfo) layer.getResource());
            };
        }));
    }
    tabs.add(new AbstractTab(new Model("CSS Reference")) {
        public Panel getPanel(String id) {
            return new DocsPanel(id);
        }
    });

    File sldFile = findStyleFile(style);
    File cssFile = new File(sldFile.getParentFile(), style.getName() + ".css");

    mainContent.add(new StylePanel("style.editing", model, CssDemoPage.this, cssFile));

    mainContent.add(new AjaxTabbedPanel("context", tabs));

    add(mainContent);
    add(dialog = new GeoServerDialog("dialog"));
}

From source file:org.obiba.onyx.quartz.editor.category.CategoryWindow.java

License:Open Source License

public CategoryWindow(String id, final IModel<QuestionCategory> model,
        final IModel<Questionnaire> questionnaireModel, final IModel<LocaleProperties> localePropertiesModel,
        final ModalWindow modalWindow) {
    super(id, model);

    QuestionCategory questionCategory = model.getObject();

    final Category category = questionCategory.getCategory();

    add(form = new Form<QuestionCategory>("form", model));
    form.setMultiPart(false);//w  w w.j  a  v  a2  s. com

    feedbackPanel = new FeedbackPanel("content");
    feedbackWindow = new FeedbackWindow("feedback");
    feedbackWindow.setOutputMarkupId(true);
    add(feedbackWindow);

    List<ITab> tabs = new ArrayList<ITab>();
    AjaxSubmitTabbedPanel ajaxSubmitTabbedPanel = new AjaxSubmitTabbedPanel("categoryTabs", feedbackPanel,
            feedbackWindow, tabs);

    tabs.add(new PanelCachingTab(new AbstractTab(new ResourceModel("Category")) {
        @Override
        public Panel getPanel(String panelId) {
            categoryPanel = new CategoryPanel(panelId, model, questionnaireModel, localePropertiesModel,
                    feedbackPanel, feedbackWindow) {
            };
            return categoryPanel;
        }
    }));

    tabs.add(new PanelCachingTab(new AbstractTab(new ResourceModel("OpenAnswerDefinitions")) {
        @Override
        public Panel getPanel(String panelId) {
            return new OpenAnswerListPanel(panelId, model, questionnaireModel, localePropertiesModel,
                    feedbackPanel, feedbackWindow);
        }
    }));

    tabs.add(new PanelCachingTab(new AbstractTab(new ResourceModel("Attributes")) {
        @Override
        public Panel getPanel(String panelId) {
            return new AttributesPanel(panelId, new Model<Category>(category),
                    questionnaireModel.getObject().getLocales(), feedbackPanel, feedbackWindow);
        }
    }));

    form.add(ajaxSubmitTabbedPanel);

    form.add(new SaveCancelPanel("saveCancel", form) {
        @Override
        protected void onSave(AjaxRequestTarget target, Form<?> form1) {
            categoryPanel.onSave(target);
            CategoryWindow.this.onSave(target, form.getModelObject());
            modalWindow.close(target);
        }

        @Override
        protected void onCancel(AjaxRequestTarget target, Form<?> form1) {
            CategoryWindow.this.onCancel(target, form.getModelObject());
            modalWindow.close(target);
        }

        @Override
        protected void onError(AjaxRequestTarget target, @SuppressWarnings("hiding") Form<?> form) {
            feedbackWindow.setContent(feedbackPanel);
            feedbackWindow.show(target);
        }
    });

}

From source file:org.obiba.onyx.quartz.editor.locale.LabelsPanel.java

License:Open Source License

/**
 * @param id//from   w  w  w. j a va2 s. c  o  m
 * @param model
 * @param elementModel
 * @param feedbackPanel
 * @param feedbackWindow
 * @param tooltips
 * @param visibleStates  Map with label element as key and a boolean set to true to show it or false to hide it.
 *                       Set to null to display all labels.
 */
public LabelsPanel(String id, IModel<LocaleProperties> model,
        IModel<? extends IQuestionnaireElement> elementModel, FeedbackPanel feedbackPanel,
        FeedbackWindow feedbackWindow, Map<String, IModel<String>> tooltips,
        final Map<String, Boolean> visibleStates) {
    super(id, model);
    this.elementModel = elementModel;
    this.tooltips = tooltips;
    setOutputMarkupId(true);

    add(CSSPackageResource.getHeaderContribution(LabelsPanel.class, "LabelsPanel.css"));

    LocaleProperties localeProperties = (LocaleProperties) getDefaultModelObject();
    final ListMultimap<Locale, KeyValue> elementLabels = localeProperties
            .getElementLabels(elementModel.getObject());
    Locale userLocale = Session.get().getLocale();

    List<ITab> tabs = new ArrayList<ITab>();
    for (final Locale locale : localeProperties.getLocales()) {
        AbstractTab tab = new AbstractTab(new Model<String>(locale.getDisplayLanguage(userLocale))) {
            @Override
            public Panel getPanel(String panelId) {
                return new InputPanel(panelId, new ListModel<KeyValue>(elementLabels.get(locale)),
                        visibleStates);
            }
        };
        ITab panelCachingTab = new PanelCachingTab(tab);
        tabs.add(panelCachingTab);
        tabByLocale.put(locale, panelCachingTab);
    }

    tabbedPanel = new AjaxSubmitTabbedPanel("tabs", feedbackPanel, feedbackWindow, tabs);
    tabbedPanel.setVisible(tabs.size() > 0);

    tabsContainer = new WebMarkupContainer("tabsContainer");
    tabsContainer.setOutputMarkupId(true);
    tabsContainer.add(tabbedPanel);

    Form<LocaleProperties> form = new Form<LocaleProperties>("form", model);
    form.setMultiPart(false);
    form.setOutputMarkupId(true);
    form.add(tabsContainer);
    add(form);
}

From source file:org.obiba.onyx.quartz.editor.locale.LabelsPanel.java

License:Open Source License

public void onModelChange(AjaxRequestTarget target) {
    LocaleProperties localeProperties = (LocaleProperties) getDefaultModelObject();
    final ListMultimap<Locale, KeyValue> elementLabels = localeProperties
            .getElementLabels(elementModel.getObject());
    Locale userLocale = Session.get().getLocale();

    @SuppressWarnings("unchecked")
    Collection<Locale> removedLocales = CollectionUtils.subtract(tabByLocale.keySet(),
            localeProperties.getLocales());
    List<ITab> tabs = tabbedPanel.getTabs();
    for (Locale locale : removedLocales) {
        ITab tabToRemove = tabByLocale.get(locale);
        int selectedTabIndex = tabbedPanel.getSelectedTab();
        ITab selectedTab = tabs.get(selectedTabIndex);
        tabs.remove(tabToRemove);/*from w w w .  j  av a 2s .  c  om*/
        tabByLocale.remove(locale);

        if (tabToRemove != selectedTab) {
            for (int i = 0; i < tabs.size(); i++) {
                ITab tab = tabs.get(i);
                if (selectedTab == tab) {
                    tabbedPanel.setSelectedTab(i);
                    break;
                }
            }
        } else {
            tabbedPanel.setSelectedTab(0);
        }
    }

    for (final Locale locale : localeProperties.getLocales()) {
        if (!tabByLocale.containsKey(locale)) {
            AbstractTab tab = new AbstractTab(new Model<String>(locale.getDisplayLanguage(userLocale))) {
                @Override
                public Panel getPanel(String panelId) {
                    return new InputPanel(panelId, new ListModel<KeyValue>(elementLabels.get(locale)), null);
                }
            };
            ITab panelCachingTab = new PanelCachingTab(tab);
            tabByLocale.put(locale, panelCachingTab);
            tabs.add(panelCachingTab);
            if (tabs.size() == 1)
                tabbedPanel.setSelectedTab(0);
        }
    }
    tabbedPanel.setVisible(tabs.size() > 0);
    target.addComponent(tabsContainer);
}

From source file:org.obiba.onyx.quartz.editor.openAnswer.autocomplete.SuggestionVariableValuesPanel.java

License:Open Source License

public SuggestionVariableValuesPanel(String id, IModel<OpenAnswerDefinition> model,
        IModel<Questionnaire> questionnaireModel, FeedbackPanel feedbackPanel, FeedbackWindow feedbackWindow) {
    super(id, model);

    final OpenAnswerDefinitionSuggestion openAnswerSuggestion = new OpenAnswerDefinitionSuggestion(
            model.getObject());/*from   ww w. j  ava 2 s .  c om*/

    List<String> datasources = new ArrayList<String>();
    for (Datasource ds : magmaInstanceProvider.getDatasources()) {
        datasources.add(ds.getName());
    }
    Collections.sort(datasources);

    datasource = new DropDownChoice<String>("datasource",
            new Model<String>(openAnswerSuggestion.getDatasource()), datasources);
    datasource.setLabel(new ResourceModel("Datasource"));
    datasource.setNullValid(false);
    datasource.setRequired(true);
    datasource.add(new RequiredFormFieldBehavior());
    datasource.add(new OnChangeAjaxBehavior() {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            openAnswerSuggestion.clearVariableValues();
            table.setModelObject(null);
            target.addComponent(table);
            target.addComponent(datasource);
            target.addComponent(variableTabbedPanel);
        }
    });
    add(datasource).add(new SimpleFormComponentLabel("datasourceLabel", datasource));

    IModel<List<String>> tableChoiceModel = new AbstractReadOnlyModel<List<String>>() {
        @Override
        public List<String> getObject() {
            if (datasource.getModelObject() == null) {
                return Collections.emptyList();
            }
            List<String> tables = new ArrayList<String>();
            for (ValueTable vt : magmaInstanceProvider.getDatasource(datasource.getModelObject())
                    .getValueTables()) {
                tables.add(datasource.getModelObject() + "." + vt.getName());
            }
            Collections.sort(tables);
            return tables;
        }
    };

    table = new DropDownChoice<String>("table",
            new PropertyModel<String>(new Model<OpenAnswerDefinitionSuggestion>(openAnswerSuggestion), "table"),
            tableChoiceModel, new IChoiceRenderer<String>() {
                @Override
                public Object getDisplayValue(String object) {
                    return getTableName(object);
                }

                @Override
                public String getIdValue(String object, int index) {
                    return object;
                }
            });
    table.setLabel(new ResourceModel("Table"));
    table.setOutputMarkupId(true);
    table.setNullValid(false);
    table.setRequired(true);
    table.add(new RequiredFormFieldBehavior());
    table.add(new OnChangeAjaxBehavior() {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            openAnswerSuggestion.clearVariableValues();
            // Set the entity type from the selected table.
            String path = table.getDefaultModelObjectAsString();
            String entityType = null;
            try {
                if (path != null) {
                    ValueTable valueTable = magmaInstanceProvider.resolveTable(path);
                    entityType = valueTable.getEntityType();
                }
            } catch (MagmaRuntimeException e) {
                // ignore
            }
            openAnswerSuggestion.setEntityType(entityType);
            target.addComponent(table);
            target.addComponent(variableTabbedPanel);
        }
    });
    add(table).add(new SimpleFormComponentLabel("tableLabel", table));

    Locale userLocale = Session.get().getLocale();
    List<ITab> tabs = new ArrayList<ITab>();
    for (final Locale locale : questionnaireModel.getObject().getLocales()) {
        AbstractTab tab = new AbstractTab(new Model<String>(locale.getDisplayLanguage(userLocale))) {
            @Override
            public Panel getPanel(String panelId) {
                return new VariablePanel(panelId, new VariableModel(openAnswerSuggestion, locale));
            }
        };
        tabs.add(new PanelCachingTab(tab));
    }

    variableTabbedPanel = new AjaxSubmitTabbedPanel("variableTabs", feedbackPanel, feedbackWindow, tabs);
    variableTabbedPanel.setVisible(!tabs.isEmpty());

    WebMarkupContainer variableTabsContainer = new WebMarkupContainer("variableTabsContainer");
    variableTabsContainer.setOutputMarkupId(true);
    variableTabsContainer.add(variableTabbedPanel);

    add(variableTabsContainer);

}

From source file:org.obiba.onyx.quartz.editor.openAnswer.OpenAnswerWindow.java

License:Open Source License

public OpenAnswerWindow(String id, final IModel<OpenAnswerDefinition> model,
        final IModel<Category> categoryModel, final IModel<Question> questionModel,
        final IModel<Questionnaire> questionnaireModel, final IModel<LocaleProperties> localePropertiesModel,
        final ModalWindow modalWindow) {
    super(id, model);

    feedbackPanel = new FeedbackPanel("content");
    feedbackWindow = new FeedbackWindow("feedback");
    feedbackWindow.setOutputMarkupId(true);
    add(feedbackWindow);//from w  ww . j  av  a  2 s. co m

    add(form = new Form<OpenAnswerDefinition>("form", model));
    form.setMultiPart(false);

    List<ITab> tabs = new ArrayList<ITab>();
    AjaxSubmitTabbedPanel ajaxSubmitTabbedPanel = new AjaxSubmitTabbedPanel("openAnswerTabs", feedbackPanel,
            feedbackWindow, tabs);
    tabs.add(new PanelCachingTab(new AbstractTab(new ResourceModel("OpenAnswerDefinition")) {
        @Override
        public Panel getPanel(String panelId) {
            switch (model.getObject().getOpenAnswerType()) {
            case AUDIO_RECORDING:
                openAnswerPanel = new AudioOpenAnswerPanel(panelId, model, categoryModel, questionModel,
                        questionnaireModel);
                break;
            case AUTO_COMPLETE:
                openAnswerPanel = new AutoCompleteOpenAnswerPanel(panelId, model, categoryModel, questionModel,
                        questionnaireModel, localePropertiesModel, feedbackPanel, feedbackWindow);
                break;
            default:
                openAnswerPanel = new OpenAnswerPanel(panelId, model, categoryModel, questionModel,
                        questionnaireModel, localePropertiesModel, feedbackPanel, feedbackWindow);
            }
            return openAnswerPanel;
        }
    }));

    tabs.add(new PanelCachingTab(new AbstractTab(new ResourceModel("Attributes")) {
        @Override
        public Panel getPanel(String panelId) {
            return new AttributesPanel(panelId, new Model<OpenAnswerDefinition>(model.getObject()),
                    questionnaireModel.getObject().getLocales(), feedbackPanel, feedbackWindow);
        }
    }));

    form.add(ajaxSubmitTabbedPanel);

    form.add(new SaveCancelPanel("saveCancel", form) {
        @Override
        protected void onSave(AjaxRequestTarget target, Form<?> form1) {
            ((SaveablePanel) openAnswerPanel).onSave(target);
            if (form.hasError())
                return;
            OpenAnswerWindow.this.onSave(target, form.getModelObject());
            modalWindow.close(target);
        }

        @Override
        protected void onCancel(AjaxRequestTarget target, Form<?> form1) {
            OpenAnswerWindow.this.onCancel(target, form.getModelObject());
            modalWindow.close(target);
        }

        @Override
        protected void onError(AjaxRequestTarget target, @SuppressWarnings("hiding") Form<?> form) {
            feedbackWindow.setContent(feedbackPanel);
            feedbackWindow.show(target);
        }
    });

}

From source file:org.obiba.onyx.quartz.editor.widget.attributes.AttributesEditPanel.java

License:Open Source License

public AttributesEditPanel(String id, final IModel<? extends Attributable> attributable,
        final IModel<FactorizedAttribute> fam, List<Locale> locales, final FeedbackPanel feedbackPanel,
        final FeedbackWindow feedbackWindow) {
    super(id);/*from   w  ww. j  a v a2  s  .  co  m*/

    Form<Attribute> form = new Form<Attribute>("form");

    final FactorizedAttribute fao = fam.getObject();
    final Attributable ao = attributable.getObject();

    initialNamespace = fao.getNamespace() == null ? "" : fao.getNamespace();
    initialName = fao.getName() == null ? "" : fao.getName();

    namespaceField = new TextField<String>("namespace", new PropertyModel<String>(fam, "namespace"));
    nameField = new TextField<String>("name", new PropertyModel<String>(fam, "name"));

    namespaceField.setLabel(new ResourceModel("Namespace"));
    nameField.setLabel(new ResourceModel("Name"));

    form.add(namespaceField).add(new SimpleFormComponentLabel("namespaceLabel", namespaceField));
    form.add(nameField).add(new SimpleFormComponentLabel("nameLabel", nameField));

    Locale userLocale = Session.get().getLocale();
    List<ITab> tabs = new ArrayList<ITab>();
    AjaxSubmitTabbedPanel astp = new AjaxSubmitTabbedPanel("tabsLocale", feedbackPanel, feedbackWindow, tabs);

    AbstractTab nlTab = new AbstractTab(new ResourceModel("NoLocale")) {
        @Override
        public Panel getPanel(String panelId) {
            return new InputPanel(panelId, fao.getValues().get(null));
        }
    };
    tabs.add(new PanelCachingTab(nlTab));

    for (final Locale locale : locales) {
        AbstractTab tab = new AbstractTab(new Model<String>(locale.getDisplayLanguage(userLocale))) {
            @Override
            public Panel getPanel(String panelId) {
                return new InputPanel(panelId, fao.getValues().get(locale));
            }
        };
        tabs.add(new PanelCachingTab(tab));
    }

    add(form);
    form.add(astp);

    form.add(new SaveCancelPanel("saveCancel", form) {
        @Override
        protected void onSave(AjaxRequestTarget target, Form<?> form) {
            validate(form, ao, fao);
            if (form.hasError())
                return;
            ao.removeAttributes(initialNamespace, initialName);
            for (Map.Entry<Locale, IModel<String>> entry : fao.getValues().entrySet()) {
                if (Strings.isNullOrEmpty(entry.getValue().getObject()) == false) {
                    ao.addAttribute(fao.getNamespace(), fao.getName(), entry.getValue().getObject(),
                            entry.getKey());
                }
            }
            Dialog.closeCurrent(target);
        }

        @Override
        protected void onCancel(AjaxRequestTarget target, Form<?> form) {
            Dialog.closeCurrent(target);
        }

        @Override
        protected void onError(AjaxRequestTarget target, Form<?> form) {
            feedbackWindow.setContent(feedbackPanel);
            feedbackWindow.show(target);
        }
    });
}