/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package ro.nextreports.server.web.schedule.destination;
import java.util.Arrays;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.IChoiceRenderer;
import org.apache.wicket.markup.html.form.TextArea;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import ro.nextreports.server.domain.SmtpDestination;
import ro.nextreports.server.web.common.form.FormPanel;
import ro.nextreports.server.web.core.BasePage;
import ro.nextreports.server.web.core.validation.JcrNameValidator;
public class MailPanel extends AbstractDestinationPanel {
private static final long serialVersionUID = 1L;
protected RecipientDataProvider provider;
private Panel recipientsPanel;
private ModalWindow dialog;
public MailPanel(String id, SmtpDestination smtpDestination) {
super(id, smtpDestination);
}
@Override
protected void onInitialize() {
super.onInitialize();
dialog = findParent(BasePage.class).getDialog();
}
protected void initComponents() {
add(new Label("send", getString("ActionContributor.Run.destination.send")));
final DropDownChoice<Boolean> sendChoice = new DropDownChoice<Boolean>("sendChoice", new PropertyModel<Boolean>(
destination, "attachFile"), Arrays.asList(Boolean.FALSE, Boolean.TRUE), new IChoiceRenderer<Boolean>() {
private static final long serialVersionUID = 1L;
public Object getDisplayValue(Boolean i) {
if (i.booleanValue() == false) {
return getString("Link");
} else {
return getString("Report");
}
}
public String getIdValue(Boolean s, int i) {
return String.valueOf(s);
}
});
add(sendChoice);
initBasicComponents();
initSpecificComponents();
}
protected void initBasicComponents() {
add(new Label("subject", getString("ActionContributor.Run.destination.subject")));
TextField<String> subjectField = new TextField<String>("subjectField", new PropertyModel<String>(destination,
"mailSubject"));
subjectField.setLabel(new Model<String>(getString("ActionContributor.Run.destination.subject")));
add(subjectField);
add(new Label("body", getString("ActionContributor.Run.destination.body")));
TextArea<String> bodyArea = new TextArea<String>("bodyArea", new PropertyModel<String>(destination, "mailBody"));
bodyArea.setLabel(new Model<String>(getString("ActionContributor.Run.destination.body")));
add(bodyArea);
add(new Label("to", getString("ActionContributor.Run.destination.to")));
addTableLinks();
provider = new RecipientDataProvider((SmtpDestination) destination);
recipientsPanel = new RecipientsPanel("recipientsPanel", provider);
add(recipientsPanel);
}
protected void initSpecificComponents() {
add(new Label("changedFileName", getString("ActionContributor.Run.destination.changedFileName")));
TextField<String> fileNameField = new TextField<String>("changedFileNameField", new PropertyModel<String>(destination,
"changedFileName"));
fileNameField.setLabel(new Model<String>(getString("ActionContributor.Run.destination.changedFileName")));
fileNameField.setRequired(false);
fileNameField.add(new JcrNameValidator());
add(fileNameField);
}
public String getMailSubject() {
return ((SmtpDestination) destination).getMailSubject();
}
public String getMailBody() {
return ((SmtpDestination) destination).getMailBody();
}
private void addTableLinks() {
AjaxLink<String> emailLink = new AjaxLink<String>("email") {
private static final long serialVersionUID = 1L;
@SuppressWarnings("unchecked")
@Override
public void onClick(AjaxRequestTarget target) {
dialog.setTitle(getString("ActionContributor.Run.destination.email"));
dialog.setInitialWidth(300);
dialog.setUseInitialHeight(false);
AddEmailPanel addEmailPanel = new AddEmailPanel(FormPanel.CONTENT_ID) {
private static final long serialVersionUID = 1L;
@Override
public void onAdd(AjaxRequestTarget target, Recipient recipient) {
ModalWindow.closeCurrent(target);
provider.addRecipient(recipient);
target.add(recipientsPanel);
}
};
dialog.setContent(new FormPanel(dialog.getContentId(), addEmailPanel, true));
dialog.show(target);
}
};
add(emailLink);
AjaxLink<String> userLink = new AjaxLink<String>("user") {
private static final long serialVersionUID = 1L;
@SuppressWarnings("unchecked")
@Override
public void onClick(AjaxRequestTarget target) {
dialog.setTitle(getString("ActionContributor.Run.destination.user"));
dialog.setInitialWidth(300);
dialog.setUseInitialHeight(false);
AddEmailUserPanel addEmailUserPanel = new AddEmailUserPanel(FormPanel.CONTENT_ID) {
private static final long serialVersionUID = 1L;
@Override
public void onAdd(AjaxRequestTarget target, Recipient recipient) {
ModalWindow.closeCurrent(target);
provider.addRecipient(recipient);
target.add(recipientsPanel);
}
};
dialog.setContent(new FormPanel(dialog.getContentId(), addEmailUserPanel, true));
dialog.show(target);
}
};
add(userLink);
AjaxLink<String> groupLink = new AjaxLink<String>("group") {
private static final long serialVersionUID = 1L;
@SuppressWarnings("unchecked")
@Override
public void onClick(AjaxRequestTarget target) {
dialog.setTitle(getString("ActionContributor.Run.destination.group"));
dialog.setInitialWidth(300);
dialog.setUseInitialHeight(false);
AddEmailGroupPanel addEmailGroupPanel = new AddEmailGroupPanel(FormPanel.CONTENT_ID) {
private static final long serialVersionUID = 1L;
@Override
public void onAdd(AjaxRequestTarget target, Recipient recipient) {
ModalWindow.closeCurrent(target);
provider.addRecipient(recipient);
target.add(recipientsPanel);
}
};
dialog.setContent(new FormPanel(dialog.getContentId(), addEmailGroupPanel, true));
dialog.show(target);
}
};
add(groupLink);
}
}