Package sos.scheduler.editor.conf.forms

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

/********************************************************* 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*/
package sos.scheduler.editor.conf.forms;

import java.util.Collection;

import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CTabItem;
import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
import org.jdom.Element;

import sos.scheduler.editor.app.Editor;
import sos.scheduler.editor.app.IContainer;
import sos.scheduler.editor.app.IEditor;
import sos.scheduler.editor.app.IOUtils;
import sos.scheduler.editor.app.IUpdateLanguage;
import sos.scheduler.editor.app.Options;
import sos.scheduler.editor.app.TreeData;
import sos.scheduler.editor.app.TreeMenu;
import sos.scheduler.editor.app.Utils;
import sos.scheduler.editor.conf.ISchedulerUpdate;
import sos.scheduler.editor.conf.SchedulerDom;
import sos.scheduler.editor.conf.listeners.SchedulerListener;


public class SchedulerForm extends Composite implements ISchedulerUpdate, IEditor {
 
 
  private SchedulerDom      dom                  = null;
 
  private SchedulerListener listener             = null;
 
  private IContainer        container            = null;
 
  private TreeItem          selection            = null;
 
  private SashForm          sashForm             = null;
 
  private Group             gTree                = null;
 
  private Tree              tree                 = null;
 
  private Composite         cMainForm            = null;
 
  //private static  boolean   fontChange           = false;
 
  public SchedulerForm(IContainer container, Composite parent, int style) {
    super(parent, style);
   
    this.container = container;
       
    this.dom = new SchedulerDom();
    this.dom.setDataChangedListener(this);
 
    listener = new SchedulerListener(this, this.dom);
       
  }
 
  public SchedulerForm(IContainer container, Composite parent, int style, int type) {
   
    super(parent, style);
   
    this.container = container;
       
    this.dom = new SchedulerDom(type);
    this.dom.setDataChangedListener(this);
   
    listener = new SchedulerListener(this, this.dom);
   
  }
 
 
  private void initialize() {
    FillLayout fillLayout = new FillLayout();
    fillLayout.spacing = 0;
    fillLayout.marginWidth = 5;
    fillLayout.marginHeight = 5;
    setSize(new Point(783, 450));
    setLayout(fillLayout);
    createSashForm();
  }
 
 
  /**
   * This method initializes sashForm
   */
  private void createSashForm() {
   
    sashForm = new SashForm(this, SWT.NONE);
    //sashForm.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true));
    createGTree();
    createCMainForm();
    sashForm.setWeights(new int[] { 176, 698 });
    Options.loadSash("main", sashForm);
  }
 
 
  /**
   * This method initializes gTree
   */
  private void createGTree() {
    gTree = new Group(sashForm, SWT.NONE);
    gTree.setLayout(new FillLayout());
    gTree.setText("Scheduler Elements");
    tree = new Tree(gTree, SWT.BORDER);
    tree.setMenu(new TreeMenu(tree, dom, this).getMenu());
    tree.addListener(SWT.MenuDetect, new Listener() {
      public void handleEvent(Event e) {
        e.doit = tree.getSelectionCount() > 0;
      }
    });
    tree.addListener(SWT.Selection, new Listener() {
      public void handleEvent(Event e) {
        if (tree.getSelectionCount() > 0) {
          if (selection == null)
            selection = tree.getItem(0);
         
          e.doit = listener.treeSelection(tree, cMainForm);
         
          if (!e.doit) {
            tree.setSelection(new TreeItem[] { selection });
          } else {
            selection = tree.getSelection()[0];
          }
        }
      }
    });
  }
 
 
  /**
   * This method initializes cMainForm
   */
  private void createCMainForm() {
    cMainForm = new Composite(sashForm, SWT.NONE);
   
    cMainForm.setLayout(new FillLayout());
  }
 
 
  public Shell getSShell() {
    return this.getShell();
  }
 
 
 
  public void updateLanguage() {
    if (cMainForm.getChildren().length > 0) {
      if (cMainForm.getChildren()[0] instanceof IUpdateLanguage) {
        ((IUpdateLanguage) cMainForm.getChildren()[0]).setToolTipText();
      }
    }
  }
 
 
  public void dataChanged() {
    container.setStatusInTitle();
  }
 
  public void dataChanged(CTabItem tab) {
    ((sos.scheduler.editor.app.TabbedContainer)container).setStatusInTitle(tab);
  }
 
 
  public void updateExitCodesCommand() {
    if (tree.getSelectionCount() > 0) {
      TreeItem item = tree.getSelection()[0];
      TreeData data = (TreeData) item.getData();
      listener.treeFillExitCodesCommands(item , data.getElement(), true);
      item.setExpanded(true);
      if(item.getItemCount() > 0)
        item.getItems()[item.getItemCount()-1].setExpanded(true);
      //listener.treeFillCommands(tree.getSelection()[0], data.getElement(), true);
      //hier einen neuen TreeItem aufbauen
    }
  }
 
  public void updateCommands() {
    if (tree.getSelectionCount() > 0) {
      TreeItem item = tree.getSelection()[0];
      TreeData data = (TreeData) item.getData();
      listener.treeFillCommands(tree.getSelection()[0], data.getElement(), true);
    }
  }
 
 
  public void updateDays(int type) {
    updateDays(type, null);
    /*if (tree.getSelectionCount() > 0) {
     TreeItem item = tree.getSelection()[0];
     TreeData data = (TreeData) item.getData();
     listener.treeFillDays(item, data.getElement(), type, true);
     }*/
  }
 
  public void updateDays(int type, String name) {

    if (tree.getSelectionCount() > 0) {
      TreeItem item = tree.getSelection()[0];
      TreeData data = (TreeData) item.getData();          
      listener.treeFillDays(item, data.getElement(), type, true, name);
      item.setExpanded(true);
    }
   
  }
 
  public void updateJob() {
    if (tree.getSelectionCount() > 0) {
      TreeItem item = tree.getSelection()[0];
     
      TreeData data = (TreeData) item.getData();
     
      listener.treeFillJob(item, data.getElement(), true);
     
    }
  }
 
  public void updateJob(Element elem) {
    if (tree.getSelectionCount() > 0) {
      TreeItem item = tree.getSelection()[0];
      String job = "Job: " + Utils.getAttributeValue("name", elem);
      item.setText(job);
      TreeData data = (TreeData) item.getData();
      data.setElement(elem);
     
      //listener.treeFillMain(tree, this, SchedulerDom.LIFE_JOB);
      listener.treeFillJob(item, data.getElement(), true);      
      listener.treeSelection(tree, cMainForm);
      //listener.treeFillJobs(tree.getParentItem());
     
    }
  }
 
  public void updateJob(String s) {
    TreeItem item = tree.getSelection()[0];
    String job = "Job: " + s;
    item.setText(job);
   
   
  }
 
 
  public void updateJobs() {
    //if(tree.getSelection()[0].getText().startsWith("Job Chain")) {
    if(!tree.getSelection()[0].getText().startsWith("Jobs")) {
      //Assistent: Der Aufruf erfolgte �ber den Assistenten. Hier ist nicht das Element "Jobs" im Tree selektiert
      //sondern das Element "Job Chains".
      updateJobs_();
    } else
      if (tree.getSelectionCount() > 0)
        listener.treeFillJobs(tree.getSelection()[0]);               
  }
 
 
  public void expandItem(String name) {
    listener.treeExpandJob(tree.getSelection()[0], name);               
  }
 
  private void updateJobs_() {
    if (tree.getSelectionCount() > 0) {
      for (int i =0; i < tree.getItemCount(); i++) {
        TreeItem ti = tree.getItem(i);
        if(ti.getText().equalsIgnoreCase("Jobs")) {
          //System.out.println("itemText "+ ti.getText());
          listener.treeFillJobs(ti);
        }                       
      }
     
    }
  }
 
  public void updateOrder(String s) {
    TreeItem item = tree.getSelection()[0];
    String order = "Order: " + s;
    item.setText(order);
  }
 
 
  public void updateOrders() {
    if (tree.getSelectionCount() > 0) {
      listener.treeFillOrders(tree.getSelection()[0], true);
    }
  }
 
 
  public boolean applyChanges() {
    Control[] c = cMainForm.getChildren();
    return c.length == 0 || Utils.applyFormChanges(c[0]);
  }
 
 
  public void openBlank() {
    initialize();
    // dom.initScheduler();
    listener.treeFillMain(tree, cMainForm);
  }
 
  public void openBlank(int type) {
    initialize();
    // dom.initScheduler();
    listener.treeFillMain(tree, cMainForm, type);
  }
 
  public boolean openDirectory(String filename, Collection files) {
   
    //boolean res = IOUtils.openFile("#xml#", files, dom);
    //System.out.println("test: " + filename);
    boolean res = IOUtils.openFile(filename, files, dom);
    if (res) {
      if(dom.getListOfChangeElementNames() != null && dom.getListOfChangeElementNames().size() > 0 ) {
        dom.setChanged(true);
      }
      initialize();
      listener.treeFillMain(tree, cMainForm, SchedulerDom.DIRECTORY);
    }
   
    return res;
  }
 
 
  public boolean open(Collection files) {
    boolean res = IOUtils.openFile(files, dom);
    if (res) {
      initialize();
      listener.treeFillMain(tree, cMainForm);
    }
   
    return res;
  }
 
  public boolean open(String filename, Collection files) {
    boolean res = IOUtils.openFile(filename, files, dom);
    if (res) {
      initialize();
      listener.treeFillMain(tree, cMainForm);
    }
   
    return res;
  }
 
  public boolean open(String filename, Collection files, int type) {
    boolean res = IOUtils.openFile(filename, files, dom);
    if (res) {
      initialize();
      listener.treeFillMain(tree, cMainForm, type);
    }
   
    return res;
  }
 
 
  public boolean save() {
    boolean res = true;
    //if(dom.getFilename() != null && new java.io.File(dom.getFilename()).getName().startsWith("#xml#.config.") && dom.getFilename().endsWith(".xml~")) {       
    if(dom.isDirectory()) {
      res = IOUtils.saveDirectory(dom, false, SchedulerDom.DIRECTORY, null, container);
     
    } else if(dom.isLifeElement()) {
     
      int type = -1;
      if(dom.getRoot().getName().equals("job")) type=SchedulerDom.LIFE_JOB;
      if(dom.getRoot().getName().equals("job_chain")) type=SchedulerDom.LIFE_JOB_CHAIN;
      if(dom.getRoot().getName().equals("process_class")) type=SchedulerDom.LIFE_PROCESS_CLASS;
      if(dom.getRoot().getName().equals("lock")) type=SchedulerDom.LIFE_LOCK;
      if(dom.getRoot().getName().equals("order")) type=SchedulerDom.LIFE_ORDER;
      if(dom.getRoot().getName().equals("add_order")) type=SchedulerDom.LIFE_ADD_ORDER;
      res = IOUtils.saveDirectory(dom, false,type, dom.getRoot().getName(), container);
     
    } else {
       res = IOUtils.saveFile(dom, false);
    }
    if (res)
      container.setNewFilename(null);
   
    if(res)
      setReChangedTreeItemText();
   
   
    if(dom.getRoot().getName().equals("spooler"))
      Utils.setResetElement(dom.getRoot().getChild("config"));
    else
      Utils.setResetElement(dom.getRoot());

    return res;
  }
 
 
  public boolean saveAs() {
    String old = dom.getFilename();
   
    boolean res = IOUtils.saveFile(dom, true);
   
    if(dom.isLifeElement()) {              
      updateLifeElement();                   
    }
   
    if (res)
      container.setNewFilename(old);
   
    if(res)
      setReChangedTreeItemText();
   
   
    return res;
  }
 
 
  public boolean close() {
    return applyChanges() && IOUtils.continueAnyway(dom);
  }
 
 
  public boolean hasChanges() {
    Options.saveSash("main", sashForm.getWeights());

    //System.out.println(dom.isChanged() + " isLife: " + (dom.isDirectory() || dom.isLifeElement()));
    //if(dom.isDirectory()) {
   
    /*if(dom.isChanged()) {
      fontChange = true;
      setChangedInItalicFont();
    } else {
      //zur�cksetzen
      if (fontChange){
        FontData fontDatas[] = tree.getFont().getFontData();
        FontData fdata = fontDatas[0];
        Font font = new Font(Display.getCurrent(), fdata.getName(), fdata.getHeight(), SWT.NORMAL);
        tree.setFont(font);
        for(int i = 0; i < tree.getItemCount(); i++) {
          TreeItem item = tree.getItem(i);
          setChangedFont(item);
        }
      }


    }
    */


    return dom.isChanged();
  }
 
  /*//Nur f�r Hot Foldern. Setz den Font vom kursiv auf normal
  private void setChangedFont(TreeItem item ) {
    FontData fontDatas[] = tree.getFont().getFontData();
    FontData fdata = fontDatas[0];
    Font font = new Font(Display.getCurrent(), fdata.getName(), fdata.getHeight(), SWT.NORMAL);

    item.setFont(font);
    for(int j = 0; j < item.getItemCount(); j++) {
      TreeItem cItem = item.getItem(j);
      setChangedFont(cItem);         
    }     
  }

 


  //Nur f�r Hot Foldern
  private void setChangedInItalicFont() {
    if (tree.getSelectionCount() > 0) {
      TreeItem item = tree.getSelection()[0];   
      TreeData data = (TreeData) item.getData();
      FontData fontDatas[] = item.getFont().getFontData();
      FontData fdata = fontDatas[0];
      Font font = new Font(Display.getCurrent(), fdata.getName(), fdata.getHeight(), SWT.ITALIC);
      item.setFont(font);
      while(item.getParentItem() != null) {
        item = item.getParentItem();
        item.setFont(font);       
      }
     
    }
  }
*/
 
  public String getHelpKey() {
    if (tree.getSelectionCount() > 0) {
      TreeItem item = tree.getSelection()[0];           
      if(item.getData("key") != null) {
        return Options.getHelpURL(item.getData("key").toString());
      } else {
        TreeData data = (TreeData) item.getData();
        if (data != null && data.getHelpKey() != null)
          return data.getHelpKey();
      }
    }
    return null;
  }
 
 
  public String getFilename() {
    return dom.getFilename();
  }
 
 
  public void updateTree(String which) {
    //String mar = getTreeSelection();
    if(which.equalsIgnoreCase("main")) {
      if(dom.isLifeElement()) {
        listener.treeFillMainForLifeElement(tree, cMainForm);
      } else {
        listener.treeFillMain(tree, cMainForm);
      }
    //} else if(which.equalsIgnoreCase("jobs"))
    } else
      listener.treeSelection(tree, cMainForm);
   
 
  public void selectTreeItem(String parent, String child) {
   
    for(int i = 0; i < tree.getItemCount(); i++) {
      TreeItem pItem = tree.getItem(i);
      if(pItem.getText().equals(parent)){
        for(int j = 0; j < pItem.getItemCount(); j++) {
          TreeItem cItem = pItem.getItem(j);
          if(cItem.getText().equals(child)){
            tree.setSelection(new TreeItem[]{cItem});
            break;
          }
        }
      }
    }
  }
 
  public String getTreeSelection() {
    if(tree.getSelectionCount() > 0)
      return tree.getSelection()[0].getText();
    else
      return "Config";
  }
 
  public void updateJobChains() {
    listener.treeFillJobChains(tree.getSelection()[0]);
    if(tree.getSelection()[0].getItemCount() > 0)
      tree.getSelection()[0].getItems()[tree.getSelection()[0].getItemCount()-1].setExpanded(true);
  }
 
 
  public void updateJobChain(String newName, String oldName) {
    //listener.treeFillJobChains(tree.getSelection()[0]);
    if(newName.equals(oldName))
      return;
   
    if(dom.isLifeElement()){
      TreeItem item = tree.getSelection()[0];
      item.setText("Job Chain: " + newName);
    }
   
    TreeItem item = tree.getSelection()[0];
    if(item.getText().equals("Job Chains")) {
      TreeItem[] items = item.getItems();
      for (int i = 0; i < items.length; i++) {
        TreeItem it = items[i];
        if(it.getText().equals("Job Chain: " + oldName))
          it.setText("Job Chain: " + newName);
      }
    } else {
      TreeItem[] parent = tree.getItems();
      for(int i =0; i < parent.length; i++) {
        if(parent[i].getText().equals("Job Chains")) {
          TreeItem[] items = parent[i].getItems();
          for (int j = 0; j < items.length; j++) {
            TreeItem it = items[j];
            if(it.getText().equals("Job Chain: " + oldName))
              it.setText("Job Chain: " + newName);
          }
        }
      }
      //String jobChain = "Job Chain: " + newName;
      //item.setText(jobChain);
    }
  }
 
  public void updateLifeElement() {   
    //TreeItem item = tree.getSelection()[0];
    TreeItem item = tree.getItem(0);
    tree.setSelection(new TreeItem[]{item});
    TreeData data = (TreeData) item.getData();
    org.jdom.Element elem = data.getElement();
    if(elem.getName().equals("job")) {       
      updateJob(Utils.getAttributeValue("name", elem));
      updateJob();       
    } else if(elem.getName().equals("job_chain")) {
      updateJobChain(item.getText(0).substring("Job Chain: ".length()), Utils.getAttributeValue("name", elem));
    else if(elem.getName().equals("add_order") || elem.getName().equals("order")) {
      updateOrder(Utils.getAttributeValue("id", elem));   
    } else if(elem.getName().equals("config")) {
     
      if(elem.getChild("process_classes") != null) {
        Element process_classes = elem.getChild("process_classes");
        Element pc = process_classes.getChild("process_class");
        pc.setAttribute("name", dom.getRoot().getAttributeValue("name"));
       
      }
     
      if(elem.getChild("locks") != null) {
        Element locks = elem.getChild("locks");
        Element pc = locks.getChild("lock");
        pc.setAttribute("name", dom.getRoot().getAttributeValue("name"));
       
      }
     
    }
   
    listener.treeSelection(tree, cMainForm);
  }
 
  public void updateSpecificWeekdays() {
    if (tree.getSelectionCount() > 0) {
      TreeItem item = tree.getSelection()[0];
      TreeData data = (TreeData) item.getData();
      listener.treeFillSpecificWeekdays(item, data.getElement(), true);
    }
  }
 
  public Tree getTree() {
    return tree;
  }
 
  public SchedulerDom getDom() {
    return dom;
  }
 
  public void updateSchedules() {    
    if (tree.getSelectionCount() > 0)
      listener.treeFillSchedules(tree.getSelection()[0]);               
 
 
 
  public void updateWebServices() {    
    if (tree.getSelectionCount() > 0)
      listener.treeFillWebServices(tree.getSelection()[0]);               
 
 
 
  public void updateScripts() {
      if (tree.getSelectionCount() > 0) {
        TreeItem item = tree.getSelection()[0];   
        TreeData data = (TreeData) item.getData();
        org.jdom.Element elem = data.getElement();
       
        listener.treeFillScripts(item, elem, false);
       
      }
  }
 
  public void updateTreeItem(String s) {
   
    if(tree.getSelectionCount() > 0) {
      TreeItem item = tree.getSelection()[0];
      if(item.getParentItem() != null && item.getParentItem().getText().equals("Monitor") && s.equals(""))
        item.setText("<empty>");
      else
        item.setText(s);   
    }
  }
 
  public void updateFont() {
    if(tree.getSelectionCount() > 0) {      
      TreeItem item = tree.getSelection()[0];
      updateFont(item);
    }
  }
 
 
 
  public void updateFont(TreeItem item) {

    FontData fontDatas[] = item.getFont().getFontData();
    FontData data = fontDatas[0];
    boolean isBold = false;

    TreeData data_ = (TreeData) item.getData();
   
    if(data_ == null || data_.getElement() == null)
      return;     
     
    int type = data_.getType();
    Element elem = data_.getElement();
   
    if (type == Editor.EVERYDAY) {     
      if(!elem.getChildren("period").isEmpty() || !elem.getChildren("at").isEmpty())
        isBold = true;
     
    } else if(type == Editor.DAYS) {     
      if(!elem.getChildren("date").isEmpty())
        isBold = true;
     
    } else if(type == Editor.WEEKDAYS) {
      if(item.getData("key") != null && item.getData("key").equals("holidays_@_weekdays")) {
        if(elem.getChild("holidays") != null && !elem.getChild("holidays").getChildren("weekdays").isEmpty()) {
          isBold = true;
        }         
      } else {
        if(!elem.getChildren("weekdays").isEmpty())
          isBold = true;
      }

    } else if(type == Editor.MONTHDAYS) {     
      if(!elem.getChildren("monthdays").isEmpty() && !elem.getChild("monthdays").getChildren("day").isEmpty())
        isBold = true;         

    } else if(type == Editor.ULTIMOS) {
      if(!elem.getChildren("ultimos").isEmpty())
        isBold = true;         

    } else if(type == Editor.SPECIFIC_WEEKDAYS) {
      if(!elem.getChildren("monthdays").isEmpty() && !elem.getChild("monthdays").getChildren("weekday").isEmpty())
        isBold = true;
    } else if(type == Editor.SPECIFIC_MONTHS) {
      if(!elem.getChildren("month").isEmpty())
        isBold = true;
    } else if(type == Editor.RUNTIME) {
      elem = elem.getChild("run_time");
      if(elem != null) {
        /*int hasAttribute = Utils.getAttributeValue("begin", elem).length() + Utils.getAttributeValue("end", elem).length() +
        (Utils.getAttributeValue("let_run", elem).equals("yes") ? 1 : 0) +
        (Utils.getAttributeValue("once", elem).equals("yes") ? 1 : 0);
       
        if(hasAttribute > 0)
        */
        if(elem.getAttributes().size()>0)
          isBold = true;
      }
    }

    Font font = null;
    if(isBold){
      font = new Font(Display.getCurrent(), data.getName(), data.getHeight(), SWT.BOLD);           
    } else {     
      font = new Font(Display.getCurrent(), data.getName(), data.getHeight(), SWT.NONE);

    }
    item.setFont(font);

  }

  public SchedulerListener getListener() {
    return listener;
  }
 
  //hasRuntimeChild = false, wenn der Runtime ELement Attribute wie schedule oder runtime_function hat
  public void updateRunTime() {
   
    if(tree.getSelectionCount()> 0) {
      TreeItem item = tree.getSelection()[0];
      item.removeAll();
      TreeData data = (TreeData)item.getData();     
      listener.treeFillRunTimes(item, data.getElement(), !Utils.isElementEnabled("job", dom, data.getElement()), "run_time");
    }
   
  }
 
  public void updateCMainForm() {
    listener.treeSelection(tree, cMainForm);
  }


  public void setChangedTreeItemText(String key1) {
    if (tree.getSelectionCount() > 0) {
      TreeItem item = tree.getSelection()[0];   
      /*TreeData data = (TreeData) item.getData();
      FontData fontDatas[] = item.getFont().getFontData();
      FontData fdata = fontDatas[0];
      Font font = new Font(Display.getCurrent(), fdata.getName(), fdata.getHeight(), SWT.ITALIC);
      item.setFont(font);
      */
      if(!dom.isDirectory())
        return;
      
      //TreeData data = (TreeData) item.getData();
        /*Element elem = Utils.getHotFolderParentElement(data.getElement());
        String key1 = "";
       
        if(elem.getName().equals("order") || elem.getName().equals("add_order"))
          key1 = elem.getName()+ "_" + Utils.getAttributeValue("job_chain",elem)+ "," +Utils.getAttributeValue("id",elem);
        else
          key1 = elem.getName() + "_" + Utils.getAttributeValue("name", elem);
      */
     
     
      if(!dom.getChangedJob().containsKey(key1))
        return;
     
     
     
      if(item.getText().endsWith(SchedulerListener.LOCKS) ||
          item.getText().endsWith(SchedulerListener.PROCESS_CLASSES)) {
        if(!item.getText().startsWith("*")) {
          item.setText("*" + item.getText());         
        }
        return;
      }
     
      if(dom.getChangedJob().get(key1).equals(SchedulerDom.NEW) &&
          !key1.startsWith("process_class")) {
        int i = item.getItemCount() -1;
        if(i < 0) i = 0;
        item = item.getItem(i);
        if(!item.getText().startsWith("*")) {
          //item.getItem(item.getItemCount()-1);
          item.setText("*" + item.getText());         
        }
        return;
      }
     
      while(item != null && item.getParentItem() != null ) {
        String sParent = item.getParentItem().getText();
        if(sParent.equals(SchedulerListener.JOBS) ||
            sParent.equals(SchedulerListener.ORDERS) ||
            sParent.equals(SchedulerListener.JOB_CHAINS) ||
            sParent.equals(SchedulerListener.SCHEDULES) ||
            item.getText().equals(SchedulerListener.LOCKS) ||
            item.getText().equals(SchedulerListener.PROCESS_CLASSES)) {
          if(!item.getText().startsWith("*")) {
            item.setText("*" + item.getText());
           
          }
          item = null;
        } else {
          item = item.getParentItem();
          //item.setFont(font);
        }
      }

    }
  } 


  public void setReChangedTreeItemText() {
    for(int i = 0; i < tree.getItemCount(); i++) {
      TreeItem item = tree.getItem(i);
      setChangedItemText(item);
    }
  } 

  private void setChangedItemText(TreeItem item ) {
    if(item.getText().startsWith("*")) {
      item.setText(item.getText().substring(1));     
    }
    for(int j = 0; j < item.getItemCount(); j++) {
      TreeItem cItem = item.getItem(j);
      setChangedItemText(cItem);         
    }     
  }
 
}
TOP

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

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.