Example usage for org.apache.wicket.extensions.ajax.markup.html.modal ModalWindow ModalWindow

List of usage examples for org.apache.wicket.extensions.ajax.markup.html.modal ModalWindow ModalWindow

Introduction

In this page you can find the example usage for org.apache.wicket.extensions.ajax.markup.html.modal ModalWindow ModalWindow.

Prototype

public ModalWindow(final String id) 

Source Link

Document

Creates a new modal window component.

Usage

From source file:org.geogig.geoserver.web.repository.RepositoryEditFormPanel.java

License:Open Source License

public RepositoryEditFormPanel(final String id, @Nullable IModel<RepositoryInfo> repoInfo) {
    super(id);//  w  ww.j  a v  a  2s  .co  m
    final boolean isNew = repoInfo == null;
    if (isNew) {
        repoInfo = new Model<>(new RepositoryInfo());
    }
    setDefaultModel(repoInfo);

    popupWindow = new ModalWindow("popupWindow");
    add(popupWindow);

    form = new Form<>("repoForm", repoInfo);
    form.add(new RepositoryEditPanel("repo", repoInfo, isNew));
    form.add(addRemoteLink());

    List<RemoteInfo> remoteInfos = loadRemoteInfos(repoInfo.getObject());

    form.add(remotes = new RemotesListPanel("remotes", remoteInfos));
    add(form);
    FeedbackPanel feedback = new FeedbackPanel("feedback");
    form.add(feedback);

    form.add(new AjaxLink<Void>("cancel") {
        private static final long serialVersionUID = 6220299771769708060L;

        @Override
        public void onClick(AjaxRequestTarget target) {
            cancelled(target);
        }
    });

    form.add(new AjaxSubmitLink("save", form) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void onError(AjaxRequestTarget target, Form<?> form) {
            super.onError(target, form);
            target.add(form);
        }

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
            try {
                RepositoryInfo repoInfo = (RepositoryInfo) form.getModelObject();
                onSave(repoInfo, target);
            } catch (IllegalArgumentException e) {
                form.error(e.getMessage());
                target.add(form);
            }
        }
    });
}

From source file:org.geogig.geoserver.web.security.SecurityLogsPanel.java

License:Open Source License

public SecurityLogsPanel(final String id) {
    super(id, new LogEventProvider(), false/* selectable */);
    super.setSelectable(false);
    super.setSortable(true);
    super.setFilterable(true);
    super.setFilterVisible(true);
    super.setPageable(true);
    popupWindow = new ModalWindow("popupWindow");
    add(popupWindow);//  w w  w.j a va 2  s .  co m
}

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);//from   w  w  w  .  ja  v  a  2s  .  co 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.geoserver.importer.web.ImportTaskTable.java

License:Open Source License

public ImportTaskTable(String id, GeoServerDataProvider<ImportTask> dataProvider, boolean selectable) {
    super(id, dataProvider, selectable);
    add(dialog = new GeoServerDialog("dialog"));
    add(popupWindow = new ModalWindow("popup"));
    ((DataView) get("listContainer:items")).setItemReuseStrategy(DefaultItemReuseStrategy.getInstance());
}

From source file:org.geoserver.qos.web.BaseLimitedConstraintsPanel.java

License:Open Source License

protected void initAllComponents() {
    selectLayerModal = new ModalWindow("selectLayerModal");
    add(selectLayerModal);/*from ww w.j  a  va  2  s  .c o m*/

    mainDiv = new WebMarkupContainer("mainDiv");
    mainDiv.setOutputMarkupId(true);
    add(mainDiv);

    innerConstraintsDiv = new WebMarkupContainer("innerConstraintsDiv") {
        @Override
        protected void onConfigure() {
            super.onConfigure();
            if (CollectionUtils.isNotEmpty(getSelectedLayers())) {
                this.setVisible(true);
            } else {
                this.setVisible(false);
            }
        }
    };
    innerConstraintsDiv.setOutputMarkupId(true);
    innerConstraintsDiv.setOutputMarkupPlaceholderTag(true);
    mainDiv.add(innerConstraintsDiv);

    initLayersComponents();
    initFormatsComponents();
    initBoundsComponent();
}

From source file:org.geoserver.qos.web.OperatingInfoModalPanel.java

License:Open Source License

public OperatingInfoModalPanel(String id, IModel<OperatingInfo> model) {
    super(id, model);

    final WebMarkupContainer form = new WebMarkupContainer("opInfoForm");
    form.setOutputMarkupId(true);/*w w w.  j  a va  2  s. c o m*/
    add(form);

    // pre init non nullable objects
    if (model.getObject().getOperationalStatus() == null)
        model.getObject().setOperationalStatus(new ReferenceType());
    if (model.getObject().getByDaysOfWeek() == null)
        model.getObject().setByDaysOfWeek(new ArrayList<>());

    final DropDownChoice<String> titleSelect = new DropDownChoice<String>("titleSelect",
            new PropertyModel<String>(model, "operationalStatus.href"),
            QosData.instance().getOperationalStatusList(), new ChoiceRenderer<String>() {
                @Override
                public Object getDisplayValue(String object) {
                    if (object == null)
                        return null;
                    return object.split("#")[1];
                }

                @Override
                public String getIdValue(String object, int index) {
                    return object;
                }
            }) {
        @Override
        protected void onSelectionChanged(String newSelection) {
            super.onSelectionChanged(newSelection);
        }
    };
    form.add(titleSelect);

    final TextField<String> titleInput = new TextField<String>("titleInput",
            new PropertyModel<>(model, "operationalStatus.title"));
    // titleInput.setRequired(true);
    form.add(titleInput);

    timeListContainer = new WebMarkupContainer("timeListContainer");
    timeListContainer.setOutputMarkupId(true);
    form.add(timeListContainer);

    // ModalWindow timeModal
    timeModal = new ModalWindow("timeModal");
    add(timeModal);

    final ListView<OperatingInfoTime> timeListView = new ListView<OperatingInfoTime>("timeList",
            model.getObject().getByDaysOfWeek()) {
        @Override
        protected void populateItem(ListItem<OperatingInfoTime> item) {
            OperatingInfoTimeModalPanel timePanel = new OperatingInfoTimeModalPanel("timePanel",
                    item.getModel());
            // set on delete callback
            timePanel.setOnDelete(x -> {
                model.getObject().getByDaysOfWeek().remove(x.getModel());
                x.getTarget().add(timeListContainer);
            });
            item.add(timePanel);
        }
    };
    timeListView.setOutputMarkupId(true);
    timeListContainer.add(timeListView);

    final AjaxButton addTimeLink = new AjaxButton("addTime") {
    };
    timeListContainer.add(addTimeLink);
    addTimeLink.add(new AjaxFormSubmitBehavior("click") {
        @Override
        protected void onAfterSubmit(final AjaxRequestTarget target) {
            model.getObject().getByDaysOfWeek().add(new OperatingInfoTime());
            target.add(timeListContainer);
        }
    });

    final AjaxSubmitLink deleteLink = new AjaxSubmitLink("deleteLink") {
        @Override
        public void onAfterSubmit(AjaxRequestTarget target, Form<?> form) {
            delete(target);
        }
    };
    form.add(deleteLink);
}

From source file:org.geoserver.solr.SolrConfigurationPanel.java

License:Open Source License

/**
 * Adds SOLR configuration panel link, configure modal dialog and implements modal callback
 * //from w w w .  j  av a 2 s .co  m
 * @see {@link SolrConfigurationPage#done}
 */

public SolrConfigurationPanel(final String panelId, final IModel model) {
    super(panelId, model);
    final FeatureTypeInfo fti = (FeatureTypeInfo) model.getObject();

    final ModalWindow modal = new ModalWindow("modal");
    modal.setInitialWidth(800);
    modal.setTitle(new ParamResourceModel("modalTitle", SolrConfigurationPanel.this));
    modal.setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
        @Override
        public void onClose(AjaxRequestTarget target) {
            if (_layerInfo != null) {
                GeoServerApplication app = (GeoServerApplication) getApplication();
                FeatureTypeInfo ft = (FeatureTypeInfo) getResourceInfo();

                //Override _isNew state, based on resource informations into catalog
                if (ft.getId() != null
                        && app.getCatalog().getResource(ft.getId(), ResourceInfo.class) != null) {
                    _isNew = false;
                } else {
                    _isNew = true;
                }

                app.getCatalog().getResourcePool().clear(ft);
                app.getCatalog().getResourcePool().clear(ft.getStore());
                setResponsePage(new ResourceConfigurationPage(_layerInfo, _isNew));
            }
        }
    });

    if (fti.getId() == null) {
        modal.add(new OpenWindowOnLoadBehavior());
    }

    modal.setContent(new SolrConfigurationPage(panelId, model) {
        @Override
        void done(AjaxRequestTarget target, ResourceInfo resource) {
            ResourceConfigurationPage page = (ResourceConfigurationPage) SolrConfigurationPanel.this.getPage();
            page.updateResource(resource, target);
            modal.close(target);
        }
    });
    add(modal);

    AjaxLink findLink = new AjaxLink("edit") {
        @Override
        public void onClick(AjaxRequestTarget target) {
            modal.show(target);
        }
    };
    final Fragment attributePanel = new Fragment("solrPanel", "solrPanelFragment", this);
    attributePanel.setOutputMarkupId(true);
    add(attributePanel);
    attributePanel.add(findLink);
}

From source file:org.geoserver.wcs.web.demo.WCSRequestBuilder.java

License:Open Source License

public WCSRequestBuilder() {
    // the form//from www  . ja va  2  s.  c o m
    Form form = new Form("form");
    add(form);

    // the actual request builder component
    builder = new WCSRequestBuilderPanel("requestBuilder", new GetCoverageRequest());
    form.add(builder);

    // the xml popup window
    final ModalWindow xmlWindow = new ModalWindow("xmlWindow");
    add(xmlWindow);
    xmlWindow.setPageCreator(new ModalWindow.PageCreator() {

        public Page createPage() {
            return new PlainCodePage(xmlWindow, responseWindow, getRequestXML());

        }
    });

    // the output response window
    responseWindow = new ModalWindow("responseWindow");
    add(responseWindow);
    responseWindow.setPageMapName("demoResponse");
    responseWindow.setCookieName("demoResponse");

    responseWindow.setPageCreator(new ModalWindow.PageCreator() {

        public Page createPage() {
            DemoRequest request = new DemoRequest(null);
            HttpServletRequest http = ((WebRequest) WCSRequestBuilder.this.getRequest())
                    .getHttpServletRequest();
            String url = ResponseUtils.buildURL(ResponseUtils.baseURL(http), "ows",
                    Collections.singletonMap("strict", "true"), URLType.SERVICE);
            request.setRequestUrl(url);
            request.setRequestBody((String) responseWindow.getDefaultModelObject());
            return new DemoRequestResponse(new Model(request));
        }
    });

    form.add(new AjaxSubmitLink("execute") {

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form form) {
            responseWindow.setDefaultModel(new Model(getRequestXML()));
            responseWindow.show(target);
        }

        @Override
        protected void onError(AjaxRequestTarget target, Form form) {
            super.onError(target, form);
            target.addComponent(builder.getFeedbackPanel());
        }
    });

    form.add(new AjaxSubmitLink("executeXML") {

        @Override
        protected void onSubmit(AjaxRequestTarget target, Form form) {
            try {
                getRequestXML();
                xmlWindow.show(target);
            } catch (Exception e) {
                error(e.getMessage());
                target.addComponent(getFeedbackPanel());
            }
        }

        @Override
        protected void onError(AjaxRequestTarget target, Form form) {
            target.addComponent(getFeedbackPanel());
        }
    });
}

From source file:org.geoserver.wcs.web.demo.WCSRequestBuilderPanel.java

License:Open Source License

public WCSRequestBuilderPanel(String id, GetCoverageRequest getCoverage) {
    super(id);/*from   w  w  w . j a  v  a  2 s. c om*/
    setOutputMarkupId(true);
    setDefaultModel(new Model(getCoverage));
    this.getCoverage = getCoverage;

    // the feedback panel, for validation errors
    feedback = new FeedbackPanel("feedback");
    feedback.setOutputMarkupId(true);
    add(feedback);

    // the version chooser
    final DropDownChoice<Version> version = new DropDownChoice<Version>("version",
            new PropertyModel<Version>(getCoverage, "version"), Arrays.asList(Version.values()));
    add(version);

    // the action that will setup the form once the coverage has been chosen
    version.add(new AjaxFormSubmitBehavior("onchange") {

        @Override
        protected void onError(AjaxRequestTarget target) {
            onSubmit(target);
        }

        @Override
        protected void onSubmit(AjaxRequestTarget target) {
            if (version.getModelObject() == Version.v1_0_0) {
                sourceGridContainer.setVisible(true);
                targetlayoutContainer.setVisible(false);
                manualGrid.setModelObject(false);
                sourceGridRange.setVisible(false);
            } else {
                targetlayoutContainer.setVisible(true);
                sourceGridContainer.setVisible(false);
                targetLayoutChooser.setModelObject(TargetLayout.Automatic);
                g2w.setModelObject(null);
                g2w.setVisible(false);
            }
            target.addComponent(WCSRequestBuilderPanel.this);
        }
    });

    // the coverage id chooser
    coverage = new DropDownChoice<String>("coverage", new PropertyModel<String>(getCoverage, "coverage"),
            new CoverageNamesModel());
    add(coverage);

    // the action that will setup the form once the coverage has been chosen
    coverage.add(new AjaxFormSubmitBehavior("onchange") {

        @Override
        protected void onError(AjaxRequestTarget target) {
            onSubmit(target);
        }

        @Override
        protected void onSubmit(AjaxRequestTarget target) {
            details.setVisible(true);
            String coverageName = coverage.getModelObject();
            Catalog catalog = GeoServerApplication.get().getCatalog();
            CoverageInfo ci = catalog.getCoverageByName(coverageName);
            ReferencedEnvelope ri = ci.getNativeBoundingBox();
            final GetCoverageRequest gc = WCSRequestBuilderPanel.this.getCoverage;
            gc.bounds = ri;
            gc.targetCRS = ri.getCoordinateReferenceSystem();
            gc.sourceGridRange = null;
            describeLink.setEnabled(true);
            target.addComponent(WCSRequestBuilderPanel.this);
        }
    });

    // the details container
    details = new WebMarkupContainer("details");
    details.setOutputMarkupId(true);
    details.setVisible(false);
    add(details);

    // the envelope chooser
    envelope = new EnvelopePanel("envelope", new PropertyModel(getCoverage, "bounds"));
    envelope.setCRSFieldVisible(true);
    envelope.setCrsRequired(true);
    details.add(envelope);

    // the grid panel (for WCS 1.0 requests)
    buildGridPanel();

    // the format chooser
    CoverageResponseDelegateFinder responseFactory = (CoverageResponseDelegateFinder) GeoServerApplication.get()
            .getBean("coverageResponseDelegateFactory");
    formats = new DropDownChoice<String>("format", new PropertyModel(getCoverage, "outputFormat"),
            responseFactory.getOutputFormats());
    details.add(formats);

    // the target CRS
    targetCRS = new CRSPanel("targetCRS", new PropertyModel(getCoverage, "targetCRS"));
    details.add(targetCRS);

    // the target grid to world (for WCS 1.1 ones)
    buildAffinePanel();

    // the describe response window
    responseWindow = new ModalWindow("responseWindow");
    add(responseWindow);

    responseWindow.setPageCreator(new ModalWindow.PageCreator() {

        public Page createPage() {
            DemoRequest request = new DemoRequest(null);
            HttpServletRequest http = ((WebRequest) WCSRequestBuilderPanel.this.getRequest())
                    .getHttpServletRequest();
            String url = ResponseUtils.buildURL(ResponseUtils.baseURL(http), "ows",
                    Collections.singletonMap("strict", "true"), URLType.SERVICE);
            request.setRequestUrl(url);
            request.setRequestBody((String) responseWindow.getDefaultModelObject());
            return new DemoRequestResponse(new Model(request));
        }
    });

    // the describe coverage link
    describeLink = new GeoServerAjaxFormLink("describeCoverage") {

        @Override
        protected void onClick(AjaxRequestTarget target, Form form) {
            version.processInput();
            coverage.processInput();
            final String coverageName = WCSRequestBuilderPanel.this.getCoverage.coverage;
            if (coverageName != null) {
                responseWindow.setDefaultModel(new Model(getDescribeXML(coverageName)));
                responseWindow.show(target);
            }
        }
    };
    describeLink.setEnabled(false);
    describeLink.setOutputMarkupId(true);
    add(describeLink);
}

From source file:org.geoserver.web.data.layergroup.LayerGroupEntryPanel.java

License:Open Source License

public LayerGroupEntryPanel(String id, LayerGroupInfo layerGroup) {
    super(id);/*from   ww  w. j  a  va2s .co  m*/

    items = new ArrayList<LayerGroupEntry>();
    for (int i = 0; i < layerGroup.getLayers().size(); i++) {
        PublishedInfo layer = layerGroup.getLayers().get(i);
        StyleInfo style = layerGroup.getStyles().get(i);
        items.add(new LayerGroupEntry(layer, style));
    }

    add(popupWindow = new ModalWindow("popup"));
    add(dialog = new GeoServerDialog("dialog"));
    add(new HelpLink("layersHelp").setDialog(dialog));

    //layers
    add(layerTable = new ReorderableTablePanel<LayerGroupEntry>("layers", items, PROPERTIES) {

        @Override
        protected Component getComponentForProperty(String id, IModel itemModel,
                Property<LayerGroupEntry> property) {
            if (property == LAYER) {
                return layerLink(id, itemModel);
            }
            if (property == DEFAULT_STYLE) {
                return defaultStyleCheckbox(id, itemModel);
            }
            if (property == STYLE) {
                return styleLink(id, itemModel);
            }
            if (property == REMOVE) {
                return removeLink(id, itemModel);
            }

            return null;
        }

    }.setFilterable(false));
    layerTable.setItemReuseStrategy(new DefaultItemReuseStrategy());
    layerTable.setOutputMarkupId(true);

    add(new AjaxLink("addLayer") {
        @Override
        public void onClick(AjaxRequestTarget target) {
            popupWindow.setInitialHeight(375);
            popupWindow.setInitialWidth(525);
            popupWindow.setTitle(new ParamResourceModel("chooseLayer", this));
            popupWindow.setContent(new LayerListPanel(popupWindow.getContentId()) {
                @Override
                protected void handleLayer(LayerInfo layer, AjaxRequestTarget target) {
                    popupWindow.close(target);

                    items.add(new LayerGroupEntry(layer, layer.getDefaultStyle()));

                    //getCatalog().save( lg );
                    target.addComponent(layerTable);
                }
            });

            popupWindow.show(target);
        }
    });

    add(new AjaxLink("addLayerGroup") {
        @Override
        public void onClick(AjaxRequestTarget target) {
            popupWindow.setInitialHeight(375);
            popupWindow.setInitialWidth(525);
            popupWindow.setTitle(new ParamResourceModel("chooseLayerGroup", this));
            popupWindow.setContent(new LayerGroupListPanel(popupWindow.getContentId()) {
                @Override
                protected void handleLayerGroup(LayerGroupInfo layerGroup, AjaxRequestTarget target) {
                    popupWindow.close(target);

                    items.add(new LayerGroupEntry(layerGroup, null));

                    target.addComponent(layerTable);
                }
            });

            popupWindow.show(target);
        }
    });
}