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.hippoecm.frontend.plugins.console.menu.property.PropertyDialog.java

License:Apache License

public PropertyDialog(IModelReference<Node> modelReference) {
    this.modelReference = modelReference;
    final IModel<Node> model = modelReference.getModel();

    getParent().add(CssClass.append("property-dialog"));

    // list defined properties for automatic completion
    choiceModel = new LoadableDetachableModel<Map<String, List<PropertyDefinition>>>() {

        protected Map<String, List<PropertyDefinition>> load() {
            Map<String, List<PropertyDefinition>> choices = new HashMap<>();
            Node node = model.getObject();
            try {
                NodeType pnt = node.getPrimaryNodeType();
                for (PropertyDefinition pd : pnt.getPropertyDefinitions()) {
                    List<PropertyDefinition> list = choices.get(pd.getName());
                    if (list == null) {
                        list = new ArrayList<>(5);
                    }// w  w  w . j av  a  2 s.c  o  m
                    list.add(pd);
                    choices.put(pd.getName(), list);
                }
                for (NodeType nt : node.getMixinNodeTypes()) {
                    for (PropertyDefinition pd : nt.getPropertyDefinitions()) {
                        List<PropertyDefinition> list = choices.get(pd.getName());
                        if (list == null) {
                            list = new ArrayList<>(5);
                        }
                        list.add(pd);
                        choices.put(pd.getName(), list);
                    }
                }
                // remove already set properties from suggestions:
                final Set<String> properties = new HashSet<>(choices.keySet());
                for (String property : properties) {
                    if (!isResidual(property) && node.hasProperty(property)) {
                        choices.remove(property);
                    }
                }
            } catch (RepositoryException e) {
                log.warn("Unable to populate autocomplete list for property names", e);
            }
            return choices;
        }
    };

    // checkbox for property ismultiple
    final CheckBox checkBox = new CheckBox("isMultiple", new Model<Boolean>() {

        @Override
        public void setObject(Boolean multiple) {
            PropertyDialog.this.isMultiple = multiple;
        }

        @Override
        public Boolean getObject() {
            if (PropertyDialog.this.name != null) {
                List<PropertyDefinition> propdefs = choiceModel.getObject().get(PropertyDialog.this.name);
                if (propdefs != null) {
                    for (PropertyDefinition pd : propdefs) {
                        if (PropertyType.nameFromValue(pd.getRequiredType()).equals(type)) {
                            // somehow need to set isMultiple here, otherwise it doesn't get picked up...
                            PropertyDialog.this.isMultiple = pd.isMultiple();
                            return pd.isMultiple();
                        }
                    }
                }
            }
            return PropertyDialog.this.isMultiple;
        }
    });
    checkBox.setOutputMarkupId(true);
    add(checkBox);

    // dropdown for property type
    final DropDownChoice<String> ddChoice = new DropDownChoice<String>("types") {
        @Override
        public List<? extends String> getChoices() {
            if (PropertyDialog.this.name != null) {
                List<PropertyDefinition> propdefs = choiceModel.getObject().get(PropertyDialog.this.name);
                if (propdefs != null) {
                    List<String> result = new ArrayList<>(propdefs.size());
                    for (PropertyDefinition pd : propdefs) {
                        result.add(PropertyType.nameFromValue(pd.getRequiredType()));
                    }
                    return result;
                }
            }
            return ALL_TYPES;

        }
    };
    ddChoice.setModel(new Model<String>() {
        @Override
        public void setObject(String object) {
            type = object;
        }

        @Override
        public String getObject() {
            List<? extends String> choices = ddChoice.getChoices();
            if (choices.size() == 1) {
                type = choices.iterator().next();
            }
            return type;
        }
    });

    ddChoice.setRequired(true);
    ddChoice.setOutputMarkupId(true);
    ddChoice.add(new AjaxFormComponentUpdatingBehavior("onchange") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
        }
    });
    add(ddChoice);

    values = new LinkedList<>();
    values.add("");

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

    valuesContainer.add(new ListView<String>("values", values) {

        @Override
        protected void populateItem(final ListItem<String> item) {
            final TextField textField = new TextField<>("val", item.getModel());
            textField.add(new OnChangeAjaxBehavior() {

                @Override
                protected void onUpdate(final AjaxRequestTarget target) {
                }

            });
            item.add(textField);

            if (focusOnLatestValue && item.getIndex() == (values.size() - 1)) {
                AjaxRequestTarget ajax = RequestCycle.get().find(AjaxRequestTarget.class);
                if (ajax != null) {
                    ajax.focusComponent(textField);
                }
                focusOnLatestValue = false;
            }

            final AjaxLink deleteLink = new AjaxLink("removeLink") {
                @Override
                public void onClick(final AjaxRequestTarget target) {
                    values.remove(item.getIndex());
                    target.add(valuesContainer);
                }

                @Override
                public boolean isVisible() {
                    return super.isVisible() && item.getIndex() > 0;
                }
            };

            deleteLink.add(TitleAttribute.set(getString("property.value.remove")));
            deleteLink.add(new InputBehavior(new KeyType[] { KeyType.Enter }, EventType.click) {
                @Override
                protected String getTarget() {
                    return "'" + deleteLink.getMarkupId() + "'";
                }
            });
            item.add(deleteLink);
        }
    });

    final AjaxLink addLink = new AjaxLink("addLink") {
        @Override
        public void onClick(final AjaxRequestTarget target) {
            values.add("");
            target.add(valuesContainer);
            focusOnLatestValue = true;
        }

        @Override
        public boolean isVisible() {
            return isMultiple;
        }
    };
    addLink.add(TitleAttribute.set(getString("property.value.add")));
    addLink.add(new InputBehavior(new KeyType[] { KeyType.Enter }, EventType.click) {
        @Override
        protected String getTarget() {
            return "'" + addLink.getMarkupId() + "'";
        }
    });
    valuesContainer.add(addLink);

    checkBox.add(new AjaxFormComponentUpdatingBehavior("onchange") {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            target.add(valuesContainer);
            if (!isMultiple && values.size() > 1) {
                String first = values.get(0);
                values.clear();
                values.add(first);
            }
        }
    });

    // text field for property name
    AutoCompleteSettings settings = new AutoCompleteSettings();
    settings.setAdjustInputWidth(false);
    settings.setUseSmartPositioning(true);
    settings.setShowCompleteListOnFocusGain(true);
    settings.setShowListOnEmptyInput(true);
    // Setting a max height will trigger a correct recalculation of the height when the list of items is filtered
    settings.setMaxHeightInPx(400);

    final TextField<String> nameField = new AutoCompleteTextFieldWidget<String>("name",
            PropertyModel.of(this, "name"), settings) {

        @Override
        protected Iterator<String> getChoices(String input) {
            List<String> result = new ArrayList<>();
            for (String propName : choiceModel.getObject().keySet()) {
                if (propName.contains(input)) {
                    result.add(propName);
                }
            }
            return result.iterator();
        }

        @Override
        protected void onUpdate(final AjaxRequestTarget target) {
            super.onUpdate(target);

            target.add(ddChoice);
            target.add(checkBox);
            target.add(valuesContainer);
            focusOnLatestValue = true;
        }
    };

    nameField.setRequired(true);
    add(nameField);
    setFocus(nameField);
}

From source file:org.hippoecm.frontend.widgets.AjaxUpdatingWidget.java

License:Apache License

/**
 * Adds an ajax updating form component// w  ww .  j a  v  a 2s . c om
 */
protected void addFormField(final FormComponent<T> component) {
    add(formComponent = component);
    component.setOutputMarkupId(true);
    if (throttleDelay == null) {
        component.add(new AjaxFormComponentUpdatingBehavior("onChange") {

            @Override
            protected void onUpdate(AjaxRequestTarget target) {
                AjaxUpdatingWidget.this.onUpdate(target);
            }
        });
    } else {
        component.add(new OnChangeAjaxBehavior() {

            @Override
            protected void updateAjaxAttributes(final AjaxRequestAttributes attributes) {
                super.updateAjaxAttributes(attributes);
                attributes
                        .setThrottlingSettings(new ThrottlingSettings(component.getMarkupId(), throttleDelay));
            }

            @Override
            protected void onUpdate(AjaxRequestTarget target) {
                AjaxUpdatingWidget.this.onUpdate(target);
            }

        });
    }
}

From source file:org.hippoecm.frontend.widgets.NameUriField.java

License:Apache License

private FormComponent<String> createNameComponent() {
    final FormComponent<String> newNameComponent = new TextField<>("name", nameModel);
    newNameComponent.setRequired(true);//w  w w  . j  a v  a2 s  .c  o  m
    newNameComponent.add(new OnChangeAjaxBehavior() {

        @Override
        protected void onUpdate(final AjaxRequestTarget target) {
            if (!urlIsEditable) {
                // the value of the url field is controlled by the name value, redraw when name changes
                target.add(urlComponent);
            }
        }

        @Override
        protected void updateAjaxAttributes(final AjaxRequestAttributes attributes) {
            super.updateAjaxAttributes(attributes);
            attributes.setChannel(ajaxChannel);
            attributes
                    .setThrottlingSettings(new ThrottlingSettings(getPath(), NAME_COMPONENT_THROTTLE_DURATION));
        }
    });
    newNameComponent.setOutputMarkupId(true);
    return newNameComponent;
}

From source file:org.jaulp.wicket.dialogs.ajax.modal.BaseModalPanel.java

License:Apache License

/**
 * Instantiates a new base modal panel.//w ww  .j  a v a  2 s.c  o m
 *
 * @param id
 *            the id
 * @param model
 *            the model
 */
public BaseModalPanel(final String id, final CompoundPropertyModel<T> model) {
    super(id);

    final Form<T> form = new Form<>("form", model);
    form.setOutputMarkupId(true);
    form.clearInput();
    add(form);

    final TextArea<String> note = new TextArea<>("messageContent");

    note.clearInput();
    // IT IS VERY IMPORTANT TO SET THE OUTPUTMARKUPID TO TRUE...
    note.setOutputMarkupId(true);
    note.add(new OnChangeAjaxBehavior() {
        /**
         * The serialVersionUID.
         */
        private static final long serialVersionUID = 1L;

        @Override
        public void onUpdate(final AjaxRequestTarget target) {
            // Do nothing...
        }
    });
    form.add(note);

    final AjaxButton close = new AjaxButton("cancelButton") {
        /**
         * The serialVersionUID.
         */
        private static final long serialVersionUID = 1L;

        @Override
        public void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
            target.add(note);
            onCancel(target);

        }

        @SuppressWarnings("unused")
        public <E extends EventObject> void send(final IEventSink sink, final Broadcast broadcast,
                final E payload) {
            // TODO Auto-generated method stub

        }

        @Override
        protected void onError(AjaxRequestTarget target, Form<?> form) {
            // TODO Auto-generated method stub

        }
    };
    form.add(close);

    final AjaxButton selectionButton = new AjaxButton("okButton") {
        /**
         * The serialVersionUID.
         */
        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
            final T obj = model.getObject();
            onSelect(target, obj);
        }

        @SuppressWarnings("unused")
        public <E extends EventObject> void send(IEventSink sink, Broadcast broadcast, E payload) {
            // TODO Auto-generated method stub

        }

        @Override
        protected void onError(AjaxRequestTarget target, Form<?> form) {
            // TODO Auto-generated method stub

        }
    };
    form.add(selectionButton);

}

From source file:org.laughingpanda.kansanpankki.accounts.AccountsView.java

License:Apache License

@Override
protected void populateItem(Item<Account> item) {
    final IModel<Account> model = new Model<Account>(item.getModelObject());
    AjaxLink<Account> accountLink = new AjaxLink<Account>("accountLink", model) {
        @Override/*from  w w w  . j av a2  s .c o m*/
        public void onClick(AjaxRequestTarget target) {
            setResponsePage(new AccountPage(getModel(), getPage()));
        }
    };
    accountLink.add(new Label("accountId", item.getDefaultModelObjectAsString()));
    item.add(new Label("balance", model.getObject().getBalance().toString()));
    item.add(accountLink);
    final PossibleTargetAccounts targetAccounts = new PossibleTargetAccounts(model);
    item.add(targetAccounts);
    final TextField<Integer> amountToTransfer = new TextField<Integer>("amountToTransfer",
            new Model<Integer>()) {
        @Override
        public boolean isEnabled() {
            return !(model.getObject()).isEmpty();
        }

        // Wicket uses disabled="disabled" attribute for disabled text fields
        // However, WebDriver checks disabled state by checking if there is
        // fields having disabled attribute set to "true"
        @Override
        protected void onDisabled(ComponentTag tag) {
            tag.put("disabled", "true");
        }
    };
    amountToTransfer.setType(Integer.class);
    amountToTransfer.add(new OnChangeAjaxBehavior() {
        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            if (amountToTransfer.getModelObject() == null) {
                targetAccounts.setVisible(false);
            } else {
                targetAccounts.setVisible(true);
                targetAccounts.setAmountToTransfer(Money.euros(amountToTransfer.getModelObject()));
            }
            target.addComponent(targetAccounts);
        }
    });
    item.add(amountToTransfer);
}

From source file:org.lbogdanov.poker.web.page.MySessionsPage.java

License:Apache License

/**
 * Creates a new instance of <code>MySessionsPage</code> page.
 *//*  w ww .  j  av a 2  s  .  co  m*/
@SuppressWarnings("unchecked")
public MySessionsPage() {
    final SessionsProvider dataProvider = new SessionsProvider();
    dataProvider.setSort("created", SortOrder.DESCENDING); // default sort: created, desc
    List<AbstractColumn<Session, String>> columns = Arrays.asList(new Column("session.name", "name", "name") {

        @Override
        public void populateItem(Item<ICellPopulator<Session>> item, String compId, IModel<Session> model) {
            Session session = model.getObject();
            PageParameters params = new PageParameters().add("code", session.getCode());
            Link<?> go = new BookmarkablePageLink<Void>("goto", SessionPage.class, params);
            go.add(new BodylessLabel("name", session.getName()));
            item.add(new Fragment(compId, "nameLink", MySessionsPage.this).add(go));
        }

    }, new Column("session.description", null, "description"),
            new Column("session.created", "created", "created") {

                @Override
                @SuppressWarnings("rawtypes")
                public IModel<Object> getDataModel(IModel<Session> rowModel) {
                    Date created = (Date) super.getDataModel(rowModel).getObject();
                    String formatted = DateFormat
                            .getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT, getLocale())
                            .format(created);
                    return new Model(formatted);
                }

            }, new Column("session.author", "author", "author"),
            new AbstractColumn<Session, String>(new ResourceModel("session.actions")) {

                @Override
                public void populateItem(Item<ICellPopulator<Session>> item, String compId,
                        IModel<Session> model) {
                    Link<?> delete = new AjaxFallbackLink<Session>("delete", model) {

                        @Override
                        public void onClick(AjaxRequestTarget target) {
                            sessionService.delete(getModelObject());
                            dataProvider.invalidate();
                            if (target != null) {
                                target.add(sessionsTable);
                            }
                        }

                        @Override
                        protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
                            super.updateAjaxAttributes(attributes);
                            AjaxCallListener listener = new AjaxCallListener();
                            listener.onPrecondition("return Poker.confirm(attrs.c);");
                            attributes.getAjaxCallListeners().add(listener);
                        }

                    };
                    item.add(new Fragment(compId, "actions", MySessionsPage.this).add(delete));
                }

                @Override
                public String getCssClass() {
                    return "actions";
                }

            });
    sessionsTable = new DataTable<Session, String>("sessions", columns, dataProvider, ITEMS_PER_PAGE.get(0));
    sessionsTable.addTopToolbar(new AjaxFallbackHeadersToolbar<String>(sessionsTable, dataProvider) {

        @Override
        protected WebMarkupContainer newSortableHeader(String borderId, String property,
                ISortStateLocator<String> locator) {
            return new AjaxFallbackOrderByBorder<String>(borderId, property, locator, getAjaxCallListener()) {

                @Override
                protected void onAjaxClick(AjaxRequestTarget target) {
                    target.add(getTable());
                }

                @Override
                protected void onSortChanged() {
                    dataProvider.invalidate();
                    getTable().setCurrentPage(0);
                }

            };
        }

    });
    sessionsTable.addBottomToolbar(new AjaxNavigationToolbar(sessionsTable) {

        @Override
        protected PagingNavigator newPagingNavigator(String navigatorId, final DataTable<?, ?> table) {
            return new BootstrapPagingNavigator(navigatorId, table) {

                @Override
                protected void onAjaxEvent(AjaxRequestTarget target) {
                    target.add(table);
                }

            };
        }

    });
    sessionsTable.addBottomToolbar(new NoRecordsToolbar(sessionsTable));

    TextField<?> sessionName = new TextField<String>("sessionName",
            PropertyModel.<String>of(dataProvider, "sessionName"));
    sessionName.add(new OnChangeAjaxBehavior() {

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            dataProvider.invalidate();
            target.add(sessionsTable);
        }

        @Override
        protected void updateAjaxAttributes(AjaxRequestAttributes attributes) {
            super.updateAjaxAttributes(attributes);
            ThrottlingSettings throttling = new ThrottlingSettings("sessionName", Duration.milliseconds(300),
                    true);
            attributes.setThrottlingSettings(throttling);
        }

    });
    DropDownChoice<?> pageSize = new DropDownChoice<Long>("pageSize",
            PropertyModel.<Long>of(sessionsTable, "itemsPerPage"), ITEMS_PER_PAGE);
    pageSize.add(new OnChangeAjaxBehavior() {

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            dataProvider.invalidate();
            target.add(sessionsTable);
        }

    });
    add(sessionsTable.setOutputMarkupId(true), sessionName, pageSize);
}

From source file:org.obiba.onyx.jade.core.wicket.workstation.ExperimentalConditionForm.java

License:Open Source License

public void addDropDown() {
    if (experimentalConditionLogs == null)
        experimentalConditionLogs = new ArrayList<ExperimentalConditionLog>();
    if (experimentalConditionLogs.size() >= 1)
        selectedExperimentalConditionLog = experimentalConditionLogs.get(0);

    WebMarkupContainer selectCalibrationId = new WebMarkupContainer("selectCalibrationId");

    final DropDownChoice<ExperimentalConditionLog> experimentalConditionLogChoice = new DropDownChoice<ExperimentalConditionLog>(
            "experimentalConditionLogChoice",
            new PropertyModel<ExperimentalConditionLog>(this, "selectedExperimentalConditionLog"),
            experimentalConditionLogs, new ChoiceRenderer<ExperimentalConditionLog>() {
                private static final long serialVersionUID = 1L;

                @Override/*from ww w .j  a v  a2s  . c  om*/
                public Object getDisplayValue(ExperimentalConditionLog object) {
                    return new SpringStringResourceModel(object.getName(), object.getName()).getString();
                }

                @Override
                public String getIdValue(ExperimentalConditionLog object, int index) {
                    return object.getName();
                }
            });
    experimentalConditionLogChoice.add(new OnChangeAjaxBehavior() {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            addComponents();
            formParent.replaceWith(oldFormParent);
            formParent = oldFormParent;
            target.addComponent(formParent);
        }

    });
    selectCalibrationId.addOrReplace(experimentalConditionLogChoice);
    addOrReplace(selectCalibrationId);
    if (experimentalConditionLogs.size() <= 1)
        selectCalibrationId.setVisible(false);
}

From source file:org.obiba.onyx.jade.core.wicket.workstation.ExperimentalConditionHistoryPanel.java

License:Open Source License

public ExperimentalConditionHistoryPanel(String id, List<InstrumentCalibration> instrumentCalibrations,
        final int pageSize, Instrument instrument) {
    super(id);/*from   w w  w  .ja v  a 2  s .c o m*/
    setOutputMarkupId(true);
    add(new AttributeModifier("class", true, new Model<String>("experimental-condition-history-panel")));

    this.instrument = instrument;

    WebMarkupContainer selectCalibrationId = new WebMarkupContainer("selectCalibrationId");

    if (instrumentCalibrations.size() >= 1)
        selectedInstrumentCalibration = instrumentCalibrations.get(0);

    final DropDownChoice<InstrumentCalibration> instrumentCalibrationChoice = new DropDownChoice<InstrumentCalibration>(
            "instrumentCalibrationChoice",
            new PropertyModel<InstrumentCalibration>(this, "selectedInstrumentCalibration"),
            instrumentCalibrations, new ChoiceRenderer<InstrumentCalibration>() {
                private static final long serialVersionUID = 1L;

                @Override
                public Object getDisplayValue(InstrumentCalibration object) {
                    return new SpringStringResourceModel(object.getName(), object.getName()).getString();
                }

                @Override
                public String getIdValue(InstrumentCalibration object, int index) {
                    return object.getName();
                }
            });
    instrumentCalibrationChoice.add(new OnChangeAjaxBehavior() {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            OnyxEntityList<ExperimentalCondition> newTable = getTable(pageSize);
            list.replaceWith(newTable);
            list = newTable;
            target.appendJavascript("styleOnyxEntityListNavigationBar('" + getMarkupId() + "');");
            target.addComponent(list);
        }

    });
    selectCalibrationId.add(instrumentCalibrationChoice);
    add(selectCalibrationId);
    if (instrumentCalibrations.size() <= 1) {
        selectCalibrationId.setVisible(false);
        list = getTable(pageSize + 2);
    } else {
        list = getTable(pageSize);
    }

    add(list);
}

From source file:org.obiba.onyx.jade.core.wicket.workstation.WorkstationLogPanel.java

License:Open Source License

public WorkstationLogPanel(String id) {
    super(id);// w  w w .j  a  v a 2 s  . co  m

    experimentalConditionDialogHelperPanel = new ExperimentalConditionDialogHelperPanel(
            "experimentalConditionDialogHelperPanel", null, null);
    add(experimentalConditionDialogHelperPanel);

    final List<ExperimentalConditionLog> experimentalConditionLogs = getExperimentalConditionLogs();
    if (experimentalConditionLogs.size() >= 1)
        selectedExperimentalConditionLog = experimentalConditionLogs.get(0);

    final DropDownChoice<ExperimentalConditionLog> workstationLogChoice = new DropDownChoice<ExperimentalConditionLog>(
            "workstationLogChoice",
            new PropertyModel<ExperimentalConditionLog>(this, "selectedExperimentalConditionLog"),
            getExperimentalConditionLogs(), new ChoiceRenderer<ExperimentalConditionLog>() {
                private static final long serialVersionUID = 1L;

                @Override
                public Object getDisplayValue(ExperimentalConditionLog object) {
                    String name = object.getName() + "Log";
                    return new SpringStringResourceModel(name, name).getString();
                }

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

            });

    workstationLogChoice.add(new OnChangeAjaxBehavior() {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            ExperimentalConditionHistoryPanel newExperimentalConditionHistoryPanel = getExperimentalConditionHistoryPanel();
            experimentalConditionHistoryPanel.replaceWith(newExperimentalConditionHistoryPanel);
            experimentalConditionHistoryPanel = newExperimentalConditionHistoryPanel;
            if (experimentalConditionLogs.size() == 0)
                experimentalConditionHistoryPanel.setVisible(false);
            target.addComponent(experimentalConditionHistoryPanel);
            workstationLogChoice.updateModel();
        }

    });
    add(workstationLogChoice);

    AjaxLink addWorkstationLogButton = new AjaxLink("addWorkstationLogButton") {

        private static final long serialVersionUID = 1L;

        @Override
        public void onClick(AjaxRequestTarget target) {
            experimentalConditionDialogHelperPanel.setExperimentalConditionLog(selectedExperimentalConditionLog,
                    null);

            experimentalConditionDialogHelperPanel.getExperimentalConditionDialog()
                    .setWindowClosedCallback(new WindowClosedCallback() {
                        private static final long serialVersionUID = 1L;

                        public void onClose(AjaxRequestTarget target, Status status) {
                            ExperimentalConditionHistoryPanel newExperimentalConditionHistoryPanel = getExperimentalConditionHistoryPanel();
                            experimentalConditionHistoryPanel.replaceWith(newExperimentalConditionHistoryPanel);
                            experimentalConditionHistoryPanel = newExperimentalConditionHistoryPanel;
                            if (experimentalConditionLogs.size() == 0)
                                experimentalConditionHistoryPanel.setVisible(false);
                            target.addComponent(experimentalConditionHistoryPanel);
                        }

                    });
            SpringStringResourceModel experimentalConditionNameResource = new SpringStringResourceModel(
                    selectedExperimentalConditionLog.getName(), selectedExperimentalConditionLog.getName());
            String experimentalConditionName = experimentalConditionNameResource.getString();
            experimentalConditionDialogHelperPanel.getExperimentalConditionDialog()
                    .setTitle(new StringResourceModel("ExperimentalConditionDialogTitle",
                            WorkstationLogPanel.this, new Model<ValueMap>(
                                    new ValueMap("experimentalConditionName=" + experimentalConditionName))));
            experimentalConditionDialogHelperPanel.getExperimentalConditionDialog().show(target);
        }

    };
    add(addWorkstationLogButton);
    if (experimentalConditionLogs.size() == 0)
        addWorkstationLogButton.setVisible(false);

    experimentalConditionHistoryPanel = getExperimentalConditionHistoryPanel();
    add(experimentalConditionHistoryPanel);
    if (experimentalConditionLogs.size() == 0)
        experimentalConditionHistoryPanel.setVisible(false);

}

From source file:org.obiba.onyx.quartz.core.wicket.layout.impl.standard.DropDownQuestionCategoriesPanel.java

License:Open Source License

@SuppressWarnings("serial")
public DropDownQuestionCategoriesPanel(String id, IModel questionModel) {
    super(id, questionModel, null);
    setOutputMarkupId(true);//from w ww .j  a va  2s  .c o m

    Question question = getQuestion();

    // This component is visible when an open answer is needed
    add(new EmptyPanel("open"));

    // When navigating to previous question
    if (!activeQuestionnaireAdministrationService.isQuestionnaireDevelopmentMode()) {
        CategoryAnswer previousAnswer = null;
        List<CategoryAnswer> categoryAnswers = activeQuestionnaireAdministrationService.findAnswers(question);
        if (categoryAnswers != null && categoryAnswers.size() != 0) {

            previousAnswer = categoryAnswers.get(0);

            for (QuestionCategory questionCategory : question.getQuestionCategories()) {
                if (questionCategory.getCategory().getName().equals(previousAnswer.getCategoryName())) {
                    selectedQuestionCategoryModel = new QuestionnaireModel(questionCategory);
                    break;
                }
            }

            updateOpenAnswerDefinitionPanel(null, selectedQuestionCategoryModel);
        }
    }

    questionCategoriesDropDownChoice = new DropDownChoice("questionCategories",
            new PropertyModel(this, "selectedQuestionCategory"), new LoadableDetachableModel() {

                @Override
                protected Object load() {
                    QuestionCategoriesProvider questionCategoriesProvider = new QuestionCategoriesProvider(
                            getQuestionModel(), new QuestionCategoryEscapeFilter(false));
                    return questionCategoriesProvider.getDataList();
                }

            }, new QuestionCategoryChoiceRenderer());
    questionCategoriesDropDownChoice.setOutputMarkupId(true);

    questionCategoriesDropDownChoice.setLabel(new QuestionnaireStringResourceModel(question, "label", false));
    questionCategoriesDropDownChoice.setNullValid(true);

    // Set model on submission
    if (!activeQuestionnaireAdministrationService.isQuestionnaireDevelopmentMode()) {
        questionCategoriesDropDownChoice.add(new OnChangeAjaxBehavior() {

            @Override
            protected void onUpdate(final AjaxRequestTarget target) {

                log.debug("onUpdate()={}",
                        selectedQuestionCategoryModel != null ? selectedQuestionCategoryModel.getObject()
                                : null);

                updateOpenAnswerDefinitionPanel(target, selectedQuestionCategoryModel);

                // Exclusive choice, only one answer per question
                activeQuestionnaireAdministrationService.deleteAnswers(getQuestion());
                if (selectedQuestionCategoryModel != null) {
                    activeQuestionnaireAdministrationService
                            .answer((QuestionCategory) selectedQuestionCategoryModel.getObject());
                }

                if (escapeQuestionCategoriesPanel != null) {
                    escapeQuestionCategoriesPanel.setNoSelection();
                    target.addComponent(escapeQuestionCategoriesPanel);
                }

                updateFeedbackPanel(target);

                fireQuestionCategorySelected(target, getQuestionModel(),
                        selectedQuestionCategoryModel == null ? null : selectedQuestionCategoryModel);
            }

            @Override
            protected void onError(final AjaxRequestTarget target, RuntimeException e) {
                updateFeedbackPanel(target);
                // Update component
                target.addComponent(DropDownQuestionCategoriesPanel.this);
            }

        });
    }
    add(questionCategoriesDropDownChoice);

    if (hasEscapeQuestionCategories()) {
        add(escapeQuestionCategoriesPanel = new DefaultEscapeQuestionCategoriesPanel("escapeCategories",
                getQuestionModel()));
        escapeQuestionCategoriesPanel.add(new AnswerCountValidator(getQuestionModel()));
    } else {
        add(new EmptyPanel("escapeCategories").setVisible(false));
    }

    add(new InvalidFormFieldBehavior());
}