Example usage for org.apache.wicket.markup.html.list ListView setReuseItems

List of usage examples for org.apache.wicket.markup.html.list ListView setReuseItems

Introduction

In this page you can find the example usage for org.apache.wicket.markup.html.list ListView setReuseItems.

Prototype

public ListView<T> setReuseItems(boolean reuseItems) 

Source Link

Document

If true re-rendering the list view is more efficient if the windows doesn't get changed at all or if it gets scrolled (compared to paging).

Usage

From source file:jp.gihyo.wicket.page.simple.MyTimeline.java

License:Apache License

private void constructPage() {
    final TweetForm form = new TweetForm("tweetForm");
    add(form);//from www .  j av  a2  s . c om

    feedback = new FeedbackPanel("feedback");
    feedback.setOutputMarkupId(true);
    add(feedback);

    /*
     * ^CCpIModel?B
     * ??[hf?[^NGXg?EX|X?ETCNLbV?A
     * LoadableDetachableModelNXgp?B
     */
    IModel<List<Status>> statusModel = new LoadableDetachableModel<List<Status>>() {
        @Override
        protected List<Status> load() {
            try {
                Twitter twitter = AppSession.get().getTwitterSession();
                return twitter.getFriendsTimeline(new Paging(1, ITEMS_PER_PAGE));
            } catch (TwitterException ex) {
                MyTimeline.this.error(getString("canNotRetrieveFriendTimeline"));
                return Collections.emptyList();
            }
        }
    };

    /*
     * ^CCXg
     */
    ListView<Status> timeline = new ListView<Status>("statusView", statusModel) {
        @Override
        protected void populateItem(final ListItem<Status> item) {
            final Status status = item.getModelObject();
            String userUrl = "http://twitter.com/" + status.getUser().getScreenName();
            ExternalLink imageLink = new ExternalLink("imageLink", userUrl);
            byte[] byteArray = {};/* f?[^?? */
            UrlResourceStream stream = new UrlResourceStream(status.getUser().getProfileImageURL());
            try {
                stream.getInputStream().read(byteArray);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (ResourceStreamNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            Image userImage = new Image("userImage", new ByteArrayResource("image/jpeg", byteArray));
            imageLink.add(userImage);
            item.add(imageLink);

            ExternalLink screenNameLink = new ExternalLink("screenName", userUrl,
                    status.getUser().getScreenName());
            item.add(screenNameLink);

            Label content = new Label("tweetContent", status.getText());
            item.add(content);

            ExternalLink tweetLink = new ExternalLink("tweetLink", userUrl + "/status/" + status.getId(), null);
            item.add(tweetLink);

            Label time = new Label("tweetTime",
                    new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(status.getCreatedAt()));
            tweetLink.add(time);

            Label clientName = new Label("clientName", status.getSource());
            item.add(clientName.setEscapeModelStrings(false));

            /*
             * CNx?BIModel?f?A?fav/unfav
             * \?B
             */
            final Label favName = new Label("favName", new AbstractReadOnlyModel<String>() {
                @Override
                public String getObject() {
                    return status.isFavorited() ? "unfav" : "fav";
                }
            });

            /*
             * CN?BNbN?C?E??s?B
             */
            Link<Void> favLink = new Link<Void>("favLink") {
                @Override
                public void onClick() {
                    try {
                        Twitter twitterSession = AppSession.get().getTwitterSession();
                        if (status.isFavorited()) {
                            twitterSession.destroyFavorite(status.getId());
                            info(getString("favorateRemoved"));
                        } else {
                            twitterSession.createFavorite(status.getId());
                            info(getString("favorateRegistered"));
                        }
                    } catch (TwitterException ex) {
                        String message = getString("catNotCreateFavorite") + ": " + ex.getStatusCode();
                        error(message);
                        LOGGER.error(message, ex);
                    }
                }
            };
            item.add(favLink);
            favLink.add(favName);

            /*
             * vCpN?B
             * ?u@screenName?v?B
             */
            item.add(new Link<Void>("replyLink") {
                @Override
                public void onClick() {
                    String targetScreenName = status.getUser().getScreenName();
                    form.insertText("@" + targetScreenName + " ");
                }
            });
        }
    };
    //ListView\e?s????BreuseItemsv?peB??A
    //y?[W\?Ay?[WTu~bg?AXgeIuWFNg\??B
    //twitterey?[We?X??AXg????AXge?
    //Xe?[^Xu?A??dv?B
    timeline.setReuseItems(true);

    add(timeline);
}

From source file:main.java.info.jtrac.wicket.CustomFieldsFormPanel.java

License:Apache License

private void addComponents(final BoundCompoundPropertyModel model, List<Field> fields) {
    ListView listView = new ListView("fields", fields) {
        protected void populateItem(ListItem listItem) {
            final Field field = (Field) listItem.getModelObject();
            listItem.add(new Label("label", field.getLabel()));
            listItem.add(new Label("star", field.isOptional() ? "&nbsp;" : "*").setEscapeModelStrings(false));
            if (field.getName().getType() < 4) { // drop down list                    
                Fragment f = new Fragment("field", "dropDown");
                final Map<String, String> options = field.getOptions();
                List<String> keys = new ArrayList(options.keySet()); // bound value
                DropDownChoice choice = new DropDownChoice("field", keys, new IChoiceRenderer() {
                    public Object getDisplayValue(Object o) {
                        return options.get(o);
                    };//from  w  ww .j  av a2 s . c om

                    public String getIdValue(Object o, int i) {
                        return o.toString();
                    };
                });
                choice.setNullValid(true);
                choice.setLabel(new Model(field.getLabel()));
                if (!field.isOptional()) {
                    choice.setRequired(true);
                }
                WebMarkupContainer border = new WebMarkupContainer("border");
                f.add(border);
                border.add(new ErrorHighlighter(choice));
                border.add(model.bind(choice, field.getName().getText()));
                listItem.add(f);
            } else if (field.getName().getType() == 6) { // date picker                        
                YuiCalendar calendar = new YuiCalendar("field",
                        new PropertyModel(model, field.getName().getText()), !field.isOptional());
                listItem.add(calendar);
                calendar.setLabel(new Model(field.getLabel()));
            } else {
                Fragment f = new Fragment("field", "textField");
                TextField textField = new TextField("field");
                if (field.getName().getType() == 4) {
                    textField.setType(Double.class);
                }
                textField.add(new ErrorHighlighter());
                if (!field.isOptional()) {
                    textField.setRequired(true);
                }
                textField.setLabel(new Model(field.getLabel()));
                f.add(model.bind(textField, field.getName().getText()));
                listItem.add(f);
            }
        }
    };
    listView.setReuseItems(true);
    add(listView);
}

From source file:name.martingeisse.wicket.autoform.AutoformPanel.java

License:Open Source License

/**
 * /*from  w w  w .  j  ava  2s .  c om*/
 */
private void createComponents() {

    // create the form component
    final Form<?> form = new Form<Void>("form") {
        @Override
        protected void onSubmit() {
            AutoformPanel.this.onSuccessfulSubmit();
        }
    };
    add(form);

    // create the property repeater
    final ListView<IAutoformPropertyDescriptor> rows = new ListView<IAutoformPropertyDescriptor>("rows",
            beanDescriptor.getPropertyDescriptors()) {

        /* (non-Javadoc)
         * @see org.apache.wicket.markup.html.list.ListView#populateItem(org.apache.wicket.markup.html.list.ListItem)
         */
        @Override
        protected void populateItem(final ListItem<IAutoformPropertyDescriptor> item) {
            final IAutoformPropertyDescriptor propertyDescriptor = item.getModelObject();
            item.add(new Label("keyLabel", propertyDescriptor.getDisplayName()));
            item.add(propertyComponentFactory.createPropertyComponent("valueComponent", propertyDescriptor,
                    createValidators(propertyDescriptor), new ValidationErrorAcceptor(item)));
        }

    };
    rows.setReuseItems(true);
    form.add(rows);

}

From source file:nl.knaw.dans.dccd.web.datapanels.ObjectTypeSelectionPanel.java

License:Apache License

public ObjectTypeSelectionPanel(String id, IModel<?> model) {
    super(id, model);

    EntityAttribute attr = (EntityAttribute) this.getDefaultModelObject();
    // assume object is a ControlledVoc
    final ControlledVoc cvoc = (ControlledVoc) attr.getEntryObject();

    // TESTING/*from   w  w w .  j  a v  a2s . co  m*/
    //String labelStr = "";
    //if (cvoc != null && cvoc.isSetValue())
    //   labelStr = cvoc.getValue();
    //Label label = new Label("label", "Initial term: " + labelStr);
    //add(label);

    // Build multilingual selectable table
    // first just a table... ListView
    MultiLingualTridasTerms terms = DccdVocabularyService.getService()
            .getMultiLingualTridasTerms("object.type");

    final int descriptionIndex = terms.getDescriptionIndex();

    final int MAX_LANG = 4; // Note: fixed in html

    // iterate the lines
    List<List<String>> termLines = terms.getTermLines();
    ListView<List<String>> termlist = new ListView<List<String>>("termlist", termLines) {
        private static final long serialVersionUID = -3651087863165431582L;

        protected void populateItem(ListItem item) {
            List<String> line = (List<String>) item.getModel().getObject();

            // fixed to columns max.
            for (int i = 0; i < MAX_LANG; i++) {
                if (line.size() < (i + 1)) {
                    item.add(new Label("term_" + i, ""));//empty
                } else {
                    // TODO make selectable...
                    //item.add(new Label("term_"+i, line.get(i)));
                    final String termStr = line.get(i);
                    // Note: could use AjaxFallbackLink, but without Ajax DCCD is almost unusable...
                    AjaxLink link = new AjaxLink("linkterm_" + i) {
                        private static final long serialVersionUID = -1L;

                        @Override
                        public void onClick(AjaxRequestTarget target) {
                            selectedTerm = termStr;

                            logger.debug("selected term: " + selectedTerm);

                            // update
                            cvoc.setValue(selectedTerm);
                            onSelectionChanged(target);
                        }
                    };
                    item.add(link);
                    link.add(new Label("term_" + i, termStr));
                }
            }

            // description
            if (descriptionIndex >= MAX_LANG) {
                item.add(new Label("term_description", line.get(descriptionIndex)));
            } else {
                item.add(new Label("term_description", ""));// empty
            }
        }
    };
    add(termlist);
    termlist.setReuseItems(true); // speedup, the list is not changing during a session!

    // Add headers for the columns
    for (int i = 0; i < MAX_LANG; i++) {
        String languageCode = terms.getLanguageCode(i);

        if (languageCode.isEmpty())
            add(new Label("title_" + i, ""));//empty
        else
            add(new Label("title_" + i, languageCode.toUpperCase())); // TODO get display string for this code
    }

    // TODO could make this into a sortable pagable GridView....

}

From source file:ontopoly.components.FieldsEditor.java

License:Apache License

private ListView<FieldDefinitionModel> createListView(final List<FieldDefinitionModel> fieldDefinitionModels) {
    ListView<FieldDefinitionModel> listView = new ListView<FieldDefinitionModel>("addFields",
            fieldDefinitionModels) {//  ww w  .  j  av a2  s .  c  om
        public void populateItem(final ListItem<FieldDefinitionModel> item) {

            FieldDefinitionModel fieldDefinitionModel = item.getModelObject();
            //item.setRenderBodyOnly(true);

            Component component = new FieldsEditorAddPanel("field", topicTypeModel, fieldDefinitionModel) {
                @Override
                protected void onAddField(TopicTypeModel topicTypeModel,
                        FieldDefinitionModel fieldDefinitionModel, AjaxRequestTarget target) {
                    // add field to topic type
                    topicTypeModel.getTopicType().addField(fieldDefinitionModel.getFieldDefinition());

                    // remove field definition from available list
                    fieldDefinitionModels.remove(fieldDefinitionModel);
                    @SuppressWarnings("rawtypes")
                    ListView pListView = (ListView) item.getParent();
                    pListView.removeAll();
                    onUpdate(target);
                }
            };
            //component.setRenderBodyOnly(true);
            item.add(component);
        }
    };
    listView.setOutputMarkupId(true);
    listView.setReuseItems(true);
    return listView;
}

From source file:org.devproof.portal.core.module.mount.panel.MountInputPanel.java

License:Apache License

private ListView<MountPoint> createMountUrlListView() {
    ListView<MountPoint> listView = newMountUrlListView();
    listView.setOutputMarkupId(true);/*  w  ww . ja  va2s  .  c o m*/
    listView.setReuseItems(true);
    return listView;
}

From source file:org.geoserver.gwc.web.CachingOptionsPanel.java

License:Open Source License

public CachingOptionsPanel(final String id, final IModel<GWCConfig> gwcConfigModel) {

    super(id, gwcConfigModel);

    final IModel<Boolean> autoCacheLayersModel;
    autoCacheLayersModel = new PropertyModel<Boolean>(gwcConfigModel, "cacheLayersByDefault");
    final CheckBox autoCacheLayers = new CheckBox("cacheLayersByDefault", autoCacheLayersModel);
    add(autoCacheLayers);//from  w w w .j a v  a 2  s  .  c  om

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

    final WebMarkupContainer configs = new WebMarkupContainer("configs");
    configs.setOutputMarkupId(true);
    configs.setVisible(autoCacheLayersModel.getObject().booleanValue());
    container.add(configs);

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

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            final boolean visibleConfigs = autoCacheLayers.getModelObject().booleanValue();
            configs.setVisible(visibleConfigs);
            target.addComponent(container);
        }
    });

    IModel<String> lockProviderModel = new PropertyModel<String>(gwcConfigModel, "lockProviderName");
    ApplicationContext applicationContext = GeoServerApplication.get().getApplicationContext();
    String[] lockProviders = applicationContext.getBeanNamesForType(LockProvider.class);
    List<String> lockProviderChoices = new ArrayList<String>(Arrays.asList(lockProviders));
    Collections.sort(lockProviderChoices); // make sure we get a stable listing order
    DropDownChoice<String> lockProviderChoice = new DropDownChoice<String>("lockProvider", lockProviderModel,
            lockProviderChoices, new LocalizedChoiceRenderer(this));
    configs.add(lockProviderChoice);

    IModel<Boolean> nonDefaultStylesModel;
    nonDefaultStylesModel = new PropertyModel<Boolean>(gwcConfigModel, "cacheNonDefaultStyles");
    CheckBox cacheNonDefaultStyles = new CheckBox("cacheNonDefaultStyles", nonDefaultStylesModel);
    configs.add(cacheNonDefaultStyles);

    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>(gwcConfigModel, "metaTilingX");
    DropDownChoice<Integer> metaTilingX = new DropDownChoice<Integer>("metaTilingX", metaTilingXModel,
            metaTilingChoices);
    metaTilingX.setRequired(true);
    configs.add(metaTilingX);

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

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

    {
        List<String> formats;
        formats = new ArrayList<>(GWC.getAdvertisedCachedFormats(PublishedType.VECTOR));
        IModel<List<String>> vectorFormatsModel = new PropertyModel<List<String>>(gwcConfigModel,
                "defaultVectorCacheFormats");
        vectorFormatsGroup = new CheckGroup<String>("vectorFormatsGroup", vectorFormatsModel);
        configs.add(vectorFormatsGroup);
        ListView<String> formatsList = new ListView<String>("vectorFromats", formats) {
            private static final long serialVersionUID = 1L;

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

    {
        List<String> formats;
        formats = new ArrayList<>(GWC.getAdvertisedCachedFormats(PublishedType.RASTER));
        IModel<List<String>> rasterFormatsModel = new PropertyModel<List<String>>(gwcConfigModel,
                "defaultCoverageCacheFormats");
        rasterFormatsGroup = new CheckGroup<String>("rasterFormatsGroup", rasterFormatsModel);
        configs.add(rasterFormatsGroup);
        ListView<String> formatsList = new ListView<String>("rasterFromats", formats) {
            private static final long serialVersionUID = 1L;

            @Override
            protected void populateItem(ListItem<String> item) {
                item.add(new Check<String>("rasterFormatsOption", item.getModel()));
                item.add(new Label("name", item.getModel()));
            }
        };
        formatsList.setReuseItems(true);// otherwise it looses state on invalid form submits
        rasterFormatsGroup.add(formatsList);
    }
    {
        List<String> formats;
        formats = new ArrayList<>(GWC.getAdvertisedCachedFormats(PublishedType.GROUP));
        IModel<List<String>> otherFormatsModel = new PropertyModel<List<String>>(gwcConfigModel,
                "defaultOtherCacheFormats");
        otherFormatsGroup = new CheckGroup<String>("otherFormatsGroup", otherFormatsModel);
        configs.add(otherFormatsGroup);
        ListView<String> formatsList = new ListView<String>("otherFromats", formats) {
            private static final long serialVersionUID = 1L;

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

    // Add a new Panel for configuring In Memory caching
    InMemoryBlobStorePanel storePanel = new InMemoryBlobStorePanel("blobstores", gwcConfigModel);
    configs.add(storePanel.setOutputMarkupId(true));

    IModel<Set<String>> cachedGridsetsModel = new PropertyModel<Set<String>>(gwcConfigModel,
            "defaultCachingGridSetIds");
    DefaultGridsetsEditor cachedGridsets = new DefaultGridsetsEditor("cachedGridsets", cachedGridsetsModel);
    configs.add(cachedGridsets);

    cachedGridsets.add(new IValidator<Set<String>>() {

        private static final long serialVersionUID = 1L;

        @Override
        public void validate(IValidatable<Set<String>> validatable) {
            boolean validate = autoCacheLayersModel.getObject().booleanValue();
            if (validate && validatable.getValue().isEmpty()) {
                ValidationError error = new ValidationError();
                error.setMessage(new ResourceModel("CachingOptionsPanel.validation.emptyGridsets").getObject());
                validatable.error(error);
            }
        }
    });

    class FormatsValidator implements IValidator<Collection<String>> {
        private static final long serialVersionUID = 1L;

        @Override
        public void validate(IValidatable<Collection<String>> validatable) {
            boolean validate = autoCacheLayersModel.getObject().booleanValue();
            Collection<String> value = validatable.getValue();
            if (validate && value.isEmpty()) {
                ValidationError error = new ValidationError();
                error.setMessage(
                        new ResourceModel("CachingOptionsPanel.validation.emptyCacheFormatList").getObject());
                validatable.error(error);
            }
        }
    }
    ;
    FormatsValidator validator = new FormatsValidator();
    vectorFormatsGroup.add(validator);
    rasterFormatsGroup.add(validator);
    otherFormatsGroup.add(validator);
}

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

License:Open Source License

/**
 * @param id/*from ww w . jav a 2s.  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.web.data.resource.CoverageResourceConfigurationPanel.java

License:Open Source License

public CoverageResourceConfigurationPanel(final String panelId, final IModel model) {
    super(panelId, model);

    final CoverageInfo coverage = (CoverageInfo) getResourceInfo();

    final Map<String, Serializable> parameters = coverage.getParameters();
    List<String> keys = new ArrayList<String>(parameters.keySet());
    Collections.sort(keys);/*from w ww  .j  a  va  2 s.  co  m*/

    final IModel paramsModel = new PropertyModel(model, "parameters");
    ListView paramsList = new ListView("parameters", keys) {

        @Override
        protected void populateItem(ListItem item) {
            Component inputComponent = getInputComponent("parameterPanel", paramsModel,
                    item.getDefaultModelObjectAsString());
            item.add(inputComponent);
        }
    };

    WebMarkupContainer coverageViewContainer = new WebMarkupContainer("editCoverageViewContainer");
    add(coverageViewContainer);
    final CoverageView coverageView = coverage.getMetadata().get(CoverageView.COVERAGE_VIEW,
            CoverageView.class);
    coverageViewContainer.add(new Link("editCoverageView") {

        @Override
        public void onClick() {
            CoverageInfo coverageInfo = (CoverageInfo) model.getObject();
            try {
                CoverageStoreInfo store = coverageInfo.getStore();
                WorkspaceInfo workspace = store.getWorkspace();
                setResponsePage(new CoverageViewEditPage(workspace.getName(), store.getName(),
                        coverageInfo.getName(), coverageInfo, ((ResourceConfigurationPage) this.getPage())));
            } catch (Exception e) {
                LOGGER.log(Level.SEVERE, "Failure opening the Virtual Coverage edit page", e);
                error(e.toString());
            }
        }

    });

    coverageViewContainer.setVisible(coverageView != null);

    // needed for form components not to loose state
    paramsList.setReuseItems(true);
    add(paramsList);

    if (keys.size() == 0)
        setVisible(false);
}

From source file:org.geoserver.web.data.store.DefaultDataStoreEditPanel.java

License:Open Source License

/**
 * Creates a new parameters panel with a list of input fields matching the {@link Param}s for
 * the factory related to the {@code DataStoreInfo} that's the model of the provided {@code
 * Form}.//from  www .j  av a2  s .  c  o m
 * 
 * @param componentId
 *            the id for this component instance
 * @param storeEditForm
 *            the form being build by the calling class, whose model is the
 *            {@link DataStoreInfo} being edited
 */
public DefaultDataStoreEditPanel(final String componentId, final Form storeEditForm) {
    super(componentId, storeEditForm);

    final IModel model = storeEditForm.getModel();
    final DataStoreInfo info = (DataStoreInfo) model.getObject();
    final Catalog catalog = getCatalog();
    final ResourcePool resourcePool = catalog.getResourcePool();
    DataAccessFactory dsFactory;
    try {
        dsFactory = resourcePool.getDataStoreFactory(info);
    } catch (IOException e) {
        throw new RuntimeException(e);
    }

    final Map<String, ParamInfo> paramsMetadata = new LinkedHashMap<String, ParamInfo>();

    {
        final boolean isNew = null == info.getId();
        final Param[] dsParams = dsFactory.getParametersInfo();
        for (Param p : dsParams) {
            ParamInfo paramInfo = new ParamInfo(p);
            // hide the repository params, the resource pool will inject it transparently
            if (!Repository.class.equals(paramInfo.getBinding())) {
                paramsMetadata.put(p.key, paramInfo);
                if (isNew && !p.isDeprecated()) {
                    applyParamDefault(paramInfo, info);
                }
            }
        }
    }

    final List<String> keys = new ArrayList<String>(paramsMetadata.keySet());
    final IModel paramsModel = new PropertyModel(model, "connectionParameters");

    ListView paramsList = new ListView("parameters", keys) {
        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(ListItem item) {
            String paramName = item.getDefaultModelObjectAsString();
            ParamInfo paramMetadata = paramsMetadata.get(paramName);

            Component inputComponent;
            inputComponent = getInputComponent("parameterPanel", paramsModel, paramMetadata);

            String description = paramMetadata.getTitle();
            if (description != null) {
                inputComponent.add(new SimpleAttributeModifier("title", description));
            }
            item.add(inputComponent);
        }
    };
    // needed for form components not to loose state
    paramsList.setReuseItems(true);

    add(paramsList);

}