Java tutorial
/*! * This program is free software; you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software * Foundation. * * You should have received a copy of the GNU Lesser General Public License along with this * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html * or from the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * Copyright (c) 2002-2016 Pentaho Corporation.. All rights reserved. */ package org.pentaho.mantle.client.dialogs.scheduling; import org.pentaho.gwt.widgets.client.dialogs.IDialogCallback; import org.pentaho.gwt.widgets.client.dialogs.MessageDialogBox; import org.pentaho.gwt.widgets.client.wizards.AbstractWizardDialog; import org.pentaho.gwt.widgets.client.wizards.IWizardPanel; import org.pentaho.mantle.client.messages.Messages; import org.pentaho.mantle.client.workspace.JsJob; import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.core.client.JsArray; import com.google.gwt.core.client.JsArrayString; import com.google.gwt.event.dom.client.KeyCodes; import com.google.gwt.http.client.Request; import com.google.gwt.http.client.RequestBuilder; import com.google.gwt.http.client.RequestCallback; import com.google.gwt.http.client.RequestException; import com.google.gwt.http.client.Response; import com.google.gwt.json.client.JSONArray; import com.google.gwt.json.client.JSONObject; import com.google.gwt.json.client.JSONParser; public class ScheduleEmailDialog extends AbstractWizardDialog { String moduleBaseURL = GWT.getModuleBaseURL(); String moduleName = GWT.getModuleName(); String contextURL = moduleBaseURL.substring(0, moduleBaseURL.lastIndexOf(moduleName)); IDialogCallback callback; ScheduleEmailWizardPanel scheduleEmailWizardPanel; AbstractWizardDialog parentDialog; String filePath; JSONObject jobSchedule; JSONArray scheduleParams; JsJob editJob; Boolean done = false; private boolean newSchedule = true; public ScheduleEmailDialog(AbstractWizardDialog parentDialog, String filePath, JSONObject jobSchedule, JSONArray scheduleParams, JsJob editJob) { super(ScheduleDialogType.SCHEDULER, Messages.getString("newSchedule"), null, false, true); //$NON-NLS-1$ this.parentDialog = parentDialog; this.filePath = filePath; this.jobSchedule = jobSchedule; this.scheduleParams = scheduleParams; this.editJob = editJob; initDialog(); } public void initDialog() { scheduleEmailWizardPanel = new ScheduleEmailWizardPanel(filePath, jobSchedule, editJob, scheduleParams); IWizardPanel[] wizardPanels = { scheduleEmailWizardPanel }; this.setWizardPanels(wizardPanels); setPixelSize(635, 375); wizardDeckPanel.setHeight("100%"); //$NON-NLS-1$ wizardDeckPanel.getElement().getParentElement().addClassName("schedule-dialog-content"); wizardDeckPanel.getElement().getParentElement().removeClassName("dialog-content"); setSize("650px", "450px"); addStyleName("schedule-email-dialog"); } public boolean onKeyDownPreview(char key, int modifiers) { if (key == KeyCodes.KEY_ESCAPE) { hide(); } return true; } /* * (non-Javadoc) * * @see org.pentaho.gwt.widgets.client.wizards.AbstractWizardDialog#finish() */ @Override protected boolean onFinish() { final JSONObject scheduleRequest = (JSONObject) JSONParser.parseStrict(jobSchedule.toString()); JsArray<JsSchedulingParameter> emailParams = scheduleEmailWizardPanel.getEmailParams(); if (scheduleParams == null) { scheduleParams = new JSONArray(); } if (emailParams != null) { int index = scheduleParams.size(); for (int i = 0; i < emailParams.length(); i++) { scheduleParams.set(index++, new JSONObject(emailParams.get(i))); } } if (editJob != null) { String lineageId = editJob.getJobParamValue("lineage-id"); JsArrayString lineageIdValue = (JsArrayString) JavaScriptObject.createArray().cast(); lineageIdValue.push(lineageId); JsSchedulingParameter p = (JsSchedulingParameter) JavaScriptObject.createObject().cast(); p.setName("lineage-id"); p.setType("string"); p.setStringValue(lineageIdValue); scheduleParams.set(scheduleParams.size(), new JSONObject(p)); } scheduleRequest.put("jobParameters", scheduleParams); //$NON-NLS-1$ RequestBuilder scheduleFileRequestBuilder = ScheduleHelper.buildRequestForJob(editJob, scheduleRequest); try { scheduleFileRequestBuilder.sendRequest(scheduleRequest.toString(), new RequestCallback() { @Override public void onError(Request request, Throwable exception) { MessageDialogBox dialogBox = new MessageDialogBox(Messages.getString("error"), //$NON-NLS-1$ exception.toString(), false, false, true); dialogBox.center(); setDone(false); } @Override public void onResponseReceived(Request request, Response response) { if (response.getStatusCode() == 200) { setDone(true); ScheduleEmailDialog.this.hide(); if (callback != null) { callback.okPressed(); } } else { MessageDialogBox dialogBox = new MessageDialogBox(Messages.getString("error"), Messages.getString("serverErrorColon") + " " + response.getStatusCode(), //$NON-NLS-1$ //$NON-NLS-2$ false, false, true); dialogBox.center(); setDone(false); } } }); } catch (RequestException e) { MessageDialogBox dialogBox = new MessageDialogBox(Messages.getString("error"), e.toString(), //$NON-NLS-1$ false, false, true); dialogBox.center(); setDone(false); } setDone(true); return true; } public Boolean getDone() { return done; } public void setDone(Boolean done) { this.done = done; } /* * (non-Javadoc) * * @see * org.pentaho.gwt.widgets.client.wizards.AbstractWizardDialog#onNext(org.pentaho.gwt.widgets.client.wizards. * IWizardPanel, org.pentaho.gwt.widgets.client.wizards.IWizardPanel) */ @Override protected boolean onNext(IWizardPanel nextPanel, IWizardPanel previousPanel) { // TODO Auto-generated method stub return true; } /* * (non-Javadoc) * * @see * org.pentaho.gwt.widgets.client.wizards.AbstractWizardDialog#onPrevious(org.pentaho.gwt.widgets.client.wizards * .IWizardPanel, org.pentaho.gwt.widgets.client.wizards.IWizardPanel) */ @Override protected void backClicked() { parentDialog.center(); hide(); } @Override public void center() { super.center(); scheduleEmailWizardPanel.setFocus(); } @Override protected boolean onPrevious(IWizardPanel previousPanel, IWizardPanel currentPanel) { return true; } @Override protected boolean showBack(int index) { return parentDialog != null; } @Override protected boolean showFinish(int index) { return true; } @Override protected boolean showNext(int index) { return false; } @Override protected boolean enableBack(int index) { return true; } public void setCallback(IDialogCallback callback) { this.callback = callback; } public IDialogCallback getCallback() { return callback; } public AbstractWizardDialog getParentDialog() { return parentDialog; } public void setParentDialog(AbstractWizardDialog parentDialog) { this.parentDialog = parentDialog; } public String getFilePath() { return filePath; } public void setFilePath(String filePath) { this.filePath = filePath; } public JSONObject getJobSchedule() { return jobSchedule; } public void setJobSchedule(JSONObject jobSchedule) { this.jobSchedule = jobSchedule; } public JSONArray getScheduleParams() { return scheduleParams; } public void setScheduleParams(JSONArray scheduleParams) { this.scheduleParams = scheduleParams; this.scheduleEmailWizardPanel.setScheduleParams(scheduleParams); this.scheduleEmailWizardPanel.panelWidgetChanged(this); } public JsJob getEditJob() { return editJob; } public void setEditJob(JsJob editJob) { this.editJob = editJob; } public void setNewSchedule(boolean newSchedule) { this.newSchedule = newSchedule; } }