Package sos.scheduler.editor.conf.forms

Source Code of sos.scheduler.editor.conf.forms.JobAssistentRunTimeForms

/********************************************************* begin of preamble
**
** Copyright (C) 2003-2010 Software- und Organisations-Service GmbH.
** All rights reserved.
**
** This file may be used under the terms of either the
**
**   GNU General Public License version 2.0 (GPL)
**
**   as published by the Free Software Foundation
**   http://www.gnu.org/licenses/gpl-2.0.txt and appearing in the file
**   LICENSE.GPL included in the packaging of this file.
**
** or the
** 
**   Agreement for Purchase and Licensing
**
**   as offered by Software- und Organisations-Service GmbH
**   in the respective terms of supply that ship with this file.
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
** IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
** THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
** PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
** BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
** POSSIBILITY OF SUCH DAMAGE.
********************************************************** end of preamble*/
/**
* Created on 06.03.2007
*
* Wizzard: Typ des Schedulers wird angegeben. Standalone Job oder Order Job
*
@author mo
*
*/
package sos.scheduler.editor.conf.forms;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.ShellAdapter;
import org.eclipse.swt.events.ShellEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.jdom.Element;
import com.swtdesigner.SWTResourceManager;
import sos.scheduler.editor.app.DatePicker;
import sos.scheduler.editor.app.MainWindow;
import sos.scheduler.editor.app.Messages;
import sos.scheduler.editor.app.Options;
import sos.scheduler.editor.app.ResourceManager;
import sos.scheduler.editor.app.Utils;
import sos.scheduler.editor.conf.ISchedulerUpdate;
import sos.scheduler.editor.conf.SchedulerDom;
import sos.scheduler.editor.conf.listeners.*;

public class JobAssistentRunTimeForms {

  private Element          job                = null;

  private SchedulerDom     dom                = null;

  private ISchedulerUpdate update             = null;

  private Button           butCancel          = null;

  private Button           butShow            = null;

  private Button           butNext            = null;   

  private Shell            runTimeSingleShell = null;

  private Combo            comboMonth         = null;

  private DatePicker       txtSpeDay          = null;

  private Combo            comboEveryWeekdays = null;

  private Button           optEveryDay        = null;

  private Button           optEveryWeeksdays  = null;

  private Button           optEveryMonths     = null;

  private Button           optSpecificDay     = null;

  private List             list               = null;

  private Button           butAdd             = null;

  private Button           butRemove          = null;

  private Text             txtDayAtHour       = null;

  private Text             txtDayAtMinutes    = null;

  private Text             txtDayAtSecound    = null;

  private Text             txtSpeDayHour      = null;

  private Text             txtSpeDayAtMinutes = null;

  private Text             txtSpeDayAtSecound = null;

  private Text             txtWeekAtHour      = null;

  private Text             txtWeekAtMinutes   = null;

  private Text             txtWeekAtSecound   = null;

  private Text             txtMonthAtHour     = null;

  private Text             txtMonthAtMinutes  = null;

  private Text             txtMonthAtSecound  = null;

  private PeriodsListener  periodslistener    = null;

  private PeriodListener   periodlistener     = null

  private DaysListener     weekDayListener    = null;

  private DaysListener     monthListener      = null;

  private DateListener     speDateListener    = null;

  private static String    EVERY_DAY          = "Every Day ";

  private static String    SPECIFIC_DAY       = "Specific Day ";   

  private static String    WEEK_DAY           = "Week Day ";

  private static String    MONTH_DAY          = "Month Day";

  private Element          jobBackUp          = null;                 

  /** Hilsvariable f�r das Schliessen des Dialogs.
   * Das wird gebraucht wenn das Dialog �ber den "X"-Botten (oben rechts vom Dialog) geschlossen wird .*/
  private boolean               closeDialog   = false;        


  /**
   * Konstruktor
   * @param dom_ - Type SchedulerDom
   * @param update_ - Type ISchedulerUpdate
   */
  public JobAssistentRunTimeForms(SchedulerDom dom_, ISchedulerUpdate update_, Element job_, int assistentType_) {
    dom = dom_;
    update = update_;
    job = job_;   
    //assistentType = assistentType_;
    jobBackUp = (Element)job_.clone();
    init();
  }

  private void init() {
    periodslistener = new PeriodsListener(dom, job.getChild("run_time"));
    periodlistener = new PeriodListener(dom);
    speDateListener = new DateListener(dom, job.getChild("run_time"), 1);
    weekDayListener = new DaysListener(dom, job.getChild("run_time"), DaysListener.WEEKDAYS, false);
    monthListener = new DaysListener(dom, job.getChild("run_time"), DaysListener.MONTHDAYS, false);
  }

  public void showRunTimeForms() {
    try {

      runTimeSingleShell = new Shell(MainWindow.getSShell(), SWT.CLOSE | SWT.TITLE | SWT.APPLICATION_MODAL | SWT.BORDER);
      runTimeSingleShell.addShellListener(new ShellAdapter() {
        public void shellClosed(final ShellEvent e) {
          if(!closeDialog)
            close();
          e.doit = runTimeSingleShell.isDisposed();
        }
      });
      runTimeSingleShell.setImage(ResourceManager.getImageFromResource("/sos/scheduler/editor/editor.png"));

      final GridLayout gridLayout = new GridLayout();
      gridLayout.marginTop = 5;
      gridLayout.marginRight = 5;
      gridLayout.marginLeft = 5;
      gridLayout.marginBottom = 5;
      gridLayout.numColumns = 2;
      runTimeSingleShell.setLayout(gridLayout);
      runTimeSingleShell.setSize(553, 489);
      runTimeSingleShell.setText("Run Time/ Single Starts");

      {
        final Group jobGroup = new Group(runTimeSingleShell, SWT.NONE);
        jobGroup.setText("Job");
        final GridData gridData_1 = new GridData(GridData.FILL, GridData.CENTER, false, true, 2, 1);
        gridData_1.heightHint = 390;
        gridData_1.widthHint = 517;
        jobGroup.setLayoutData(gridData_1);
        final GridLayout gridLayout_1 = new GridLayout();
        gridLayout_1.numColumns = 9;
        gridLayout_1.marginWidth = 10;
        gridLayout_1.marginTop = 10;
        gridLayout_1.marginRight = 10;
        gridLayout_1.marginLeft = 10;
        gridLayout_1.marginHeight = 10;
        gridLayout_1.marginBottom = 10;
        jobGroup.setLayout(gridLayout_1);

        {
          optEveryDay = new Button(jobGroup, SWT.CHECK);
          optEveryDay.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(final SelectionEvent e) {
              if(optEveryDay.getSelection()) {               
                txtDayAtHour.setEnabled(true);
                txtDayAtMinutes.setEnabled(true);
                txtDayAtSecound.setEnabled(true);
                butAdd.setEnabled(true);
              } else {               
                txtDayAtHour.setEnabled(false);
                txtDayAtMinutes.setEnabled(false);
                txtDayAtSecound.setEnabled(false);
              }
            }
          });
          optEveryDay.setText(EVERY_DAY);
        }
        new Label(jobGroup, SWT.NONE);

        final Label atLabel = new Label(jobGroup, SWT.NONE);
        atLabel.setAlignment(SWT.RIGHT);
        final GridData gridData_15 = new GridData(GridData.END, GridData.CENTER, false, false);
        gridData_15.widthHint = 28;
        atLabel.setLayoutData(gridData_15);
        atLabel.setText("at");

        txtDayAtHour = new Text(jobGroup, SWT.CENTER | SWT.BORDER);       
        txtDayAtHour.addModifyListener(new ModifyListener() {
          public void modifyText(final ModifyEvent e) {
            if(!checkTime(txtDayAtHour.getText(), "hour")) {
              txtDayAtHour.setBackground(Options.getRequiredColor());
              txtDayAtHour.setFocus();
            } else {
              txtDayAtHour.setBackground(null);
            }
          }
        });

        final GridData gridData = new GridData(GridData.FILL, GridData.CENTER, true, false);
        gridData.minimumWidth = 25;
        txtDayAtHour.setLayoutData(gridData);

        final Label label = new Label(jobGroup, SWT.NONE);
        label.setLayoutData(new GridData());
        label.setText(":");

        txtDayAtMinutes = new Text(jobGroup, SWT.CENTER | SWT.BORDER);       
        txtDayAtMinutes.addModifyListener(new ModifyListener() {
          public void modifyText(final ModifyEvent e) {
            if(!checkTime(txtDayAtMinutes.getText(), "minutes")) {
              txtDayAtMinutes.setBackground(Options.getRequiredColor());
              txtDayAtMinutes.setFocus();
            } else {
              txtDayAtMinutes.setBackground(null);
            }
          }
        });

        final GridData gridData_3 = new GridData(GridData.FILL, GridData.CENTER, true, false);
        gridData_3.widthHint = 12;
        gridData_3.minimumWidth = 25;
        txtDayAtMinutes.setLayoutData(gridData_3);

        final Label label_1 = new Label(jobGroup, SWT.NONE);
        label_1.setLayoutData(new GridData());
        label_1.setText(":");

        txtDayAtSecound = new Text(jobGroup, SWT.CENTER | SWT.BORDER);       
        txtDayAtSecound.addModifyListener(new ModifyListener() {
          public void modifyText(final ModifyEvent e) {
            if(!checkTime(txtDayAtSecound.getText(), "secound")) {
              txtDayAtSecound.setBackground(Options.getRequiredColor());
              txtDayAtSecound.setFocus();
            } else {
              txtDayAtSecound.setBackground(null);
            }
          }
        });
        final GridData gridData_4 = new GridData(GridData.BEGINNING, GridData.CENTER, true, false);
        gridData_4.minimumWidth = 25;
        txtDayAtSecound.setLayoutData(gridData_4);

        {
          final Label hhmmssLabel = new Label(jobGroup, SWT.NONE);
          hhmmssLabel.setLayoutData(new GridData());
          hhmmssLabel.setText("hh:mm:ss");
        }

        {
          optSpecificDay = new Button(jobGroup, SWT.CHECK);
          optSpecificDay.setLayoutData(new GridData());
          optSpecificDay.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(final SelectionEvent e) {
              if(optSpecificDay.getSelection()) {
                txtSpeDay.setEnabled(true);
                txtSpeDayHour.setEnabled(true);
                txtSpeDayAtMinutes.setEnabled(true);
                txtSpeDayAtSecound.setEnabled(true);
                butAdd.setEnabled(true);
              } else {
                txtSpeDay.setEnabled(false);
                txtSpeDayHour.setEnabled(false);
                txtSpeDayAtMinutes.setEnabled(false);
                txtSpeDayAtSecound.setEnabled(false);
              }
            }
          });
          optSpecificDay.setText(SPECIFIC_DAY);
        }

        txtSpeDay = new DatePicker(jobGroup, SWT.NONE);
        final GridData gridData_16 = new GridData(GridData.FILL, GridData.CENTER, true, false);
        gridData_16.widthHint = 131;
        txtSpeDay.setLayoutData(gridData_16);
        txtSpeDay.setEnabled(false);

        final Label atLabel_1 = new Label(jobGroup, SWT.NONE);
        atLabel_1.setLayoutData(new GridData(GridData.END, GridData.CENTER, false, false));
        atLabel_1.setText("at");

        txtSpeDayHour = new Text(jobGroup, SWT.CENTER | SWT.BORDER);
        txtSpeDayHour.addModifyListener(new ModifyListener() {
          public void modifyText(final ModifyEvent e) {
            if(!checkTime(txtSpeDayHour.getText(), "hour")) {
              txtSpeDayHour.setBackground(Options.getRequiredColor());
              txtSpeDayHour.setFocus();
            } else {
              txtSpeDayHour.setBackground(null);
            }
          }
        });

        final GridData gridData_5 = new GridData(GridData.FILL, GridData.CENTER, true, false);
        gridData_5.minimumWidth = 25;
        gridData_5.widthHint = 0;
        txtSpeDayHour.setLayoutData(gridData_5);

        final Label label_2 = new Label(jobGroup, SWT.NONE);
        label_2.setLayoutData(new GridData());
        label_2.setText(":");

        txtSpeDayAtMinutes = new Text(jobGroup, SWT.CENTER | SWT.BORDER);       

        txtSpeDayAtMinutes.addModifyListener(new ModifyListener() {
          public void modifyText(final ModifyEvent e) {           

            if(!checkTime(txtSpeDayHour.getText(), "minutes")) {
              txtSpeDayAtMinutes.setBackground(Options.getRequiredColor());
              txtSpeDayAtMinutes.setFocus();
            }else {
              txtSpeDayAtMinutes.setBackground(null);
            }

          }
        });
        final GridData gridData_3_1 = new GridData(GridData.FILL, GridData.CENTER, true, false);
        gridData_3_1.widthHint = 7;
        gridData_3_1.minimumWidth = 25;
        txtSpeDayAtMinutes.setLayoutData(gridData_3_1);

        final Label label_1_1 = new Label(jobGroup, SWT.NONE);
        label_1_1.setLayoutData(new GridData());
        label_1_1.setText(":");

        txtSpeDayAtSecound = new Text(jobGroup, SWT.CENTER | SWT.BORDER);
        txtSpeDayAtSecound.addModifyListener(new ModifyListener() {
          public void modifyText(final ModifyEvent e) {             
            if(!checkTime(txtSpeDayAtSecound.getText(), "secound")) {
              txtSpeDayAtSecound.setBackground(Options.getRequiredColor());
              txtSpeDayAtSecound.setFocus();
            } else {
              txtSpeDayAtSecound.setBackground(null);
            }
          }
        });

        final GridData gridData_4_1 = new GridData(GridData.BEGINNING, GridData.CENTER, true, false);
        gridData_4_1.minimumWidth = 25;
        txtSpeDayAtSecound.setLayoutData(gridData_4_1);

        final Label hhmmssLabel_1 = new Label(jobGroup, SWT.NONE);
        hhmmssLabel_1.setLayoutData(new GridData());
        hhmmssLabel_1.setText("hh:mm:ss");

        optEveryWeeksdays = new Button(jobGroup, SWT.CHECK);
        optEveryWeeksdays.addSelectionListener(new SelectionAdapter() {
          public void widgetSelected(final SelectionEvent e) {
            if(optEveryWeeksdays.getSelection()) {
              butAdd.setEnabled(true);
              comboEveryWeekdays.setEnabled(true);
              txtWeekAtHour.setEnabled(true);
              txtWeekAtMinutes.setEnabled(true);
              txtWeekAtSecound.setEnabled(true);
            } else {
              comboEveryWeekdays.setEnabled(false);
              txtWeekAtHour.setEnabled(false);
              txtWeekAtMinutes.setEnabled(false);
              txtWeekAtSecound.setEnabled(false);
            }
          }
        });
        optEveryWeeksdays.setText(WEEK_DAY);

        comboEveryWeekdays = new Combo(jobGroup, SWT.NONE);       
        comboEveryWeekdays.setItems(DaysListener.getWeekdays());
        comboEveryWeekdays.select(0);
        comboEveryWeekdays.setEnabled(false);
        final GridData gridData_17 = new GridData(GridData.FILL, GridData.CENTER, true, false);
        gridData_17.widthHint = 148;
        comboEveryWeekdays.setLayoutData(gridData_17);

        final Label atLabel_2 = new Label(jobGroup, SWT.NONE);
        atLabel_2.setLayoutData(new GridData(37, SWT.DEFAULT));
        atLabel_2.setAlignment(SWT.RIGHT);
        atLabel_2.setText("at");

        txtWeekAtHour = new Text(jobGroup, SWT.CENTER | SWT.BORDER);       
        txtWeekAtHour.addModifyListener(new ModifyListener() {
          public void modifyText(final ModifyEvent e) {           
            if(!checkTime(txtWeekAtHour.getText(), "hour")) {
              txtWeekAtHour.setBackground(Options.getRequiredColor());
              txtWeekAtHour.setFocus();
            } else {
              txtWeekAtHour.setBackground(null);
            }
          }
        });
        final GridData gridData_6 = new GridData(GridData.FILL, GridData.CENTER, true, false);
        gridData_6.minimumWidth = 25;
        gridData_6.widthHint = 0;
        txtWeekAtHour.setLayoutData(gridData_6);

        final Label label_3 = new Label(jobGroup, SWT.NONE);
        label_3.setLayoutData(new GridData());
        label_3.setText(":");

        txtWeekAtMinutes = new Text(jobGroup, SWT.CENTER | SWT.BORDER);
        txtWeekAtMinutes.addModifyListener(new ModifyListener() {
          public void modifyText(final ModifyEvent e) {           
            if(!checkTime(txtWeekAtMinutes.getText(), "minutes")) {
              txtWeekAtMinutes.setBackground(Options.getRequiredColor());
              txtWeekAtMinutes.setFocus();
            }else {
              txtWeekAtMinutes.setBackground(null);
            }
          }
        });
        final GridData gridData_11 = new GridData(GridData.FILL, GridData.CENTER, false, false);
        gridData_11.widthHint = 5;
        gridData_11.minimumWidth = 25;

        final GridData gridData_9 = new GridData(11, SWT.DEFAULT);
        gridData_9.minimumWidth = 25;

        final GridData gridData_3_2 = new GridData(GridData.BEGINNING, GridData.CENTER, true, false);
        gridData_3_2.minimumWidth = 25;
        txtWeekAtMinutes.setLayoutData(gridData_3_2);

        final Label label_1_2 = new Label(jobGroup, SWT.NONE);
        label_1_2.setLayoutData(new GridData());
        label_1_2.setText(":");

        txtWeekAtSecound = new Text(jobGroup, SWT.CENTER | SWT.BORDER);
        txtWeekAtSecound.addModifyListener(new ModifyListener() {
          public void modifyText(final ModifyEvent e) {           
            if(!checkTime(txtWeekAtSecound.getText(), "secound")) {
              txtWeekAtSecound.setBackground(Options.getRequiredColor());
              txtWeekAtSecound.setFocus();
            } else {
              txtWeekAtSecound.setBackground(null);
            }
          }
        });
        final GridData gridData_12 = new GridData(GridData.FILL, GridData.CENTER, false, false);
        gridData_12.widthHint = 2;
        gridData_12.minimumWidth = 25;

        final GridData gridData_10 = new GridData(10, SWT.DEFAULT);
        gridData_10.minimumHeight = 25;

        final GridData gridData_4_2 = new GridData(GridData.BEGINNING, GridData.CENTER, true, false);
        gridData_4_2.minimumWidth = 25;
        txtWeekAtSecound.setLayoutData(gridData_4_2);

        final Label hhmmssLabel_2 = new Label(jobGroup, SWT.NONE);
        hhmmssLabel_2.setLayoutData(new GridData());
        hhmmssLabel_2.setText("hh:mm:ss");

        {
          optEveryMonths = new Button(jobGroup, SWT.CHECK);
          optEveryMonths.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(final SelectionEvent e) {
              if(optEveryMonths.getSelection()) {
                butAdd.setEnabled(true);
                comboMonth.setEnabled(true);
                txtMonthAtHour.setEnabled(true);
                txtMonthAtMinutes.setEnabled(true);
                txtMonthAtSecound.setEnabled(true);
              } else {
                comboMonth.setEnabled(false);
                txtMonthAtHour.setEnabled(false);
                txtMonthAtMinutes.setEnabled(false);
                txtMonthAtSecound.setEnabled(false);
              }
            }
          });
          optEveryMonths.setText(MONTH_DAY);
        }

        {
          comboMonth = new Combo(jobGroup, SWT.NONE);         
          comboMonth.setItems(DaysListener.getMonthdays());
          comboMonth.select(0);
          comboMonth.setEnabled(false);
          comboMonth.select(0);
          comboMonth.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, true, false));
        }

        final Label atLabel_3 = new Label(jobGroup, SWT.NONE);
        atLabel_3.setLayoutData(new GridData(37, SWT.DEFAULT));
        atLabel_3.setAlignment(SWT.RIGHT);
        atLabel_3.setText("at");

        txtMonthAtHour = new Text(jobGroup, SWT.CENTER | SWT.BORDER);
        txtMonthAtHour.addModifyListener(new ModifyListener() {
          public void modifyText(final ModifyEvent e) {           
            if(!checkTime(txtMonthAtHour.getText(), "hour")) {
              txtMonthAtHour.setBackground(Options.getRequiredColor());
              txtMonthAtHour.setFocus();
            } else {
              txtMonthAtHour.setBackground(null);
            }
          }
        });
        final GridData gridData_13 = new GridData(GridData.FILL, GridData.CENTER, false, false);
        gridData_13.widthHint = 11;

        final GridData gridData_8 = new GridData(13, SWT.DEFAULT);
        gridData_8.minimumWidth = 25;


        final GridData gridData_7 = new GridData(GridData.FILL, GridData.CENTER, true, false);
        gridData_7.minimumWidth = 25;
        gridData_7.widthHint = 0;
        txtMonthAtHour.setLayoutData(gridData_7);

        final Label label_4 = new Label(jobGroup, SWT.NONE);
        label_4.setLayoutData(new GridData());
        label_4.setText(":");

        txtMonthAtMinutes = new Text(jobGroup, SWT.CENTER | SWT.BORDER);
        txtMonthAtMinutes.addModifyListener(new ModifyListener() {
          public void modifyText(final ModifyEvent e) {           
            if(!checkTime(txtMonthAtMinutes.getText(), "minutes")) {
              txtMonthAtMinutes.setBackground(Options.getRequiredColor());
              txtMonthAtMinutes.setFocus();
            } else {
              txtMonthAtMinutes.setBackground(null);
            }
          }
        });
        final GridData gridData_14 = new GridData(GridData.FILL, GridData.CENTER, false, false);
        gridData_14.widthHint = 15;
        gridData_14.minimumHeight = 25;


        final GridData gridData_3_3 = new GridData(GridData.BEGINNING, GridData.CENTER, true, false);
        gridData_3_3.minimumWidth = 25;
        txtMonthAtMinutes.setLayoutData(gridData_3_3);

        final Label label_1_3 = new Label(jobGroup, SWT.NONE);
        label_1_3.setLayoutData(new GridData());
        label_1_3.setText(":");

        txtMonthAtSecound = new Text(jobGroup, SWT.CENTER | SWT.BORDER);
        txtMonthAtSecound.addModifyListener(new ModifyListener() {
          public void modifyText(final ModifyEvent e) {           
            if(!checkTime(txtMonthAtSecound.getText(), "minutes")) {
              txtMonthAtSecound.setBackground(Options.getRequiredColor());
              txtMonthAtSecound.setFocus();
            }else {
              txtMonthAtSecound.setBackground(null);
            }
          }
        });

        final GridData gridData_4_3 = new GridData(GridData.BEGINNING, GridData.CENTER, true, false);
        gridData_4_3.minimumWidth = 25;
        txtMonthAtSecound.setLayoutData(gridData_4_3);

        final Label hhmmssLabel_3 = new Label(jobGroup, SWT.NONE);
        hhmmssLabel_3.setLayoutData(new GridData());
        hhmmssLabel_3.setText("hh:mm:ss");

        list = new List(jobGroup, SWT.BORDER);
        list.addSelectionListener(new SelectionAdapter() {
          public void widgetSelected(final SelectionEvent e) {
            if(list.getSelectionIndex()> 0) {
              butRemove.setEnabled(true);
            }
          }
        });
        final GridData gridData_2 = new GridData(GridData.FILL, GridData.FILL, true, true, 8, 2);
        list.setLayoutData(gridData_2);

        {
          butAdd = new Button(jobGroup, SWT.NONE);
          butAdd.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(final SelectionEvent e) {
              addPeriod();                           
            }
          });
          butAdd.setLayoutData(new GridData(GridData.FILL, GridData.CENTER, false, false));
          butAdd.setText("Add");
        }

        butRemove = new Button(jobGroup, SWT.NONE);
        butRemove.addSelectionListener(new SelectionAdapter() {
          public void widgetSelected(final SelectionEvent e) {
            if(list.getSelectionCount() > 0) {
              delete();                           
              list.remove(list.getSelectionIndex());                                         
            }
          }
        });
        butRemove.setLayoutData(new GridData(GridData.FILL, GridData.BEGINNING, false, false));
        butRemove.setText("Remove");
      }


      {
        butCancel = new Button(runTimeSingleShell, SWT.NONE);
        butCancel.addSelectionListener(new SelectionAdapter() {
          public void widgetSelected(final SelectionEvent e) {
            close();
          }
        });
        butCancel.setText("Close");
      }



      {
        final Composite composite = new Composite(runTimeSingleShell, SWT.NONE);
        final GridData gridData = new GridData(GridData.END, GridData.FILL, false, false);
        gridData.heightHint = 29;
        composite.setLayoutData(gridData);
        final GridLayout gridLayout_1 = new GridLayout();
        gridLayout_1.numColumns = 3;
        composite.setLayout(gridLayout_1);

        {
          butShow = new Button(composite, SWT.NONE);
          butShow.setVisible(false);
          butShow.setLayoutData(new GridData(GridData.END, GridData.CENTER, false, false));
          butShow.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(final SelectionEvent e) {
              MainWindow.message(runTimeSingleShell, Utils.getElementAsString(job), SWT.OK );
            }
          });
          butShow.setText("Show");
        }

        Utils.createHelpButton(composite, "assistent.run_time", runTimeSingleShell);

        {
          butNext = new Button(composite, SWT.NONE);
          butNext.setFont(SWTResourceManager.getFont("", 8, SWT.BOLD));
          final GridData gridData_1 = new GridData(GridData.END, GridData.CENTER, false, false);
          gridData_1.widthHint = 57;
          butNext.setLayoutData(gridData_1);
          butNext.addSelectionListener(new SelectionAdapter() {
            public void widgetSelected(final SelectionEvent e) {
              closeDialog = true;
              runTimeSingleShell.dispose();                           
            }
          });
          butNext.setText("Apply");
        }             
      }

      setEnabled(false);
      setToolTipText();           

      fillList();

      java.awt.Dimension screen = java.awt.Toolkit.getDefaultToolkit().getScreenSize();

      runTimeSingleShell.setBounds((screen.width - runTimeSingleShell.getBounds().width) /2,
          (screen.height - runTimeSingleShell.getBounds().height) /2,
          runTimeSingleShell.getBounds().width,
          runTimeSingleShell.getBounds().height);
      runTimeSingleShell.open();
      runTimeSingleShell.layout();
      runTimeSingleShell.pack();   
    } catch (Exception e) {
      try {
        new sos.scheduler.editor.app.ErrorLog("error in " + sos.util.SOSClassUtil.getMethodName() , e);
      } catch(Exception ee) {
        //tu nichts
      }
      System.err.println("..error in JobAssistentRuntimeForms.showRunTimeForms() " + e.getMessage());
    }
  }

  private void setEnabled(boolean enabled ) {
    optEveryDay.setSelection(false);
    optSpecificDay.setSelection(false);
    optEveryWeeksdays.setSelection(false);
    optEveryMonths.setSelection(false);

    comboEveryWeekdays.setText("");
    comboMonth.setText("");


    txtSpeDay.setEnabled(false);
    comboEveryWeekdays.setEnabled(false);
    comboMonth.setEnabled(false);


    txtDayAtHour.setEnabled(false);
    txtDayAtMinutes.setEnabled(false);
    txtDayAtSecound.setEnabled(false);

    txtSpeDay.setEnabled(false);
    txtSpeDayHour.setEnabled(false);
    txtSpeDayAtMinutes.setEnabled(false);
    txtSpeDayAtSecound.setEnabled(false);

    comboEveryWeekdays.setEnabled(false);
    txtWeekAtHour.setEnabled(false);
    txtWeekAtMinutes.setEnabled(false);
    txtWeekAtSecound.setEnabled(false);

    comboMonth.setEnabled(false);
    txtMonthAtHour.setEnabled(false);
    txtMonthAtMinutes.setEnabled(false);
    txtMonthAtSecound.setEnabled(false);

    txtDayAtHour.setText("");
    txtDayAtMinutes.setText("");
    txtDayAtSecound.setText("");   
    txtSpeDayHour.setText("");         
    txtSpeDayAtMinutes.setText("");    
    txtSpeDayAtSecound.setText("");    
    txtWeekAtHour.setText("");   
    txtWeekAtMinutes.setText("");    
    txtWeekAtSecound.setText("");
    txtMonthAtHour.setText("");
    txtMonthAtMinutes.setText("");
    txtMonthAtSecound.setText("");
  }



  public void setToolTipText() {
    butCancel.setToolTipText(Messages.getTooltip("assistent.close"));
    butNext.setToolTipText(Messages.getTooltip("assistent.apply"));
    butShow.setToolTipText(Messages.getTooltip("assistent.show"));
    comboMonth.setToolTipText(Messages.getTooltip("assistent.run_time.month"));
    txtSpeDay.setToolTipText(Messages.getTooltip("assistent.run_time.specific_day"));
    comboEveryWeekdays.setToolTipText(Messages.getTooltip("assistent.run_time.week"));
    butAdd.setToolTipText(Messages.getTooltip("assistent.run_time.add"));
    txtDayAtHour.setToolTipText(Messages.getTooltip("assistent.run_time.hours"));
    txtDayAtMinutes.setToolTipText(Messages.getTooltip("assistent.run_time.minutes"));
    txtDayAtSecound.setToolTipText(Messages.getTooltip("assistent.run_time.secounds"));   
    txtSpeDayHour.setToolTipText(Messages.getTooltip("assistent.run_time.hours"));         
    txtSpeDayAtMinutes.setToolTipText(Messages.getTooltip("assistent.run_time.minutes"));    
    txtSpeDayAtSecound.setToolTipText(Messages.getTooltip("assistent.run_time.secounds"));    
    txtWeekAtHour.setToolTipText(Messages.getTooltip("assistent.run_time.hours"));   
    txtWeekAtMinutes.setToolTipText(Messages.getTooltip("assistent.run_time.minutes"));    
    txtWeekAtSecound.setToolTipText(Messages.getTooltip("assistent.run_time.secounds"));
    txtMonthAtHour.setToolTipText(Messages.getTooltip("assistent.run_time.hours"));   
    txtMonthAtMinutes.setToolTipText(Messages.getTooltip("assistent.run_time.minutes"));
    txtMonthAtSecound.setToolTipText(Messages.getTooltip("assistent.run_time.secounds"));
  }



  private void addPeriod() {

    if(optEveryDay.getSelection()) {
      if(txtDayAtHour.getText().concat(txtDayAtMinutes.getText()).concat(txtDayAtSecound.getText()).trim().length()>0)  {
        String str = EVERY_DAY + "at " +  Utils.getTime(23, txtDayAtHour.getText(), txtDayAtMinutes.getText(), txtDayAtSecound.getText(), false);
        if(!periodExist(str)) {
          savePeriod(EVERY_DAY);
          list.add(str);
        }
      }               
    }

    if(optSpecificDay.getSelection()) {
      if(txtSpeDay.getISODate() != null && txtSpeDay.getISODate().trim().length() > 0){       
        savePeriod(SPECIFIC_DAY);
        list.add(SPECIFIC_DAY + txtSpeDay.getISODate() + " at " +  Utils.getTime(23, txtSpeDayHour.getText(), txtSpeDayAtMinutes.getText(), txtSpeDayAtSecound.getText(), false));
      }
    }

    if(optEveryWeeksdays.getSelection()){
      if(comboEveryWeekdays.getText()!= null && comboEveryWeekdays.getText().trim().length() >0){

        savePeriod(WEEK_DAY);
        list.add(WEEK_DAY + comboEveryWeekdays.getText() + " at " +  Utils.getTime(23, txtWeekAtHour.getText(), txtWeekAtMinutes.getText(), txtWeekAtSecound.getText(), false));
      }
    }

    if(optEveryMonths.getSelection()){
      if(comboMonth.getText() !=null && comboMonth.getText().trim().length() > 0){       
        savePeriod(MONTH_DAY);
        list.add(MONTH_DAY + comboMonth.getText() + " at " +  Utils.getTime(23, txtMonthAtHour.getText(), txtMonthAtMinutes.getText(), txtMonthAtSecound.getText(), false));
      }
    }
    setEnabled(false);

 

  private boolean periodExist(String str) {
    for(int i =0; i < list.getItemCount(); i++) {
      String currStr = list.getItem(i);
      if(currStr.equalsIgnoreCase(str)) {
        MainWindow.message(runTimeSingleShell, sos.scheduler.editor.app.Messages.getString("assistent.run_time.period_exist"), SWT.ICON_WARNING | SWT.OK |SWT.CANCEL );
        return true;
      }
    }
    return false;
  }

  private void  fillList(){

    Element run_time = job.getChild("run_time");
    if(run_time == null) return;

    //every day
    java.util.List everyDay = periodslistener.get_list();
    for(int i =0; everyDay != null && i < everyDay.size(); i++) {
      Element period = (Element)everyDay.get(i);
      PeriodListener p = new PeriodListener(dom);
      p.setPeriod(period);
      if(p.getBegin() == null || p.getBegin().trim().length() == 0) {
        list.add(EVERY_DAY + "at " + p.getSingle() );
      }
    }

    //specific day   
    java.util.List speDays = speDateListener.get_list();
    for(int i =0; speDays != null && i < speDays.size(); i++) {
      Element speElem = (Element)speDays.get(i);
      int[] da = speDateListener.getDate(i);
      java.util.List periods = speElem.getChildren("period");     
      for (int j =0; periods != null && j < periods.size(); j++) {
        Element period = (Element)periods.get(j);
        PeriodListener p = new PeriodListener(dom);
        p.setPeriod(period)
        if(p.getBegin() == null || p.getBegin().trim().length() == 0) {
          list.add(SPECIFIC_DAY + Utils.asStr(da[2]) + "-" + Utils.asStr(da[1]) + "-" + Utils.asStr(da[0])   " at " + p.getSingle() );
        }
      }
    }

    //Week day       
    Element[] weekDays = weekDayListener.getDayElements();
    for(int i =0; weekDays!=null&& i < weekDays.length; i++) {
      Element elWeek = weekDays[i];
      String sWeek = comboEveryWeekdays.getItem(Utils.str2int(Utils.getAttributeValue("day", elWeek)) -1);
      java.util.List periods = elWeek.getChildren("period");     
      for (int j =0; periods != null && j < periods.size(); j++) {
        Element period = (Element)periods.get(j);
        PeriodListener p = new PeriodListener(dom);
        p.setPeriod(period);
        if(p.getBegin() == null || p.getBegin().trim().length() == 0) {
          list.add(WEEK_DAY + sWeek +  " at " + p.getSingle() );
        }
      } 
    }

    //Month day   
    Element[] monthDays = monthListener.getDayElements();
    for(int i =0; monthDays!=null&& i < monthDays.length; i++) {
      Element elMonth = monthDays[i];
      String sMonth = comboMonth.getItem(Utils.str2int(Utils.getAttributeValue("day", elMonth)) -1);
      java.util.List periods = elMonth.getChildren("period");     
      for (int j =0; periods != null && j < periods.size(); j++) {
        Element period = (Element)periods.get(j);
        PeriodListener p = new PeriodListener(dom);
        p.setPeriod(period)
        if(p.getBegin() == null || p.getBegin().trim().length() == 0) {
          list.add(MONTH_DAY + sMonth +  " at " + p.getSingle() );
        }
      } 
    }


  }


  private void delete() {
    //list.remove(list.getSelectionIndex());
    String selectedStr = list.getItem(list.getSelectionIndex());

    if(selectedStr.startsWith(EVERY_DAY)) {
      //Every day
      deleteEveryDay(selectedStr);
    }else if(selectedStr.startsWith(SPECIFIC_DAY)) {
      //Specific Day entfernen
      deleteSpeDay(selectedStr);
    } else if(selectedStr.startsWith(WEEK_DAY)) {
      //Wochentag entfernen
      deleteWeek(selectedStr);
    } else if(selectedStr.startsWith(MONTH_DAY)) {
      //Monat entfernen
      deleteMonth(selectedStr);
    }

  }

  private void deleteEveryDay(String selectedStr) {
    java.util.List everyDay = periodslistener.get_list();

    for(int i =0; everyDay != null && i < everyDay.size(); i++) {
      Element period = (Element)everyDay.get(i);
      PeriodListener p = new PeriodListener(dom);
      p.setPeriod(period);     
      if(selectedStr.equals(EVERY_DAY + "at " + p.getSingle())) {   
        periodslistener.removePeriod(i);
      }
    }

  }


  private void deleteSpeDay(String selectedStr) {
    java.util.List speDays = speDateListener.get_list();
    for(int i =0; speDays != null && i < speDays.size(); i++) {
      Element speElem = (Element)speDays.get(i);
      int[] da = speDateListener.getDate(i);
      java.util.List periods = speElem.getChildren("period");
      if(periods == null ||  periods.size() <=) {
        //es existiert nur maximal eine Periode -> der Element kann gel�scht werden
        speDateListener.removeDate(i);
      } else {

        for (int j =0; periods != null && j < periods.size(); j++) {
          Element period = (Element)periods.get(j);
          PeriodListener p = new PeriodListener(dom);
          p.setPeriod(period);       
          if(selectedStr.equals(SPECIFIC_DAY + Utils.asStr(da[2]) + "-" + Utils.asStr(da[1]) + "-" + Utils.asStr(da[0])   " at " + p.getSingle() )){
            PeriodsListener _pl = new PeriodsListener(dom, speElem );
            _pl.removePeriod(j);
          }
        }
      }
    }
    update.updateDays(DaysListener.SPECIFIC_DAY);
  }

  private void deleteWeek(String selectedStr) {
    Element[] weekDays = weekDayListener.getDayElements();
    for(int i =0; weekDays!=null&& i < weekDays.length; i++) {
      Element elWeek = weekDays[i];
      String sWeek = comboEveryWeekdays.getItem(Utils.str2int(Utils.getAttributeValue("day", elWeek)) -1);
      if(selectedStr.indexOf(sWeek) > -1) {
        java.util.List periods = elWeek.getChildren("period");
        if(periods == null ||  periods.size() <=) {
          //es existiert nur maximal eine Periode -> der Element kann gel�scht werden
          weekDayListener.deleteDay(sWeek);
        } else {
          //Der Wochentag hat mehr als eine Periode -> l�sche den mit der gleichen Zeit
          for (int j =0; periods != null && j < periods.size(); j++) {
            Element period = (Element)periods.get(j);
            PeriodListener p = new PeriodListener(dom);
            p.setPeriod(period)
            String time = selectedStr.substring(selectedStr.indexOf("at ") + 3);
            if(p.getSingle().endsWith(time)) {
              PeriodsListener _pl = new PeriodsListener(dom, elWeek );
              _pl.removePeriod(j);
            }             
          } 
        }

      }

    }
    update.updateDays(DaysListener.WEEKDAYS);
  }

  private void deleteMonth(String selectedStr) {
    Element[] monthDays = monthListener.getDayElements();
    for(int i =0; monthDays!=null&& i < monthDays.length; i++) {
      Element elMonth = monthDays[i];
      String sMonth = comboMonth.getItem(Utils.str2int(Utils.getAttributeValue("day", elMonth)) -1);
      if(selectedStr.indexOf(sMonth) > -1) {
        java.util.List periods = elMonth.getChildren("period");
        if(periods == null ||  periods.size() <=) {
          //es existiert nur maximal eine Periode -> der Element kann gel�scht werden
          monthListener.deleteDay(sMonth);
        } else {
          //Der Monat hat mehr als eine Periode -> l�sche den mit der gleichen Zeit
          for (int j =0; periods != null && j < periods.size(); j++) {
            Element period = (Element)periods.get(j);
            PeriodListener p = new PeriodListener(dom);
            p.setPeriod(period)
            String time = selectedStr.substring(selectedStr.indexOf("at ") + 3);
            if(p.getSingle().endsWith(time)) {
              PeriodsListener _pl = new PeriodsListener(dom, elMonth );
              _pl.removePeriod(j);
            }             
          } 
        }

      }

    }
    update.updateDays(DaysListener.MONTHDAYS);
  }



  private void savePeriod(String which ) {


    if(which.equals(EVERY_DAY)){
      Element period = periodslistener.getNewPeriod();   
      periodlistener.setPeriod(period);
      periodlistener.setPeriodTime(23, null, "single_start", txtDayAtHour.getText(), txtDayAtMinutes.getText(), txtDayAtSecound.getText());
      periodslistener.applyPeriod(period);

    }

    if(which.equals(SPECIFIC_DAY)) {

      String date = txtSpeDay.getISODate();
      String[] tdate = date.split("-");


      if (!speDateListener.exists(Utils.str2int(tdate[2]), Utils.str2int(tdate[1]), Utils.str2int(tdate[0])) ) {
        speDateListener.addDate(Utils.str2int(tdate[2]), Utils.str2int(tdate[1]), Utils.str2int(tdate[0]));  
      }
      java.util.List lastDate = job.getChild("run_time").getChildren("date");
      Element eDate =  (Element)lastDate.get(lastDate.size()-1);
      PeriodsListener p = new PeriodsListener(dom, eDate);
      Element period = p.getNewPeriod();   
      periodlistener.setPeriod(period);
      periodlistener.setPeriodTime(23, null, "single_start", txtSpeDayHour.getText(), txtSpeDayAtMinutes.getText(), txtSpeDayAtSecound.getText());
      p.applyPeriod(period);

      if (update != null)
        update.updateDays(DaysListener.SPECIFIC_DAY);

    }

    if(which.equals(WEEK_DAY)){
      String week = comboEveryWeekdays.getText();                 
      Element day = null;           
      Element[] days =  weekDayListener.getDayElements();     
      if(days != null &&days.length > 0) {//gleich 1 bedeutet, das day Element gerade generiert wurde
        //�berpr�fe, ob der Wochentag bereits ausgew�hlt wurde
        for (int i =0; i < days.length; i++) {
          Element eday = (Element)days[i];
          if(Utils.str2int(Utils.getAttributeValue("day",eday)) == (comboEveryWeekdays.getSelectionIndex()+1)){
            day = eday;   
            break;
          }
        }
      }     
      if(day == null) {
        weekDayListener.addDay(week);
        day = weekDayListener.getDayElements()[weekDayListener.getDayElements().length - 1];//letzte Element       
      }     
      PeriodsListener p = new PeriodsListener(dom, day);
      Element period = p.getNewPeriod();     
      periodlistener.setPeriod(period);
      periodlistener.setPeriodTime(23, null, "single_start", txtWeekAtHour.getText(), txtWeekAtMinutes.getText(), txtWeekAtSecound.getText());
      p.applyPeriod(period);
      update.updateDays(DaysListener.WEEKDAYS);     
    }

    if(which.equals(MONTH_DAY)){
      String month = comboMonth.getText();

      Element day = null;     

      Element[] days =  monthListener.getDayElements();
      if(days != null && days.length > 0) {//gleich 1 bedeutet, das day Element gerade generiert wurde
        //�berpr�fe, ob der Wochentag bereits ausgew�hlt wurde
        for (int i =0; i < days.length; i++) {
          Element eday = (Element)days[i];
          if(Utils.str2int(Utils.getAttributeValue("day",eday)) == (comboMonth.getSelectionIndex()+1)){
            day = eday;   
            break;
          }
        }
      }
      if(day == null) {
        monthListener.addDay(month);
        day = monthListener.getDayElements()[monthListener.getDayElements().length - 1];//letzte Element
      }

      PeriodsListener p = new PeriodsListener(dom, day);
      Element period = p.getNewPeriod();
      periodlistener.setPeriod(period);
      periodlistener.setPeriodTime(23, null, "single_start", txtMonthAtHour.getText(), txtMonthAtMinutes.getText(), txtMonthAtSecound.getText());
      p.applyPeriod(period);
      update.updateDays(DaysListener.MONTHDAYS);


    }

  }

  private boolean checkTime(String time, String which ) {
    boolean retVal = true;
    if(time == null || time.trim().length()==0){
      return true;
    }
    if(!Utils.isOnlyDigits(time)) {
      MainWindow.message(runTimeSingleShell, sos.scheduler.editor.app.Messages.getString("assistent.no_numeric"), SWT.ICON_WARNING | SWT.OK |SWT.CANCEL );
      retVal= false;
    } else {
      int itime = Utils.str2int(time);
      if(which.equals("hour")) {
        Utils.str2int(time);
        if(itime < 0 || itime > 24) {
          MainWindow.message(runTimeSingleShell, sos.scheduler.editor.app.Messages.getString("assistent.no_time"), SWT.ICON_WARNING | SWT.OK |SWT.CANCEL );
          retVal= false;
        }
      }else if(which.equals("minutes") || which.equals("secound")) {
        Utils.str2int(time);
        if(itime < 0 || itime > 60) {
          MainWindow.message(runTimeSingleShell, sos.scheduler.editor.app.Messages.getString("assistent.no_time"), SWT.ICON_WARNING | SWT.OK |SWT.CANCEL );
          retVal= false;
        }
      }

      if(time.trim().length() > 2) {
        MainWindow.message(runTimeSingleShell, sos.scheduler.editor.app.Messages.getString("assistent.no_time"), SWT.ICON_WARNING | SWT.OK |SWT.CANCEL );
        retVal= false;
      }
    }
    return retVal;
  }

  private void close() {
    int cont = MainWindow.message(runTimeSingleShell, sos.scheduler.editor.app.Messages.getString("assistent.close"), SWT.ICON_WARNING | SWT.OK |SWT.CANCEL );
    if(cont == SWT.OK) {//Utils.getElementAsString((Element)jobBackUp);     
      job.setContent(jobBackUp.cloneContent());
      runTimeSingleShell.dispose()
    }
  }

}
TOP

Related Classes of sos.scheduler.editor.conf.forms.JobAssistentRunTimeForms

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.