webmarkupcontainers were used because the buttons do not need to
submit anything to serverside, they are just there to add an onclick
javascript. i agree they dont handle disabling properly and that is a
bug, please open a jira issue.
-igor
On 11/2/07, wheleph <[EMAIL PROTECTED]> wrote:
>
> I solved the problem by creating custom add and remove buttons. It turned out
> that the original buttons that are used by Palette are not subclasses of
> Button but subclasses of WebMarkupContainer and hence they don't properly
> support disabled state and generating of markup id. I wonder why plain
> buttons were not used. Now I use the following subclass and it works just
> fine:
>
> [code]
> private class PupilPalette extends Palette {
> private static final long serialVersionUID =
> 6962784629546969362L;
>
> private Button addButton;
> private Button removeButton;
>
> public PupilPalette(final String id, final IModel model,
> final IModel choicesModel, final
> IChoiceRenderer choiceRenderer,
> final int rows, final boolean allowOrder) {
> super(id, model, choicesModel, choiceRenderer, rows,
> allowOrder);
> setOutputMarkupId(true);
> getRecorderComponent().add(new
> AjaxFormComponentUpdatingBehavior("onchange") {
>
> private static final long serialVersionUID =
> -1322527042794395640L;
>
> @Override
> protected void onUpdate(final
> AjaxRequestTarget target) {
> checkButtonsEnabled();
> target.addComponent(addButton);
> target.addComponent(removeButton);
> }
>
> });
> checkButtonsEnabled();
> }
>
> /**
> * Checks whether the add or remove buttons are enabled.
> */
> private void checkButtonsEnabled() {
> addButton.setEnabled(availablePupils.size() !=
> selectedPupils.size());
> removeButton.setEnabled(!selectedPupils.isEmpty());
> }
>
> /** [EMAIL PROTECTED] */
> @Override
> protected Component newAvailableHeader(final String
> componentId) {
> return new Label(componentId,
> getString("available.pupils"));
> }
>
> /** [EMAIL PROTECTED] */
> @Override
> protected Component newSelectedHeader(final String
> componentId) {
> return new Label(componentId,
> getString("selected.pupils"));
> }
>
> /** [EMAIL PROTECTED] */
> @Override
> protected Component newAddComponent() {
> addButton = new Button("addButton", new Model("->")) {
>
> private static final long serialVersionUID =
> 0L;
>
> protected void onComponentTag(final
> ComponentTag tag) {
> super.onComponentTag(tag);
> tag.getAttributes().put("onclick",
> PupilPalette.this.getAddOnClickJS());
> }
> };
> addButton.add(new Image("image", new
> ResourceReference(Palette.class,
> "add.gif")));
>
> addButton.setOutputMarkupId(true);
> return addButton;
> }
>
> /** [EMAIL PROTECTED] */
> @Override
> protected Component newRemoveComponent() {
> removeButton = new Button("removeButton") {
> private static final long serialVersionUID =
> 1L;
>
> protected void onComponentTag(final
> ComponentTag tag) {
> super.onComponentTag(tag);
> tag.getAttributes().put("onclick",
> PupilPalette.this.getRemoveOnClickJS());
> }
> };
> removeButton.add(new Image("image", new
> ResourceReference(Palette.class,
> "remove.gif")));
> removeButton.setOutputMarkupId(true);
> return removeButton;
> }
>
> }
> [/code]
>
> wheleph
>
> --
> View this message in context:
> http://www.nabble.com/Disabling-Palette-buttons-tf4732206.html#a13545250
> Sent from the Wicket - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]