Package no.bekk.boss.bpep.view

Source Code of no.bekk.boss.bpep.view.CreateDialog

package no.bekk.boss.bpep.view;

import java.util.ArrayList;
import java.util.List;

import no.bekk.boss.bpep.generator.Generator;

import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IField;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;

public class CreateDialog extends AbstractModalDialog {

    private Generator generator;


    public CreateDialog(Shell parent, Generator generator) {
        super(parent);
        this.generator = generator;
    }

    public void show(final ICompilationUnit compilationUnit) throws JavaModelException {
        final Shell shell = new Shell(getParent(), SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL | SWT.CENTER);

        shell.setText("Generate Builder Pattern Code");

        shell.setLayout(new GridLayout(2, false));

        Group fieldGroup = new Group(shell, SWT.SHADOW_ETCHED_IN);
        fieldGroup.setText("Select fields to include:");
        fieldGroup.setLayout(new RowLayout(SWT.VERTICAL));
        GridData fieldGroupLayoutData = new GridData();
        fieldGroupLayoutData.verticalSpan = 2;
    fieldGroup.setLayoutData(fieldGroupLayoutData);

        List<IField> fields = generator.findAllFIelds(compilationUnit);
        final List<Button> fieldButtons = new ArrayList<Button>();
        for(IField field: fields) {
          Button button = new Button(fieldGroup, SWT.CHECK);
          button.setText(generator.getName(field) + "(" + generator.getType(field) + ")");
          button.setData(field);
          button.setSelection(true);
          fieldButtons.add(button);
        }

        Button btnSelectAll = new Button(shell, SWT.PUSH);
        btnSelectAll.setText("Select All");
        GridData btnSelectAllLayoutData = new GridData(SWT.FILL, SWT.FILL, true, false);
        btnSelectAllLayoutData.verticalIndent = 10;
    btnSelectAll.setLayoutData(btnSelectAllLayoutData);
        btnSelectAll.addSelectionListener(new SelectionAdapter() {
          public void widgetSelected(SelectionEvent event) {
            for (Button button : fieldButtons) {
          button.setSelection(true);
        }
          }
        });
        Button btnSelectNone = new Button(shell, SWT.PUSH);
        btnSelectNone.setText("Deselect All");
        GridData selectNoneGridData = new GridData();
        selectNoneGridData.verticalAlignment = SWT.BEGINNING;
    btnSelectNone.setLayoutData(selectNoneGridData);
        btnSelectNone.addSelectionListener(new SelectionAdapter() {
          public void widgetSelected(SelectionEvent event) {
            for (Button button : fieldButtons) {
          button.setSelection(false);
        }
          }
        });

        Group optionGroup = new Group(shell, SWT.SHADOW_ETCHED_IN);
        optionGroup.setText("Options:");
        optionGroup.setLayout(new RowLayout(SWT.VERTICAL));
        GridData optionGridData = new GridData();
        optionGridData.horizontalSpan = 2;
        optionGridData.horizontalAlignment = SWT.FILL;
    optionGroup.setLayoutData(optionGridData);

        final Button createPrivateClassConstructor = new Button(optionGroup, SWT.RADIO);
        createPrivateClassConstructor.setSelection(true);
        createPrivateClassConstructor.setText("Create private class constructor");

        final Button createBuilderConstructor = new Button(optionGroup, SWT.RADIO);
        createBuilderConstructor.setText("Create constructor in builder");

        final Button formatSourceButton = new Button(optionGroup, SWT.CHECK);
        formatSourceButton.setSelection(true);
        formatSourceButton.setText("Format source (entire file)");
       
        final Button executeButton = new Button(shell, SWT.PUSH);
        executeButton.setText("Generate");
//        GridData generateButtonGridData = new GridData();
//        generateButtonGridData.horizontalAlignment = SWT.END;
//    executeButton.setLayoutData(generateButtonGridData);

        final Button cancelButton = new Button(shell, SWT.PUSH);
        cancelButton.setText("Cancel");
//    GridData cancelButtonGridData = new GridData();
//    cancelButtonGridData.horizontalAlignment = SWT.END;
//    cancelButton.setLayoutData(cancelButtonGridData);

        Listener clickListener = new Listener() {
          public void handleEvent(Event event) {
            if (event.widget == executeButton) {

              List<IField> selectedFields = new ArrayList<IField>();
              for (Button button : fieldButtons) {
            if (button.getSelection()) {
              selectedFields.add((IField)button.getData());
            }
          }

              generator.generate(compilationUnit, createBuilderConstructor.getSelection(), formatSourceButton.getSelection(), selectedFields);
              shell.dispose();
            } else {
              shell.dispose();
            }
          }
        };

        executeButton.addListener(SWT.Selection, clickListener);
        cancelButton.addListener(SWT.Selection, clickListener);

        optionGroup.pack();

        display(shell);
    }

}
TOP

Related Classes of no.bekk.boss.bpep.view.CreateDialog

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.