Package org.drools.eclipse.wizard.project

Source Code of org.drools.eclipse.wizard.project.NewDroolsProjectRuntimeWizardPage

/*
* Copyright 2010 JBoss Inc
*
* Licensed 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 org.drools.eclipse.wizard.project;

import org.drools.eclipse.preferences.DroolsProjectPreferencePage;
import org.drools.eclipse.util.DroolsRuntime;
import org.drools.eclipse.util.DroolsRuntimeManager;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
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.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Link;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.dialogs.PreferencesUtil;

public class NewDroolsProjectRuntimeWizardPage extends WizardPage {

    public static final String DROOLS4 = "Drools 4.x";
    public static final String DROOLS5 = "Drools 5.0.x";
    public static final String DROOLS5_1 = "Drools 5.1.x or above";
    public static final String DROOLS6 = "Drools 6.0.x";

    private boolean isDefaultRuntime = true;
    private String selectedRuntime;
    private String generationType = DROOLS6;
    private Button projectSpecificRuntime;
    private Combo droolsRuntimeCombo;
    private Combo droolsGenerateCombo;
   
    private Composite gavPanel;
    private String groupId = "";
    private String artifactId = "";
    private String version = "";

    public NewDroolsProjectRuntimeWizardPage() {
        super("extendedNewProjectRuntimePage");
        setTitle("Drools Runtime");
        setDescription("Select a Drools Runtime");
    }

    public void createControl(Composite parent) {
        Composite composite = new Composite(parent, SWT.NONE);
        GridLayout gridLayout = new GridLayout();
        gridLayout.numColumns = 2;
        composite.setLayout(gridLayout);
       
        DroolsRuntime defaultRuntime = DroolsRuntimeManager.getDefaultDroolsRuntime();
        projectSpecificRuntime = createCheckBox(composite,
            "Use default Drools Runtime (currently "
                + (defaultRuntime == null ? "undefined)" : defaultRuntime.getName() + ")"));
        projectSpecificRuntime.setSelection(true);
        projectSpecificRuntime.addSelectionListener(new SelectionListener() {
            public void widgetDefaultSelected(SelectionEvent e) {
                // do nothing
            }
            public void widgetSelected(SelectionEvent e) {
                isDefaultRuntime = ((Button) e.widget).getSelection();
                droolsRuntimeCombo.setEnabled(!isDefaultRuntime);
            }
        });
        GridData gridData = new GridData();
        gridData.horizontalSpan = 2;
        gridData.grabExcessHorizontalSpace = true;
        gridData.horizontalAlignment = GridData.FILL;
        projectSpecificRuntime.setLayoutData(gridData);
       
        Label nameLabel = new Label(composite, SWT.NONE);
        nameLabel.setText("Drools Runtime:");
        droolsRuntimeCombo = new Combo(composite, SWT.READ_ONLY);
        droolsRuntimeCombo.setEnabled(false);
        droolsRuntimeCombo.addSelectionListener(new SelectionListener() {
            public void widgetDefaultSelected(SelectionEvent e) {
                selectedRuntime = droolsRuntimeCombo.getText();
            }
            public void widgetSelected(SelectionEvent e) {
                selectedRuntime = droolsRuntimeCombo.getText();
            }
        });
        DroolsRuntime[] runtimes = DroolsRuntimeManager.getDroolsRuntimes();
        if (runtimes.length == 0) {
            setErrorMessage("No Drools Runtimes have been defined, configure workspace settings first");
        } else {
            setErrorMessage(null);
            for (int i = 0; i < runtimes.length; i++) {
                droolsRuntimeCombo.add(runtimes[i].getName());
            }
            droolsRuntimeCombo.select(0);
            selectedRuntime = droolsRuntimeCombo.getText();
        }
        gridData = new GridData();
        gridData.grabExcessHorizontalSpace = true;
        gridData.horizontalAlignment = GridData.FILL;
        droolsRuntimeCombo.setLayoutData(gridData);
        Link changeWorkspaceSettingsLink = createLink(composite, "Configure Workspace Settings...");
        changeWorkspaceSettingsLink.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false, false, 2, 1));

        Composite subPanel = new Composite(composite, SWT.NONE);
        gridLayout = new GridLayout();
        gridLayout.numColumns = 2;
        subPanel.setLayout(gridLayout);
        gridData = new GridData();
        gridData.grabExcessHorizontalSpace = true;
        gridData.horizontalAlignment = GridData.FILL;
        gridData.horizontalSpan = 2;
        subPanel.setLayoutData(gridData);

        Label generateLabel = new Label(subPanel, SWT.NONE);
        generateLabel.setText("Generate code compatible with:");
        droolsGenerateCombo = new Combo(subPanel, SWT.READ_ONLY);
        droolsGenerateCombo.add(DROOLS4);
        droolsGenerateCombo.add(DROOLS5);
        droolsGenerateCombo.add(DROOLS5_1);
        droolsGenerateCombo.add(DROOLS6);
        droolsGenerateCombo.addSelectionListener(new SelectionListener() {
            public void widgetDefaultSelected(SelectionEvent e) {
                generationType = droolsGenerateCombo.getText();
              gavPanel.setVisible(getGenerationType().equals(DROOLS6));
              setComplete();
            }
            public void widgetSelected(SelectionEvent e) {
                generationType = droolsGenerateCombo.getText();
              gavPanel.setVisible(getGenerationType().equals(DROOLS6));
              setComplete();
            }
        });
        droolsGenerateCombo.select(3);
        setPageComplete(false);
        generationType = DROOLS6;
        gridData = new GridData();
        gridData.grabExcessHorizontalSpace = true;
        gridData.horizontalAlignment = GridData.FILL;
        droolsGenerateCombo.setLayoutData(gridData);
       
        gavPanel = new Composite(composite, SWT.NONE);
        gridLayout = new GridLayout();
        gridLayout.numColumns = 2;
        gavPanel.setLayout(gridLayout);
        gridData = new GridData(GridData.FILL_HORIZONTAL);
        gridData.grabExcessHorizontalSpace = true;
        gridData.horizontalAlignment = GridData.FILL;
        gridData.horizontalSpan = 2;
        gavPanel.setLayoutData(gridData);
       
        Label groupLabel = new Label(gavPanel, SWT.NONE);
        groupLabel.setText("GroupId: ");
        final Text groupField = new Text(gavPanel, SWT.BORDER);
        groupField.addListener(SWT.Modify, new Listener() {
          public void handleEvent(Event event) {
            groupId = groupField.getText();
            setComplete();
          }        
        });
        Label artifactLabel = new Label(gavPanel, SWT.NONE);
        artifactLabel.setText("ArtifactId: ");
        final Text artifactField = new Text(gavPanel, SWT.BORDER);
        artifactField.addListener(SWT.Modify, new Listener() {
          public void handleEvent(Event event) {
            artifactId = artifactField.getText();
            setComplete();
          }        
        });
        Label versionLabel = new Label(gavPanel, SWT.NONE);
        versionLabel.setText("Version: ");
        final Text versionField = new Text(gavPanel, SWT.BORDER);
        versionField.addListener(SWT.Modify, new Listener() {
          public void handleEvent(Event event) {
            version = versionField.getText();
            setComplete();
          }        
        });

        setMessage(null);
        setPageComplete(runtimes.length > 0 && isComplete());
        setControl(composite);
    }
   
    private void setComplete() {
        setPageComplete(isComplete());
    }
   
    private boolean isComplete() {
      return !getGenerationType().equals(DROOLS6) || (getGroupId().length() > 0 && getArtifactId().length() > 0 && getVersion().length() > 0);
    }

    private Button createCheckBox(Composite group, String label) {
        Button button = new Button(group, SWT.CHECK | SWT.LEFT);
        button.setText(label);
        GridData data = new GridData();
        button.setLayoutData(data);
        return button;
    }

    private Link createLink(Composite composite, String text) {
        Link link= new Link(composite, SWT.NONE);
        link.setFont(composite.getFont());
        link.setText("<A>" + text + "</A>")//$NON-NLS-1$//$NON-NLS-2$
        link.addSelectionListener(new SelectionListener() {
            public void widgetSelected(SelectionEvent e) {
                openLink();
            }
            public void widgetDefaultSelected(SelectionEvent e) {
                openLink();
            }
        });
        return link;
    }

    private void openLink() {
        PreferencesUtil.createPreferenceDialogOn(getShell(),
            DroolsProjectPreferencePage.PREF_ID,
            new String[] { DroolsProjectPreferencePage.PROP_ID }, null).open();
        droolsRuntimeCombo.removeAll();
        DroolsRuntime[] runtimes = DroolsRuntimeManager.getDroolsRuntimes();
        if (runtimes.length == 0) {
            setPageComplete(false);
            setErrorMessage("No Drools Runtimes have been defined, please do this first");
        } else {
            setPageComplete(true);
            setErrorMessage(null);
            for (int i = 0; i < runtimes.length; i++) {
                droolsRuntimeCombo.add(runtimes[i].getName());
            }
            droolsRuntimeCombo.select(0);
            selectedRuntime = droolsRuntimeCombo.getText();
        }
        DroolsRuntime defaultRuntime = DroolsRuntimeManager.getDefaultDroolsRuntime();
        projectSpecificRuntime.setText("Use default Drools Runtime (currently "
            + (defaultRuntime == null ? "undefined)" : defaultRuntime.getName() + ")"));
    }

    public DroolsRuntime getDroolsRuntime() {
        if (isDefaultRuntime) {
            return null;
        }
        return DroolsRuntimeManager.getDroolsRuntime(selectedRuntime);
    }

    public String getGenerationType() {
        return generationType;
    }

    public String getGroupId() {
      return groupId;
    }

    public String getArtifactId() {
      return artifactId;
    }

    public String getVersion() {
      return version;
    }
}
TOP

Related Classes of org.drools.eclipse.wizard.project.NewDroolsProjectRuntimeWizardPage

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.