Example usage for org.apache.wicket.ajax.form OnChangeAjaxBehavior OnChangeAjaxBehavior

List of usage examples for org.apache.wicket.ajax.form OnChangeAjaxBehavior OnChangeAjaxBehavior

Introduction

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

Prototype

public OnChangeAjaxBehavior() 

Source Link

Document

Constructor.

Usage

From source file:org.geoserver.gwc.web.layer.GeoServerTileLayerEditor.java

License:Open Source License

/**
 * @param id//from w  w w. j av a 2 s  .c  om
 * @param layerModel
 * @param tileLayerModel must be a {@link GeoServerTileLayerInfoModel}
 */
public GeoServerTileLayerEditor(final String id, final IModel<? extends PublishedInfo> layerModel,
        final IModel<GeoServerTileLayerInfo> tileLayerModel) {
    super(id);
    checkArgument(tileLayerModel instanceof GeoServerTileLayerInfoModel);
    this.layerModel = layerModel;
    setModel(tileLayerModel);

    final GWC mediator = GWC.get();
    final IModel<String> createTileLayerLabelModel;

    final PublishedInfo info = layerModel.getObject();
    final GeoServerTileLayerInfo tileLayerInfo = tileLayerModel.getObject();

    if (info instanceof LayerInfo) {
        createTileLayerLabelModel = new ResourceModel("createTileLayerForLayer");
        ResourceInfo resource = ((LayerInfo) info).getResource();
        // we need the _current_ name, regardless of it's name is being changed
        resource = ModificationProxy.unwrap(resource);
        originalLayerName = resource.getPrefixedName();
    } else if (info instanceof LayerGroupInfo) {
        createTileLayerLabelModel = new ResourceModel("createTileLayerForLayerGroup");
        // we need the _current_ name, regardless of if it's name is being changed
        LayerGroupInfo lgi = ModificationProxy.unwrap((LayerGroupInfo) info);
        originalLayerName = tileLayerName(lgi);
    } else {
        throw new IllegalArgumentException(
                "Provided model does not target a LayerInfo nor a LayerGroupInfo: " + info);
    }

    TileLayer tileLayer = null;
    if (originalLayerName != null) {
        try {
            tileLayer = mediator.getTileLayerByName(originalLayerName);
        } catch (IllegalArgumentException notFound) {
            //
        }
    }
    cachedLayerExistedInitially = tileLayer != null;

    // UI construction phase
    add(confirmRemovalDialog = new GeoServerDialog("confirmRemovalDialog"));
    confirmRemovalDialog.setInitialWidth(360);
    confirmRemovalDialog.setInitialHeight(180);

    add(new Label("createTileLayerLabel", createTileLayerLabelModel));

    // Get the model and check if the Enabled parameter has been defined
    GeoServerTileLayerInfoModel model = ((GeoServerTileLayerInfoModel) tileLayerModel);

    boolean undefined = model.getEnabled() == null;

    boolean doCreateTileLayer;
    if (tileLayerInfo.getId() != null) {
        doCreateTileLayer = true;
    } else if (isNew() && mediator.getConfig().isCacheLayersByDefault()) {
        doCreateTileLayer = true;
    } else {
        doCreateTileLayer = false;
    }
    // Add the enabled/disabled parameter depending on the doCreateTileLayer variable if not already set
    if (undefined) {
        model.setEnabled(doCreateTileLayer);
    }
    add(createLayer = new CheckBox("createTileLayer", new Model<Boolean>(doCreateTileLayer)));
    createLayer.add(new AttributeModifier("title", true, new ResourceModel("createTileLayer.title")));

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

    configs = new WebMarkupContainer("configs");
    configs.setOutputMarkupId(true);
    container.add(configs);

    add(enabled = new CheckBox("enabled", new PropertyModel<Boolean>(getModel(), "enabled")));
    enabled.add(new AttributeModifier("title", true, new ResourceModel("enabled.title")));
    configs.add(enabled);

    IChoiceRenderer<String> blobStoreRenderer = new IChoiceRenderer<String>() {
        private static final long serialVersionUID = 1L;

        final String defaultStore = getDefaultBlobStoreId();

        @Override
        public String getIdValue(String object, int index) {
            return object;
        }

        @Override
        public Object getDisplayValue(String object) {
            String value = object;
            if (object.equals(defaultStore)) {
                value += " (*)";
            }
            return value;
        }
    };
    PropertyModel<String> blobStoreModel = new PropertyModel<String>(getModel(), "blobStoreId");
    List<String> blobStoreChoices = getBlobStoreIds();
    configs.add(blobStoreId = new DropDownChoice<String>("blobStoreId", blobStoreModel, blobStoreChoices,
            blobStoreRenderer));
    blobStoreId.setNullValid(true);
    blobStoreId.add(new AttributeModifier("title", true, new ResourceModel("blobStoreId.title")));

    add(new IValidator<GeoServerTileLayerInfo>() {
        private static final long serialVersionUID = 5240602030478856537L;

        @Override
        public void validate(IValidatable<GeoServerTileLayerInfo> validatable) {
            final Boolean createVal = createLayer.getConvertedInput();
            final Boolean enabledVal = enabled.getConvertedInput();
            final String blobStoreIdVal = blobStoreId.getConvertedInput();

            if (createVal && enabledVal && !isBlobStoreEnabled(blobStoreIdVal)) {
                error(new ParamResourceModel("enabledError", GeoServerTileLayerEditor.this).getString());
            }
        }
    });

    // CheckBox for enabling/disabling inner caching for the layer
    enableInMemoryCaching = new CheckBox("inMemoryCached",
            new PropertyModel<Boolean>(getModel(), "inMemoryCached"));
    ConfigurableBlobStore store = GeoServerExtensions.bean(ConfigurableBlobStore.class);
    if (store != null && store.getCache() != null) {
        enableInMemoryCaching
                .setEnabled(mediator.getConfig().isInnerCachingEnabled() && !store.getCache().isImmutable());
    }

    configs.add(enableInMemoryCaching);

    List<Integer> metaTilingChoices = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
            18, 19, 20);
    IModel<Integer> metaTilingXModel = new PropertyModel<Integer>(getModel(), "metaTilingX");
    metaTilingX = new DropDownChoice<Integer>("metaTilingX", metaTilingXModel, metaTilingChoices);
    configs.add(metaTilingX);

    IModel<Integer> metaTilingYModel = new PropertyModel<Integer>(getModel(), "metaTilingY");
    metaTilingY = new DropDownChoice<Integer>("metaTilingY", metaTilingYModel, metaTilingChoices);
    configs.add(metaTilingY);

    IModel<Integer> gutterModel = new PropertyModel<Integer>(getModel(), "gutter");
    List<Integer> gutterChoices = Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 15, 20, 50, 100);
    gutter = new DropDownChoice<Integer>("gutter", gutterModel, gutterChoices);
    configs.add(gutter);

    IModel<Set<String>> mimeFormatsModel = new PropertyModel<Set<String>>(getModel(), "mimeFormats");

    cacheFormats = new CheckGroup<String>("cacheFormatsGroup", mimeFormatsModel);
    cacheFormats.setLabel(new ResourceModel("cacheFormats"));
    configs.add(cacheFormats);

    final List<String> formats;
    formats = Lists.newArrayList(GWC.get().getAdvertisedCachedFormats(info.getType()));

    ListView<String> cacheFormatsList = new ListView<String>("cacheFormats", formats) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(ListItem<String> item) {
            item.add(new Check<String>("cacheFormatsOption", item.getModel()));
            item.add(new Label("name", item.getModel()));
        }
    };
    cacheFormatsList.setReuseItems(true);// otherwise it looses state on invalid form state
                                         // submits
    cacheFormats.add(cacheFormatsList);

    IModel<Integer> expireCacheModel = new PropertyModel<Integer>(getModel(), "expireCache");
    expireCache = new TextField<Integer>("expireCache", expireCacheModel);
    configs.add(expireCache);

    IModel<Integer> expireClientsModel = new PropertyModel<Integer>(getModel(), "expireClients");
    expireClients = new TextField<Integer>("expireClients", expireClientsModel);
    configs.add(expireClients);

    IModel<Set<XMLGridSubset>> gridSubsetsModel;
    gridSubsetsModel = new PropertyModel<Set<XMLGridSubset>>(getModel(), "gridSubsets");
    gridSubsets = new GridSubsetsEditor("cachedGridsets", gridSubsetsModel);
    configs.add(gridSubsets);

    IModel<Set<ParameterFilter>> parameterFilterModel;
    parameterFilterModel = new PropertyModel<Set<ParameterFilter>>(getModel(), "parameterFilters");
    parameterFilters = new ParameterFilterEditor("parameterFilters", parameterFilterModel, layerModel);
    configs.add(parameterFilters);

    // behavior phase
    configs.setVisible(createLayer.getModelObject());
    setValidating(createLayer.getModelObject());

    createLayer.add(new OnChangeAjaxBehavior() {
        private static final long serialVersionUID = 1L;

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            final boolean createTileLayer = createLayer.getModelObject().booleanValue();

            if (!createTileLayer && cachedLayerExistedInitially) {
                confirmRemovalOfExistingTileLayer(target);
            } else {
                updateConfigsVisibility(target);
            }

        }
    });
}

From source file:org.geoserver.gwc.web.layer.GridSubsetsEditor.java

License:Open Source License

public GridSubsetsEditor(final String id, final IModel<Set<XMLGridSubset>> model) {
    super(id, model);
    add(validator = new GridSubsetListValidator());

    // container for ajax updates
    final WebMarkupContainer container = new WebMarkupContainer("container");
    container.setOutputMarkupId(true);/*from w  ww. j  ava2s  .  c om*/
    add(container);

    // the link list
    table = new WebMarkupContainer("table");
    table.setOutputMarkupId(true);

    container.add(table);

    grids = new ListView<XMLGridSubset>("gridSubsets", new ArrayList<XMLGridSubset>(model.getObject())) {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onBeforeRender() {
            super.onBeforeRender();
        }

        @Override
        protected void populateItem(final ListItem<XMLGridSubset> item) {
            // odd/even style
            final int index = item.getIndex();
            item.add(new SimpleAttributeModifier("class", index % 2 == 0 ? "even" : "odd"));

            final XMLGridSubset gridSubset = item.getModelObject();
            GridSetBroker gridSetBroker = GWC.get().getGridSetBroker();

            String gridsetDescription = null;
            int gridsetLevels;
            boolean gridsetExists;
            {
                final GridSet gridSet = gridSetBroker.get(gridSubset.getGridSetName());
                gridsetExists = gridSet != null;
                if (gridsetExists) {
                    gridsetLevels = gridSet.getNumLevels();
                    gridsetDescription = gridSet.getDescription();
                } else {
                    gridsetLevels = gridSubset.getZoomStop() == null ? 1 : gridSubset.getZoomStop().intValue();
                }
            }
            final Label gridSetLabel;
            final Component gridSetBounds;

            gridSetLabel = new Label("gridSet", new PropertyModel<String>(item.getModel(), "gridSetName"));
            if (!gridsetExists) {
                gridSetLabel.add(new AttributeModifier("style", true,
                        new Model<String>("color:red;text-decoration:line-through;")));
                getPage().warn("GridSet " + gridSubset.getGridSetName() + " does not exist");
            }
            item.add(gridSetLabel);
            if (null != gridsetDescription) {
                gridSetLabel.add(new AttributeModifier("title", true, new Model<String>(gridsetDescription)));
            }

            final Component removeLink;

            final int maxZoomLevel = gridsetLevels - 1;
            final ArrayList<Integer> zoomLevels = new ArrayList<Integer>(maxZoomLevel + 1);
            for (int z = 0; z <= maxZoomLevel; z++) {
                zoomLevels.add(Integer.valueOf(z));
            }

            // zoomStart has all zoom levels as choices
            // zoomStop choices start at zoomStart's selection
            // minCachedLevel start at zoomStart's selection and ends at zoomStop's selection
            // maxCachedLevel start at minCachedLevels' and ends at zoomStop's selection

            final IModel<Integer> zoomStartModel;
            final IModel<Integer> zoomStopModel;
            final IModel<Integer> minCachedLevelModel;
            final IModel<Integer> maxCachedLevelModel;

            final ZoomLevelDropDownChoice zoomStart;
            final ZoomLevelDropDownChoice zoomStop;
            final ZoomLevelDropDownChoice minCachedLevel;
            final ZoomLevelDropDownChoice maxCachedLevel;

            zoomStartModel = new PropertyModel<Integer>(item.getModel(), "zoomStart");
            zoomStopModel = new PropertyModel<Integer>(item.getModel(), "zoomStop");
            minCachedLevelModel = new PropertyModel<Integer>(item.getModel(), "minCachedLevel");
            maxCachedLevelModel = new PropertyModel<Integer>(item.getModel(), "maxCachedLevel");

            @SuppressWarnings({ "rawtypes", "unchecked" })
            final IModel<List<Integer>> allLevels = new Model(zoomLevels);

            zoomStart = new ZoomLevelDropDownChoice("zoomStart", zoomStartModel, allLevels);
            zoomStart.setEnabled(gridsetExists);
            item.add(zoomStart);

            zoomStop = new ZoomLevelDropDownChoice("zoomStop", zoomStopModel, allLevels);
            zoomStop.setEnabled(gridsetExists);
            item.add(zoomStop);

            minCachedLevel = new ZoomLevelDropDownChoice("minCachedLevel", minCachedLevelModel, allLevels);
            minCachedLevel.setEnabled(gridsetExists);
            item.add(minCachedLevel);

            maxCachedLevel = new ZoomLevelDropDownChoice("maxCachedLevel", maxCachedLevelModel, allLevels);
            maxCachedLevel.setEnabled(gridsetExists);
            item.add(maxCachedLevel);

            for (ZoomLevelDropDownChoice dropDown : Arrays.asList(zoomStart, zoomStop, minCachedLevel,
                    maxCachedLevel)) {
                dropDown.add(new OnChangeAjaxBehavior() {
                    private static final long serialVersionUID = 1L;

                    // cascades to zoomStop, min and max cached levels
                    @Override
                    protected void onUpdate(AjaxRequestTarget target) {
                        updateValidZoomRanges(zoomStart, zoomStop, minCachedLevel, maxCachedLevel, target);
                    }
                });
            }

            updateValidZoomRanges(zoomStart, zoomStop, minCachedLevel, maxCachedLevel, null);

            // gridSetBounds = new EnvelopePanel("bounds");
            // gridSetBounds.setCRSFieldVisible(false);
            // gridSetBounds.setCrsRequired(false);
            // gridSetBounds.setLabelsVisibility(false);
            // gridSetBounds.setModel(new Model<ReferencedEnvelope>(new ReferencedEnvelope()));
            gridSetBounds = new Label("bounds", new ResourceModel("GridSubsetsEditor.bounds.dynamic"));
            item.add(gridSetBounds);

            removeLink = new ImageAjaxLink("removeLink", GWCIconFactory.DELETE_ICON) {
                private static final long serialVersionUID = 1L;

                @Override
                protected void onClick(AjaxRequestTarget target) {
                    List<XMLGridSubset> list;
                    list = new ArrayList<XMLGridSubset>(grids.getModelObject());
                    final XMLGridSubset subset = (XMLGridSubset) getDefaultModelObject();

                    list.remove(subset);

                    grids.setModelObject(list);

                    List<String> choices = new ArrayList<String>(availableGridSets.getChoices());
                    choices.add(subset.getGridSetName());
                    Collections.sort(choices);
                    availableGridSets.setChoices(choices);

                    target.addComponent(container);
                    target.addComponent(availableGridSets);
                }
            };
            removeLink.setDefaultModel(item.getModel());
            removeLink.add(
                    new AttributeModifier("title", true, new ResourceModel("GridSubsetsEditor.removeLink")));
            item.add(removeLink);
        }
    };

    grids.setOutputMarkupId(true);
    // this is necessary to avoid loosing item contents on edit/validation checks
    grids.setReuseItems(true);
    table.add(grids);

    List<String> gridSetNames = new ArrayList<String>(GWC.get().getGridSetBroker().getNames());
    for (XMLGridSubset gs : model.getObject()) {
        gridSetNames.remove(gs.getGridSetName());
    }
    Collections.sort(gridSetNames);

    GeoServerAjaxFormLink addGridsubsetLink = new GeoServerAjaxFormLink("addGridSubset") {
        private static final long serialVersionUID = 1L;

        @Override
        protected void onClick(AjaxRequestTarget target, Form form) {
            availableGridSets.processInput();

            final String selectedGridset = availableGridSets.getModelObject();
            if (null == selectedGridset) {
                return;
            }

            List<String> choices = new ArrayList<String>(availableGridSets.getChoices());
            choices.remove(selectedGridset);
            availableGridSets.setChoices(choices);
            availableGridSets.setEnabled(!choices.isEmpty());

            XMLGridSubset newSubset = new XMLGridSubset();
            newSubset.setGridSetName(selectedGridset);
            grids.getModelObject().add(newSubset);

            target.addComponent(table);
            target.addComponent(availableGridSets);
        }
    };
    addGridsubsetLink.add(new Icon("addIcon", GWCIconFactory.ADD_ICON));
    add(addGridsubsetLink);

    availableGridSets = new DropDownChoice<String>("availableGridsets", new Model<String>(), gridSetNames);
    availableGridSets.setOutputMarkupId(true);
    add(availableGridSets);

}

From source file:org.geoserver.inspire.web.InspireAdminPanel.java

License:Open Source License

@SuppressWarnings({ "unchecked", "rawtypes" })
public InspireAdminPanel(final String id, final IModel<ServiceInfo> model) {
    super(id, model);

    MetadataMap serviceMetadata = model.getObject().getMetadata();

    String metadataURL = (String) serviceMetadata.get(SERVICE_METADATA_URL.key);
    String mediaType = (String) serviceMetadata.get(SERVICE_METADATA_TYPE.key);
    String language = (String) serviceMetadata.get(LANGUAGE.key);
    boolean isWfs = model.getObject() instanceof WFSInfo;
    UniqueResourceIdentifiers ids = null;
    if (isWfs) {//from   ww  w  . ja v a  2 s . c o  m
        ids = (UniqueResourceIdentifiers) serviceMetadata.get(SPATIAL_DATASET_IDENTIFIER_TYPE.key,
                UniqueResourceIdentifiers.class);
    }
    if (!serviceMetadata.containsKey(CREATE_EXTENDED_CAPABILITIES.key)) {
        if (metadataURL == null || isWfs && (ids == null || ids.isEmpty())) {
            serviceMetadata.put(CREATE_EXTENDED_CAPABILITIES.key, false);
        } else {
            serviceMetadata.put(CREATE_EXTENDED_CAPABILITIES.key, true);
        }
    }

    PropertyModel<MetadataMap> metadata = new PropertyModel<MetadataMap>(model, "metadata");

    final CheckBox createInspireExtendedCapabilities = new CheckBox("createExtendedCapabilities",
            new MetadataMapModel(metadata, CREATE_EXTENDED_CAPABILITIES.key, Boolean.class));
    add(createInspireExtendedCapabilities);

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

    final WebMarkupContainer configs = new WebMarkupContainer("configs");
    configs.setOutputMarkupId(true);
    configs.setVisible(createInspireExtendedCapabilities.getModelObject());
    container.add(configs);

    createInspireExtendedCapabilities.add(new OnChangeAjaxBehavior() {
        private static final long serialVersionUID = 1L;

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            configs.setVisible(createInspireExtendedCapabilities.getModelObject());
            target.addComponent(container);
        }
    });

    if (!model.getObject().getMetadata().containsKey(LANGUAGE.key)) {
        model.getObject().getMetadata().put(LANGUAGE.key, "eng");
    }
    configs.add(new LanguageDropDownChoice("language", new MapModel(metadata, LANGUAGE.key)));

    TextField metadataUrlField = new TextField("metadataURL", new MapModel(metadata, SERVICE_METADATA_URL.key));
    metadataUrlField.setRequired(true);
    FormComponentFeedbackBorder metadataURLBorder = new FormComponentFeedbackBorder("border");
    metadataURLBorder.add(metadataUrlField);
    configs.add(metadataURLBorder);
    metadataUrlField.add(
            new AttributeModifier("title", true, new ResourceModel("InspireAdminPanel.metadataURL.title")));

    final Map<String, String> mdUrlTypes = new HashMap<String, String>();
    mdUrlTypes.put("application/vnd.ogc.csw.GetRecordByIdResponse_xml", "CSW GetRecordById Response");
    mdUrlTypes.put("application/vnd.iso.19139+xml", "ISO 19139 ServiceMetadata record");

    IModel<String> urlTypeModel = new MapModel(metadata, SERVICE_METADATA_TYPE.key);

    IChoiceRenderer<String> urlTypeChoiceRenderer = new IChoiceRenderer<String>() {
        private static final long serialVersionUID = 1L;

        @Override
        public Object getDisplayValue(final String key) {
            final String resourceKey = "InspireAdminPanel.metadataURLType." + key;// as found in
            // GeoServerApplication.properties
            final String defaultValue = key;
            final String displayValue = new ResourceModel(resourceKey, defaultValue).getObject();
            return displayValue;
        }

        @Override
        public String getIdValue(final String key, int index) {
            return key;
        }
    };
    List<String> urlTypeChoices = new ArrayList<String>(mdUrlTypes.keySet());
    DropDownChoice<String> serviceMetadataRecordType = new DropDownChoice<String>("metadataURLType",
            urlTypeModel, urlTypeChoices, urlTypeChoiceRenderer);
    serviceMetadataRecordType.setNullValid(true);

    configs.add(serviceMetadataRecordType);

    // this is WFS specific, will appear only if the service is WFS
    WebMarkupContainer identifiersContainer = new WebMarkupContainer("datasetIdentifiersContainer");
    identifiersContainer.setVisible(isWfs);
    configs.add(identifiersContainer);
    IModel<UniqueResourceIdentifiers> sdiModel = new MetadataMapModel(metadata,
            SPATIAL_DATASET_IDENTIFIER_TYPE.key, UniqueResourceIdentifiers.class);
    UniqueResourceIdentifiersEditor identifiersEditor = new UniqueResourceIdentifiersEditor(
            "spatialDatasetIdentifiers", sdiModel);
    identifiersContainer.add(identifiersEditor);
}

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

License:Open Source License

protected void initCommonComponents() {
    /** CheckBox activatedCheck */
    final CheckBox activatedCheck = new CheckBox("createExtendedCapabilities",
            new PropertyModel<Boolean>(config, "activated"));
    add(activatedCheck);// w  w w.  j  ava2 s .com

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

    configs = new WebMarkupContainer("configs");
    configs.setOutputMarkupId(true);
    configs.setVisible(activatedCheck.getModelObject());
    container.add(configs);

    activatedCheck.add(new OnChangeAjaxBehavior() {
        private static final long serialVersionUID = 1L;

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            configs.setVisible(activatedCheck.getModelObject());
            target.add(container);
        }
    });

    if (config.getWmsQosMetadata() == null)
        config.setWmsQosMetadata(new QosMainMetadata());
    if (config.getWmsQosMetadata().getOperatingInfo() == null)
        config.getWmsQosMetadata().setOperatingInfo(new ArrayList<>());
    final ListView<OperatingInfo> opInfoListView = new ListView<OperatingInfo>("opInfoListView",
            config.getWmsQosMetadata().getOperatingInfo()) {
        @Override
        protected void populateItem(ListItem<OperatingInfo> item) {
            OperatingInfoModalPanel opPanel = new OperatingInfoModalPanel("opinfo", item.getModel());
            // onDelete
            opPanel.setOnDelete(x -> {
                config.getWmsQosMetadata().getOperatingInfo().remove(x.getModel());
                x.getTarget().add(configs);
            });
            item.add(opPanel);
        }
    };
    opInfoListView.setOutputMarkupId(true);
    configs.add(opInfoListView);

    final AjaxButton addOpInfoButton = new AjaxButton("addOpInfo") {
    };
    configs.add(addOpInfoButton);
    addOpInfoButton.add(new AjaxFormSubmitBehavior("click") {
        @Override
        protected void onAfterSubmit(final AjaxRequestTarget target) {
            config.getWmsQosMetadata().getOperatingInfo().add(new OperatingInfo());
            target.add(configs);
        }
    });

    //
    if (config.getWmsQosMetadata().getOperationAnomalyFeed() == null) {
        config.getWmsQosMetadata().setOperationAnomalyFeed(new ArrayList<>());
    }
    final WebMarkupContainer anomalyDiv = new WebMarkupContainer("anomalyDiv");
    anomalyDiv.setOutputMarkupId(true);
    configs.add(anomalyDiv);

    final ListView<ReferenceType> anomalyListView = new ListView<ReferenceType>("anomalyListView",
            config.getWmsQosMetadata().getOperationAnomalyFeed()) {
        @Override
        protected void populateItem(ListItem<ReferenceType> item) {
            OperationAnomalyFeedPanel anomalyPanel = new OperationAnomalyFeedPanel("anomalyPanel",
                    item.getModel());
            // onDelete
            anomalyPanel.setOnDelete(x -> {
                config.getWmsQosMetadata().getOperationAnomalyFeed().remove(x.getModel());
                x.getTarget().add(anomalyDiv);
            });
            item.add(anomalyPanel);
        }
    };
    anomalyDiv.add(anomalyListView);

    final AjaxButton anomalyButton = new AjaxButton("addAnomaly") {
    };
    anomalyDiv.add(anomalyButton);
    anomalyButton.add(new AjaxFormSubmitBehavior("click") {
        @Override
        protected void onAfterSubmit(final AjaxRequestTarget target) {
            config.getWmsQosMetadata().getOperationAnomalyFeed().add(new ReferenceType());
            target.add(anomalyDiv);
        }
    });

    // Statements
    if (config.getWmsQosMetadata().getStatements() == null) {
        config.getWmsQosMetadata().setStatements(new ArrayList<>());
    }
    final QosStatementListPanel statPanel = new QosStatementListPanel("statemenstDiv",
            new ListModel<>(config.getWmsQosMetadata().getStatements()));
    configs.add(statPanel);

    initRepresentativeOperations(mainModel);
}

From source file:org.geoserver.security.web.auth.PreAuthenticatedUserNameFilterPanel.java

License:Open Source License

public PreAuthenticatedUserNameFilterPanel(String id, IModel<T> model) {
    super(id, model);

    add(new HelpLink("roleSourceHelp", this).setDialog(dialog));

    createRoleSourceDropDown();/*from w  w w .  jav a2  s.  c  om*/

    roleSourceChoice.setNullValid(false);

    roleSourceChoice.add(new OnChangeAjaxBehavior() {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            Panel p = getRoleSourcePanel(roleSourceChoice.getModelObject());

            WebMarkupContainer c = (WebMarkupContainer) get("container");
            c.addOrReplace(p);
            target.addComponent(c);
        }
    });

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

    // show correct panel for existing configuration
    RoleSource rs = model.getObject().getRoleSource();
    addRoleSourceDropDown(container, rs);
}

From source file:org.geoserver.security.web.auth.SecurityFilterChainPage.java

License:Open Source License

protected void initialize(RequestFilterChain chain, SecurityManagerConfig secMgrConfig, boolean isNew,
        Form<? extends RequestFilterChainWrapper> theForm, RequestFilterChainWrapper wrapper) {

    this.chainWrapper = wrapper;
    this.isNew = isNew;
    this.secMgrConfig = secMgrConfig;

    form = theForm;/*from   ww  w . j  a va  2s  .co  m*/
    add(form);

    //check for administrator, if not disable the panel and emit warning message
    boolean isAdmin = getSecurityManager().checkAuthenticationForAdminRole();
    setEnabled(isAdmin);

    form.add(new Label("message", isAdmin ? new Model() : new StringResourceModel("notAdmin", this, null)));
    if (!isAdmin) {
        form.get("message").add(new AttributeAppender("class", new Model("info-link"), " "));
    }

    setOutputMarkupId(true);

    form.add(new TextField<String>("name").setEnabled(isNew));
    form.add(new TextField<String>("patternString"));
    form.add(new CheckBox("disabled"));
    form.add(new CheckBox("allowSessionCreation"));
    form.add(new CheckBox("requireSSL"));
    form.add(new CheckBox("matchHTTPMethod").add(new OnChangeAjaxBehavior() {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            for (CheckBox cb : methodList) {
                cb.setEnabled(chainWrapper.isMatchHTTPMethod());
                target.addComponent(cb);
            }
        }
    }));

    List<String> filterNames = new ArrayList<String>();
    try {
        filterNames.addAll(getSecurityManager().listFilters(GeoServerRoleFilter.class));
        for (GeoServerRoleFilter filter : GeoServerExtensions.extensions(GeoServerRoleFilter.class)) {
            filterNames.add(filter.getName());
        }
        form.add(new DropDownChoice<String>("roleFilterName",
                new PropertyModel<String>(chainWrapper.getChain(), "roleFilterName"), filterNames)
                        .setNullValid(true));
    } catch (IOException e) {
        throw new RuntimeException(e);
    }

    form.add(methodList[0] = new CheckBox("GET"));
    form.add(methodList[1] = new CheckBox("POST"));
    form.add(methodList[2] = new CheckBox("PUT"));
    form.add(methodList[3] = new CheckBox("DELETE"));
    form.add(methodList[4] = new CheckBox("OPTIONS"));
    form.add(methodList[5] = new CheckBox("HEAD"));
    form.add(methodList[6] = new CheckBox("TRACE"));

    for (CheckBox cb : methodList) {
        cb.setOutputMarkupPlaceholderTag(true);
        cb.setEnabled(chain.isMatchHTTPMethod());
    }

    form.add(dialog = new GeoServerDialog("dialog"));

    form.add(new HelpLink("chainConfigHelp").setDialog(dialog));
    form.add(new HelpLink("chainConfigMethodHelp").setDialog(dialog));

    form.add(new SubmitLink("close", form) {
        @Override
        public void onSubmit() {
            handleSubmit(getForm());
        }
    });
    form.add(new Link("cancel") {
        @Override
        public void onClick() {
            doReturn();
        }
    });

}

From source file:org.geoserver.security.web.service.AbstractServiceAccessRulePage.java

License:Open Source License

public AbstractServiceAccessRulePage(final ServiceAccessRule rule) {

    // build the form
    Form form = new Form<Serializable>("form", new CompoundPropertyModel(rule));
    add(form);//from w w w .  j  a  v a  2s .  c  om
    form.add(new EmptyRolesValidator());

    form.add(serviceChoice = new DropDownChoice<String>("service", getServiceNames()));
    serviceChoice.add(new OnChangeAjaxBehavior() {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            methodChoice.updateModel();
            target.addComponent(methodChoice);
        }
    });
    serviceChoice.setRequired(true);

    form.add(methodChoice = new DropDownChoice<String>("method", new MethodsModel(rule)));

    //we add on change behavior to ensure the underlying model is updated but don't actually
    // do anything on change... this allows us to keep state when someone adds a new role, 
    // leaving the page, TODO: find a better way to do this
    //methodChoice.add(new OnChangeAjaxBehavior() {
    //    @Override
    //    protected void onUpdate(AjaxRequestTarget target) {}
    //});
    methodChoice.setOutputMarkupId(true);
    methodChoice.setRequired(true);

    form.add(rolesFormComponent = new RuleRolesFormComponent("roles",
            new PropertyModel<Collection<String>>(rule, "roles")));
    //new Model((Serializable)new ArrayList(rule.getRoles()))));

    // build the submit/cancel
    form.add(new SubmitLink("save") {
        @Override
        public void onSubmit() {
            onFormSubmit((ServiceAccessRule) getForm().getModelObject());
        }
    });
    form.add(new BookmarkablePageLink("cancel", ServiceAccessRulePage.class));
}

From source file:org.geoserver.security.web.usergroup.UserGroupServicePanel.java

License:Open Source License

public UserGroupServicePanel(String id, IModel<T> model) {
    super(id, model);

    add(new PasswordEncoderChoice("passwordEncoderName").add(new OnChangeAjaxBehavior() {
        @Override//from www.  j  a  v a2  s  .c o  m
        protected void onUpdate(AjaxRequestTarget target) {
            if (recodeCheckBox.isVisible()) {
                recodeCheckBox.setEnabled(true);
                target.addComponent(recodeCheckBox);
            }
        }
    }));

    boolean canCreateStore = false;
    SecurityUserGroupServiceConfig config = model.getObject();
    try {
        GeoServerUserGroupService s = (GeoServerUserGroupService) Class.forName(config.getClassName())
                .newInstance();
        canCreateStore = s.canCreateStore();
    } catch (Exception e) {
        // do nothing
    }

    recodeCheckBox = new CheckBox("recodeExistingPasswords", Model.of(false));
    recodeCheckBox.setOutputMarkupId(true);
    recodeCheckBox.setVisible(canCreateStore);
    recodeCheckBox.setEnabled(false);
    add(recodeCheckBox);
    add(new PasswordPolicyChoice("passwordPolicyName"));
}

From source file:org.geoserver.taskmanager.web.panel.DropDownPanel.java

License:Open Source License

public DropDownPanel(String id, IModel<String> model, IModel<? extends List<? extends String>> choiceModel,
        IModel<String> labelModel) {
    super(id, model);

    boolean custom = choiceModel.getObject().contains("");
    boolean useDropDown = !custom || choiceModel.getObject().contains(model.getObject());
    add(new Label("message", labelModel));
    add(new DropDownChoice<String>("dropdown", useDropDown ? model : new Model<String>(""), choiceModel));
    add(new TextField<String>("custom", model).setVisible(!useDropDown));

    if (custom) {
        setOutputMarkupId(true);//from w  w  w  . j  a v a  2  s  .  c o m
        getDropDownChoice().add(new OnChangeAjaxBehavior() {
            private static final long serialVersionUID = 7823984472638368286L;

            @Override
            protected void onUpdate(AjaxRequestTarget target) {
                boolean useDropDown = !getDropDownChoice().getModelObject().equals("");
                if (useDropDown) {
                    model.setObject(getDropDownChoice().getModelObject());
                    getDropDownChoice().setModel(model);
                } else {
                    getDropDownChoice().setModel(new Model<String>(""));
                }
                getTextField().setVisible(!useDropDown);
                target.add(DropDownPanel.this);
            }

        });
    }
}

From source file:org.geoserver.taskmanager.web.panel.NewTaskPanel.java

License:Open Source License

public NewTaskPanel(String id, Configuration config) {
    super(id);//from w  w  w .  j av a 2 s  .co  m
    add(new FeedbackPanel("feedback").setOutputMarkupId(true));
    add(new TextField<String>("name", new Model<String>()).setRequired(true));
    add(new DropDownChoice<String>("type", new Model<String>(),
            new Model<ArrayList<String>>(new ArrayList<String>(TaskManagerBeans.get().getTaskTypes().names())))
                    .setRequired(true).setOutputMarkupId(true));
    add(new DropDownChoice<String>("copy", new Model<String>(),
            new Model<ArrayList<String>>(new ArrayList<String>(config.getTasks().keySet())))
                    .setOutputMarkupId(true));

    getCopyField().add(new OnChangeAjaxBehavior() {
        private static final long serialVersionUID = -5575115165929413404L;

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            getTypeField().getModel()
                    .setObject(config.getTasks().get(getCopyField().getConvertedInput()).getType());
            target.add(getTypeField());
        }
    });

    getTypeField().add(new OnChangeAjaxBehavior() {
        private static final long serialVersionUID = -1427899086435643578L;

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            getCopyField().getModel().setObject(null);
            target.add(getCopyField());
        }
    });
}