Package org.drools.guvnor.client.ruleeditor

Source Code of org.drools.guvnor.client.ruleeditor.RuleFlowWrapper

package org.drools.guvnor.client.ruleeditor;

import org.drools.guvnor.client.common.ErrorPopup;
import org.drools.guvnor.client.common.FormStyleLayout;
import org.drools.guvnor.client.common.FormStylePopup;
import org.drools.guvnor.client.common.LoadingPopup;
import org.drools.guvnor.client.rpc.RuleAsset;
import org.drools.guvnor.client.rpc.RuleFlowContentModel;
import org.drools.guvnor.client.rulefloweditor.RuleFlowViewer;
import org.drools.guvnor.client.explorer.Preferences;
import org.drools.guvnor.client.messages.Constants;

import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.core.client.GWT;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.Toolbar;
import com.gwtext.client.widgets.ToolbarButton;
import com.gwtext.client.widgets.event.ButtonListenerAdapter;

/**
*
*
* @author Toni Rikkola
*
*/
public class RuleFlowWrapper extends Composite implements SaveEventListener {

  private RuleViewer viewer;
  private RuleAsset asset;

  private RuleFlowViewer ruleFlowViewer;
  private Panel parameterPanel;
  private Constants constants = ((Constants) GWT.create(Constants.class));

  public RuleFlowWrapper(final RuleAsset asset, final RuleViewer viewer) {
    this.viewer = viewer;
    this.asset = asset;
    initWidgets(asset.uuid, asset.metaData.name);
  }

  protected void initWidgets(final String uuid, String formName) {

    RuleFlowUploadWidget uploadWidget = new RuleFlowUploadWidget(asset,
        viewer);

    VerticalPanel panel = new VerticalPanel();
    panel.add(uploadWidget);

    if (Preferences.getBooleanPref("visual-ruleflow")) {
      initRuleflowViewer();

      if (ruleFlowViewer != null && parameterPanel != null) {
        Toolbar tb = new Toolbar();

        ToolbarButton viewSource = new ToolbarButton();
        viewSource.setText(constants.OpenEditorInNewWindow());
        viewSource.addListener(new ButtonListenerAdapter() {
          public void onClick(
              com.gwtext.client.widgets.Button button,
              EventObject e) {
            doViewDiagram();

            ruleFlowViewer.update();
          }
        });

        tb.addButton(viewSource);
        panel.add(tb);

      }
    }

    initWidget(panel);

    this.setStyleName(getOverallStyleName());
  }

  private void doViewDiagram() {
    LoadingPopup.showMessage(constants.CalculatingSource());

    try {
      FormStylePopup pop = new FormStylePopup("images/view_source.gif", // NON-NLS
          constants.ViewingDiagram(), new Integer(800), Boolean.FALSE);

      pop.addRow(new ScrollPanel(ruleFlowViewer));
      pop.addRow(parameterPanel);

      pop.show();
    } catch (Exception e) {
      ErrorPopup
          .showMessage(constants
              .CouldNotCreateTheRuleflowDiagramItIsPossibleThatTheRuleflowFileIsInvalid());
    }

    LoadingPopup.close();
  }

  private void initRuleflowViewer() {
    RuleFlowContentModel rfcm = (RuleFlowContentModel) asset.content;

    if (rfcm != null && rfcm.getXml() != null && rfcm.getNodes() != null) {
      try {

        parameterPanel = new Panel();
        parameterPanel.setCollapsible(true);
        parameterPanel.setTitle(constants.Parameters());

        FormStyleLayout parametersForm = new FormStyleLayout();
        parametersForm.setHeight("120px"); // NON-NLS
        parameterPanel.add(parametersForm);

        ruleFlowViewer = new RuleFlowViewer(rfcm, parametersForm);

      } catch (Exception e) {
        Window.alert(e.toString());
      }
    } else if (rfcm != null && rfcm.getXml() == null) {

      // If the XML is not set there was some problem when the diagram was
      // created.
      Window
          .alert(constants
              .CouldNotCreateTheRuleflowDiagramItIsPossibleThatTheRuleflowFileIsInvalid());

    }
  }

  public String getIcon() {
    return "images/ruleflow_large.png"; // NON-NLS
  }

  public String getOverallStyleName() {
    return "decision-Table-upload"; // NON-NLS
  }

  public void onAfterSave() {

  }

  public void onSave() {

    RuleFlowContentModel rfcm = (RuleFlowContentModel) asset.content;

    rfcm.setNodes(ruleFlowViewer.getTransferNodes());

  }

  public RuleFlowViewer getRuleFlowViewer() {
    return ruleFlowViewer;
  }
}
TOP

Related Classes of org.drools.guvnor.client.ruleeditor.RuleFlowWrapper

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.