zigen.plugin.db.ui.dialogs.WizardPage1.java Source code

Java tutorial

Introduction

Here is the source code for zigen.plugin.db.ui.dialogs.WizardPage1.java

Source

/*
 * Copyright (c) 2007 - 2009 ZIGEN
 * Eclipse Public License - v 1.0
 * http://www.eclipse.org/legal/epl-v10.html
 */
package zigen.plugin.db.ui.dialogs;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.viewers.ColumnWeightData;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.Viewer;
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.graphics.GC;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.Text;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.PlatformUI;

import zigen.plugin.db.DbPlugin;
import zigen.plugin.db.ImageCacher;
import zigen.plugin.db.core.ColumnLayout;
import zigen.plugin.db.ui.editors.event.TextSelectionListener;
import zigen.plugin.db.ui.util.WidgetUtil;

public class WizardPage1 extends DefaultWizardPage {

    ImageCacher ic = ImageCacher.getInstance();

    protected class TableLabelProvider extends LabelProvider implements ITableLabelProvider {

        public String getColumnText(Object element, int columnIndex) {
            String result = ""; //$NON-NLS-1$

            switch (columnIndex) {
            case 0:
                result = (String) element;

                break;
            default:
                break;
            }
            return result;
        }

        public Image getColumnImage(Object element, int columnIndex) {
            if (element instanceof String) {
                File file = new File((String) element);
                if (file.exists()) {
                    if (file.isDirectory()) {
                        return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FOLDER);
                    } else {
                        return PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJ_FILE);
                    }
                } else {
                    return ic.getImage(DbPlugin.IMG_CODE_WARNING);
                }
            }

            return null;
        }

        public Image getImage(Object obj) {
            return null;
        }
    }

    protected class TableContentProvider implements IStructuredContentProvider {

        public Object[] getElements(Object inputElement) {
            if (inputElement instanceof List) {
                return ((List) inputElement).toArray();
            }
            return null;
        }

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
            if (newInput != null) {
                modified();
            }
        }

        public void dispose() {
        }

    }

    public static final String MSG = Messages.getString("WizardPage1.1"); //$NON-NLS-1$

    List classpathList = null;

    Text nameText;

    TableViewer tableViewer;

    Table table;

    Button addBtn;

    Button addBtn2;

    Button removeBtn;

    public WizardPage1(ISelection selection) {
        super(Messages.getString("WizardPage1.2")); //$NON-NLS-1$
        setTitle(Messages.getString("WizardPage1.3")); //$NON-NLS-1$
        setPageComplete(false);
    }

    private void modified() {
        String str = nameText.getText().trim();
        if (!"".equals(str) && classpathList.size() > 0) { //$NON-NLS-1$
            super.updateStatus(null);
        } else {
            if ("".equals(str)) { //$NON-NLS-1$
                super.updateStatus(Messages.getString("WizardPage1.6")); //$NON-NLS-1$
            } else if (classpathList.size() == 0) {
                super.updateStatus(Messages.getString("WizardPage1.7")); //$NON-NLS-1$
            }
        }
    }

    public void createControl(Composite parent) {

        Composite container = createDefaultComposite(parent);
        Group group = new Group(container, SWT.NONE);
        group.setText(Messages.getString("WizardPage1.8")); //$NON-NLS-1$
        group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        group.setLayout(new GridLayout(1, false));

        addDBNameSection(group);

        Group group2 = new Group(container, SWT.NONE);
        group2.setText(Messages.getString("WizardPage1.9")); //$NON-NLS-1$
        // group2.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        group2.setLayoutData(new GridData(GridData.FILL_BOTH));
        group2.setLayout(new GridLayout(1, false));
        addDriverSection(group2);

        setControl(container);
    }

    private void addDBNameSection(Composite group) {
        nameText = new Text(group, SWT.SINGLE | SWT.BORDER);
        nameText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
        nameText.addFocusListener(new TextSelectionListener());
        if (getOldConfig() != null) {
            nameText.setText(getOldConfig().getDbName());
        } else {
            nameText.setText(DEFAULT_NAME);
        }
        nameText.addModifyListener(new ModifyListener() {

            public void modifyText(ModifyEvent e) {
                modified();
            }
        });

    }

    private void addDriverSection(Composite group) {

        Composite tableComposite = new Composite(group, SWT.NONE);
        GridData data = new GridData(GridData.FILL_BOTH);
        data.widthHint = 200;
        data.heightHint = 120;
        // data.heightHint = convertHeightInCharsToPixels(10);
        tableComposite.setLayoutData(data);
        ColumnLayout columnLayout = new ColumnLayout();
        tableComposite.setLayout(columnLayout);

        table = new Table(tableComposite, SWT.BORDER | SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL);
        tableViewer = new TableViewer(table);
        // tableViewer = new TableViewer(tableComposite, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.SINGLE);

        table = tableViewer.getTable();
        table.setHeaderVisible(true);
        table.setLinesVisible(false);
        tableViewer.setContentProvider(new TableContentProvider());
        tableViewer.setLabelProvider(new TableLabelProvider());
        tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {

            public void selectionChanged(SelectionChangedEvent event) {
                ISelection select = event.getSelection();
                if (select != null) {
                    removeBtn.setEnabled(true);
                } else {
                    removeBtn.setEnabled(false);
                }
            }

        });

        // GridData gd = new GridData(GridData.FILL_HORIZONTAL);
        GridData gd = new GridData(GridData.FILL_BOTH);
        // gd.heightHint = 50;
        tableViewer.getControl().setLayoutData(gd);

        // setHeaderColumn(table, new String[] {""}); //$NON-NLS-1$

        GC gc = new GC(getShell());
        gc.setFont(JFaceResources.getDialogFont());

        TableColumn column1 = new TableColumn(table, SWT.NONE);
        String DISPLAY_TXT = "PATH"; //$NON-NLS-1$
        column1.setText(DISPLAY_TXT);
        int minWidth = computeMinimumColumnWidth(gc, DISPLAY_TXT);
        columnLayout.addColumnData(new ColumnWeightData(1, minWidth, true));
        gc.dispose();

        // initializeDialogUnits(table);

        if (getOldConfig() != null) {
            classpathList = new ArrayList();
            String[] list = getOldConfig().getClassPaths();
            for (int i = 0; i < list.length; i++) {
                classpathList.add(list[i]);
            }
        } else {
            classpathList = new ArrayList();
        }
        tableViewer.setInput(classpathList);

        Composite buttonComp = new Composite(group, SWT.NONE);
        buttonComp.setLayout(new GridLayout(4, false));
        buttonComp.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

        addBtn = WidgetUtil.createButton(buttonComp, SWT.PUSH, Messages.getString("WizardPage1.11"), BUTTON_WIDTH, //$NON-NLS-1$
                new GridData());
        addBtn.addSelectionListener(new SelectionAdapter() {

            public void widgetSelected(SelectionEvent e) {
                FileDialog openDialog = new FileDialog(table.getShell(), SWT.OPEN);
                String openFile = openDialog.open();
                if (openFile != null) {
                    if (!classpathList.contains(openFile)) {
                        classpathList.add(openFile);
                        tableViewer.setInput(classpathList);
                        columnsPack(table);
                    }

                }
            }
        });
        addBtn2 = WidgetUtil.createButton(buttonComp, SWT.PUSH, Messages.getString("WizardPage1.12"), BUTTON_WIDTH, //$NON-NLS-1$
                new GridData());
        addBtn2.addSelectionListener(new SelectionAdapter() {

            public void widgetSelected(SelectionEvent e) {
                DirectoryDialog openDialog = new DirectoryDialog(table.getShell(), SWT.OPEN);
                String openFile = openDialog.open();
                if (openFile != null) {
                    if (!classpathList.contains(openFile)) {
                        classpathList.add(openFile);
                        tableViewer.setInput(classpathList);
                        columnsPack(table);
                    }
                }
            }
        });
        removeBtn = WidgetUtil.createButton(buttonComp, SWT.PUSH, Messages.getString("WizardPage1.13"), //$NON-NLS-1$
                BUTTON_WIDTH, new GridData());
        removeBtn.setEnabled(false);
        removeBtn.addSelectionListener(new SelectionAdapter() {

            public void widgetSelected(SelectionEvent e) {
                int selectionIndex = table.getSelectionIndex();
                if (selectionIndex >= 0) {
                    table.remove(selectionIndex);
                    classpathList.remove(selectionIndex);
                    tableViewer.setInput(classpathList);
                    // columnsPack(table);
                }
            }
        });

        final Button registedBtn = WidgetUtil.createButton(buttonComp, SWT.PUSH,
                Messages.getString("WizardPage1.14"), BUTTON_WIDTH, new GridData()); //$NON-NLS-1$
        registedBtn.addSelectionListener(new SelectionAdapter() {

            public void widgetSelected(SelectionEvent e) {
                DriverSelectDialog dialog = new DriverSelectDialog(registedBtn.getShell());
                if (dialog.open() == DriverSelectDialog.OK) {
                    classpathList.addAll(dialog.getTargetNames());
                    tableViewer.setInput(classpathList);
                    columnsPack(table);

                }
            }
        });

    }

    public void setVisible(boolean visible) {
        super.setVisible(visible);

        if (visible) {
            setDescription(MSG);

            DBConfigWizard wiz = (DBConfigWizard) getWizard();
            Object page = wiz.getNextPage(this);
            if (page instanceof WizardPage2) {
                ((WizardPage2) page).searchDriverFlg = true;
            }
        }
    }

}